From f4a67d8866124a0ec92a561b8334cd378bfb2275 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Mon, 17 Aug 2026 15:33:30 -0500 Subject: [PATCH 01/84] fix(android): load KMP files from app-external sources This PR provides two main services: - It allows on-device KMP file providers (such as Chrome downloads or the local Files app) to smoothly pass those KMP files into Keyman for Android for installation. - It also removes wildcard-host http / https deep-links from the app manifest, as these are invalid. Fixes: #14854 Fixes: #10133 Upon my investigation into related documentation, I've determined that with current versions of Android, setting up a general, "anywhere on the web" deep link for KMP files is not supported and should not be attempted. How, then, do we facilitate external apps passing off KMP links or files to Keyman for Android? Turns out... we've already done the work for downloaded files with `file:` and `content:` scheme deep-links. The issue is that some of our permissions-checking code logic was bad. With a little work to correct them - removing the bad checks that never should have existed anyway - the files load nicely! Build-bot: skip release:android --- .../kMAPro/src/main/AndroidManifest.xml | 56 ------------------- .../tavultesoft/kmapro/CheckPermissions.java | 11 ++-- 2 files changed, 6 insertions(+), 61 deletions(-) diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml index 563690c031..b376808ed7 100644 --- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml +++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml @@ -113,62 +113,6 @@ android:scheme="content" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/CheckPermissions.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/CheckPermissions.java index 431d97e353..0689917e7c 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/CheckPermissions.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/CheckPermissions.java @@ -33,12 +33,13 @@ public class CheckPermissions { // API 30-32 permissionsOK = Environment.isExternalStorageManager() || checkPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE); - } else { + } + + else { // API 33+ - // We had to remove these MEDIA permissions from AndroidManifest.xml so these will end up failing - // https://support.google.com/googleplay/android-developer/answer/14115180?hl=en - permissionsOK = permissionsOK && checkPermission(activity, Manifest.permission.READ_MEDIA_IMAGES); - permissionsOK = permissionsOK && checkPermission(activity, Manifest.permission.READ_MEDIA_VIDEO); + // No special permissions are needed. + // - https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE + // - https://stackoverflow.com/a/73630987 } return permissionsOK; From 90b2e45e6bfec5e654939f12868974ffbd025e3f Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Tue, 18 Aug 2026 09:07:05 -0500 Subject: [PATCH 02/84] change(web): add vnd.keyman.kmp+zip mime type to file-association intent-filters Fixes: #14122 --- .../kMAPro/src/main/AndroidManifest.xml | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml index b376808ed7..ed23e920d9 100644 --- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml +++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml @@ -111,6 +111,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -148,7 +202,7 @@ - + From ba767046b32ee4c9a8b2698e861acafb4a37e4e6 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Wed, 19 Aug 2026 12:04:35 -0500 Subject: [PATCH 03/84] change(android): clean up AndroidManifest.xml MIME-type entries, remove empty else - https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE - https://stackoverflow.com/a/73630987 --- .../KMAPro/kMAPro/src/main/AndroidManifest.xml | 16 ---------------- .../com/tavultesoft/kmapro/CheckPermissions.java | 8 +------- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml index ed23e920d9..132d65962e 100644 --- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml +++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml @@ -96,10 +96,6 @@ - - - @@ -134,18 +127,9 @@ - - - From 507512ba59fa0fe0f052bd27581a41fa30139b99 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Tue, 25 Aug 2026 15:45:12 -0500 Subject: [PATCH 07/84] change(android): clean up site deep-link configuration Build-bot: skip release:android --- .../kMAPro/src/main/AndroidManifest.xml | 33 ++++--------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml index 605d34a452..314abbd0a8 100644 --- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml +++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml @@ -174,35 +174,14 @@ - + + - - - - - - - - - - - - - - + + + + From 0e332b6f6ce0af5aaae57538b57ec794db1c7bce Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 26 Aug 2026 10:08:40 +0200 Subject: [PATCH 08/84] fix(windows): simplify keyboard refresh and make it more on-demand Clean up the keyboard refresh process. Keyman COM API will post a `wm_keyman_refresh`, `KR_REQUEST_REFRESH` message when changes have been made to the list of installed keyboards (or some other keyboard-related settings change). Keyman Engine (any arch) will handle this message, in any process, and post a message to the master controller (keyman.exe, TfrmKeyman7Main), `wm_keyman_refresh`, `KR_PRE_REFRESH`. Keyman Engine (keyman32) will handle _this_ message in the master controller thread context, and increment the global refresh tag. It also asks the other architecture host process(es) to update their global refresh counter to the same value (by posting `wm_keyman_refresh`, `KM_PRE_REFRESH` to those process(es).) This refresh tag is then compared on-demand in each thread to the thread's current refresh tag value, when a keyboard activation is received, on set focus, or on a keystroke, and the keyboard list is refreshed at that point. This means that keyboard installation no longer triggers a large amount of activity reloading all the keyboards on all windowed threads, but rather they will gradually reload as the user interacts with them. It also fixes #15333, which related to having threads with only child windows -- that is, that were parented by top-level windows from other threads -- which thus never received the global broadcast in the earlier design. For example, VSCode, Notepad in Win11, Chrome. Fixes: #15333 --- .../keyman32 => include}/keymancontrol.h | 5 + windows/src/desktop/kmshell/main/UfrmMain.pas | 25 +-- .../kmshell/startup/help/UfrmTextEditor.pas | 5 +- windows/src/desktop/kmshell/util/kmint.pas | 17 +- windows/src/engine/keyman/UfrmKeyman7Main.pas | 23 ++- windows/src/engine/keyman/kmint.pas | 3 +- windows/src/engine/keyman32/appint/aiTIP.cpp | 3 + windows/src/engine/keyman32/globals.h | 12 +- windows/src/engine/keyman32/k32_globals.cpp | 27 ++- windows/src/engine/keyman32/keyman32.cpp | 179 ++++++++---------- windows/src/engine/keyman32/keyman32.vcxproj | 2 +- .../engine/keyman32/keyman32.vcxproj.filters | 2 +- windows/src/engine/keyman32/keyman64.h | 1 - windows/src/engine/keyman32/keymanengine.h | 8 +- .../engine/keyman32/kmhook_callwndproc.cpp | 8 +- .../src/engine/keyman32/kmhook_getmessage.cpp | 30 +-- windows/src/engine/keymanhp/keymanhp.cpp | 13 +- windows/src/engine/keymanhp/keymanhp.h | 20 +- windows/src/engine/keymanhp/keymanhp.vcxproj | 1 + .../engine/keymanhp/keymanhp.vcxproj.filters | 3 + .../delphi/general/KeymanControlMessages.pas | 2 + 21 files changed, 220 insertions(+), 169 deletions(-) rename windows/{src/engine/keyman32 => include}/keymancontrol.h (94%) diff --git a/windows/src/engine/keyman32/keymancontrol.h b/windows/include/keymancontrol.h similarity index 94% rename from windows/src/engine/keyman32/keymancontrol.h rename to windows/include/keymancontrol.h index b25d0ceebf..a83749234a 100644 --- a/windows/src/engine/keyman32/keymancontrol.h +++ b/windows/include/keymancontrol.h @@ -67,6 +67,11 @@ #define KMC_LANGUAGEHOTKEY 20 //TOUCH #define KMC_CONTEXT 19 // 9.0.450.0 +// Cross-architecture comms +#define KMC_REGISTER_HOST_WINDOW_X64 23 +#define KMC_REGISTER_HOST_WINDOW_ARM64 24 + #define RWM_KEYMAN_CONTROL "WM_KEYMAN_CONTROL" +#define RWM_KEYMAN_CONTROL_W L"WM_KEYMAN_CONTROL" #define khLanguageSwitch 8 diff --git a/windows/src/desktop/kmshell/main/UfrmMain.pas b/windows/src/desktop/kmshell/main/UfrmMain.pas index e367a795ae..a8fdfe9845 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.pas +++ b/windows/src/desktop/kmshell/main/UfrmMain.pas @@ -623,20 +623,23 @@ procedure TfrmMain.AppEventsMessage(var Msg: tagMSG; var Handled: Boolean); begin inherited; - if (Msg.message = wm_keyman_refresh) and (Msg.WParam = KR_SETTINGS_CHANGED) then + if Msg.message = wm_keyman_refresh then begin - // If we generated this refresh ourselves, ignore it - if (kmcom <> nil) and (Msg.lParam <> KeymanEngineControl.LastRefreshToken) then + if Msg.WParam = KR_SETTINGS_CHANGED then begin - // The refresh event was generated by another process or thread - // - // We may receive the notification multiple times because it is broadcast - // to all top-level windows and we probably have a bunch of them. - // So, if we've already processed it, don't do so again. - if Msg.lParam <> LastRefreshToken then + // If we generated this refresh ourselves, ignore it + if (kmcom <> nil) and (Msg.lParam <> KeymanEngineControl.LastRefreshToken) then begin - LastRefreshToken := Msg.lParam; - DoRefresh; + // The refresh event was generated by another process or thread + // + // We may receive the notification multiple times because it is broadcast + // to all top-level windows and we probably have a bunch of them. + // So, if we've already processed it, don't do so again. + if Msg.lParam <> LastRefreshToken then + begin + LastRefreshToken := Msg.lParam; + DoRefresh; + end; end; end; end; diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas index d67143e8ee..f0f46cfc6d 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas @@ -144,7 +144,7 @@ type procedure editorKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private cefFonts: TframeCEFHost; - wm_keyman_control, wm_keyman_refresh: UINT; + wm_keyman_control: UINT; FUpdating: Boolean; FCheckFontsThread: TCheckFontsThread; FCheckFontKeyboards: TCheckFontKeyboards; @@ -248,7 +248,6 @@ procedure TfrmTextEditor.TntFormCreate(Sender: TObject); begin inherited; wm_keyman_control := RegisterWindowMessage('WM_KEYMAN_CONTROL'); - wm_keyman_refresh := RegisterWindowMessage('WM_KEYMANREFRESH'); HelpTopic := 'context/text-editor'; Caption := MsgFromId(SKTextEditorCaption); @@ -724,7 +723,7 @@ end; procedure TfrmTextEditor.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin - if (Msg.message = wm_keyman_refresh) and (Msg.wParam = KR_REFRESH) then + if (Msg.message = wm_keyman_control) and (Msg.wParam = KMC_REFRESH) then begin StartCheckFontsThread; end; diff --git a/windows/src/desktop/kmshell/util/kmint.pas b/windows/src/desktop/kmshell/util/kmint.pas index 334e0b0409..c63abdbc6c 100644 --- a/windows/src/desktop/kmshell/util/kmint.pas +++ b/windows/src/desktop/kmshell/util/kmint.pas @@ -1,18 +1,18 @@ (* Name: kmint Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 1 Aug 2006 Modified Date: 26 Jun 2012 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 01 Aug 2006 - mcdurdin - Remove old Keyman 6 integration 01 Aug 2006 - mcdurdin - Look for pxx file in startup folder to determine product to start 05 Nov 2007 - mcdurdin - I937, I1128 - Repair COM object if it fails at startup @@ -43,7 +43,6 @@ function LoadKMCOM: Boolean; const KEYMAN_LAYOUT_CUSTOM = $000005FE; - KR_REFRESH = 2; KR_SETTINGS_CHANGED = 3; const @@ -136,7 +135,7 @@ begin end; procedure CoFreeUnusedLibrariesEx(dwUnloadDelay, dwReserved: DWORD); stdcall; external 'ole32.dll'; - + function LoadKMCOM: Boolean; var msg: string; diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index 4b51f337c1..fd5c24fcf2 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -351,6 +351,7 @@ var wm_keyman_globalswitch, wm_keyman_globalswitch_process, wm_keyman_control, wm_keyman_control_internal, wm_test_keyman_functioning: Cardinal; FEnableCrashTest: Boolean = False; + wm_keyman_refresh: Cardinal; const KMC_StartProduct = 0; @@ -697,6 +698,10 @@ begin end; function TfrmKeyman7Main.AppMessage(var Message: TMessage): Boolean; +var + hwndTextEditor: THandle; +const + KR_PRE_REFRESH = 1; begin if Message.Msg = WM_ACTIVATEAPP then begin @@ -728,6 +733,19 @@ begin end; Result := True; end + else if Message.Msg = wm_keyman_refresh then + begin + if Message.WParam = KR_PRE_REFRESH then + begin + // The text editor needs a special prod for keyboard changes + hwndTextEditor := FindWindow('TfrmTextEditor', nil); + if hwndTextEditor <> 0 then + begin + PostMessage(hwndTextEditor, wm_keyman_control, KMC_REFRESH, 0); + end; + end; + Result := False; + end else if Message.Msg = wm_keyman_control then begin Result := True; @@ -1241,13 +1259,13 @@ begin // #12905: icon is otherwise invalid TKeymanSentryClient.ReportHandledException(E, 'SetTrayIcon: Invalid icon for keyboard "'+kbd.ID+'"; icon filename "'+kbd.IconFilename+'"'); // Use the default app icon - rp.FTrayIcon.Icon.Assign(FTrayIcon); + rp.FTrayIcon.Icon.Assign(FTrayIcon); end; end else begin // Use the default app icon - rp.FTrayIcon.Icon.Assign(FTrayIcon); + rp.FTrayIcon.Icon.Assign(FTrayIcon); end; if VisualKeyboardVisible then @@ -2119,6 +2137,7 @@ initialization wm_keyman_globalswitch_process := RegisterWindowMessage('WM_KEYMAN_GLOBALSWITCH_PROCESS'); wm_keyman_control := RegisterWindowMessage('WM_KEYMAN_CONTROL'); wm_keyman_control_internal := RegisterWindowMessage('WM_KEYMAN_CONTROL_INTERNAL'); // I3933 + wm_keyman_refresh := RegisterWindowMessage('WM_KEYMANREFRESH'); ChangeWindowMessageFilter(wm_keyman_control, MSGFLT_ADD); ChangeWindowMessageFilter(wm_keyman_globalswitch, MSGFLT_ADD); diff --git a/windows/src/engine/keyman/kmint.pas b/windows/src/engine/keyman/kmint.pas index 76170998d0..6d1f937d18 100644 --- a/windows/src/engine/keyman/kmint.pas +++ b/windows/src/engine/keyman/kmint.pas @@ -48,8 +48,7 @@ uses MessageIdentifiers; const - KR_REQUEST_REFRESH = 0; // Send this to any window, which will make Keyman post a KR_REFRESH to all top-level windows - KR_REFRESH = 2; // Finally this message get sent to all the other top-level windows in the system. + KR_REQUEST_REFRESH = 0; // Send this to any window, which will make Keyman post a KR_PRE_REFRESH to controllers, which will cause all threads to eventually refresh keyboards list KR_SETTINGS_CHANGED = 3; function KeymanCustomisation: IKeymanCustomisation; diff --git a/windows/src/engine/keyman32/appint/aiTIP.cpp b/windows/src/engine/keyman32/appint/aiTIP.cpp index a2baada55b..6e67a9ac59 100644 --- a/windows/src/engine/keyman32/appint/aiTIP.cpp +++ b/windows/src/engine/keyman32/appint/aiTIP.cpp @@ -67,6 +67,9 @@ extern "C" __declspec(dllexport) BOOL WINAPI TIPIsKeymanRunning() { extern "C" __declspec(dllexport) BOOL WINAPI TIPActivateKeyboard(GUID *profile) { // I3581 PKEYMAN64THREADDATA _td = ThreadGlobals(); if(!_td) return FALSE; + + RefreshThreadKeyboardsIfRequired(); + if(profile != NULL) { for(int i = 0; i < _td->nKeyboards; i++) { for(int j = 0; j < _td->lpKeyboards[i].nProfiles; j++) { diff --git a/windows/src/engine/keyman32/globals.h b/windows/src/engine/keyman32/globals.h index 9db8044394..02b799f1ed 100644 --- a/windows/src/engine/keyman32/globals.h +++ b/windows/src/engine/keyman32/globals.h @@ -88,8 +88,15 @@ public: static DWORD *ShiftState(); -#ifndef _WIN64 static LONG *RefreshTag(); + static LONG get_RefreshTag(); + +#ifndef _WIN64 + static HWND get_hwndHostX64(); + static HWND get_hwndHostARM64(); + + static HWND *hwndHostX64(); + static HWND *hwndHostARM64(); #endif static HHOOK get_hhookGetMessage(); @@ -216,8 +223,7 @@ typedef struct tagKEYMAN64THREADDATA BOOL CoreProcessEventRun; // True if core process event has been run BOOL FInRefreshKeyboards; - BOOL RefreshRequired; - LONG RefreshTag_Thread; // TODO: we may be able to eliminate this with our delayed refresh pattern? + LONG RefreshTag_Thread; /* Addin Globals */ diff --git a/windows/src/engine/keyman32/k32_globals.cpp b/windows/src/engine/keyman32/k32_globals.cpp index 807b246466..19d2b0a12e 100644 --- a/windows/src/engine/keyman32/k32_globals.cpp +++ b/windows/src/engine/keyman32/k32_globals.cpp @@ -95,6 +95,12 @@ BOOL isKeymanKeyboardActive = FALSE; static DWORD dwTlsIndex = TLS_OUT_OF_INDEXES; static CRITICAL_SECTION csGlobals; +// In order that every thread starts off needing a refresh, we set the starting +// refresh tag to 1, but the thread-level refresh tag will be 0 (initialized by +// `LocalAlloc(LPTR)`) +#define INITIAL_GLOBAL_REFRESH_TAG 1 +#define INITIAL_THREAD_REFRESH_TAG 0 + PKEYMAN64THREADDATA Globals_InitThread() { EnterCriticalSection(&csGlobals); @@ -269,9 +275,13 @@ static wchar_t __declspec(align(8)) static UINT f_vk_prefix = 0; -#ifndef _WIN64 __declspec(align(8)) static LONG - f_RefreshTag = 0; + f_RefreshTag = INITIAL_GLOBAL_REFRESH_TAG; + +#ifndef _WIN64 +__declspec(align(8)) static HWND + f_hwndHostX64 = 0, + f_hwndHostARM64 = 0; #endif static BOOL @@ -310,8 +320,15 @@ DWORD *Globals::InitialisingThread() { return &f_InitialisingThread; } // I43 DWORD *Globals::ShiftState() { return &f_ShiftState; } -#ifndef _WIN64 LONG *Globals::RefreshTag() { return &f_RefreshTag; } +LONG Globals::get_RefreshTag() { return f_RefreshTag; } + +#ifndef _WIN64 +HWND Globals::get_hwndHostX64() { return f_hwndHostX64; } +HWND *Globals::hwndHostX64() { return &f_hwndHostX64; } + +HWND Globals::get_hwndHostARM64() { return f_hwndHostARM64; } +HWND *Globals::hwndHostARM64() { return &f_hwndHostARM64; } #endif HHOOK Globals::get_hhookCallWndProc() { return f_hhookCallWndProc; } @@ -436,8 +453,10 @@ BOOL Globals::ResetControllers() // I3092 f_FSingleThread = FALSE; f_hwndIM = 0; f_hwndIMAlways = 0; + f_RefreshTag = INITIAL_GLOBAL_REFRESH_TAG; #ifndef _WIN64 - f_RefreshTag = 0; + f_hwndHostX64 = NULL; + f_hwndHostARM64 = NULL; #endif Globals::Unlock(); diff --git a/windows/src/engine/keyman32/keyman32.cpp b/windows/src/engine/keyman32/keyman32.cpp index 312865c61f..998fa1ebcf 100644 --- a/windows/src/engine/keyman32/keyman32.cpp +++ b/windows/src/engine/keyman32/keyman32.cpp @@ -106,6 +106,9 @@ HINSTANCE g_hInstance; +void RefreshKeyboards(); +void LoadKeyboardSettings(); + /*******************************************************************************************/ /* */ /* Keyman Initialisation */ @@ -216,7 +219,7 @@ BOOL InitThread() _td->FInitialising = TRUE; // Control re-entrancy, this is thread safe because the variable is per-thread - RefreshKeyboards(TRUE); + LoadKeyboardSettings(); _td->FInitialising = FALSE; // Control re-entrancy, this is thread safe because the variable is per-thread @@ -412,7 +415,9 @@ extern "C" BOOL _declspec(dllexport) WINAPI Keyman_Initialise(HWND Handle, BOOL UpdateActiveWindows(); *Globals::Keyman_Initialised() = TRUE; - RefreshKeyboards(TRUE); // I4786 + + // We initialize keyboards on the controller thread immediately + RefreshThreadKeyboardsIfRequired(); SendDebugMessageFormat("Keyman is now initialised"); @@ -576,27 +581,15 @@ extern "C" DWORD _declspec(dllexport) WINAPI GetActiveKeymanID() // //--------------------------------------------------------------------------------------------------------- -// This function prevents a refresh event from being processed more than once -// by a thread, for instance if a thread has multiple top-level windows -BOOL UpdateRefreshTag(LONG tag) // I1835 - Reduce chatter -{ +void HandleRefresh(int code, LONG tag) { PKEYMAN64THREADDATA _td = ThreadGlobals(); - if(!_td) return FALSE; - if(_td->RefreshTag_Thread != tag) - { - _td->RefreshTag_Thread = tag; - return TRUE; - } - return FALSE; -} + if(!_td) return; -void HandleRefresh(int code, LONG tag) -{ switch (code) { case KR_REQUEST_REFRESH: // This is sent by Keyman COM API, ApplyToRunningKeymanEngine - SendDebugMessageFormat("#### Refresh Requested ####"); + SendDebugMessageFormat("HandleRefresh(KR_REQUEST_REFRESH, %d); global refresh tag = %d; input thread refresh tag = %d", tag, Globals::get_RefreshTag(), _td->RefreshTag_Thread); // We ask the master controller window to tell all instances // of keyman32/keyman64 that a refresh is coming through @@ -608,41 +601,35 @@ void HandleRefresh(int code, LONG tag) break; case KR_PRE_REFRESH: -#ifndef _WIN64 - // We only need to broadcast the message from Win32; this avoids - // a double-broadcast which could happen if both keyman32 and keyman64 - // receive the message, as they have independently managed RefreshTags - // This RefreshTag is only ever incremented here by the master controller - // so this is a thread safe operation - tag = ++(*Globals::RefreshTag()); + SendDebugMessageFormat("HandleRefresh(KR_PRE_REFRESH, %d); global refresh tag = %d; input thread refresh tag = %d", tag, Globals::get_RefreshTag(), _td->RefreshTag_Thread); - if (UpdateRefreshTag(tag)) { - // The Keyman process gets the update first - RefreshKeyboards(FALSE); - PostMessage(HWND_BROADCAST, wm_keyman_refresh, KR_REFRESH, tag); + // The tag parameter will be zero for x86 controller, but will be the + // current tag for other architectures, coming from the x86 controller + + if(Globals::get_InitialisingThread() != GetCurrentThreadId()) { + SendDebugMessageFormat("HandleRefresh: unexpected KR_PRE_REFRESH on a non-controller thread"); + break; } -#endif - break; + #ifndef _WIN64 - case KR_REFRESH: - // All threads need to have their keyboard list - // refreshed after an update, but only once per - // refresh request - if (UpdateRefreshTag(tag)) { -#ifdef _WIN64 - if (Globals::get_InitialisingThread() == GetCurrentThreadId()) { - // If this is the keyman.x64 or keymanarm64 thread, then we should - // go ahead and process the refresh immediately so - // that global settings are updated - RefreshKeyboards(FALSE); - } - else -#endif - // We'll update when we are called into action - ScheduleRefresh(); + // This RefreshTag is only ever incremented here by the controller thread + // for x86 so this is a thread safe operation + *Globals::RefreshTag() = Globals::get_RefreshTag() + 1; + + if(Globals::get_hwndHostX64() != NULL) { + PostMessage(Globals::get_hwndHostX64(), wm_keyman_refresh, KR_PRE_REFRESH, Globals::get_RefreshTag()); } + if(Globals::get_hwndHostARM64() != NULL) { + PostMessage(Globals::get_hwndHostARM64(), wm_keyman_refresh, KR_PRE_REFRESH, Globals::get_RefreshTag()); + } +#else + *Globals::RefreshTag() = tag; + #endif + + SendDebugMessageFormat("HandleRefresh: new tag = %d", Globals::get_RefreshTag()); + RefreshThreadKeyboardsIfRequired(); break; } } @@ -695,6 +682,40 @@ void LoadBaseLayoutSettings() { // I4552 // I4583 delete reg; } +/** + * If (per-architecture) global refresh tag differs from the current thread + * refresh tag, that indicates that a change has happened to the list of loaded + * keyboards, and we need to refresh the list now. + */ +void RefreshThreadKeyboardsIfRequired() { + PKEYMAN64THREADDATA _td = ThreadGlobals(); + if (!_td) { + return; + } + + SendDebugMessageFormat("RefreshThreadKeyboardsIfRequired(): global refresh tag = %d; input thread refresh tag = %d", Globals::get_RefreshTag(), _td->RefreshTag_Thread); + + if (_td->RefreshTag_Thread != Globals::get_RefreshTag()) { + _td->RefreshTag_Thread = Globals::get_RefreshTag(); + RefreshKeyboards(); + } +} + +/** + * Read the keyboard switch hotkeys, and base layout settings + */ +void LoadKeyboardSettings() { +#ifndef _WIN64 + Hotkeys::Reload(); // I4326 // I4390 +#endif + + // Read global underlying keyboard flags + + if(Globals::get_InitialisingThread() == GetCurrentThreadId()) { + LoadBaseLayoutSettings(); // I4583 + } +} + // ----------------------------------------------------------------------------------------------- // - - // - RefreshKeyboards: .... - @@ -743,32 +764,8 @@ void RefreshKeyboardProfiles(INTKEYBOARDINFO *kp, BOOL isTransient) { } } -void ScheduleRefresh() { - if (GetCurrentThreadId() == GetWindowThreadProcessId(GetForegroundWindow(), NULL)) { - RefreshKeyboards(FALSE); - } - else { - PKEYMAN64THREADDATA _td = ThreadGlobals(); - if (!_td) { - return; - } - _td->RefreshRequired = TRUE; - } -} -void CheckScheduledRefresh() { - PKEYMAN64THREADDATA _td = ThreadGlobals(); - if (!_td) { - return; - } - if (_td->RefreshRequired) { - RefreshKeyboards(FALSE); - _td->RefreshRequired = FALSE; - } -} - -void RefreshKeyboards(BOOL Initialising) -{ +void RefreshKeyboards() { OutputThreadDebugString("RefreshKeyboards"); char sz[_MAX_FNAME]; char oldname[_MAX_FNAME]; @@ -784,29 +781,17 @@ void RefreshKeyboards(BOOL Initialising) oldname[0] = 0; - if(!Initialising) - { - if(_td->lpActiveKeyboard) - strcpy(oldname, _td->lpActiveKeyboard->Name); - - if(_td->lpActiveKeyboard) DeactivateDLLs(_td->lpActiveKeyboard); - _td->lpActiveKeyboard = NULL; - _td->ActiveKeymanID = KEYMANID_NONKEYMAN; + if(_td->lpActiveKeyboard) { + strcpy(oldname, _td->lpActiveKeyboard->Name); } + if(_td->lpActiveKeyboard) DeactivateDLLs(_td->lpActiveKeyboard); + _td->lpActiveKeyboard = NULL; + _td->ActiveKeymanID = KEYMANID_NONKEYMAN; + ReleaseKeyboards(TRUE); - /* Read the "keyboard off hotkey", simulate Alt+Gr, Hotkeys-Toggle flags */ - -#ifndef _WIN64 - Hotkeys::Reload(); // I4326 // I4390 -#endif - - // Read global underlying keyboard flags - - if(Globals::get_InitialisingThread() == GetCurrentThreadId()) { - LoadBaseLayoutSettings(); // I4583 - } + LoadKeyboardSettings(); /* Read the keyboards */ @@ -854,13 +839,13 @@ void RefreshKeyboards(BOOL Initialising) } delete reg; // I2714 - if(!Initialising) - for(int i = 0; i < _td->nKeyboards; i++) - if(!_strcmpi(_td->lpKeyboards[i].Name, oldname)) - { - SelectKeyboard(_td->lpKeyboards[i].KeymanID); // I3594 - break; - } + for(int i = 0; i < _td->nKeyboards; i++) { + if(!_strcmpi(_td->lpKeyboards[i].Name, oldname)) + { + SelectKeyboard(_td->lpKeyboards[i].KeymanID); // I3594 + break; + } + } _td->FInRefreshKeyboards = FALSE; diff --git a/windows/src/engine/keyman32/keyman32.vcxproj b/windows/src/engine/keyman32/keyman32.vcxproj index 5d246b7bbe..dd5643290e 100644 --- a/windows/src/engine/keyman32/keyman32.vcxproj +++ b/windows/src/engine/keyman32/keyman32.vcxproj @@ -1156,7 +1156,7 @@ - + diff --git a/windows/src/engine/keyman32/keyman32.vcxproj.filters b/windows/src/engine/keyman32/keyman32.vcxproj.filters index c5b38a60d1..a812f04249 100644 --- a/windows/src/engine/keyman32/keyman32.vcxproj.filters +++ b/windows/src/engine/keyman32/keyman32.vcxproj.filters @@ -210,7 +210,7 @@ Header Files - + Header Files diff --git a/windows/src/engine/keyman32/keyman64.h b/windows/src/engine/keyman32/keyman64.h index eb199722c7..c062c73cb6 100644 --- a/windows/src/engine/keyman32/keyman64.h +++ b/windows/src/engine/keyman32/keyman64.h @@ -108,7 +108,6 @@ #define KR_REQUEST_REFRESH 0 #define KR_PRE_REFRESH 1 -#define KR_REFRESH 2 #define KR_SETTINGS_CHANGED 3 // Broadcast when Keyman Configuration settings change /* WM_KEY* message analysis */ diff --git a/windows/src/engine/keyman32/keymanengine.h b/windows/src/engine/keyman32/keymanengine.h index 15bf2f1b59..6c769951e5 100644 --- a/windows/src/engine/keyman32/keymanengine.h +++ b/windows/src/engine/keyman32/keymanengine.h @@ -207,12 +207,8 @@ void _OutputThreadDebugString(char* s); /* Keyboard selection functions */ void HandleRefresh(int code, LONG tag); -void RefreshKeyboards(BOOL Initialising); -void CheckScheduledRefresh(); -void ScheduleRefresh(); +void RefreshThreadKeyboardsIfRequired(); void ReleaseKeyboards(BOOL Lock); -void CheckScheduledRefresh(); -void ScheduleRefresh(); /* Glossary conversion functions */ @@ -245,7 +241,7 @@ void keybd_shift(LPINPUT pInputs, int* n, BOOL isReset, LPBYTE const kbd); #include "keystate.h" #include "calldll.h" -#include "keymancontrol.h" +#include "..\..\..\include\keymancontrol.h" #include "keyboardoptions.h" #include "kmprocessactions.h" #include "appcontext.h" diff --git a/windows/src/engine/keyman32/kmhook_callwndproc.cpp b/windows/src/engine/keyman32/kmhook_callwndproc.cpp index eedb06bc0b..38d1fd3909 100644 --- a/windows/src/engine/keyman32/kmhook_callwndproc.cpp +++ b/windows/src/engine/keyman32/kmhook_callwndproc.cpp @@ -163,7 +163,7 @@ LRESULT _kmnCallWndProc(int nCode, WPARAM wParam, LPARAM lParam) { case WM_KILLFOCUS: { - CheckScheduledRefresh(); + RefreshThreadKeyboardsIfRequired(); HWND hwnd = IsLanguageSwitchWindowVisible(); // I4326 if(hwnd != NULL && !Globals::IsControllerThread(GetCurrentThreadId())) SendToLanguageSwitchWindow(hwnd, VK_ESCAPE, 0); // I3025 @@ -178,7 +178,7 @@ LRESULT _kmnCallWndProc(int nCode, WPARAM wParam, LPARAM lParam) } break; case WM_SETFOCUS: - CheckScheduledRefresh(); + RefreshThreadKeyboardsIfRequired(); if (IsSysTrayWindow(cp->hwnd)) // I2443 - always do the focus change now? really unsure about this one SendDebugMessageFormat("WM_SETFOCUS -- not hooking because IsSysTrayWindow"); else if (Globals::IsControllerThread(GetCurrentThreadId())) @@ -193,11 +193,11 @@ LRESULT _kmnCallWndProc(int nCode, WPARAM wParam, LPARAM lParam) case WM_ACTIVATE: if(cp->wParam == WA_ACTIVE || cp->wParam == WA_CLICKACTIVE) { - CheckScheduledRefresh(); + RefreshThreadKeyboardsIfRequired(); } break; case WM_INPUTLANGCHANGE: - CheckScheduledRefresh(); + RefreshThreadKeyboardsIfRequired(); SendDebugMessageFormat("WM_INPUTLANGCHANGE %x %x Hwnd=%x Parent=%x Focus=%x Active=%x", cp->wParam, cp->lParam, cp->hwnd, GetParent(cp->hwnd), GetFocus(), GetActiveWindow()); ReportActiveKeyboard(PC_UPDATE); // I4288 diff --git a/windows/src/engine/keyman32/kmhook_getmessage.cpp b/windows/src/engine/keyman32/kmhook_getmessage.cpp index 4c11dc31b5..7767bf394b 100644 --- a/windows/src/engine/keyman32/kmhook_getmessage.cpp +++ b/windows/src/engine/keyman32/kmhook_getmessage.cpp @@ -157,7 +157,7 @@ LRESULT _kmnGetMessageProc(int nCode, WPARAM wParam, LPARAM lParam) BYTE scan = KEYMSG_LPARAM_SCAN(mp->lParam); BYTE keyTransitionEvent = KEYMSG_FLAG_TRANSITION(mp->lParam); - CheckScheduledRefresh(); + RefreshThreadKeyboardsIfRequired(); UpdateLastKeyCache(_td, mp->wParam, scan, keyTransitionEvent); switch (mp->wParam) { @@ -393,20 +393,24 @@ void ProcessWMKeymanControlInternal(HWND hwnd, WPARAM wParam, LPARAM lParam) void ProcessWMKeymanControl(WPARAM wParam, LPARAM lParam) { - switch (wParam) { - case KMC_PROFILECHANGED: - { - if (!Globals::IsControllerThread(GetCurrentThreadId())) { - break; - } - WORD wAtom = HIWORD(lParam); - char atomStr[128]; - if (GlobalGetAtomName(wAtom, atomStr, 128)) { - isKeymanKeyboardActive = strstr(atomStr, cs_clsidKMTipTextService) != nullptr; - } - break; + if (!Globals::IsControllerThread(GetCurrentThreadId())) { + return; + } + + if (wParam == KMC_PROFILECHANGED) { + WORD wAtom = HIWORD(lParam); + char atomStr[128]; + if (GlobalGetAtomName(wAtom, atomStr, 128)) { + isKeymanKeyboardActive = strstr(atomStr, cs_clsidKMTipTextService) != nullptr; } } +#ifndef _WIN64 + else if(wParam == KMC_REGISTER_HOST_WINDOW_X64) { + *Globals::hwndHostX64() = (HWND) lParam; + } else if(wParam == KMC_REGISTER_HOST_WINDOW_ARM64) { + *Globals::hwndHostARM64() = (HWND) lParam; + } +#endif } /* diff --git a/windows/src/engine/keymanhp/keymanhp.cpp b/windows/src/engine/keymanhp/keymanhp.cpp index 81d386c000..483bbfa701 100644 --- a/windows/src/engine/keymanhp/keymanhp.cpp +++ b/windows/src/engine/keymanhp/keymanhp.cpp @@ -98,9 +98,7 @@ const PWSTR szFail_UnknownError = L"Unknown error %d", szFail_ErrorFormat = L"%s: %s (%d)", - szFail_ErrorFormat_OtherUnknown = L"%s: An unknown error occurred", - - szWindowClass_x86_Wnd = L"TfrmKeyman7Main"; // Do not localize + szFail_ErrorFormat_OtherUnknown = L"%s: An unknown error occurred"; //const char *szGPA_ChangeWindowMessageFilter = "ChangeWindowMessageFilter"; // Do not localize #define KEYMAN_SENTRY_LOGGER_DESKTOP_ENGINE_KEYMANHP KEYMAN_SENTRY_LOGGER_DESKTOP_ENGINE ARCH_LOG_FILE @@ -353,6 +351,15 @@ BOOL StartKeyman(HWND hWnd) if(!Keyman_Initialise(hWnd, FALSE)) return Fail(hWnd, szError_FailedToInitialise); + // Tell the x86 controller our architecture's controller window handle which + // will process wm_keyman_refresh messages (in keyman##.dll) + UINT wm_keyman_control = RegisterWindowMessage(RWM_KEYMAN_CONTROL_W); +#if defined(_M_X64) + PostMessage(hwndController, wm_keyman_control, KMC_REGISTER_HOST_WINDOW_X64, (LPARAM) hWnd); +#elif defined(_M_ARM64) + PostMessage(hwndController, wm_keyman_control, KMC_REGISTER_HOST_WINDOW_ARM64, (LPARAM) hWnd); +#endif + KeymanStarted = TRUE; return TRUE; diff --git a/windows/src/engine/keymanhp/keymanhp.h b/windows/src/engine/keymanhp/keymanhp.h index 28a1f391d5..823a16ad45 100644 --- a/windows/src/engine/keymanhp/keymanhp.h +++ b/windows/src/engine/keymanhp/keymanhp.h @@ -1,18 +1,18 @@ /* Name: keymanhp Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 11 Dec 2009 Modified Date: 11 Dec 2009 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 11 Dec 2009 - mcdurdin - I934 - x64 - Initial version */ #pragma once @@ -23,9 +23,9 @@ #define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. #endif -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. +#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif +#endif #ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. #define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. @@ -35,3 +35,5 @@ #include #include #include + +#include "..\..\..\include\keymancontrol.h" \ No newline at end of file diff --git a/windows/src/engine/keymanhp/keymanhp.vcxproj b/windows/src/engine/keymanhp/keymanhp.vcxproj index 3aedb14b70..37e63c2707 100644 --- a/windows/src/engine/keymanhp/keymanhp.vcxproj +++ b/windows/src/engine/keymanhp/keymanhp.vcxproj @@ -280,6 +280,7 @@ true + diff --git a/windows/src/engine/keymanhp/keymanhp.vcxproj.filters b/windows/src/engine/keymanhp/keymanhp.vcxproj.filters index 7c736dcc17..65eddfbff0 100644 --- a/windows/src/engine/keymanhp/keymanhp.vcxproj.filters +++ b/windows/src/engine/keymanhp/keymanhp.vcxproj.filters @@ -32,6 +32,9 @@ Header Files + + Header Files + diff --git a/windows/src/global/delphi/general/KeymanControlMessages.pas b/windows/src/global/delphi/general/KeymanControlMessages.pas index 601abee40a..ac143e2825 100644 --- a/windows/src/global/delphi/general/KeymanControlMessages.pas +++ b/windows/src/global/delphi/general/KeymanControlMessages.pas @@ -63,6 +63,8 @@ const WHR_INIT_FAILURE = 1; // 19.0 - hook failed to (re)install WHR_UNINIT_FAILURE = 2; // 19.0 - hook failed to uninstall + KMC_REGISTER_HOST_WINDOW_X64 = 23; + KMC_REGISTER_HOST_WINDOW_ARM64 = 24; PC_UPDATE = 0; PC_UPDATE_LANGUAGESWITCH = 1; From 2c7bba8d1085ad502d144b824eb1965003d5453f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 26 Aug 2026 10:18:00 +0200 Subject: [PATCH 09/84] refactor(windows): cleanup unused wm_keyman_control values Cleanup of unused `wm_keyman_control` and `wm_keyman_refresh` values, and some other unused messages, which were making the implementation harder to understand. Relates-to: #15333 Follows: #16435 --- windows/include/keymancontrol.h | 59 ++++++++----------- .../kmshell/startup/help/UfrmTextEditor.pas | 14 ----- windows/src/engine/keyman/UfrmKeyman7Main.pas | 30 +--------- .../delphi/general/KeymanControlMessages.pas | 45 ++++---------- 4 files changed, 37 insertions(+), 111 deletions(-) diff --git a/windows/include/keymancontrol.h b/windows/include/keymancontrol.h index a83749234a..1bfd5605e0 100644 --- a/windows/include/keymancontrol.h +++ b/windows/include/keymancontrol.h @@ -22,56 +22,43 @@ 13 Oct 2014 - mcdurdin - I4451 - V9.0 - Language hotkeys are not working */ -//#define KMC_KEYBOARDCHANGED 1 // I3949 -//#define KMC_CHANGEUISTATE 2 -//#define KMC_GETLOADED 3 -#define KMC_REFRESH 4 -#define KMC_INTERFACEHOTKEY 5 +#define KMC_REFRESH 4 +#define KMC_INTERFACEHOTKEY 5 -//#define KMC_NOTIFYWELCOME 6 // 7.0.245.0 -//#define KMC_NOTIFYWELCOMEEVENT 7 // 7.0.245.0 -#define KMC_ONSCREENKEYBOARD 8 // 7.0.248.0 +#define KMC_NOTIFYWELCOME 6 // 7.0.245.0 +#define KMC_ONSCREENKEYBOARD 8 // 7.0.248.0 -#define KMC_SETFOCUSINFO 9 // 7.1.270.0 -#define KMC_GETLASTFOCUS 10 // 7.1.270.0 -#define KMC_GETLASTACTIVE 11 +#define KMC_SETFOCUSINFO 9 // 7.1.270.0 +#define KMC_GETLASTFOCUS 10 // 7.1.270.0 +#define KMC_GETLASTACTIVE 11 -#define KMC_GETLASTKEYMANID 12 // 7.1.274.0 -#define KMC_GETLASTHKL 13 // 7.1.274.0 +#define KMC_KEYDOWN 16 // 8.0.291.0 +#define KMC_KEYUP 17 // 8.0.291.0 -//#define KMC_LANGUAGESWITCH 14 // 8.0.290.0 -//#define KMC_HKLCHANGED 15 // 8.0.290.0 // I3949 +#define KMC_PROFILECHANGED 18 // 9.0.426.0 // I3933 -#define KMC_KEYDOWN 16 // 8.0.291.0 -#define KMC_KEYUP 17 // 8.0.291.0 +#define KMC_HINTRESPONSE 19 // 14.0 HIWORD(wParam) = ModalResult, lParam = hint enum -#define KMC_PROFILECHANGED 18 // 9.0.426.0 // I3933 +#define KMC_WATCHDOG_FAKEFREEZE 20 // 19.0 - pause Keyman for 5 seconds for debug purposes to test stability +#define KMC_WATCHDOG_KEYEVENT 21 // 19.0 - let the LowLevelHookWatchDog know that input has happened on another thread +#define KMC_WATCHDOG_HOOK_REINSTALL 22 // 19.0 - tell master controller about hook reinstall events -#define KMC_HINTRESPONSE 19 // 14.0 HIWORD(wParam) = ModalResult, lParam = hint enum + // KMC_WATCHDOG_HOOK_REINSTALL event types + #define WHR_TIMING 0 // 19.0 - report on timing + #define WHR_INIT_FAILURE 1 // 19.0 - hook failed to (re)install + #define WHR_UNINIT_FAILURE 2 // 19.0 - hook failed to uninstall -#define KMC_WATCHDOG_FAKEFREEZE 20 // 19.0 - pause Keyman for 5 seconds for debug purposes to test stability -#define KMC_WATCHDOG_KEYEVENT 21 // 19.0 - let the LowLevelHookWatchDog know that input has happened on another thread -#define KMC_WATCHDOG_HOOK_REINSTALL 22 // 19.0 - tell master controller about hook reinstall events - -// KMC_WATCHDOG_HOOK_REINSTALL event types -#define WHR_TIMING 0 // 19.0 - report on timing -#define WHR_INIT_FAILURE 1 // 19.0 - hook failed to (re)install -#define WHR_UNINIT_FAILURE 2 // 19.0 - hook failed to uninstall +// Cross-architecture comms +#define KMC_REGISTER_HOST_WINDOW_X64 23 +#define KMC_REGISTER_HOST_WINDOW_ARM64 24 #define PC_UPDATE 0 // Tell Keyman to update its display of active keyboard #define PC_UPDATE_LANGUAGESWITCH 1 // Tell Keyman to update its display of active keyboard and then open language switch form #define PC_HOTKEYCHANGE 2 // Tell Keyman that a hotkey was pressed to switch keyboard -//#define KMC_KEYBOARDHOTKEY 19 // 9.0.459.0 // I4326 Deprecated in favour of language hotkeys -#define KMC_LANGUAGEHOTKEY 20 -//TOUCH #define KMC_CONTEXT 19 // 9.0.450.0 -// Cross-architecture comms -#define KMC_REGISTER_HOST_WINDOW_X64 23 -#define KMC_REGISTER_HOST_WINDOW_ARM64 24 - -#define RWM_KEYMAN_CONTROL "WM_KEYMAN_CONTROL" -#define RWM_KEYMAN_CONTROL_W L"WM_KEYMAN_CONTROL" +#define RWM_KEYMAN_CONTROL "WM_KEYMAN_CONTROL" +#define RWM_KEYMAN_CONTROL_W L"WM_KEYMAN_CONTROL" #define khLanguageSwitch 8 diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas index f0f46cfc6d..c923e01a02 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas @@ -154,8 +154,6 @@ type procedure WMUserFormShown(var Message: TMessage); message WM_USER_FormShown; procedure WMUserCheckFonts(var Message: TMessage); message WM_USER_CheckFonts; procedure PostKeymanControlMessage(msg, wParam: UINT; lParam: Cardinal); - {function SendKeymanControlMessage(msg, wParam: UINT; - lParam: Cardinal): Cardinal;} function CurrText: TTextAttributes; procedure GetFontNames; procedure SetEditRect; @@ -348,18 +346,6 @@ begin PostMessage(hKeymanControl, wm_keyman_control, MAKELONG(msg, wParam), lParam); end; -{function TfrmTextEditor.SendKeymanControlMessage(msg: UINT; wParam: UINT; lParam: Cardinal): Cardinal; -var - hKeymanControl: THandle; -begin - hKeymanControl := FindWindow('TApplication', 'keyman'); - if hKeymanControl <> 0 then - Result := SendMessage(hKeymanControl, wm_keyman_control, MAKELONG(msg, wParam), lParam) - else - Result := 0; -end;} - - procedure TfrmTextEditor.LoadWebBox(web: TframeCEFHost; const AdditionalData: WideString = ''); // I4181 var Data: ITextEditorFontsSharedData; diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index fd5c24fcf2..2836235f1f 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -221,8 +221,6 @@ type FLangSwitchRefreshWatcher: TThread; FLastFocus: THandle; FLastActive: THandle; - //FLastKeymanID: Integer; - FLastHKL: Integer; FLangSwitchManager: TLangSwitchManager; // I3933 FGlobalKeyboardChangeManager: TGlobalKeyboardChangeManager; // I4271 FActiveHKL: Integer; @@ -348,7 +346,7 @@ var frmKeyman7Main: TfrmKeyman7Main; hProgramMutex: THandle; - wm_keyman_globalswitch, wm_keyman_globalswitch_process, wm_keyman_control, wm_keyman_control_internal, wm_test_keyman_functioning: Cardinal; + wm_keyman_control, wm_keyman_control_internal, wm_test_keyman_functioning: Cardinal; FEnableCrashTest: Boolean = False; wm_keyman_refresh: Cardinal; @@ -511,9 +509,6 @@ begin FLangSwitchManager := TLangSwitchManager.Create; // I3933 - //FLastKeymanID := -1; - FLastHKL := GetKeyboardLayout(0); - try GetDebugManager(Handle); except @@ -722,17 +717,6 @@ begin frmVisualKeyboard.Dispatch(Message); Result := False; end - else if Message.Msg = wm_keyman_globalswitch then - begin - TDebugLogClient.Instance.WriteMessage('wm_keyman_globalswitch for Application Handle: %x %x', [Message.wParam, Message.lParam]); - - case Message.wParam of - skHKL, // A windows language has been selected so select the most appropriate Keyman keyboard - skSelectHKL: // Select the requested Windows language (and therefore the most appropriate Keyman keyboard) - FLastHKL := Message.lParam; - end; - Result := True; - end else if Message.Msg = wm_keyman_refresh then begin if Message.WParam = KR_PRE_REFRESH then @@ -797,10 +781,6 @@ begin Result := 0; case Command of - KMC_GETLASTHKL: - begin - Result := FLastHKL; - end; KMC_SETFOCUSINFO: begin @@ -818,10 +798,6 @@ begin then ShowVisualKeyboard else HideVisualKeyboard; end; - KMC_GETLOADED: - begin - if IsProductLoaded then Result := 1 else Result := 0; - end; KMC_REFRESH: begin if wParam = 1 then @@ -2133,14 +2109,10 @@ end; initialization wm_test_keyman_functioning := RegisterWindowMessage('wm_test_keyman_functioning'); - wm_keyman_globalswitch := RegisterWindowMessage('WM_KEYMAN_GLOBALSWITCH'); - wm_keyman_globalswitch_process := RegisterWindowMessage('WM_KEYMAN_GLOBALSWITCH_PROCESS'); wm_keyman_control := RegisterWindowMessage('WM_KEYMAN_CONTROL'); wm_keyman_control_internal := RegisterWindowMessage('WM_KEYMAN_CONTROL_INTERNAL'); // I3933 wm_keyman_refresh := RegisterWindowMessage('WM_KEYMANREFRESH'); ChangeWindowMessageFilter(wm_keyman_control, MSGFLT_ADD); - ChangeWindowMessageFilter(wm_keyman_globalswitch, MSGFLT_ADD); - ChangeWindowMessageFilter(wm_keyman_globalswitch_process, MSGFLT_ADD); ChangeWindowMessageFilter(wm_keyman_control_internal, MSGFLT_ADD); // I3933 end. diff --git a/windows/src/global/delphi/general/KeymanControlMessages.pas b/windows/src/global/delphi/general/KeymanControlMessages.pas index ac143e2825..4d1454e7b2 100644 --- a/windows/src/global/delphi/general/KeymanControlMessages.pas +++ b/windows/src/global/delphi/general/KeymanControlMessages.pas @@ -27,14 +27,19 @@ unit KeymanControlMessages; interface const - //KMC_KEYBOARDCHANGED = 1; // I3949 - //KMC_CHANGEUISTATE = 2; - KMC_GETLOADED = 3; KMC_REFRESH = 4; KMC_INTERFACEHOTKEY = 5; KMC_NOTIFYWELCOME = 6; - KMC_NOTIFYWELCOME_EVENT = 7; // From Keyman to welcome window + + // KMC_NOTIFYWELCOME commands + NW_NOTIFYHANDLE = 0; + NW_SENDBALLOON = 1; + + // NW_SENDBALLOON options + NWB_IDENTIFYICON = 0; + NWB_TUTORIALFINISHED = 1; + NWB_KEYMANRUNNING = 2; KMC_ONSCREENKEYBOARD = 8; // 7.0.248.0 @@ -42,11 +47,6 @@ const KMC_GETLASTFOCUS = 10; // 7.1.270.0 KMC_GETLASTACTIVE = 11; // 7.1.270.0 - KMC_GETLASTKEYMANID = 12; // 7.1.274.0 - KMC_GETLASTHKL = 13; // 7.1.274.0 - - //KMC_HKLCHANGED = 15; // 8.0.290.0 // I3949 - KMC_KEYDOWN = 16; KMC_KEYUP = 17; @@ -58,10 +58,10 @@ const KMC_WATCHDOG_KEYEVENT = 21; // 19.0 - let the LowLevelHookWatchDog know that input has happened on another thread KMC_WATCHDOG_HOOK_REINSTALL = 22; // 19.0 - tell master controller about hook reinstall events - // KMC_WATCHDOG_HOOK_REINSTALL event types - WHR_TIMING = 0; // 19.0 - report on timing - WHR_INIT_FAILURE = 1; // 19.0 - hook failed to (re)install - WHR_UNINIT_FAILURE = 2; // 19.0 - hook failed to uninstall + // KMC_WATCHDOG_HOOK_REINSTALL event types + WHR_TIMING = 0; // 19.0 - report on timing + WHR_INIT_FAILURE = 1; // 19.0 - hook failed to (re)install + WHR_UNINIT_FAILURE = 2; // 19.0 - hook failed to uninstall KMC_REGISTER_HOST_WINDOW_X64 = 23; KMC_REGISTER_HOST_WINDOW_ARM64 = 24; @@ -70,25 +70,6 @@ const PC_UPDATE_LANGUAGESWITCH = 1; PC_HOTKEYCHANGE = 2; - // KMC_KEYBOARDHOTKEY = 19; // 9.0.459.0 // I4326 Deprecated in favour of language hotkeys - //KMC_LANGUAGEHOTKEY = 20; - -//TOUCH KMC_CONTEXT = 19; - - // KMC_NOTIFYWELCOME commands - NW_NOTIFYHANDLE = 0; - NW_SENDBALLOON = 1; - - // NW_SENDBALLOON options - NWB_IDENTIFYICON = 0; - NWB_TUTORIALFINISHED = 1; - NWB_KEYMANRUNNING = 2; - - // KMC_NOTIFYWELCOME_EVENT events - NWE_ICONCLICKED = 0; - NWE_MENUOPENED = 1; - NWE_MENUCLOSED = 2; - implementation end. From 5481425bf411c8886b9e543bcd30c2504a393563 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Wed, 26 Aug 2026 08:42:13 -0500 Subject: [PATCH 10/84] docs(web): add predict-helpers.ts header doc --- .../worker-thread/src/main/predict-helpers.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts index db8f0f1dfb..37185bfc1c 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts @@ -1,3 +1,12 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * Created by jahorton on 2024-07-08. + * + * This file defines many predictive-text engine's helper methods used for the + * overall process of text prediction. + */ + import * as models from '@keymanapp/models-templates'; import { KMWString } from 'keyman/common/web-utils'; import { LexicalModelTypes } from '@keymanapp/common-types'; From 775b60ba4c02e875ef8641ad8a78e1c32e213723 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Wed, 26 Aug 2026 21:27:25 +0700 Subject: [PATCH 11/84] change(web): apply MD suggestion from code review Co-authored-by: Marc Durdin --- .../predictive-text/worker-thread/src/main/predict-helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts index cd547cf657..5869b20a9d 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts @@ -530,7 +530,7 @@ export function buildAndMapPredictions( // Worth considering: extend Traversal to allow direct prediction lookups? // let traversal = match.finalTraversal; // ... - let rawPredictions = predictFromCorrections(model, [predictionRoot], predictionContext); + const rawPredictions = predictFromCorrections(model, [predictionRoot], predictionContext); const predictions = rawPredictions.map((entry) => { entry.prediction.sample.transform.deleteLeft += committedDeleteLeft; From 0f281a6a9d06a615c19c16a9ec7f85fa114b6931 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 27 Aug 2026 07:47:25 +0200 Subject: [PATCH 12/84] maint(windows): remove `koSwitchLanguageForAllApplications`, `koAutoSwitchOSKPages`, osVista, osWin7, osWin8, cleanup * Remove references to `koSwitchLanguageForAllApplications` and `koAutoSwitchOSKPages` options, translated strings for them, and related `GlobalKeyboardChangeManager` -- no longer required since Win8. * Remove Windows Vista-, 7-, and 8-specific code paths - except for the one user-facing setting for installing keyboards on downlevel operating systems. * Remove commented code Fixes: #16433 Test-bot: skip --- .../windows/delphi/general/GetOsVersion.pas | 23 ++- ...yman.System.CanonicalLanguageCodeUtils.pas | 6 - .../windows/delphi/general/RegistryKeys.pas | 3 - .../windows/src/xml/keyman_options.xsl | 2 +- oem/firstvoices/windows/src/xml/strings.xml | 5 - .../install/UfrmInstallKeyboardLanguage.pas | 2 +- .../desktop/kmshell/locale/am-ET/strings.xml | 4 - .../desktop/kmshell/locale/az-AZ/strings.xml | 4 - .../desktop/kmshell/locale/bwr-NG/strings.xml | 4 - .../desktop/kmshell/locale/ckl-NG/strings.xml | 4 - .../desktop/kmshell/locale/cs-CZ/strings.xml | 4 - .../src/desktop/kmshell/locale/de/strings.xml | 4 - .../kmshell/locale/el-polyton/strings.xml | 4 - .../desktop/kmshell/locale/es-419/strings.xml | 4 - .../desktop/kmshell/locale/es-ES/strings.xml | 4 - .../desktop/kmshell/locale/ff-NG/strings.xml | 4 - .../desktop/kmshell/locale/ff-ZA/strings.xml | 4 - .../src/desktop/kmshell/locale/fr/strings.xml | 4 - .../desktop/kmshell/locale/ha-HG/strings.xml | 4 - .../desktop/kmshell/locale/hia-NG/strings.xml | 4 - .../desktop/kmshell/locale/id-ID/strings.xml | 4 - .../desktop/kmshell/locale/it-IT/strings.xml | 4 - .../desktop/kmshell/locale/km-KH/strings.xml | 4 - .../src/desktop/kmshell/locale/kn/strings.xml | 4 - .../desktop/kmshell/locale/kr-NG/strings.xml | 4 - .../desktop/kmshell/locale/mfi-NG/strings.xml | 4 - .../desktop/kmshell/locale/mnw-MM/strings.xml | 4 - .../desktop/kmshell/locale/mrt-NG/strings.xml | 4 - .../src/desktop/kmshell/locale/my/strings.xml | 1 - .../desktop/kmshell/locale/nl-NL/strings.xml | 4 - .../desktop/kmshell/locale/pl-PL/strings.xml | 4 - .../desktop/kmshell/locale/pt-BR/strings.xml | 4 - .../desktop/kmshell/locale/pt-PT/strings.xml | 4 - .../desktop/kmshell/locale/qqq/strings.xml | 1 - .../desktop/kmshell/locale/ru-RU/strings.xml | 4 - .../kmshell/locale/shu-latn/strings.xml | 4 - .../desktop/kmshell/locale/sv-SE/strings.xml | 4 - .../src/desktop/kmshell/locale/ta/strings.xml | 1 - .../src/desktop/kmshell/locale/tr/strings.xml | 1 - .../desktop/kmshell/locale/uk-UA/strings.xml | 4 - .../desktop/kmshell/locale/vec/strings.xml | 1 - .../desktop/kmshell/locale/vi-VN/strings.xml | 4 - .../desktop/kmshell/locale/zh-CN/strings.xml | 4 - .../main/UImportOlderVersionSettings.pas | 3 - .../desktop/kmshell/xml/keyman_options.xsl | 2 +- windows/src/desktop/kmshell/xml/strings.xml | 5 - windows/src/desktop/setup/bootstrapmain.pas | 2 +- windows/src/engine/.gitignore | 3 + .../keyman/GlobalKeyboardChangeManager.pas | 142 ------------------ windows/src/engine/keyman/UfrmKeyman7Main.pas | 134 +---------------- windows/src/engine/keyman/keyman.dpr | 1 - windows/src/engine/keyman/keyman.dproj | 1 - .../keyman/viskbd/UfrmVisualKeyboard.pas | 11 +- .../engine/kmcomapi/util/utilkeymanoption.pas | 12 +- .../delphi/general/KeymanOptionNames.pas | 2 - 55 files changed, 26 insertions(+), 466 deletions(-) delete mode 100644 windows/src/engine/keyman/GlobalKeyboardChangeManager.pas diff --git a/common/windows/delphi/general/GetOsVersion.pas b/common/windows/delphi/general/GetOsVersion.pas index e3c7293f2b..b4b85edda7 100644 --- a/common/windows/delphi/general/GetOsVersion.pas +++ b/common/windows/delphi/general/GetOsVersion.pas @@ -1,18 +1,18 @@ (* Name: GetOsVersion Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 4 Dec 2006 Modified Date: 28 May 2014 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 04 Dec 2006 - mcdurdin - Add osVista 04 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support 24 Oct 2012 - mcdurdin - I3487 - V9.0 - Add detection of Win8 @@ -27,7 +27,7 @@ uses Winapi.Windows; type - TOS = (osLegacy, osVista, osWin7, osWin8, osWin10, osOther); // I3669 // I4222 + TOS = (osLegacy, osWin10, osOther); // I3669 // I4222 function GetOs: TOS; @@ -46,12 +46,7 @@ begin begin case osv.dwMajorVersion of 5: Result := osLegacy; - 6: case osv.dwMinorVersion of - 0: Result := osVista; - 1: Result := osWin7; - 2: Result := osWin8; // I3487 - else Result := osWin8; // I3669 - end; + 6: Result := osLegacy; 10: Result := osWin10; else Result := osWin10; diff --git a/common/windows/delphi/general/Keyman.System.CanonicalLanguageCodeUtils.pas b/common/windows/delphi/general/Keyman.System.CanonicalLanguageCodeUtils.pas index 4da9557054..a792d34fe1 100644 --- a/common/windows/delphi/general/Keyman.System.CanonicalLanguageCodeUtils.pas +++ b/common/windows/delphi/general/Keyman.System.CanonicalLanguageCodeUtils.pas @@ -35,12 +35,6 @@ var t: TBCP47Tag; LangTag: TLangTag; begin - // We do not try and canonicalize language tags on Windows 7, because it does - // not follow the same patterns as for later versions of Windows. For example, - // zh-CN is not canonicalized to zh-Hans-CN - if GetOs = osWin7 then - Exit(Tag); - if Tag = '' then Exit(''); diff --git a/common/windows/delphi/general/RegistryKeys.pas b/common/windows/delphi/general/RegistryKeys.pas index b40c309ddd..0f627c7329 100644 --- a/common/windows/delphi/general/RegistryKeys.pas +++ b/common/windows/delphi/general/RegistryKeys.pas @@ -127,9 +127,6 @@ const SRegValue_ProxyLogin = 'proxy login'; SRegValue_AutoOpenOSK = 'auto open osk'; // CU, default true - SRegValue_AutoSwitchOSKPages = 'auto switch osk pages'; // CU, default true - SRegValue_SwitchLanguageWithKeyboard = 'switch language with keyboard'; // CU, default true - SRegValue_SwitchLanguageForAllApplications = 'switch language for all applications'; // CU, default true SRegValue_DeepTSFIntegration = 'deep tsf integration'; // LM, 0=disable, 1=enable, 2=default SRegKey_AppIntegration = SRegKey_KeymanEngine_LM + '\App Integration'; //KM diff --git a/oem/firstvoices/windows/src/xml/keyman_options.xsl b/oem/firstvoices/windows/src/xml/keyman_options.xsl index 0d8fee607b..561ddc70f6 100644 --- a/oem/firstvoices/windows/src/xml/keyman_options.xsl +++ b/oem/firstvoices/windows/src/xml/keyman_options.xsl @@ -14,7 +14,7 @@
- + diff --git a/oem/firstvoices/windows/src/xml/strings.xml b/oem/firstvoices/windows/src/xml/strings.xml index e476f1daf8..0348833eb1 100644 --- a/oem/firstvoices/windows/src/xml/strings.xml +++ b/oem/firstvoices/windows/src/xml/strings.xml @@ -408,11 +408,6 @@ Always show On Screen Keyboard Window when a FirstVoices keyboard is selected - - - - Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected - diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas index fab24635f7..e181f0203f 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas @@ -474,7 +474,7 @@ begin end; end; - if not (GetOs = osWin7) and not FFoundCustomTag then + if not FFoundCustomTag then begin if IsValidLocaleName(PChar(FText)) then begin diff --git a/windows/src/desktop/kmshell/locale/am-ET/strings.xml b/windows/src/desktop/kmshell/locale/am-ET/strings.xml index 2f23892343..deb9c06475 100644 --- a/windows/src/desktop/kmshell/locale/am-ET/strings.xml +++ b/windows/src/desktop/kmshell/locale/am-ET/strings.xml @@ -336,10 +336,6 @@ የኪይማን የፊደል ሰሌዳ ሲመረጥ ሁልጊዜ የስክሪን ላይ ኪቦርዱን መስኮት አሳይ - - የፊደል ሰሌዳው በሚመረጥበት ጊዜ ወዲያውኑ ወደ ተገቢው የስክሪን ላይ ኪቦርድ እርዳታ ይቀይሩ - - የኪማኑን ስህተቶች ፈልግ diff --git a/windows/src/desktop/kmshell/locale/az-AZ/strings.xml b/windows/src/desktop/kmshell/locale/az-AZ/strings.xml index 7e3b7d5691..e75a4ce7c1 100644 --- a/windows/src/desktop/kmshell/locale/az-AZ/strings.xml +++ b/windows/src/desktop/kmshell/locale/az-AZ/strings.xml @@ -315,10 +315,6 @@ Keyman klaviaturası seçildikdə həmişə Ekran Klaviatura Pəncərəsini göstərin - - Bir klaviatura seçildikdə avtomatik müvafiq olaraq On Screen Keyboard / Help-ə keçmək - - Hata düzəltməsi diff --git a/windows/src/desktop/kmshell/locale/bwr-NG/strings.xml b/windows/src/desktop/kmshell/locale/bwr-NG/strings.xml index 503b941fde..dc3d28ae73 100644 --- a/windows/src/desktop/kmshell/locale/bwr-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/bwr-NG/strings.xml @@ -315,10 +315,6 @@ Kǝlara saka ncangtǝ On Screen Keyboard Window saka tǝ mdǝ car keyboard ar Keyman - - Pali On Screen Keyboard/Help na kalkal ka kǝrni sakatǝ mdǝ car keyboard laga - - Debugging diff --git a/windows/src/desktop/kmshell/locale/ckl-NG/strings.xml b/windows/src/desktop/kmshell/locale/ckl-NG/strings.xml index 779b0e0531..70dfc201ae 100644 --- a/windows/src/desktop/kmshell/locale/ckl-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/ckl-NG/strings.xml @@ -335,10 +335,6 @@ Tsanti On Screen Keyboard Window kǝlara saka namtǝ ndǝ tsarba Keyman keyboard - - Mwari ata On Screen Keyboard/Help automatically saka namtǝ gǝ tsarba kibod - - Debugging diff --git a/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml b/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml index 6e217e3b1f..c1572d44ab 100644 --- a/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml +++ b/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml @@ -343,10 +343,6 @@ Vždy zobrazovat zapnuté okno klávesnice při výběru klávesnice - - Automaticky přepnout na vhodnou klávesnici na obrazovku/Pomoc při výběru klávesnice - - Ladění diff --git a/windows/src/desktop/kmshell/locale/de/strings.xml b/windows/src/desktop/kmshell/locale/de/strings.xml index 2e2d3bffd8..529e9dc090 100644 --- a/windows/src/desktop/kmshell/locale/de/strings.xml +++ b/windows/src/desktop/kmshell/locale/de/strings.xml @@ -343,10 +343,6 @@ Bildschirmtastatur immer anzeigen wenn eine Keyman-Tastatur ausgewählt ist - - Bildschirmtastatur bzw. Hilfe automatisch anzeigen, wenn eine Tastatur ausgewählt wird - - Fehlersuchen einschalten diff --git a/windows/src/desktop/kmshell/locale/el-polyton/strings.xml b/windows/src/desktop/kmshell/locale/el-polyton/strings.xml index 72d425903f..3eaab6827b 100644 --- a/windows/src/desktop/kmshell/locale/el-polyton/strings.xml +++ b/windows/src/desktop/kmshell/locale/el-polyton/strings.xml @@ -343,10 +343,6 @@ Ὅταν ἐπιλέγετε πληκτρολόγιο Keyman, νὰ προβάλλετε πάντα τὸ πληκτρολόγιο ὀθόνης - - Μόλις ἐπιλεγεῖ πληκτρολόγιο νὰ ἐμφανίζεται αὐτομάτως τὸ κατάλληλο πληκτρολόγιο ὀθόνης ἢ ὀθόνη βοηθείας - - Διερεύνηση σφαλμάτων diff --git a/windows/src/desktop/kmshell/locale/es-419/strings.xml b/windows/src/desktop/kmshell/locale/es-419/strings.xml index 6d9eabb204..f2ca57c5fe 100644 --- a/windows/src/desktop/kmshell/locale/es-419/strings.xml +++ b/windows/src/desktop/kmshell/locale/es-419/strings.xml @@ -343,10 +343,6 @@ Mostrar siempre la ventana de teclado en pantalla cuando se seleccione el teclado de Keyman - - Cambiar automáticamente a Teclado en pantalla/Ayuda según corresponda cuando se selecciona un teclado - - Depurar diff --git a/windows/src/desktop/kmshell/locale/es-ES/strings.xml b/windows/src/desktop/kmshell/locale/es-ES/strings.xml index 144777c605..608787b42b 100644 --- a/windows/src/desktop/kmshell/locale/es-ES/strings.xml +++ b/windows/src/desktop/kmshell/locale/es-ES/strings.xml @@ -343,10 +343,6 @@ Mostrar siempre la ventana Teclado En Pantalla cuando se selecciona el teclado Keyman - - Cambiar al Teclado En Pantalla apropiado/Ayuda automáticamente cuando se selecciona un teclado - - Depuración diff --git a/windows/src/desktop/kmshell/locale/ff-NG/strings.xml b/windows/src/desktop/kmshell/locale/ff-NG/strings.xml index 9c15b5bf15..01b1e1dcb0 100644 --- a/windows/src/desktop/kmshell/locale/ff-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/ff-NG/strings.xml @@ -335,10 +335,6 @@ Koonday holla kibod man dow yeeso na`ura to kibod keyman suptaama - - Yaha haa dow kibod yeeso na`ura/mballa to kibod suptaama - - Debugin diff --git a/windows/src/desktop/kmshell/locale/ff-ZA/strings.xml b/windows/src/desktop/kmshell/locale/ff-ZA/strings.xml index 47b53ff10e..475008766c 100644 --- a/windows/src/desktop/kmshell/locale/ff-ZA/strings.xml +++ b/windows/src/desktop/kmshell/locale/ff-ZA/strings.xml @@ -339,10 +339,6 @@ Hollir Tappirde Yaynirde tuma kala nde tappirde Keyman suɓaa - - Lomtin Tappirde Yaynirde/Ballal jaaɓdunde e jaajol so tappirde Keyman suɓaama - - Buggitagol diff --git a/windows/src/desktop/kmshell/locale/fr/strings.xml b/windows/src/desktop/kmshell/locale/fr/strings.xml index df1248f033..e6dbabace4 100644 --- a/windows/src/desktop/kmshell/locale/fr/strings.xml +++ b/windows/src/desktop/kmshell/locale/fr/strings.xml @@ -335,10 +335,6 @@ Toujours afficher le clavier visuel lorsque le clavier Keyman est sélectionné - - Basculer au clavier visuel approprié/aide quand un clavier est sélectionné - - Debogage diff --git a/windows/src/desktop/kmshell/locale/ha-HG/strings.xml b/windows/src/desktop/kmshell/locale/ha-HG/strings.xml index 91a118a878..6bbafe6eb0 100644 --- a/windows/src/desktop/kmshell/locale/ha-HG/strings.xml +++ b/windows/src/desktop/kmshell/locale/ha-HG/strings.xml @@ -315,10 +315,6 @@ Nuna Madannan Kan Screen koyaushe yayinda aka zaɓi madanni - - Koma ga Madannin Kan Screen da ya dace/Taikamaka kai tsaye yayinda aka zaɓi madanni - - Cire kuskure diff --git a/windows/src/desktop/kmshell/locale/hia-NG/strings.xml b/windows/src/desktop/kmshell/locale/hia-NG/strings.xml index bb558c5b18..e555b2d49b 100644 --- a/windows/src/desktop/kmshell/locale/hia-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/hia-NG/strings.xml @@ -315,10 +315,6 @@ Always show On Screen Keyboard Window when Keyman keyboard is selected - - A gunat daideya t Screen Keyboard/Fanast jiv kudeɗa t keyboard vita kabbklalo - - Klun tina magal kol ɗughwana diff --git a/windows/src/desktop/kmshell/locale/id-ID/strings.xml b/windows/src/desktop/kmshell/locale/id-ID/strings.xml index bfc69558a3..2b7aa7ef82 100644 --- a/windows/src/desktop/kmshell/locale/id-ID/strings.xml +++ b/windows/src/desktop/kmshell/locale/id-ID/strings.xml @@ -315,10 +315,6 @@ Selalu tunjukkan jendela papan tombol di layar ketika papan tombol Keyman dipilih - - Ganti ke bantuan/papan tombol di layar yang sesuai ketika memilih sebuah papan tombol - - Debugging diff --git a/windows/src/desktop/kmshell/locale/it-IT/strings.xml b/windows/src/desktop/kmshell/locale/it-IT/strings.xml index a89759327e..1090d7c064 100644 --- a/windows/src/desktop/kmshell/locale/it-IT/strings.xml +++ b/windows/src/desktop/kmshell/locale/it-IT/strings.xml @@ -343,10 +343,6 @@ Mostra sempre sulla finestra della tastiera a schermo quando è selezionata la tastiera Keyman - - Passa automaticamente a appropriate Tastiera/Aiuto sullo schermo quando viene selezionata una tastiera - - Debug diff --git a/windows/src/desktop/kmshell/locale/km-KH/strings.xml b/windows/src/desktop/kmshell/locale/km-KH/strings.xml index 4c32ffeb1b..722091289d 100644 --- a/windows/src/desktop/kmshell/locale/km-KH/strings.xml +++ b/windows/src/desktop/kmshell/locale/km-KH/strings.xml @@ -343,10 +343,6 @@ បង្ហាញ \"ក្ដារចុចលើអេក្រង់\" ជា​និច្ច នៅពេល​បាន​ជ្រើសរើស​ក្ដារចុច Keyman - - ប្ដូរ​ទៅ \"ក្ដារចុច​លើអេក្រង់/ជំនួយ\" ដែល​ពាក់ព័ន្ធ​ដោយ​ស្វ័យប្រវត្តិ នៅពេល​ក្ដារចុច​ណាមួយត្រូវ​បាន​ជ្រើសរើស​ - - ការប្រមូល​ព័ត៌មានសម្រាប់​ដោះស្រាយ​បញ្ហា diff --git a/windows/src/desktop/kmshell/locale/kn/strings.xml b/windows/src/desktop/kmshell/locale/kn/strings.xml index 4c985d98e0..aa72e7f0ea 100644 --- a/windows/src/desktop/kmshell/locale/kn/strings.xml +++ b/windows/src/desktop/kmshell/locale/kn/strings.xml @@ -335,10 +335,6 @@ ಹೊಸ ಕೀಮ್ಯಾನ್ ಕೀಲಿಮಣೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿದಾಗ ತೆರೆಯ ಮೇಲಿನ ಕೀಲಿಮಣೆಯನ್ನು ತೋರಿಸು - - ಬೇರೆ ಕೀಲಿಮಣೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿದಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಹಾಯ ಅಥವಾ ತೆರೆಯ ಮೇಲಿನ ಕೀಲಿಮಣೆಯನ್ನು ಬದಲಿಸು - - ಡೀಬಗ್ ಮಾಡುವುದು diff --git a/windows/src/desktop/kmshell/locale/kr-NG/strings.xml b/windows/src/desktop/kmshell/locale/kr-NG/strings.xml index 509f3e8544..7bdb01ffcd 100644 --- a/windows/src/desktop/kmshell/locale/kr-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/kr-NG/strings.xml @@ -315,10 +315,6 @@ Sambi yayiScreen Keyboard Window dǝ fulene sa Keyman keyboard dǝ karnǝmiya - - Kalakkǝne rattǝram kalkalma dǝro - - Kadau dǝga kulasne tuluye diff --git a/windows/src/desktop/kmshell/locale/mfi-NG/strings.xml b/windows/src/desktop/kmshell/locale/mfi-NG/strings.xml index 7f3788a37c..f297e652b7 100644 --- a/windows/src/desktop/kmshell/locale/mfi-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/mfi-NG/strings.xml @@ -315,10 +315,6 @@ A nja a ban kwa Keyboard Window at sikirine ma seke an ksa Keyman keyboard ŋanna gé slera - - Magamaga Switch a dem kalkale sikirin Keyboard/anuga mla ma seke ksanta-ksande keyboard ŋanna - - Debugging diff --git a/windows/src/desktop/kmshell/locale/mnw-MM/strings.xml b/windows/src/desktop/kmshell/locale/mnw-MM/strings.xml index 63d921d4a9..2ea0f1b4dc 100644 --- a/windows/src/desktop/kmshell/locale/mnw-MM/strings.xml +++ b/windows/src/desktop/kmshell/locale/mnw-MM/strings.xml @@ -343,10 +343,6 @@ ယဝ်ရ ကဳဗုဒ်ကဳမာန် ရုဲလဝ်မ္ဂး ပံက် ကဳဗုဒ်ဗၠးမုက် လၟိန် - - ယဝ်ရ ရုဲစှ်လဝ်ကဳဗုဒ်မွဲမွဲမ္ဂး ပံက်ကဵု အရီုဗၚ် မဆက်စပ် ကု ကဳဗုဒ်ဗၠးမုက် - - ဂၠိုက်ဂၠာဲပသောၚ်စၟ diff --git a/windows/src/desktop/kmshell/locale/mrt-NG/strings.xml b/windows/src/desktop/kmshell/locale/mrt-NG/strings.xml index 896f67ddcb..0d8f9580a2 100644 --- a/windows/src/desktop/kmshell/locale/mrt-NG/strings.xml +++ b/windows/src/desktop/kmshell/locale/mrt-NG/strings.xml @@ -315,10 +315,6 @@ Kuga ncha On Screen Keyboard Window ma nagu ga caɗu Keyman keyboard - - Kuga pubila alu On screen Keyboard/ thlia ɓar udzu ma mji a caba keyboard ari - - Debugging diff --git a/windows/src/desktop/kmshell/locale/my/strings.xml b/windows/src/desktop/kmshell/locale/my/strings.xml index 0e8576c65b..c813fe581b 100644 --- a/windows/src/desktop/kmshell/locale/my/strings.xml +++ b/windows/src/desktop/kmshell/locale/my/strings.xml @@ -10,7 +10,6 @@ ထွက်ပါ Keyman? Simulate AltGr with Ctrl+Alt ကီးမန်းကီးဘုတ်ကို ရွေးသည့်အခါတိုင်း Screenမှာပေါ်မှာမြင်ရမည့်ကီးဘုတ် ကိုပြပါ - ကီးဘုတ်ကိုရွေးချယ်ပြီးပါက သင့်လျော်သော Screenမှာပေါ်မှာမြင်ရမည့်ကီးဘုတ်/အကူအညီကို အလိုအလျောက်ပြပါ Debugging အဆင့်မြင့် General diff --git a/windows/src/desktop/kmshell/locale/nl-NL/strings.xml b/windows/src/desktop/kmshell/locale/nl-NL/strings.xml index 4edb9a4e6c..66e9d72b0b 100644 --- a/windows/src/desktop/kmshell/locale/nl-NL/strings.xml +++ b/windows/src/desktop/kmshell/locale/nl-NL/strings.xml @@ -315,10 +315,6 @@ Toon altijd op het scherm toetsenbord wanneer toetsenbord is geselecteerd - - Schakel automatisch over naar toepasselijk bij schermtoetsenbord/Help wanneer een toetsenbord is geselecteerd - - Foutopsporing diff --git a/windows/src/desktop/kmshell/locale/pl-PL/strings.xml b/windows/src/desktop/kmshell/locale/pl-PL/strings.xml index 1702d5b4d1..43aea94ad6 100644 --- a/windows/src/desktop/kmshell/locale/pl-PL/strings.xml +++ b/windows/src/desktop/kmshell/locale/pl-PL/strings.xml @@ -315,10 +315,6 @@ Zawsze pokazuj okno klawiatury ekranowej, gdy wybrana jest klawiatura Keyman - - Automatycznie przełącz na odpowiednią klawiaturę ekranową/stronę pomocy po wybraniu klawiatury - - Debugowanie diff --git a/windows/src/desktop/kmshell/locale/pt-BR/strings.xml b/windows/src/desktop/kmshell/locale/pt-BR/strings.xml index d798b1b43d..5e58460a45 100644 --- a/windows/src/desktop/kmshell/locale/pt-BR/strings.xml +++ b/windows/src/desktop/kmshell/locale/pt-BR/strings.xml @@ -335,10 +335,6 @@ Always show On Screen Keyboard Window when Keyman keyboard is selected - - Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected - - Debugging diff --git a/windows/src/desktop/kmshell/locale/pt-PT/strings.xml b/windows/src/desktop/kmshell/locale/pt-PT/strings.xml index 6a1d0df5a4..669dd4f8e2 100644 --- a/windows/src/desktop/kmshell/locale/pt-PT/strings.xml +++ b/windows/src/desktop/kmshell/locale/pt-PT/strings.xml @@ -343,10 +343,6 @@ Mostrar sempre Teclado Virtual enquanto o teclado Keyman estiver selecionado. - - Mudar automaticamente para a Ajuda apropriada do Teclado Virtual quando um teclado for selecionado - - Depuração diff --git a/windows/src/desktop/kmshell/locale/qqq/strings.xml b/windows/src/desktop/kmshell/locale/qqq/strings.xml index 23e31b333b..fe75075025 100644 --- a/windows/src/desktop/kmshell/locale/qqq/strings.xml +++ b/windows/src/desktop/kmshell/locale/qqq/strings.xml @@ -105,7 +105,6 @@ Create a user interface translation for Keyman Desktop at http://www.tavultesoft [!!Ţēśŧ ƒőŗ ćōńƒłĭćţıņġ ȃƥƿŀīčäťīōňş ŵĥēƞ !!]Keyman[!! şťǻřţš!!] [!!Ŕěŀęàšĕ Şĥıƒţ/Ĉţřŀ/Ȁľŧ ōň Őņ Ŝčŗėěń Ķēŷƃơâŕđ ȃƒţēŕ ćŀĭċĸīňģ å ĸȅȳ!!] [!!Äľŵȁƴŝ ŝĥŏŵ Őƞ Šċŕėěń ĶĕƴƄōãřđ Ŵīƞďơŵ ŵĥėń Ķěɏmàƞ ķȇƴƃőáŗď ĩš śēļĕĉţěď!!] - [!!Šŵĭŧčĥ ŧơ āƥƿřőƥŕįáŧė Őŋ Šćŗěėń ƘȅƴƄőãŗđ/Ħȅĺƿ áųťơmăŧĭĉåłŀŷ ŵĥȅņ ȃ ķęȳƀōāŕđ ĭŝ śĕļȇćţȇđ!!] [!!ĎēƄŭģġįƞĝ!!] [!!Ůšēř ĩŋţĕŗƒāĉē łáņģůȃġė...!!] [!!Ɓâśȇ Ƙȇƴɓŏäŕđ...!!] diff --git a/windows/src/desktop/kmshell/locale/ru-RU/strings.xml b/windows/src/desktop/kmshell/locale/ru-RU/strings.xml index b0729d8b54..e659a3f14f 100644 --- a/windows/src/desktop/kmshell/locale/ru-RU/strings.xml +++ b/windows/src/desktop/kmshell/locale/ru-RU/strings.xml @@ -335,10 +335,6 @@ Всегда показывать в экранном окне клавиатуры при выборе клавиатуры - - Переключиться на соответствующую клавиатуру/справку при выборе клавиатуры - - Отладка diff --git a/windows/src/desktop/kmshell/locale/shu-latn/strings.xml b/windows/src/desktop/kmshell/locale/shu-latn/strings.xml index ebf8995a12..b5397a2a83 100644 --- a/windows/src/desktop/kmshell/locale/shu-latn/strings.xml +++ b/windows/src/desktop/kmshell/locale/shu-latn/strings.xml @@ -335,10 +335,6 @@ Matakula eiwari Keyboard albinshaf matakula kan assar Keyman Keyboard - - Eilbarram ley Keyboard albinshaf alsayid/Mi\'awana bey dumta kan azzaltal keyboard - - Debugging diff --git a/windows/src/desktop/kmshell/locale/sv-SE/strings.xml b/windows/src/desktop/kmshell/locale/sv-SE/strings.xml index 7bba7833fe..253c4d849c 100644 --- a/windows/src/desktop/kmshell/locale/sv-SE/strings.xml +++ b/windows/src/desktop/kmshell/locale/sv-SE/strings.xml @@ -335,10 +335,6 @@ Visa alltid på tangentbordsfönstret när tangentbordet är markerat - - Växla till lämplig På skärmen Tangentbord/Hjälp automatiskt när ett tangentbord väljs - - Felsökning diff --git a/windows/src/desktop/kmshell/locale/ta/strings.xml b/windows/src/desktop/kmshell/locale/ta/strings.xml index 38a91f6665..9040263498 100644 --- a/windows/src/desktop/kmshell/locale/ta/strings.xml +++ b/windows/src/desktop/kmshell/locale/ta/strings.xml @@ -315,7 +315,6 @@ Entries not in this file will be sourced from the default locale.xml file in the Test for conflicting applications when Keyman starts Release Shift/Ctrl/Alt on On Screen Keyboard after clicking a key Always show On Screen Keyboard Window when Keyman keyboard is selected - Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected Base Keyboard... diff --git a/windows/src/desktop/kmshell/locale/tr/strings.xml b/windows/src/desktop/kmshell/locale/tr/strings.xml index e32f2a09b5..f92561350c 100644 --- a/windows/src/desktop/kmshell/locale/tr/strings.xml +++ b/windows/src/desktop/kmshell/locale/tr/strings.xml @@ -10,7 +10,6 @@ Keyman'tan Çıkış? AltGr'yi Ctrl+Alt ile simüle edin Keyman klavye seçildiğinde daima Ekran Klavyesi Penceresini gösterin - Bir klavye seçildiğinde uygun Ekran Klavyesi/ Yardım'a otomatik olarak geçin Harf imleme tuşlarına düz tuşlar gibi davran Hata Ayıklama Gelişmiş diff --git a/windows/src/desktop/kmshell/locale/uk-UA/strings.xml b/windows/src/desktop/kmshell/locale/uk-UA/strings.xml index 6d2e9e092b..4da38b3878 100644 --- a/windows/src/desktop/kmshell/locale/uk-UA/strings.xml +++ b/windows/src/desktop/kmshell/locale/uk-UA/strings.xml @@ -335,10 +335,6 @@ Завжди показувати на екранному вікні, коли вибрано клавіатуру Keyman - - Автоматично переключатися на відповідну клавіатуру на екрані/допомога при виборі клавіатури - - Відлагодження diff --git a/windows/src/desktop/kmshell/locale/vec/strings.xml b/windows/src/desktop/kmshell/locale/vec/strings.xml index 47c1a96cc7..90d65792e6 100644 --- a/windows/src/desktop/kmshell/locale/vec/strings.xml +++ b/windows/src/desktop/kmshell/locale/vec/strings.xml @@ -10,7 +10,6 @@ Vusto andar fora da Keyman Desktop? Ìmita AltGr co' Ctrl+Alt Mostra senpre ƚa finèstra de ƚa Mapa Tastièra co xé desernìo ƚa tastièra Keyman - Pasa a ƚa pàxena pì pròpia de Mapa Tastièra so Schèrmo co xé desernìo na tastièra Debugging Avansà Xeneral diff --git a/windows/src/desktop/kmshell/locale/vi-VN/strings.xml b/windows/src/desktop/kmshell/locale/vi-VN/strings.xml index 2cf66d5d5a..48241f24c9 100644 --- a/windows/src/desktop/kmshell/locale/vi-VN/strings.xml +++ b/windows/src/desktop/kmshell/locale/vi-VN/strings.xml @@ -343,10 +343,6 @@ Luôn hiện Cửa sổ Bàn phím ảo khi bàn phím Keyman được chọn - - Tự động chuyển sang Bàn phím ảo/Trợ giúp phù hợp khi chọn bàn phím - - Gỡ lỗi diff --git a/windows/src/desktop/kmshell/locale/zh-CN/strings.xml b/windows/src/desktop/kmshell/locale/zh-CN/strings.xml index c9049cd2a9..2bf4c212fa 100644 --- a/windows/src/desktop/kmshell/locale/zh-CN/strings.xml +++ b/windows/src/desktop/kmshell/locale/zh-CN/strings.xml @@ -335,10 +335,6 @@ 选择键盘时,总是在屏幕键盘窗口中显示 - - 当选择键盘时,自动切换到屏幕键盘/帮助 - - 调试中 diff --git a/windows/src/desktop/kmshell/main/UImportOlderVersionSettings.pas b/windows/src/desktop/kmshell/main/UImportOlderVersionSettings.pas index 278f36a2df..7c873d4118 100644 --- a/windows/src/desktop/kmshell/main/UImportOlderVersionSettings.pas +++ b/windows/src/desktop/kmshell/main/UImportOlderVersionSettings.pas @@ -73,7 +73,6 @@ begin kmcom.Options['koKeyboardHotkeysAreToggle'].Value := True; kmcom.Options['koAltGrCtrlAlt'].Value := False; kmcom.Options['koShowHints'].Value := True; - kmcom.Options['koSwitchLanguageForAllApplications'].Value := True; { Startup } kmcom.Options['koShowStartup'].Value := True; @@ -82,7 +81,6 @@ begin { OSK } kmcom.Options['koReleaseShiftKeysAfterKeyPress'].Value := False; kmcom.Options['koAutoOpenOSK'].Value := False; - kmcom.Options['koAutoSwitchOSKPages'].Value := True; //// TODO: kmcom.Options['koShowOSKOnStartup'] := True; { Advanced } // I3629 @@ -109,7 +107,6 @@ begin kmcom.Options['koTestKeymanFunctioning'].Value := not ValueExists(SRegValue_TestKeymanFunctioning) or ReadBool(SRegValue_TestKeymanFunctioning); kmcom.Options['koReleaseShiftKeysAfterKeyPress'].Value := ValueExists(SRegValue_ReleaseShiftKeysAfterKeyPress) and ReadBool(SRegValue_ReleaseShiftKeysAfterKeyPress); - kmcom.Options['koAutoSwitchOSKPages'].Value := not ValueExists(SRegValue_AutoSwitchOSKPages) or ReadBool(SRegValue_AutoSwitchOSKPages); if OpenKeyReadOnly(SRegKey_UpgradeBackupPath_CU + SRegKey_KeymanEngine70_CU+'\hotkeys\1') or OpenKeyReadOnly(SRegKey_UpgradeBackupPath_CU + SRegKey_KeymanEngine70_CU+'\hotkeys\8') then begin diff --git a/windows/src/desktop/kmshell/xml/keyman_options.xsl b/windows/src/desktop/kmshell/xml/keyman_options.xsl index 7a085f5808..0d68ca46ca 100644 --- a/windows/src/desktop/kmshell/xml/keyman_options.xsl +++ b/windows/src/desktop/kmshell/xml/keyman_options.xsl @@ -14,7 +14,7 @@
- + diff --git a/windows/src/desktop/kmshell/xml/strings.xml b/windows/src/desktop/kmshell/xml/strings.xml index 16206a832c..7d6f53c85d 100644 --- a/windows/src/desktop/kmshell/xml/strings.xml +++ b/windows/src/desktop/kmshell/xml/strings.xml @@ -434,11 +434,6 @@ Always show On Screen Keyboard Window when Keyman keyboard is selected - - - - Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected - diff --git a/windows/src/desktop/setup/bootstrapmain.pas b/windows/src/desktop/setup/bootstrapmain.pas index 28ac6a6257..0c9c258cd8 100644 --- a/windows/src/desktop/setup/bootstrapmain.pas +++ b/windows/src/desktop/setup/bootstrapmain.pas @@ -416,7 +416,7 @@ function TSetupBootstrap.CheckForOldVersionScenario: Boolean; // I4460 var OldKMShellPath: string; begin - if not (GetOS in [osLegacy, osVista]) then // I4365 + if GetOS <> osLegacy then // I4365 Exit(False); if FInstallInfo.Packages.Count = 0 then diff --git a/windows/src/engine/.gitignore b/windows/src/engine/.gitignore index e17dcb3de7..b5eaf968f8 100644 --- a/windows/src/engine/.gitignore +++ b/windows/src/engine/.gitignore @@ -3,6 +3,9 @@ keyman32/keyman-debug-etw.h keyman32/keyman-debug-etw.rc keyman32/keyman-debug-etw.res keyman32/keyman-debug-etwTEMP.BIN +keymanhp/versionarm64.res +keymanhp/versionx64.res +kmcomapi/kbd_noicon.res mcompile/Debug # Visual Studio packages for test diff --git a/windows/src/engine/keyman/GlobalKeyboardChangeManager.pas b/windows/src/engine/keyman/GlobalKeyboardChangeManager.pas deleted file mode 100644 index 22d5509a96..0000000000 --- a/windows/src/engine/keyman/GlobalKeyboardChangeManager.pas +++ /dev/null @@ -1,142 +0,0 @@ -unit GlobalKeyboardChangeManager; - -interface - -uses - Winapi.Windows, - Winapi.Messages, - System.Classes, - System.SysUtils, - - Keyman.System.SharedBuffers, - LangSwitchManager; - -type - TGlobalKeyboardChangeManager = class(TThread) - private type - TLastKeyboard = record - TIP: TSelectKeyboardBuffer; - Keyboard: HKL; - end; - private var - FWindow: HWND; - FLastKeyboard: TLastKeyboard; - procedure WndProc(var Message: TMessage); - procedure ProcessChange(Mode: Integer; Param: NativeUInt); - protected - procedure Execute; override; - public - constructor Create; - destructor Destroy; override; - - procedure PostChange(Keyboard: TLangSwitchKeyboard); - end; - -implementation - -uses - Keyman.System.DebugLogClient, - UfrmKeyman7Main; - -const - WM_USER_DESTROY = WM_USER + 1; - WM_USER_CHANGE = WM_USER + 2; - -{ TGlobalKeyboardChangeManager } - -constructor TGlobalKeyboardChangeManager.Create; -begin - inherited Create(False); -end; - -destructor TGlobalKeyboardChangeManager.Destroy; -begin - if FWindow <> 0 then - PostMessage(FWindow, WM_USER_DESTROY, 0, 0); - inherited Destroy; -end; - -procedure TGlobalKeyboardChangeManager.Execute; -var - msg: TMsg; -begin - FWindow := AllocateHwnd(WndProc); // TODO: Not thread safe! - while GetMessage(msg, 0, 0, 0) do - begin - DispatchMessage(msg); - end; - DeallocateHwnd(FWindow); -end; - -procedure TGlobalKeyboardChangeManager.PostChange( - Keyboard: TLangSwitchKeyboard); -var - TIP: TLangSwitchKeyboard_TIP; - WinKB: TLangSwitchKeyboard_WinKeyboard; - lk: TLastKeyboard; - FIdentity: DWORD; -begin - lk := FLastKeyboard; - - if Keyboard is TLangSwitchKeyboard_TIP then - begin - TIP := Keyboard as TLangSwitchKeyboard_TIP; - - lk.TIP.LangID := TIP.Profile.langid; - lk.TIP.CLSID := TIP.Profile.clsid; - lk.TIP.GUIDProfile := TIP.Profile.guidProfile; - TDebugLogClient.Instance.WriteMessage('TGlobalKeyboardChangeManager.PostChange TIP', []); - - if not CompareMem(@lk, @FLastKeyboard, SizeOf(TLastKeyboard)) then - begin - FLastKeyboard := lk; - FIdentity := TSharedBufferManager.Identity.WriteSelectKeyboardBuffer(lk.TIP); - PostMessage(FWindow, WM_USER_CHANGE, KMCI_SELECTKEYBOARD_BACKGROUND_TSF, FIdentity); - end; - end - else if Keyboard is TLangSwitchKeyboard_WinKeyboard then - begin - WinKB := Keyboard as TLangSwitchKeyboard_WinKeyboard; - lk.Keyboard := WinKB.HKL; - - TDebugLogClient.Instance.WriteMessage('TGlobalKeyboardChangeManager.PostChange HKL', []); - - if not CompareMem(@lk, @FLastKeyboard, SizeOf(TLastKeyboard)) then - begin - FLastKeyboard := lk; - PostMessage(FWindow, WM_USER_CHANGE, KMCI_SELECTKEYBOARD_BACKGROUND, lk.Keyboard); - end; - end - else - begin - Exit; - end; - -end; - -procedure TGlobalKeyboardChangeManager.ProcessChange(Mode: Integer; Param: NativeUInt); -begin - SendMessageTimeout(HWND_BROADCAST, wm_keyman_control_internal, Mode, Param, SMTO_ABORTIFHUNG, 250, nil); -end; - -procedure TGlobalKeyboardChangeManager.WndProc(var Message: TMessage); -begin - with Message do - begin - case Message.Msg of - WM_USER_DESTROY: - DestroyWindow(FWindow); - WM_DESTROY: - begin - PostQuitMessage(0); - Result := 0; - end; - WM_USER_CHANGE: - ProcessChange(WParam, LParam); - else - Message.Result := DefWindowProc(FWindow, Msg, WParam, LParam); - end; - end; -end; - -end. diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index 2836235f1f..852161ccc5 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -153,8 +153,6 @@ uses Keyman.System.FrameworkInputPane, keymanapi_TLB, -//TOUCH UfrmTouchKeyboard, - GlobalKeyboardChangeManager, UfrmVisualKeyboard, IntegerList, KeymanTrayIcon, @@ -222,7 +220,6 @@ type FLastFocus: THandle; FLastActive: THandle; FLangSwitchManager: TLangSwitchManager; // I3933 - FGlobalKeyboardChangeManager: TGlobalKeyboardChangeManager; // I4271 FActiveHKL: Integer; FTrayIcon: TIcon; // I4359 @@ -253,7 +250,6 @@ type procedure TrayIconMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure TrayIconDblClick(Sender: TObject); - //function CreateKeymanMenuItem(Owner: TPopupMenu; rp: TRunningProduct; cmi: IKeymanCustomisationMenuItem): TKeymanMenuItem; function AppMessage(var Message: TMessage): Boolean; procedure TestKeymanFunctioning(FunctionType: TTestKeymanFunctionType; RunOnSuccess, ResetCounter: Boolean); function ShouldTestKeymanFunctioning: Boolean; @@ -262,13 +258,10 @@ type procedure UpdateOSKVisibility; function GetOption_AutoOpenOSK: Boolean; - function GetOption_AutoSwitchOSKPages: Boolean; - //procedure SnapToolHelp; procedure RecreateTaskbarIcons; function StartKeymanEngine: Boolean; procedure StartKeymanHostProcess(ProcessName: string); procedure OpenTextEditor; - //function GetCachedKeymanID(hkl: DWORD): DWORD; procedure ShowLanguageSwitchForm; procedure LanguageSwitchFormHidden(Sender: TObject); procedure RegisterControllerWindows; // I3092 @@ -278,13 +271,7 @@ type function GetActiveKeymanID: Integer; // I3949 procedure RequestCurrentActiveKeyboard(Command: WORD); // I3961 function ProcessWMKeymanControl(Command, WParam: Word; LParam: DWord): LResult; // I3961 -//TOUCH procedure HideTouchKeyboard; -//TOUCH procedure ShowTouchKeyboard; -//TOUCH function UseTouchKeyboard: Boolean; -//TOUCH function TouchKeyboardVisible: Boolean; -//TOUCH procedure ProcessContextChange(Atom: DWORD); - procedure PostGlobalKeyboardChange(FActiveKeyboard: TLangSwitchKeyboard); // I4271 function IsControllerWindow(AHandle: THandle): Boolean; // I4731 procedure UpdateFocusInfo; // I4731 procedure UnregisterControllerWindows; // I4731 @@ -339,7 +326,6 @@ type property LangSwitchManager: TLangSwitchManager read FLangSwitchManager; // I3933 property Option_AutoOpenOSK: Boolean read GetOption_AutoOpenOSK; - property Option_AutoSwitchOSKPages: Boolean read GetOption_AutoSwitchOSKPages; end; var @@ -405,7 +391,7 @@ uses klog, GetOsVersion, System.StrUtils, - System.Win.ComObj, {tlhelp32,} + System.Win.ComObj, VistaMessages, Vcl.AxCtrls, Vcl.Buttons, @@ -469,8 +455,6 @@ begin rp.FTrayIcon.OnMouseUp := TrayIconMouseUp; rp.FTrayIcon.OnDblClick := TrayIconDblClick; rp.FTrayIcon.OnUnresponsive := TrayIconUnresponsive; - //rp.FTrayIcon.OnClick := TrayIconClick; -// rp.FTrayIcon.Icon.ReleaseHandle; rp.FTrayIcon.Icon.Assign(FTrayIcon); rp.FTrayIcon.Hint := MsgFromId(SKApplicationTitle); rp.FTrayIcon.Visible := True; @@ -502,9 +486,6 @@ procedure TfrmKeyman7Main.FormCreate(Sender: TObject); begin TKeymanSentryClient.Breadcrumb('trace', 'TfrmKeyman7Main.FormCreate'); - if GetOs in [osVista, osWin7] then // I4576 - FGlobalKeyboardChangeManager := TGlobalKeyboardChangeManager.Create; // I4271 - frmKeymanMenu := TfrmKeymanMenu.Create(Self); FLangSwitchManager := TLangSwitchManager.Create; // I3933 @@ -517,7 +498,6 @@ begin end; Application.HookMainWindow(AppMessage); -// FRunningProduct := TRunningProduct.Create; sMsg_TaskbarRestart := RegisterWindowMessage('TaskbarCreated'); ChangeWindowMessageFilter(sMsg_TaskbarRestart, MSGFLT_ADD); @@ -527,11 +507,6 @@ begin PostMessage(Handle, WM_USER_Start, 0, 0); end; -{procedure TfrmKeyman7Main.AppDebug(var Msg: TMsg; var Handled: Boolean); -begin - KL.Log('MESSAGE %8.8x %x [%x, %x]', [Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam]); -end;} - procedure TfrmKeyman7Main.FormDestroy(Sender: TObject); begin TKeymanSentryClient.Breadcrumb('trace', 'TfrmKeyman7Main.FormDestroy'); @@ -552,8 +527,6 @@ begin end; if Assigned(frmVisualKeyboard) then // I1096 - silent exception when Keyman closes begin - //frmVisualKeyboard.Hide; - //frmVisualKeyboard.Release; FreeAndNil(frmVisualKeyboard); // I2692 end; @@ -571,10 +544,7 @@ begin kmint.KeymanEngineControl.ShutdownKeyman32Engine; FreeAndNil(FLangSwitchManager); // I3933 - //Windows.MessageBox(Handle, PChar(IntToStr(kmcom._AddRef)), 'RefCount+1', MB_OK); kmint.kmcom := nil; // I5132 - - FreeAndNil(FGlobalKeyboardChangeManager); // I4271 end; function TfrmKeyman7Main.GetOption_AutoOpenOSK: Boolean; @@ -582,11 +552,6 @@ begin Result := kmcom.Options.Items['koAutoOpenOSK'].Value; end; -function TfrmKeyman7Main.GetOption_AutoSwitchOSKPages: Boolean; -begin - Result := kmcom.Options.Items['koAutoSwitchOSKPages'].Value; -end; - function TfrmKeyman7Main.IsControllerWindow(AHandle: THandle): Boolean; // I4731 begin Result := GetWindowThreadProcessId(AHandle, nil) = GetCurrentThreadId; @@ -865,11 +830,6 @@ begin Sleep(5000); TDebugLogClient.Instance.WriteMessage('kmc_fakefreeze end', []); end; -//TOUCH KMC_CONTEXT: -//TOUCH begin -//TOUCH if LParam <> 0 then -//TOUCH ProcessContextChange(LParam); -//TOUCH end; end; end; @@ -1120,16 +1080,6 @@ begin // I3933 frmKeymanMenu.PopupEx(mnu, pt.x, pt.y, systraylocation); // I3990 end; -procedure TfrmKeyman7Main.PostGlobalKeyboardChange(FActiveKeyboard: TLangSwitchKeyboard); // I4271 -begin - if Assigned(FActiveKeyboard) and - Assigned(kmcom) and - (GetOs in [osVista, osWin7]) and // I4576 // I4576 // I4576 - kmcom.Options.Items['koSwitchLanguageForAllApplications'].Value and - Assigned(FGlobalKeyboardChangeManager) then - FGlobalKeyboardChangeManager.PostChange(FActiveKeyboard); -end; - procedure TfrmKeyman7Main.TrayIconDblClick(Sender: TObject); begin SetLastFocus; @@ -1317,8 +1267,6 @@ begin end; end; - //Windows.MessageBox(Handle, PChar(IntToStr(kmcom._AddRef)), 'RefCount+1', MB_OK); - try kmcom.AutoApply := False; kmcom.Keyboards.Apply; @@ -1423,8 +1371,6 @@ begin GlobalDeleteAtom(HiWord(CommandAndAtom)); // I3949 buf := buftext; - //OutputDebugString(PChar('ProcessProfileChange("'+buf+'")'#13#10)); - {debug := } StrToken(buf, '|'); // I4285 if not TryStrToInt(StrToken(buf, '|'), FLangID) then Exit; @@ -1502,18 +1448,11 @@ begin UpdateOSKVisibility; end; - PostGlobalKeyboardChange(FActiveKeyboard); // I4271 - if Assigned(frmVisualKeyboard) then // I3949 begin frmVisualKeyboard.RefreshSelectedKeyboard; // I2398 end; -//TOUCH if Assigned(frmTouchKeyboard) then -//TOUCH begin -//TOUCH frmTouchKeyboard.RefreshSelectedKeyboard; -//TOUCH end; - if wCommand = PC_UPDATE_LANGUAGESWITCH then // I4124 begin // TODO fixup product id //OutputDebugString(PChar('Showing language switch form'#13#10)); @@ -1577,7 +1516,6 @@ begin Exit; end; - //Windows.SetForegroundWindow(FLastFocus); //FLastActive); if Winapi.Windows.SetFocus(FLastFocus) = 0 then TDebugLogClient.Instance.WriteLastError('SetLastFocus', 'SetFocus'); @@ -1695,19 +1633,9 @@ end; procedure TfrmKeyman7Main.MnuVisualKeyboard(Sender: TObject); begin SetLastFocus; // I1289 - Focus not returned to active app when OSK opened - -//TOUCH if UseTouchKeyboard then -//TOUCH begin -//TOUCH if TouchKeyboardVisible -//TOUCH then HideTouchKeyboard -//TOUCH else ShowTouchKeyboard; -//TOUCH end -//TOUCH else -//TOUCH begin - if VisualKeyboardVisible(apKeyboard) - then HideVisualKeyboard - else ShowVisualKeyboard(apKeyboard); -//TOUCH end; + if VisualKeyboardVisible(apKeyboard) + then HideVisualKeyboard + else ShowVisualKeyboard(apKeyboard); end; procedure TfrmKeyman7Main.MnuFontHelper(Sender: TObject); @@ -1747,12 +1675,6 @@ procedure TfrmKeyman7Main.HideVisualKeyboard; begin if not Assigned(kmcom) and not StartKeymanEngine then Exit; -//TOUCH if UseTouchKeyboard then -//TOUCH begin -//TOUCH HideTouchKeyboard; -//TOUCH Exit; -//TOUCH end; - if Assigned(frmVisualKeyboard) then // I1274 - Avoid crash when closing OSK when already closed! frmVisualKeyboard.Release; end; @@ -1761,14 +1683,6 @@ procedure TfrmKeyman7Main.ShowVisualKeyboard(Page: TOSKActivePage); begin if not Assigned(kmcom) and not StartKeymanEngine then Exit; -//TOUCH if UseTouchKeyboard then -//TOUCH begin -//TOUCH ShowTouchKeyboard; -//TOUCH Exit; -//TOUCH end; - -//TOUCH HideTouchKeyboard; - if not Assigned(frmVisualKeyboard) then // I1274 - Related, don't recreate OSK if already exists begin frmVisualKeyboard := TfrmVisualKeyboard.Create(nil); @@ -1785,11 +1699,6 @@ begin Result := Assigned(frmVisualKeyboard) and ((Page = apUndefined) or (frmVisualKeyboard.ActivePage = Page)); end; -//TOUCH function TfrmKeyman7Main.TouchKeyboardVisible: Boolean; -//TOUCH begin -//TOUCH Result := Assigned(frmTouchKeyboard); -//TOUCH end; - procedure TfrmKeyman7Main.TestKeymanFunctioning(FunctionType: TTestKeymanFunctionType; RunOnSuccess, ResetCounter: Boolean); begin tmrTestKeymanFunctioning.Enabled := False; @@ -1820,41 +1729,6 @@ begin end; end; -//TOUCH procedure TfrmKeyman7Main.ShowTouchKeyboard; -//TOUCH var -//TOUCH FProduct: IKeymanProduct; -//TOUCH begin -//TOUCH if not Assigned(kmcom) and not StartKeymanEngine then Exit; -//TOUCH -//TOUCH if Assigned(frmVisualKeyboard) then // I1274 - Avoid crash when closing OSK when already closed! -//TOUCH frmVisualKeyboard.Release; -//TOUCH -//TOUCH if not Assigned(frmTouchKeyboard) then -//TOUCH begin -//TOUCH FProduct := ProductFromMenuItem(nil); -//TOUCH if not Assigned(FProduct) then Exit; -//TOUCH -//TOUCH frmTouchKeyboard := TfrmTouchKeyboard.Create(nil, FProduct); -//TOUCH frmTouchKeyboard.FreeNotification(Self); -//TOUCH frmTouchKeyboard.SetContext(FCurrentContext); -//TOUCH //frmTouchKeyboard.Show; -//TOUCH end; -//TOUCH end; - -//TOUCH procedure TfrmKeyman7Main.HideTouchKeyboard; -//TOUCH begin -//TOUCH if not Assigned(kmcom) and not StartKeymanEngine then Exit; -//TOUCH -//TOUCH FreeAndNil(frmTouchKeyboard); -//TOUCH end; - -//TOUCH function TfrmKeyman7Main.UseTouchKeyboard: Boolean; -//TOUCH begin -//TOUCH if not Assigned(kmcom) -//TOUCH then Result := False -//TOUCH else Result := kmcom.Options['koUseTouchLayout'].Value; -//TOUCH end; - procedure TfrmKeyman7Main.tmrCheckInputPaneTimer(Sender: TObject); var r: TRect; diff --git a/windows/src/engine/keyman/keyman.dpr b/windows/src/engine/keyman/keyman.dpr index dadcca01fc..08cb417a59 100644 --- a/windows/src/engine/keyman/keyman.dpr +++ b/windows/src/engine/keyman/keyman.dpr @@ -86,7 +86,6 @@ uses Keyman.System.Util.RenderLanguageIcon in '..\..\..\..\common\windows\delphi\ui\Keyman.System.Util.RenderLanguageIcon.pas', TempFileManager in '..\..\..\..\common\windows\delphi\general\TempFileManager.pas', utiltsf in '..\..\global\delphi\general\utiltsf.pas', - GlobalKeyboardChangeManager in 'GlobalKeyboardChangeManager.pas', utilwow64 in '..\..\global\delphi\general\utilwow64.pas', USendInputString in '..\..\global\delphi\general\USendInputString.pas', Upload_Settings in '..\..\..\..\common\windows\delphi\general\Upload_Settings.pas', diff --git a/windows/src/engine/keyman/keyman.dproj b/windows/src/engine/keyman/keyman.dproj index aa70b2ab7b..2784f6c3b4 100644 --- a/windows/src/engine/keyman/keyman.dproj +++ b/windows/src/engine/keyman/keyman.dproj @@ -211,7 +211,6 @@ - diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas index 5fc1d0ed9d..811b9cb075 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas @@ -1000,11 +1000,11 @@ begin end; procedure TfrmVisualKeyboard.WMKeymanOskModifierEvent(var Message: TMessage); -begin - if Assigned(FOnScreenKeyboard) then - FOnScreenKeyboard.OskModifierEvent(Message.WParam, Message.LParam); -end; - +begin + if Assigned(FOnScreenKeyboard) then + FOnScreenKeyboard.OskModifierEvent(Message.WParam, Message.LParam); +end; + procedure TfrmVisualKeyboard.AdjustToClosestMonitor(var x, y, cx, cy: Integer); var m: TMonitor; @@ -1589,7 +1589,6 @@ procedure TfrmVisualKeyboard.UpdateActivePage; begin if ActivePage in [apUndefined, apKeyboard] then // I2287 begin - {$MESSAGE HINT 'eliminate Option_AutoSwitchOSKPages'} LoadKeyboard; if (frmKeyman7Main.ActiveKeymanID = KEYMANID_NONKEYMAN) or FOnScreenKeyboard.HasVisualKeyboard(frmKeyman7Main.ActiveKeymanID) then // I3949 ActivePage := apKeyboard diff --git a/windows/src/engine/kmcomapi/util/utilkeymanoption.pas b/windows/src/engine/kmcomapi/util/utilkeymanoption.pas index 653fea1d96..bcb9e4cd34 100644 --- a/windows/src/engine/kmcomapi/util/utilkeymanoption.pas +++ b/windows/src/engine/kmcomapi/util/utilkeymanoption.pas @@ -122,11 +122,10 @@ type end; // The Default options here need to be consistent with the defaults set in TfrmRunDesktop.GetDefaultSettings -const KeymanOptionInfo: array[0..16] of TKeymanOptionInfo = ( // I3331 // I3620 // I4552 +const KeymanOptionInfo: array[0..14] of TKeymanOptionInfo = ( // I3331 // I3620 // I4552 // Global options (opt: koKeyboardHotkeysAreToggle; RegistryName: SRegValue_KeyboardHotkeysAreToggle; OptionType: kotBool; BoolValue: False; GroupName: 'kogGeneral'), - (opt: koSwitchLanguageForAllApplications; RegistryName: SRegValue_SwitchLanguageForAllApplications; OptionType: kotBool; BoolValue: True; GroupName: 'kogGeneral'), // I2277 // I4393 (opt: koAltGrCtrlAlt; RegistryName: SRegValue_AltGrCtrlAlt; OptionType: kotBool; BoolValue: False; GroupName: 'kogGeneral'), (opt: koRightModifierHK; RegistryName: SRegValue_AllowRightModifierHotKey; OptionType: kotBool; BoolValue: False; GroupName: 'kogGeneral'), (opt: koShowHints; RegistryName: SRegValue_EnableHints; OptionType: kotBool; BoolValue: True; GroupName: 'kogGeneral'), @@ -140,7 +139,6 @@ const KeymanOptionInfo: array[0..16] of TKeymanOptionInfo = ( // I3331 // I36 (opt: koReleaseShiftKeysAfterKeyPress; RegistryName: SRegValue_ReleaseShiftKeysAfterKeyPress; OptionType: kotBool; BoolValue: False; GroupName: 'kogOSK'), (opt: koAutoOpenOSK; RegistryName: SRegValue_AutoOpenOSK; OptionType: kotBool; BoolValue: True; GroupName: 'kogOSK'), - (opt: koAutoSwitchOSKPages; RegistryName: SRegValue_AutoSwitchOSKPages; OptionType: kotBool; BoolValue: True; GroupName: 'kogOSK'), // Startup options @@ -192,14 +190,6 @@ begin o.FEnabled := True; - if (KeymanOptionInfo[i].opt = koSwitchLanguageForAllApplications) and - not (GetOs in [osVista, osWin7]) then - begin - o.FEnabled := False; // I4271 - o.FBoolValue := False; // I4515 - o.FDefaultBoolValue := False; // I4515 - end; - o.FGroup := KeymanOptionInfo[i].GroupName; FOptions.Add(o); diff --git a/windows/src/global/delphi/general/KeymanOptionNames.pas b/windows/src/global/delphi/general/KeymanOptionNames.pas index c3cbe423c6..7c68d900c0 100644 --- a/windows/src/global/delphi/general/KeymanOptionNames.pas +++ b/windows/src/global/delphi/general/KeymanOptionNames.pas @@ -17,11 +17,9 @@ type koShowStartup, // Windows options koDebugging, - koSwitchLanguageForAllApplications, // I1089 koDeadkeyConversion, // I4552 // On Screen Keyboard Options koAutoOpenOSK, // I1288 - koAutoSwitchOSKPages, // I1375 koUseTouchLayout, koBaseLayout, koAutomaticallyReportErrors, From e7bc51fcda0a8e05cf8a1ff15d5a57a7658b85cb Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 27 Aug 2026 07:53:40 +0200 Subject: [PATCH 13/84] chore(windows): formatting Co-authored-by: Ross Cruickshank --- windows/src/engine/keyman32/keyman32.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/windows/src/engine/keyman32/keyman32.cpp b/windows/src/engine/keyman32/keyman32.cpp index 998fa1ebcf..c60f674bf5 100644 --- a/windows/src/engine/keyman32/keyman32.cpp +++ b/windows/src/engine/keyman32/keyman32.cpp @@ -612,8 +612,7 @@ void HandleRefresh(int code, LONG tag) { break; } - #ifndef _WIN64 - +#ifndef _WIN64 // This RefreshTag is only ever incremented here by the controller thread // for x86 so this is a thread safe operation *Globals::RefreshTag() = Globals::get_RefreshTag() + 1; @@ -626,7 +625,7 @@ void HandleRefresh(int code, LONG tag) { } #else *Globals::RefreshTag() = tag; - #endif +#endif SendDebugMessageFormat("HandleRefresh: new tag = %d", Globals::get_RefreshTag()); RefreshThreadKeyboardsIfRequired(); From 33e64f1eddc36c370b256c97822e6a825be35bc8 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 27 Aug 2026 08:20:21 +0200 Subject: [PATCH 14/84] refactor(windows): rename `GetCapsAndNumlockState()` to `RefreshModifierState()` Fixes: #16434 Test-bot: skip --- .../src/engine/keyman32/kmhook_getmessage.cpp | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/windows/src/engine/keyman32/kmhook_getmessage.cpp b/windows/src/engine/keyman32/kmhook_getmessage.cpp index 4efd487946..f000c2661e 100644 --- a/windows/src/engine/keyman32/kmhook_getmessage.cpp +++ b/windows/src/engine/keyman32/kmhook_getmessage.cpp @@ -68,7 +68,7 @@ void ProcessWMKeymanControlInternal(HWND hwnd, WPARAM wParam, LPARAM lParam); void ProcessWMKeymanControl(WPARAM wParam, LPARAM lParam); void ProcessWMKeyman(HWND hwnd, WPARAM wParam, LPARAM lParam); -void GetCapsAndNumlockState(); +void RefreshModifierState(); /* BOOL SysTabCtrl(HWND hwnd) @@ -354,7 +354,7 @@ void ProcessWMKeyman(HWND hwnd, WPARAM wParam, LPARAM lParam) if(IsFocusedThread()) { if(_td->app) _td->app->ResetQueue(); - GetCapsAndNumlockState(); + RefreshModifierState(); UpdateActiveWindows(); } } @@ -409,14 +409,17 @@ ProcessWMKeymanControl(WPARAM wParam, LPARAM lParam) { } } -/* - GetCapsAndNumlockState: - - Updates the global caps and numlock state when a window is focused, because it - may have been reset while Keyman was not aware of it -*/ -void GetCapsAndNumlockState() { // I4793 - DWORD n = Globals::get_ShiftState(); +/** + * Refresh Keyman's internal keyboard modifier and toggle state according + * to the Windows current keyboard state (not async state). The state may + * have been reset while Keyman was not aware of it. This is used only when + * focus changes. Note that the global values are per-architecture, so + * these may track separately. + * + * @see ProcessModifierChange() + */ +void RefreshModifierState() { // I4793 + DWORD previousShiftState = Globals::get_ShiftState(); RefreshToggleState(); @@ -435,18 +438,19 @@ void GetCapsAndNumlockState() { // I4793 if(GetKeyState(VK_RMENU) < 0) *Globals::ShiftState() |= RALTFLAG; else *Globals::ShiftState() &= ~RALTFLAG; - SendDebugMessageFormat("Enter: %x Exit: %x", n, Globals::get_ShiftState()); + SendDebugMessageFormat("Enter: %x Exit: %x", previousShiftState, Globals::get_ShiftState()); } -/* - Update the Keyman shift state based on the key event. This has to be - done from both the GetMessage hook and the TSF methods, because we don't - consistently receive modifier events in some applications (e.g. ALT in Firefox) - via TSF, and we don't receive the notifications via the GetMessage hook when - in UWP apps (#4369). - - TODO: test whether we still need the GetMessage hook for reading modifier state. -*/ +/** + * Update the Keyman shift state based on the key event. This has to be done + * from both the GetMessage hook and the TSF methods, because we don't + * consistently receive modifier events in some applications (e.g. ALT in + * Firefox) via TSF, and we don't receive the notifications via the GetMessage + * hook when in UWP apps (#4369). + * + * TODO: test whether we still need the GetMessage hook for reading modifier + * state. + */ void ProcessModifierChange(UINT key, BOOL isUp, BOOL isExtended) { // I4793 UINT flag = 0; From 14b2a9a1682027674374dd3645f406547dcbb942 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 27 Aug 2026 09:24:50 +0200 Subject: [PATCH 15/84] change(developer): deprecate `fix`, `clearcontext`, bump max .kmx version to 19.0 Fixes: #14211 Test-bot: skip --- common/include/kmx_file.h | 9 ++++---- common/web/types/src/kmx/kmx.ts | 8 ++++--- common/windows/cpp/include/legacy_kmx_file.h | 5 +++-- .../delphi/keyboards/kmxfileconsts.pas | 5 +++-- .../windows/delphi/keyboards/kmxfileutils.pas | 2 +- core/src/kmx/kmx_file.cpp | 2 +- core/src/kmx/kmx_processevent.cpp | 1 + .../src/common/include/kmn_compiler_errors.h | 2 ++ .../src/compiler/kmn-compiler-messages.ts | 6 +++++ .../src/kmc-kmn/src/kmw-compiler/util.ts | 2 +- ...n_deprecated_statement-clearcontext-17.kmn | 8 +++++++ ...n_deprecated_statement-clearcontext-19.kmn | 8 +++++++ .../warn_deprecated_statement-fix-17.kmn | 8 +++++++ .../warn_deprecated_statement-fix-19.kmn | 8 +++++++ .../test/kmn-compiler-messages.tests.ts | 9 ++++++++ developer/src/kmcmplib/src/Compiler.cpp | 11 +++++++++- developer/src/kmcmplib/src/xstring.cpp | 2 +- developer/src/kmdecomp/savekeyboard.cpp | 1 + developer/src/tike/debug/XString.pas | 22 +++++++++---------- docs/file-formats/kmx-file-format.md | 1 + linux/mcompile/keymap/mc_kmxfile.cpp | 2 +- .../KeymanEngine4Mac/KME/KMBinaryFileFormat.h | 3 ++- mac/mcompile/mc_kmxfile.cpp | 4 ++-- 23 files changed, 98 insertions(+), 31 deletions(-) create mode 100644 developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn create mode 100644 developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn create mode 100644 developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn create mode 100644 developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn diff --git a/common/include/kmx_file.h b/common/include/kmx_file.h index 748ba32d92..7b763c6700 100644 --- a/common/include/kmx_file.h +++ b/common/include/kmx_file.h @@ -51,9 +51,10 @@ namespace kmx { #define VERSION_160 0x00001000 #define VERSION_170 0x00001100 +#define VERSION_190 0x00001300 #define VERSION_MIN VERSION_50 -#define VERSION_MAX VERSION_170 +#define VERSION_MAX VERSION_190 // // Backspace types @@ -201,7 +202,7 @@ namespace kmx { //#define CODE_EXTENDEDEND 0x0B deprecated #define CODE_SWITCH 0x0C #define CODE_KEY 0x0D -#define CODE_CLEARCONTEXT 0x0E +#define CODE_CLEARCONTEXT 0x0E // deprecated in 19.0 #define CODE_CALL 0x0F // UC_SENTINEL_EXTENDEDEND 0x10 #define CODE_CONTEXTEX 0x11 @@ -234,7 +235,7 @@ namespace kmx { #define U_CODE_DEADKEY u"\u0008" #define U_CODE_EXTENDED u"\u000A" #define U_CODE_SWITCH u"\u000C" -#define U_CODE_CLEARCONTEXT u"\u000E" +#define U_CODE_CLEARCONTEXT u"\u000E" // deprecated in 19.0 #define U_CODE_CALL u"\u000F" #define U_CODE_EXTENDEDEND u"\u0010" #define U_CODE_CONTEXTEX u"\u0011" @@ -256,7 +257,7 @@ namespace kmx { #define C_CODE_DEADKEY(deadkey) U_UC_SENTINEL U_CODE_DEADKEY deadkey #define C_CODE_EXTENDED(varargs) U_UC_SENTINEL U_CODE_EXTENDED varargs #define C_CODE_SWITCH(val) U_UC_SENTINEL U_CODE_SWITCH val -#define C_CODE_CLEARCONTEXT() U_UC_SENTINEL U_CODE_CLEARCONTEXT +#define C_CODE_CLEARCONTEXT() U_UC_SENTINEL U_CODE_CLEARCONTEXT // deprecated in 19.0 #define C_CODE_CALL(val) U_UC_SENTINEL U_CODE_CALL val #define C_CODE_CONTEXTEX(val) U_UC_SENTINEL U_CODE_CONTEXTEX val #define C_CODE_NOTANY(val) U_UC_SENTINEL U_CODE_NOTANY val diff --git a/common/web/types/src/kmx/kmx.ts b/common/web/types/src/kmx/kmx.ts index 651a6db0d1..66a11398a6 100644 --- a/common/web/types/src/kmx/kmx.ts +++ b/common/web/types/src/kmx/kmx.ts @@ -24,7 +24,8 @@ export enum KMX_Version { VERSION_140 = 0x00000E00, VERSION_150 = 0x00000F00, VERSION_160 = 0x00001000, - VERSION_170 = 0x00001100 + VERSION_170 = 0x00001100, + VERSION_190 = 0x00001300, }; @@ -165,9 +166,10 @@ export class KMXFile { public static readonly VERSION_150 = KMX_Version.VERSION_150; public static readonly VERSION_160 = KMX_Version.VERSION_160; public static readonly VERSION_170 = KMX_Version.VERSION_170; + public static readonly VERSION_190 = KMX_Version.VERSION_190; public static readonly VERSION_MIN = this.VERSION_50; - public static readonly VERSION_MAX = this.VERSION_170; + public static readonly VERSION_MAX = this.VERSION_190; // // Backspace types @@ -308,7 +310,7 @@ export class KMXFile { //public static readonly CODE_EXTENDEDEND = 0x0B; deprecated public static readonly CODE_SWITCH = 0x0C; public static readonly CODE_KEY = 0x0D; - public static readonly CODE_CLEARCONTEXT = 0x0E; + public static readonly CODE_CLEARCONTEXT = 0x0E; // deprecated in 19.0 public static readonly CODE_CALL = 0x0F; // UC_SENTINEL_EXTENDEDEND 0x10 public static readonly CODE_CONTEXTEX = 0x11; diff --git a/common/windows/cpp/include/legacy_kmx_file.h b/common/windows/cpp/include/legacy_kmx_file.h index d3bc3aed0f..fcfde269e1 100644 --- a/common/windows/cpp/include/legacy_kmx_file.h +++ b/common/windows/cpp/include/legacy_kmx_file.h @@ -75,8 +75,9 @@ #define VERSION_150 0x00000F00 #define VERSION_160 0x00001000 #define VERSION_170 0x00001100 +#define VERSION_190 0x00001300 #define VERSION_MIN VERSION_50 -#define VERSION_MAX VERSION_170 +#define VERSION_MAX VERSION_190 /* Special flag for WM_CHAR/WM_KEY???/WM_SYSKEY???: says that key has been @@ -257,7 +258,7 @@ //#define CODE_EXTENDEDEND 0x0B deprecated #define CODE_SWITCH 0x0C #define CODE_KEY 0x0D -#define CODE_CLEARCONTEXT 0x0E +#define CODE_CLEARCONTEXT 0x0E // deprecated in 19.0 #define CODE_CALL 0x0F // UC_SENTINEL_EXTENDEDEND 0x10 #define CODE_CONTEXTEX 0x11 diff --git a/common/windows/delphi/keyboards/kmxfileconsts.pas b/common/windows/delphi/keyboards/kmxfileconsts.pas index 8e1955aaa6..4af524d8b7 100644 --- a/common/windows/delphi/keyboards/kmxfileconsts.pas +++ b/common/windows/delphi/keyboards/kmxfileconsts.pas @@ -56,7 +56,7 @@ const //#define CODE_EXTENDEDEND = $0B deprecated CODE_SWITCH = $0C; CODE_KEY = $0D; - CODE_CLEARCONTEXT = $0E; + CODE_CLEARCONTEXT = $0E; // deprecated in 19.0 CODE_CALL = $0F; // UC_SENTINEL_EXTENDEDEND 0x10 CODE_CONTEXTEX = $11; @@ -99,9 +99,10 @@ const VERSION_150 = $00000F00; VERSION_160 = $00001000; VERSION_170 = $00001100; + VERSION_190 = $00001300; VERSION_MIN = VERSION_50; - VERSION_MAX = VERSION_170; + VERSION_MAX = VERSION_190; VERSION_MASK_MINOR = $00FF; VERSION_MASK_MAJOR = $FF00; diff --git a/common/windows/delphi/keyboards/kmxfileutils.pas b/common/windows/delphi/keyboards/kmxfileutils.pas index 1b3168b1f2..16f5e7424f 100644 --- a/common/windows/delphi/keyboards/kmxfileutils.pas +++ b/common/windows/delphi/keyboards/kmxfileutils.pas @@ -163,7 +163,7 @@ begin CODE_CONTEXTEX: Inc(Result, 2); CODE_NOTANY: Inc(Result, 2); - CODE_CLEARCONTEXT: Inc(Result, 2); // I3442 + CODE_CLEARCONTEXT: Inc(Result, 2); // I3442 // deprecated in 19.0 CODE_IFOPT: Inc(Result, 4); // I3442 CODE_IFSYSTEMSTORE: Inc(Result, 4); // I3442 CODE_SETOPT: Inc(Result, 3); // I3442 diff --git a/core/src/kmx/kmx_file.cpp b/core/src/kmx/kmx_file.cpp index ab90df7d52..6133adfe11 100644 --- a/core/src/kmx/kmx_file.cpp +++ b/core/src/kmx/kmx_file.cpp @@ -35,7 +35,7 @@ const int km::core::kmx::CODE__SIZE[] = { -1, // CODE_EXTENDEDEND 0x0B (unused) 1, // CODE_SWITCH 0x0C -1, // CODE_KEY 0x0D (never used) - 0, // CODE_CLEARCONTEXT 0x0E + 0, // CODE_CLEARCONTEXT 0x0E (deprecated in 19.0) 1, // CODE_CALL 0x0F -1, // UC_SENTINEL_EXTENDEDEND 0x10 (not valid with UC_SENTINEL) 1, // CODE_CONTEXTEX 0x11 diff --git a/core/src/kmx/kmx_processevent.cpp b/core/src/kmx/kmx_processevent.cpp index 09ebcdd4cd..94e74b4af0 100644 --- a/core/src/kmx/kmx_processevent.cpp +++ b/core/src/kmx/kmx_processevent.cpp @@ -495,6 +495,7 @@ int KMX_ProcessEvent::PostString(PKMX_WCHAR str, LPKEYBOARD lpkb, PKMX_WCHAR end FoundUse = TRUE; break; case CODE_CLEARCONTEXT: + // statement deprecated in 19.0 // no longer supported, no-op break; case CODE_INDEX: diff --git a/developer/src/common/include/kmn_compiler_errors.h b/developer/src/common/include/kmn_compiler_errors.h index f5d623ae28..1e423b9358 100644 --- a/developer/src/common/include/kmn_compiler_errors.h +++ b/developer/src/common/include/kmn_compiler_errors.h @@ -285,6 +285,8 @@ namespace KmnCompilerMessages { ERROR_NameMustNotContainParentheses = SevError | 0x0B9, ERROR_NameMustNotContainSquareBrackets = SevError | 0x0BA, + WARN_DeprecatedStatement = SevWarn | 0x0BB, + FATAL_BufferOverflow = SevFatal | 0x0C0 // FATAL_Break = SevFatal | 0x0C1, unused }; diff --git a/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts b/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts index 06f74ae59f..13ff75c82c 100644 --- a/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts +++ b/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts @@ -825,6 +825,12 @@ export class KmnCompilerMessages { square brackets, control characters, or Unicode non-characters.` ); + static WARN_DeprecatedStatement = SevWarn | 0x0BB; + static Warn_DeprecatedStatement = (o:{statement:string, version: string}) => m( + this.WARN_DeprecatedStatement, + `The statement'${def(o.statement)}' has been deprecated in Keyman ${def(o.version)}`, + ); + static FATAL_BufferOverflow = SevFatal | 0x0C0; static Fatal_BufferOverflow = () => m(this.FATAL_BufferOverflow, `The compiler memory buffer overflowed`); diff --git a/developer/src/kmc-kmn/src/kmw-compiler/util.ts b/developer/src/kmc-kmn/src/kmw-compiler/util.ts index 4c775e6c83..487d2f5a94 100644 --- a/developer/src/kmc-kmn/src/kmw-compiler/util.ts +++ b/developer/src/kmc-kmn/src/kmw-compiler/util.ts @@ -248,7 +248,7 @@ export function incxstr(p: string, x: number): number { case KMX.KMXFile.CODE_CONTEXTEX: x += 2; break; case KMX.KMXFile.CODE_NOTANY: x += 2; break; - case KMX.KMXFile.CODE_CLEARCONTEXT: x += 2; break; + case KMX.KMXFile.CODE_CLEARCONTEXT: x += 2; break; // deprecated in 19.0 case KMX.KMXFile.CODE_IFOPT: x += 4; break; case KMX.KMXFile.CODE_IFSYSTEMSTORE: x += 4; break; case KMX.KMXFile.CODE_SETOPT: x += 3; break; diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn new file mode 100644 index 0000000000..efd08a91de --- /dev/null +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn @@ -0,0 +1,8 @@ +store(&NAME) 'warn_deprecated_statement-clearcontext-17' +store(&VERSION) '17.0' + +begin unicode > use(main) + +group(main) using keys + ++ 'x' > clearcontext diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn new file mode 100644 index 0000000000..a67ee53c7a --- /dev/null +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn @@ -0,0 +1,8 @@ +store(&NAME) 'warn_deprecated_statement-clearcontext-19' +store(&VERSION) '19.0' + +begin unicode > use(main) + +group(main) using keys + ++ 'x' > clearcontext diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn new file mode 100644 index 0000000000..83d1086324 --- /dev/null +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn @@ -0,0 +1,8 @@ +store(&NAME) 'warn_deprecated_statement-fix-17' +store(&VERSION) '17.0' + +begin unicode > use(main) + +group(main) using keys + ++ 'x' > fix diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn new file mode 100644 index 0000000000..18f1b2af7a --- /dev/null +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn @@ -0,0 +1,8 @@ +store(&NAME) 'warn_deprecated_statement-fix-19' +store(&VERSION) '19.0' + +begin unicode > use(main) + +group(main) using keys + ++ 'x' > fix diff --git a/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts b/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts index f241c02606..09466f7229 100644 --- a/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts +++ b/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts @@ -285,4 +285,13 @@ describe('KmnCompilerMessages', function () { await testForMessage(this, ['invalid-keyboards', 'error_name_must_not_contain_square_brackets-deadkey.kmn'], [KmnCompilerMessages.ERROR_NameMustNotContainSquareBrackets, KmnCompilerMessages.ERROR_InvalidDeadkey]); }); + // WARN_DeprecatedStatement + + it('should generate WARN_DeprecatedStatement if the file has `clearcontext` or `fix` statements and is 19.0', async function() { + await testForMessage(this, ['keyboards', 'warn_deprecated_statement-clearcontext-19.kmn'], KmnCompilerMessages.WARN_DeprecatedStatement); + await testForMessage(this, ['keyboards', 'warn_deprecated_statement-fix-19.kmn'], KmnCompilerMessages.WARN_DeprecatedStatement); + await testForMessage(this, ['keyboards', 'warn_deprecated_statement-clearcontext-17.kmn']); + await testForMessage(this, ['keyboards', 'warn_deprecated_statement-fix-17.kmn']); + }); + }); diff --git a/developer/src/kmcmplib/src/Compiler.cpp b/developer/src/kmcmplib/src/Compiler.cpp index d9f3c5c9cb..30c69e73a9 100644 --- a/developer/src/kmcmplib/src/Compiler.cpp +++ b/developer/src/kmcmplib/src/Compiler.cpp @@ -1155,6 +1155,7 @@ KMX_BOOL ProcessSystemStore(PFILE_KEYBOARD fk, KMX_DWORD SystemID, PFILE_STORE s else if (u16ncmp(p, u"15.0", 4) == 0) fk->version = VERSION_150; // Adds support for U_xxxx_yyyy #2858 else if (u16ncmp(p, u"16.0", 4) == 0) fk->version = VERSION_160; // KMXPlus else if (u16ncmp(p, u"17.0", 4) == 0) fk->version = VERSION_170; // Flicks and gestures + else if (u16ncmp(p, u"19.0", 4) == 0) fk->version = VERSION_190; // Deprecations - fix, clearcontext else { ReportCompilerMessage(KmnCompilerMessages::ERROR_InvalidVersion); @@ -1582,7 +1583,7 @@ const KMX_BOOL CODE__IS_TEXTUAL[] = { -1, // CODE_EXTENDEDEND 0x0B (unused) FALSE, // CODE_SWITCH 0x0C -1, // CODE_KEY 0x0D (never used) - FALSE, // CODE_CLEARCONTEXT 0x0E + FALSE, // CODE_CLEARCONTEXT 0x0E (deprecated in 19.0) FALSE, // CODE_CALL 0x0F // may trigger text effects but indirectly -1, // UC_SENTINEL_EXTENDEDEND 0x10 (not valid with UC_SENTINEL) TRUE, // CODE_CONTEXTEX 0x11 @@ -2376,6 +2377,10 @@ KMX_DWORD GetXStringImpl(PKMX_WCHAR tstr, PFILE_KEYBOARD fk, PKMX_WCHAR str, KMX } else if (u16nicmp(p, u"clearcontext", 12) == 0) { + // deprecated in 19.0 + if(fk->version >= VERSION_190) { + ReportCompilerMessage(KmnCompilerMessages::WARN_DeprecatedStatement, {"clearcontext", "19.0"}); // I3438 + } p += 12; tstr[mx++] = UC_SENTINEL; tstr[mx++] = CODE_CLEARCONTEXT; @@ -2699,6 +2704,10 @@ KMX_DWORD GetXStringImpl(PKMX_WCHAR tstr, PFILE_KEYBOARD fk, PKMX_WCHAR str, KMX case 15: if (u16nicmp(p, u"fix", 3) == 0) { + if(fk->version >= VERSION_190) { + // deprecated in 19.0 + ReportCompilerMessage(KmnCompilerMessages::WARN_DeprecatedStatement, {"fix", "19.0"}); // I3438 + } p += 3; tstr[mx++] = UC_SENTINEL; tstr[mx++] = CODE_CLEARCONTEXT; diff --git a/developer/src/kmcmplib/src/xstring.cpp b/developer/src/kmcmplib/src/xstring.cpp index 60bbddc8eb..073daae0f0 100644 --- a/developer/src/kmcmplib/src/xstring.cpp +++ b/developer/src/kmcmplib/src/xstring.cpp @@ -127,7 +127,7 @@ const int CODE__SIZE[] = { -1, // CODE_EXTENDEDEND 0x0B (unused) 1, // CODE_SWITCH 0x0C -1, // CODE_KEY 0x0D (never used) - 0, // CODE_CLEARCONTEXT 0x0E + 0, // CODE_CLEARCONTEXT 0x0E (deprecated in 19.0) 1, // CODE_CALL 0x0F -1, // UC_SENTINEL_EXTENDEDEND 0x10 (not valid with UC_SENTINEL) 1, // CODE_CONTEXTEX 0x11 diff --git a/developer/src/kmdecomp/savekeyboard.cpp b/developer/src/kmdecomp/savekeyboard.cpp index bfe66e5bc6..8201c0a916 100644 --- a/developer/src/kmdecomp/savekeyboard.cpp +++ b/developer/src/kmdecomp/savekeyboard.cpp @@ -273,6 +273,7 @@ PWCHAR ExtString(PWCHAR str) p = wcscat2(q, BUFSIZE, L"key "); break; case CODE_CLEARCONTEXT: + // deprecated in 19.0 p = wcscat2(q, BUFSIZE, L"clearcontext "); break; case CODE_CALL: diff --git a/developer/src/tike/debug/XString.pas b/developer/src/tike/debug/XString.pas index 1f76654dba..7682061258 100644 --- a/developer/src/tike/debug/XString.pas +++ b/developer/src/tike/debug/XString.pas @@ -1,18 +1,18 @@ (* Name: XString Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 14 Jun 2008 Modified Date: 13 Dec 2012 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 14 Jun 2008 - mcdurdin - I1365 - Add CODE_NOTANY support 13 Dec 2012 - mcdurdin - I3661 - V9.0 - XString unit needs updating to support 8 and 9 stores *) @@ -150,7 +150,7 @@ begin CODE_USE: Result := 1; CODE_DEADKEY: Result := 1; CODE_EXTENDED: Result := 3; - CODE_CLEARCONTEXT: Result := 1; + CODE_CLEARCONTEXT: Result := 1; // deprecated in 19.0 CODE_CALL: Result := 1; CODE_CONTEXTEX: Result := 1; CODE_NOTANY: Result := 1; @@ -198,7 +198,7 @@ begin CODE_EXTENDED: Result := FormatVirtualKey(Ord(FString[Index+2]), Ord(FString[Index+3])); CODE_SWITCH: Result := '??switch'; CODE_KEY: Result := '??key'; - CODE_CLEARCONTEXT: Result := 'clearcontext'; + CODE_CLEARCONTEXT: Result := 'clearcontext'; // deprecated in 19.0 CODE_CALL: Result := 'call(func)'; CODE_CONTEXTEX: Result := Format('context(%d)', [Ord(FString[Index+2])]); CODE_NOTANY: begin storeindex := Ord(FString[Index+2])-1; Result := Format('notany(%s)', [Fkbd.Stores[storeindex].Name]); end; @@ -300,7 +300,7 @@ var storeindex: Integer; begin Element.Name := IntFormatChar(pos, Options + [xfoQuoteChar], storeindex); - + Element.StoreIndex := storeindex; if storeindex > -1 then Element.Store := Fkbd.Stores[storeindex].AString @@ -340,7 +340,7 @@ function TXString.SubString(StartIndex, Len: Integer): WideString; var i, p, n1, n2: Integer; begin - n2 := -1; n1 := 0; + n2 := -1; n1 := 0; i := 1; p := 1; while (i <= Length(FString)) and (n2 < 0) do begin diff --git a/docs/file-formats/kmx-file-format.md b/docs/file-formats/kmx-file-format.md index e13575ae4a..4a9c73b6ce 100644 --- a/docs/file-formats/kmx-file-format.md +++ b/docs/file-formats/kmx-file-format.md @@ -79,6 +79,7 @@ the `KMX_Version` enum: | `0x00000F00` | `VERSION_150` | Keyman 15.0 | | `0x00001000` | `VERSION_160` | Keyman 16.0 | | `0x00001100` | `VERSION_170` | Keyman 17.0 | +| `0x00001300` | `VERSION_190` | Keyman 19.0 | ### `StartGroup` diff --git a/linux/mcompile/keymap/mc_kmxfile.cpp b/linux/mcompile/keymap/mc_kmxfile.cpp index 039ae075f1..917bd1f7a3 100644 --- a/linux/mcompile/keymap/mc_kmxfile.cpp +++ b/linux/mcompile/keymap/mc_kmxfile.cpp @@ -28,7 +28,7 @@ const int CODE__SIZE[] = { -1, // CODE_EXTENDEDEND 0x0B (unused) 1, // CODE_SWITCH 0x0C -1, // CODE_KEY 0x0D (never used) - 0, // CODE_CLEARCONTEXT 0x0E + 0, // CODE_CLEARCONTEXT 0x0E (deprecated in 19.0) 1, // CODE_CALL 0x0F -1, // UC_SENTINEL_EXTENDEDEND 0x10 (not valid with UC_SENTINEL) 1, // CODE_CONTEXTEX 0x11 diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h b/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h index 3951d5831d..633a7a17b5 100644 --- a/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h +++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h @@ -52,8 +52,9 @@ struct COMP_KEYBOARD { #define VERSION_150 0x00000F00 #define VERSION_160 0x00001000 #define VERSION_170 0x00001100 +#define VERSION_190 0x00001300 #define VERSION_MIN VERSION_50 -#define VERSION_MAX VERSION_170 +#define VERSION_MAX VERSION_190 struct COMP_STORE { DWORD dwSystemID; diff --git a/mac/mcompile/mc_kmxfile.cpp b/mac/mcompile/mc_kmxfile.cpp index 78aa40615c..994ecf3be9 100644 --- a/mac/mcompile/mc_kmxfile.cpp +++ b/mac/mcompile/mc_kmxfile.cpp @@ -27,7 +27,7 @@ const int CODE__SIZE[] = { -1, // CODE_EXTENDEDEND 0x0B (unused) 1, // CODE_SWITCH 0x0C -1, // CODE_KEY 0x0D (never used) - 0, // CODE_CLEARCONTEXT 0x0E + 0, // CODE_CLEARCONTEXT 0x0E (deprecated in 19.0) 1, // CODE_CALL 0x0F -1, // UC_SENTINEL_EXTENDEDEND 0x10 (not valid with UC_SENTINEL) 1, // CODE_CONTEXTEX 0x11 @@ -332,7 +332,7 @@ LPKMX_KEYBOARD KMX_CopyKeyboard(PKMX_BYTE bufp, PKMX_BYTE base) { } // else KMX_FixupKeyboard -#else +#else /** * @brief Fixup the keyboard by expanding pointers. On disk the pointers are stored relative to the From babb473682210900578678a3014f2f0301b373e8 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 27 Aug 2026 11:05:06 +0200 Subject: [PATCH 16/84] fix(developer): handle leading whitespace correctly in `u16tok()` A string with leading delimiters passed into `u16tok()` would not skip those delimiters. This impacted `&targets` store and other locations. Note that this tightens input parameter checks for delimiters and context as well. Fixes: #13721 Test-bot: skip --- common/cpp/km_u16.cpp | 24 +++++++++- developer/src/kmc-kmn/test/compiler.tests.ts | 36 ++++++++++++-- .../keyboards/targets-with-whitespace.kmn | 11 +++++ developer/src/kmc-kmn/test/helpers/index.ts | 21 ++++++-- developer/src/kmcmplib/src/Compiler.cpp | 31 ++++++++++-- developer/src/kmcmplib/tests/api.tests.cpp | 48 ++++++++++++++----- .../src/kmcmplib/tests/gtest-km_u16.tests.cpp | 34 +++++++++++++ 7 files changed, 180 insertions(+), 25 deletions(-) create mode 100644 developer/src/kmc-kmn/test/fixtures/keyboards/targets-with-whitespace.kmn diff --git a/common/cpp/km_u16.cpp b/common/cpp/km_u16.cpp index 78077202fc..c378946156 100644 --- a/common/cpp/km_u16.cpp +++ b/common/cpp/km_u16.cpp @@ -326,10 +326,20 @@ int u16ncmp(const KMX_WCHAR* p, const KMX_WCHAR* q, size_t count) { * @return Pointer to the first token in p */ KMX_WCHAR* u16tok(KMX_WCHAR* p, const KMX_WCHAR ch, KMX_WCHAR** ctx) { + if(ch == 0 || !ctx) { + return NULL; + } + if (!p) { p = *ctx; - if (!p) + if (!p) { return NULL; + } + } + + // skip initial delimiter + while (*p == ch) { + p++; } KMX_WCHAR* q = p; @@ -356,10 +366,20 @@ KMX_WCHAR* u16tok(KMX_WCHAR* p, const KMX_WCHAR ch, KMX_WCHAR** ctx) { * @return Pointer to the first token in p */ KMX_WCHAR* u16tok(KMX_WCHAR* p, const KMX_WCHAR* delimiters, KMX_WCHAR** ctx) { + if(!ctx || !delimiters || !(*delimiters)) { + return NULL; + } + if (!p) { p = *ctx; - if (!p) + if (!p) { return NULL; + } + } + + // skip initial delimiters + while (*p && u16chr(delimiters, *p)) { + p++; } KMX_WCHAR* q = p; diff --git a/developer/src/kmc-kmn/test/compiler.tests.ts b/developer/src/kmc-kmn/test/compiler.tests.ts index db5ea60b06..c4bc020929 100644 --- a/developer/src/kmc-kmn/test/compiler.tests.ts +++ b/developer/src/kmc-kmn/test/compiler.tests.ts @@ -1,10 +1,15 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ +import { dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import fs from 'node:fs'; import 'mocha'; import { assert } from 'chai'; -import { KmnCompiler } from '../src/main.js'; -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import fs from 'fs'; import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers'; +import { KmxFileReader } from '@keymanapp/common-types'; +import { compileTestKeyboard } from './helpers/index.js'; +import { KmnCompiler } from '../src/main.js'; const __dirname = dirname(fileURLToPath(import.meta.url)).replace(/\\/g, '/'); const keyboardsDir = __dirname + '/../../../../../common/test/keyboards/'; @@ -13,6 +18,16 @@ const baselineDir = keyboardsDir + 'baseline/'; describe('Compiler class', function() { const callbacks = new TestCompilerCallbacks(this); + this.beforeEach(function() { + callbacks.clear(); + }); + + this.afterEach(function() { + if(this.currentTest?.isFailed()) { + callbacks.printMessages(); + } + }); + it('should throw on failure', async function() { const compiler = new KmnCompiler(); const callbacks : any = null; // ERROR @@ -129,4 +144,17 @@ describe('Compiler class', function() { assert.deepEqual(kvkData, kvkFixtureData); }); + it('should trim all whitespace for `&targets` store', async function() { + const result = await compileTestKeyboard(callbacks, ['keyboards', 'targets-with-whitespace.kmn']); + assert.isNotNull(result); + + // Verifies that targets has 'any' as it contains both JS and KMX targets + assert.isNotNull(result.artifacts.js); + assert.isNotNull(result.artifacts.kmx); + + const reader = new KmxFileReader(); + const keyboard = reader.read(result.artifacts.kmx.data); + assert.equal(keyboard.targets, 'any'); + }); + }); diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/targets-with-whitespace.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/targets-with-whitespace.kmn new file mode 100644 index 0000000000..4afe77ecd5 --- /dev/null +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/targets-with-whitespace.kmn @@ -0,0 +1,11 @@ +store(&NAME) 'targets_with_whitespace' +store(&VERSION) '10.0' + +c this used to generate KM0207B: At least one compile target must be specified +store(&TARGETS) ' any' + +begin unicode > use(main) + +group(main) using keys + ++ 'x' > 'y' diff --git a/developer/src/kmc-kmn/test/helpers/index.ts b/developer/src/kmc-kmn/test/helpers/index.ts index 8250dfd101..ae0ad21268 100644 --- a/developer/src/kmc-kmn/test/helpers/index.ts +++ b/developer/src/kmc-kmn/test/helpers/index.ts @@ -1,8 +1,13 @@ -/** +/* + * Keyman is copyright (C) SIL Global. MIT License. + * * Helpers and utilities for the Mocha tests. */ -import * as path from 'path'; -import { fileURLToPath } from 'url'; +import * as path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { assert } from 'chai'; +import { CompilerCallbacks } from '@keymanapp/developer-utils'; +import { KmnCompiler } from '../../src/compiler/compiler.js'; /** * Builds a path to the fixture with the given path components. @@ -15,3 +20,13 @@ import { fileURLToPath } from 'url'; export function makePathToFixture(...components: string[]): string { return fileURLToPath(new URL(path.join('..', '..', '..', 'test', 'fixtures', ...components), import.meta.url)); } + +export async function compileTestKeyboard(callbacks: CompilerCallbacks, fixture: string[]) { + const compiler = new KmnCompiler(); + assert(await compiler.init(callbacks, {saveDebug: true, shouldAddCompilerVersion: false})); + assert(compiler.verifyInitialized()); + + const kmnPath = makePathToFixture(...fixture); + + return await compiler.run(kmnPath, null); +} \ No newline at end of file diff --git a/developer/src/kmcmplib/src/Compiler.cpp b/developer/src/kmcmplib/src/Compiler.cpp index d9f3c5c9cb..e73b2b9a45 100644 --- a/developer/src/kmcmplib/src/Compiler.cpp +++ b/developer/src/kmcmplib/src/Compiler.cpp @@ -138,7 +138,7 @@ KMX_BOOL IsSameToken(PKMX_WCHAR *p, KMX_WCHAR const * token); KMX_DWORD GetRHS(PFILE_KEYBOARD fk, PKMX_WCHAR p, PKMX_WCHAR buf, int bufsize, int offset, int IsUnicode); PKMX_WCHAR GetDelimitedString(PKMX_WCHAR *p, KMX_WCHAR const * Delimiters, KMX_WORD Flags); KMX_DWORD GetXString(PFILE_KEYBOARD fk, PKMX_WCHAR str, KMX_WCHAR const * token, PKMX_WCHAR output, int max, int offset, PKMX_WCHAR *newp, int isVKey, int isUnicode); -KMX_BOOL GetCompileTargetsFromTargetsStore(const KMX_WCHAR* store, int &targets); +KMX_BOOL GetCompileTargetsFromTargetsStore(KMX_WCHAR *store, int &targets); int GetGroupNum(PFILE_KEYBOARD fk, PKMX_WCHAR p); @@ -1331,7 +1331,16 @@ KMX_BOOL ProcessSystemStore(PFILE_KEYBOARD fk, KMX_DWORD SystemID, PFILE_STORE s return TRUE; } -KMX_BOOL GetCompileTargetsFromTargetsStore(const KMX_WCHAR* store, int &targets) { +/** + * Extract the compile targets from the &targets store, and rewrite the + * &targets dpString value to remove unnecessary whitespace. Does not + * reallocate sp->dpString, but overwrites its value with a string the + * same length or shorter. + * @param sp store value to rewrite + * @param targets (output) + * @return FALSE if no targets found or invalid targets found + */ +KMX_BOOL GetCompileTargetsFromTargetsStore(KMX_WCHAR *store, int &targets) { // Compile to .kmx const std::vector KMXKeymanTargets{ u"windows", u"macosx", u"linux", u"desktop" @@ -1347,10 +1356,17 @@ KMX_BOOL GetCompileTargetsFromTargetsStore(const KMX_WCHAR* store, int &targets) targets = 0; auto p = new KMX_WCHAR[u16len(store)+1]; - u16cpy(p, store); + auto q = p; + *p = 0; KMX_WCHAR* ctx; - auto token = u16tok(p, u" ", &ctx); + auto token = u16tok(store, u" ", &ctx); while(token) { + if(q > p) { + // Insert a delimiter between tokens, if + // more than one token + *q++ = ' '; + *q = 0; + } bool found = false; if(*token) { if(AnyTarget == token) { @@ -1378,9 +1394,16 @@ KMX_BOOL GetCompileTargetsFromTargetsStore(const KMX_WCHAR* store, int &targets) targets = 0; return FALSE; } + + // Append the token to the output, we know it is long enough + // because the buffer is the same length as the input + u16cpy(q, token); + q = const_cast(u16chr(q, 0)); + *q = 0; } token = u16tok(nullptr, u" ", &ctx); } + u16cpy(store, p); delete[] p; if(targets == 0) { diff --git a/developer/src/kmcmplib/tests/api.tests.cpp b/developer/src/kmcmplib/tests/api.tests.cpp index ea44e3fade..445c69928b 100644 --- a/developer/src/kmcmplib/tests/api.tests.cpp +++ b/developer/src/kmcmplib/tests/api.tests.cpp @@ -71,66 +71,90 @@ void test_kmcmp_CompileKeyboard(char *kmn_file) { unlink(kmn_file); } -extern KMX_BOOL GetCompileTargetsFromTargetsStore(const KMX_WCHAR* store, int &targets); +extern KMX_BOOL GetCompileTargetsFromTargetsStore(KMX_WCHAR* buf, int &targets); + +KMX_BOOL do_GetCompileTargetsFromTargetsStore(const KMX_WCHAR* store, int &targets, const KMX_WCHAR* expected = nullptr) { + KMX_WCHAR* buf; + buf = new KMX_WCHAR[u16len(store)+1]; + u16cpy(buf, store); + KMX_BOOL result = GetCompileTargetsFromTargetsStore(buf, targets); + + if(expected) { + test_assert(u16cmp(expected, buf) == 0); + } + + delete[] buf; + return result; +} void test_GetCompileTargetsFromTargetsStore() { int targets = 0; setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"any", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"any", targets, u"any")); test_assert(error_vec.size() == 0); test_assert(targets == (COMPILETARGETS_KMX | COMPILETARGETS_JS)); setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"windows", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"windows", targets, u"windows")); test_assert(error_vec.size() == 0); test_assert(targets == COMPILETARGETS_KMX); setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"desktop", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"desktop", targets, u"desktop")); test_assert(error_vec.size() == 0); test_assert(targets == COMPILETARGETS_KMX); setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"mobile", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"mobile", targets, u"mobile")); test_assert(error_vec.size() == 0); test_assert(targets == COMPILETARGETS_JS); setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"web", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"web", targets, u"web")); test_assert(error_vec.size() == 0); test_assert(targets == COMPILETARGETS_JS); setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"desktop mobile", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"desktop mobile", targets, u"desktop mobile")); test_assert(error_vec.size() == 0); test_assert(targets == (COMPILETARGETS_KMX | COMPILETARGETS_JS)); setup(); - test_assert(GetCompileTargetsFromTargetsStore(u"desktop tablet", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u"desktop tablet", targets, u"desktop tablet")); test_assert(error_vec.size() == 0); test_assert(targets == (COMPILETARGETS_KMX | COMPILETARGETS_JS)); setup(); - test_assert(!GetCompileTargetsFromTargetsStore(u"foo bar baz", targets)); + test_assert(do_GetCompileTargetsFromTargetsStore(u" desktop tablet", targets, u"desktop tablet")); + test_assert(error_vec.size() == 0); + test_assert(targets == (COMPILETARGETS_KMX | COMPILETARGETS_JS)); + + setup(); + test_assert(do_GetCompileTargetsFromTargetsStore(u" windows androidphone ", targets, u"windows androidphone")); + test_assert(error_vec.size() == 0); + test_assert(targets == (COMPILETARGETS_KMX | COMPILETARGETS_JS)); + + setup(); + test_assert(!do_GetCompileTargetsFromTargetsStore(u"foo bar baz", targets)); test_assert(error_vec.size() == 1); test_assert(error_vec[0] == KmnCompilerMessages::ERROR_InvalidTarget); test_assert(targets == 0); setup(); - test_assert(!GetCompileTargetsFromTargetsStore(u"windows chromeos", targets)); + test_assert(!do_GetCompileTargetsFromTargetsStore(u"windows chromeos", targets)); test_assert(error_vec.size() == 1); test_assert(error_vec[0] == KmnCompilerMessages::ERROR_InvalidTarget); test_assert(targets == 0); setup(); - test_assert(!GetCompileTargetsFromTargetsStore(u" ", targets)); + test_assert(!do_GetCompileTargetsFromTargetsStore(u" ", targets)); test_assert(error_vec.size() == 1); test_assert(error_vec[0] == KmnCompilerMessages::ERROR_NoTargetsSpecified); test_assert(targets == 0); setup(); - test_assert(!GetCompileTargetsFromTargetsStore(u"", targets)); + test_assert(!do_GetCompileTargetsFromTargetsStore(u"", targets)); test_assert(error_vec.size() == 1); test_assert(error_vec[0] == KmnCompilerMessages::ERROR_NoTargetsSpecified); test_assert(targets == 0); diff --git a/developer/src/kmcmplib/tests/gtest-km_u16.tests.cpp b/developer/src/kmcmplib/tests/gtest-km_u16.tests.cpp index 75d74607cd..db40baf12d 100644 --- a/developer/src/kmcmplib/tests/gtest-km_u16.tests.cpp +++ b/developer/src/kmcmplib/tests/gtest-km_u16.tests.cpp @@ -32,6 +32,11 @@ TEST(km_u16_Test, u16tok_char_delim) { KMX_WCHAR str[LINESIZE]; KMX_WCHAR *ctx = nullptr; + // invalid parameters + EXPECT_EQ(nullptr, u16tok(str, ' ', nullptr)); + EXPECT_EQ(nullptr, u16tok(str, (KMX_WCHAR)0, &ctx)); + EXPECT_EQ(nullptr, u16tok(nullptr, ' ', nullptr)); + // sequence of tokens u16cpy(str, u"test a space and two"); ctx = nullptr; @@ -55,6 +60,13 @@ TEST(km_u16_Test, u16tok_char_delim) { EXPECT_TRUE(!u16cmp(u"b", u16tok(nullptr, ' ', &ctx))); EXPECT_EQ(nullptr, u16tok(nullptr, ' ', &ctx)); + // delimiters at start + u16cpy(str, u" a b"); + ctx = nullptr; + EXPECT_TRUE(!u16cmp(u"a", u16tok(str, ' ', &ctx))); + EXPECT_TRUE(!u16cmp(u"b", u16tok(nullptr, ' ', &ctx))); + EXPECT_EQ(nullptr, u16tok(nullptr, ' ', &ctx)); + // no string, no context ctx = nullptr; EXPECT_EQ(nullptr, u16tok(nullptr, ' ', &ctx)); @@ -73,6 +85,12 @@ TEST(km_u16_Test, u16tok_str_delim) { KMX_WCHAR str[LINESIZE]; KMX_WCHAR *ctx = nullptr; + // invalid parameters + EXPECT_EQ(nullptr, u16tok(str, u" ", nullptr)); + EXPECT_EQ(nullptr, u16tok(str, nullptr, &ctx)); + EXPECT_EQ(nullptr, u16tok(str, u"", &ctx)); + EXPECT_EQ(nullptr, u16tok(nullptr, u" ", nullptr)); + // sequence of tokens u16cpy(str, u"test a space and two"); ctx = nullptr; @@ -96,6 +114,13 @@ TEST(km_u16_Test, u16tok_str_delim) { EXPECT_TRUE(!u16cmp(u"b", u16tok(nullptr, u" ", &ctx))); EXPECT_EQ(nullptr, u16tok(nullptr, u" ", &ctx)); + // delimiters at start + u16cpy(str, u" a b"); + ctx = nullptr; + EXPECT_TRUE(!u16cmp(u"a", u16tok(str, u" ", &ctx))); + EXPECT_TRUE(!u16cmp(u"b", u16tok(nullptr, u" ", &ctx))); + EXPECT_EQ(nullptr, u16tok(nullptr, ' ', &ctx)); + // no string, no context ctx = nullptr; EXPECT_EQ(nullptr, u16tok(nullptr, u"", &ctx)); @@ -130,6 +155,9 @@ TEST(km_u16_Test, u16tok_str_compare_to_strtok) { // Compare behaviour of strtok: char str[LINESIZE]; + // Note: strtok behavior is undefined with invalid parameters so we don't do a reference test + // of invalid parameters + // sequence of tokens strcpy(str, "test a space and two"); EXPECT_TRUE(!strcmp("test", strtok(str, " "))); @@ -150,6 +178,12 @@ TEST(km_u16_Test, u16tok_str_compare_to_strtok) { EXPECT_TRUE(!strcmp("b", strtok(nullptr, " "))); EXPECT_EQ(nullptr, strtok(nullptr, " ")); + // delimiters at start + strcpy(str, " a b"); + EXPECT_TRUE(!strcmp("a", strtok(str, " "))); + EXPECT_TRUE(!strcmp("b", strtok(nullptr, " "))); + EXPECT_EQ(nullptr, strtok(nullptr, " ")); + // multiple delimiters strcpy(str, "abcghi"); const char *delim = "<>"; From 07e62e9fe28b420ae854613de8b46136e5f3e6e6 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Thu, 27 Aug 2026 18:57:18 +0200 Subject: [PATCH 17/84] chore(android): upload webview source map during android and ios build Previously we uploaded the webview source map during a web build. This can lead to problems because that is not the actual artifact used for Android and iOS. This change therefore moves uploading the webview source map to Sentry to the android and ios builds. Build-bot: skip build:web,android,ios Test-bot: skip --- android/KMEA/build.sh | 15 ++++++++++++--- ios/build.sh | 2 ++ ios/engine/build.sh | 17 +++++++++++++---- resources/build/ci/sentry-control.inc.sh | 14 ++++++++++++++ web/ci.sh | 21 +++------------------ 5 files changed, 44 insertions(+), 25 deletions(-) diff --git a/android/KMEA/build.sh b/android/KMEA/build.sh index 85a1894672..66471c0bbb 100755 --- a/android/KMEA/build.sh +++ b/android/KMEA/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "${THIS_SCRIPT%/*}/../../resources/build/builder-full.inc.sh" ## END STANDARD BUILD SCRIPT INCLUDE +. "${KEYMAN_ROOT}/resources/build/ci/sentry-control.inc.sh" # ################################ Main script ################################ @@ -19,6 +20,7 @@ builder_describe "Builds Keyman Engine for Android." \ "configure" \ "build" \ "test Runs lint and unit tests." \ + "publish-symbols Publishes symbols to Sentry." \ ":engine Builds Engine" builder_parse "$@" @@ -79,6 +81,13 @@ do_test() { ./gradlew $GRADLE_DAEMON $TEST_FLAGS } -builder_run_action clean:engine rm -rf build app/build -builder_run_action build:engine do_build -builder_run_action test:engine do_test +do_publish_symbols() { + if builder_is_ci_build && builder_is_ci_build_level_release; then + sentry_upload_web "${KEYMAN_ROOT}/web/build/app/webview/release/" + fi +} + +builder_run_action clean:engine rm -rf build app/build +builder_run_action build:engine do_build +builder_run_action test:engine do_test +builder_run_action publish-symbols do_publish_symbols diff --git a/ios/build.sh b/ios/build.sh index 81b477932c..e59f10a0dd 100755 --- a/ios/build.sh +++ b/ios/build.sh @@ -32,6 +32,7 @@ builder_describe "Builds Keyman Engine and the Keyman app for use on iOS devices "configure" \ "build" \ "test" \ + "publish-symbols Publishes symbols to Sentry" \ ":engine Builds KeymanEngine.xcframework, usable by our main app and by third-party apps" \ ":app=keyman Builds the Keyman app for iOS platforms" \ ":help Online documentation" \ @@ -50,3 +51,4 @@ function do_test_help() { } builder_run_action test:help do_test_help +builder_run_child_actions publish-symbols diff --git a/ios/engine/build.sh b/ios/engine/build.sh index f341e13983..2fa7add082 100755 --- a/ios/engine/build.sh +++ b/ios/engine/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" . "$KEYMAN_ROOT/resources/build/mac/mac.inc.sh" . "$KEYMAN_ROOT/resources/build/build-download-resources.sh" +. "${KEYMAN_ROOT}/resources/build/ci/sentry-control.inc.sh" builder_describe "Builds Keyman Engine for use on iOS devices - iPhone and iPad." \ "@/web/src/app/webview build" \ @@ -16,7 +17,8 @@ builder_describe "Builds Keyman Engine for use on iOS devices - iPhone and iPad. "clean" \ "configure" \ "build" \ - "--sim-artifact Also outputs a simulator-friendly test artifact corresponding to the build" + "publish-symbols Publishes symbols to Sentry." \ + "--sim-artifact Also outputs a simulator-friendly test artifact corresponding to the build" builder_parse "$@" @@ -138,6 +140,13 @@ function build_engine() { fi } -builder_run_action clean do_clean -builder_run_action configure do_configure -builder_run_action build build_engine +do_publish_symbols() { + if builder_is_ci_build && builder_is_ci_build_level_release; then + sentry_upload_web "${KEYMAN_ROOT}/web/build/app/webview/release/" + fi +} + +builder_run_action clean do_clean +builder_run_action configure do_configure +builder_run_action build build_engine +builder_run_action publish-symbols do_publish_symbols diff --git a/resources/build/ci/sentry-control.inc.sh b/resources/build/ci/sentry-control.inc.sh index 9331152eed..a01a0f730d 100644 --- a/resources/build/ci/sentry-control.inc.sh +++ b/resources/build/ci/sentry-control.inc.sh @@ -40,3 +40,17 @@ function makeSentryRelease() { fi } +function sentry_upload_web () { + if ! isSentryConfigured; then + echo "Skipping Sentry upload: SENTRY_ORG and/or SENTRY_PROJECT are unset." + return + fi + + echo "Uploading $1 to Sentry..." + + # --strip-common-prefix does not take an argument, unlike --strip-prefix. It auto-detects + # the most common prefix instead. + sentry-cli releases files "${KEYMAN_VERSION_GIT_TAG}" upload-sourcemaps --strip-common-prefix "$1" \ + --rewrite --ext js --ext map --ext ts + echo "Upload successful." +} diff --git a/web/ci.sh b/web/ci.sh index f9c4e4263d..30a9200cd7 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -15,6 +15,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "${KEYMAN_ROOT}/resources/build/utils.inc.sh" . "${KEYMAN_ROOT}/resources/build/zip.inc.sh" . "${KEYMAN_ROOT}/resources/build/ci/pull-requests.inc.sh" +. "${KEYMAN_ROOT}/resources/build/ci/sentry-control.inc.sh" # This script runs from its own folder cd "${THIS_SCRIPT_PATH}" @@ -42,21 +43,6 @@ builder_parse "$@" KEYMAN_TIER=$(cat ../TIER.md) BUILD_NUMBER=$(cat ../VERSION.md) -function web_sentry_upload () { - if [[ -z "${SENTRY_ORG:-}" ]] || [[ -z "${SENTRY_PROJECT:-}" ]]; then - echo "Skipping Sentry upload: SENTRY_ORG and/or SENTRY_PROJECT are unset." - return - fi - - echo "Uploading $1 to Sentry..." - - # --strip-common-prefix does not take an argument, unlike --strip-prefix. It auto-detects - # the most common prefix instead. - sentry-cli releases files "${KEYMAN_VERSION_GIT_TAG}" upload-sourcemaps --strip-common-prefix "$1" \ - --rewrite --ext js --ext map --ext ts - echo "Upload successful." -} - function build_action() { # Build step: since CI builds start (and should start) from scratch, run the following # three actions: @@ -73,11 +59,10 @@ function build_action() { for sourcemap in "${KEYMAN_ROOT}/common/web/sentry-manager/build/lib/"*.map; do node "${KEYMAN_ROOT}/web/build/tools/building/sourcemap-root/index.js" null "${sourcemap}" --clean done - web_sentry_upload "${KEYMAN_ROOT}/common/web/sentry-manager/build/lib/" + sentry_upload_web "${KEYMAN_ROOT}/common/web/sentry-manager/build/lib/" # And, of course, the main build-products too - web_sentry_upload "${KEYMAN_ROOT}/web/build/app/webview/release/" - web_sentry_upload "${KEYMAN_ROOT}/web/build/publish/release/" + sentry_upload_web "${KEYMAN_ROOT}/web/build/publish/release/" fi } From cf22d460ff702fc68a73ff790238999df72f51ff Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 28 Aug 2026 10:29:28 +0200 Subject: [PATCH 18/84] feat(developer): support output folder and `--continue-on-error` Add support for specifying an output folder instead of filename for the `--out-file` parameter of kmc. This allows for batch builds, which can be much faster than invoking kmc for each file separately. Alongside that, add a `--continue-on-error` parameter that allows for batch builds to continue even if a single file fails to build. (Note that if a fatal error is encountered, kmc aborts with exit code 70). --- .../docs/help/reference/kmc/cli/reference.md | 21 ++- developer/src/kmc/src/commands/build.ts | 120 +++++++++++++++--- .../src/messages/infrastructureMessages.ts | 17 ++- developer/src/kmc/src/util/baseOptions.ts | 8 +- developer/src/kmc/src/util/sysexits.ts | 1 + developer/src/kmc/test/build.tests.ts | 104 ++++++++++++++- .../kmc/test/infrastructureMessages.tests.ts | 5 +- 7 files changed, 249 insertions(+), 27 deletions(-) diff --git a/developer/docs/help/reference/kmc/cli/reference.md b/developer/docs/help/reference/kmc/cli/reference.md index 662d85a0a3..943e181ba5 100644 --- a/developer/docs/help/reference/kmc/cli/reference.md +++ b/developer/docs/help/reference/kmc/cli/reference.md @@ -185,9 +185,24 @@ The following parameters are available: `-o `, `--out-file ` -: Overrides the default path and filename for the output file(s). Note that - some compilers emit multiple files, in which case, the output filenames - will vary by file extension. +: Overrides the default path and filename for the output file(s). Note that some + compilers emit multiple files, in which case, the output filenames will vary + by file extension. + + If the output filename ends in a forward slash (`/`) or backslash (`\\`), or + if multiple input files are specified, or if the output filename exists and is + already a folder, then the filename will be treated as a folder, and all + output files will be written within that. + + An error will be raised if an output file is specified and already exists, and + is a regular file, but is expected to be a folder. + +`--continue-on-error` + +: When building multiple input files, continue building subsequent files even if + a file fails to build. Note that `kmc` will still abort if an internal error + is encountered. + ## `kmc build file` additional options diff --git a/developer/src/kmc/src/commands/build.ts b/developer/src/kmc/src/commands/build.ts index 7e21f99f9c..b45dc23e97 100644 --- a/developer/src/kmc/src/commands/build.ts +++ b/developer/src/kmc/src/commands/build.ts @@ -1,3 +1,8 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * Implementation of the `kmc build` command + */ import * as fs from 'fs'; import * as path from 'path'; import { Command } from 'commander'; @@ -13,7 +18,12 @@ import { isProject } from '../util/projectLoader.js'; import { buildTestData } from './buildTestData/index.js'; import { buildWindowsPackageInstaller } from './buildWindowsPackageInstaller/index.js'; import { commanderOptionsToCompilerOptions } from '../util/extendedCompilerOptions.js'; -import { exitProcess } from '../util/sysexits.js'; +import { exitProcess, SysExits } from '../util/sysexits.js'; + +interface OutFileSpecification { + isFolder?: boolean; + path?: string; +}; export function declareBuild(program: Command) { // TODO: localization? @@ -28,7 +38,8 @@ export function declareBuild(program: Command) { .option('-m, --message ', 'Adjust severity of info, hint or warning message to Disable (default), Info, Hint, Warn or Error (option can be repeated)', (value, previous) => previous.concat([value]), []) .option('--no-compiler-version', 'Exclude compiler version metadata from output') - .option('--no-warn-deprecated-code', 'Turn off warnings for deprecated code styles'); + .option('--no-warn-deprecated-code', 'Turn off warnings for deprecated code styles') + .option('--continue-on-error', 'Continue build of subsequent files even if earlier files have errors'); BuildBaseOptions.addAll(buildCommand); @@ -92,27 +103,43 @@ async function buildFile(filenames: string[], _options: any, commander: any): Pr filenames.push('.'); } - /* c8 ignore next 6 */ - // full test on console log of error message not justified; check with user test recommended - if(filenames.length > 1 && commanderOptions.outFile) { - // -o can only be specified with a single input file - callbacks.reportMessage(InfrastructureMessages.Error_OutFileCanOnlyBeSpecifiedWithSingleInfile()); - return await exitProcess(1); - } - if(!expandFileLists(filenames, callbacks)) { return await exitProcess(1); } + const spec = interpretOutFile(commanderOptions.outFile, filenames.length, fs.statSync); + if(!spec) { + callbacks.reportMessage(InfrastructureMessages.Error_OutFileMustBeAFolder()); + return await exitProcess(1); + } + + let result = true; for(const filename of filenames) { - if(!await build(filename, commanderOptions.outFile, callbacks, options)) { - // Once a file fails to build, we bail on subsequent builds - return await exitProcess(1); + const buildResult = await build(filename, spec, callbacks, options); + if(!buildResult) { + result = false; + if(buildResult === null) { + // We always die on fatal exceptions + return await exitProcess(SysExits.EX_SOFTWARE); + } + if(!commanderOptions.continueOnError) { + // Once a file fails to build, we bail on subsequent builds + return await exitProcess(1); + } } } + + if(!result) { + // If any file failed to build, then we return failure, + return await exitProcess(1); + } } -async function build(filename: string, outfile: string, parentCallbacks: NodeCompilerCallbacks, options: CompilerOptions): Promise { +/** + * Build a single file + * @returns true on success, false on build failure, null on internal errors + */ +async function build(filename: string, outfileSpec: OutFileSpecification, parentCallbacks: NodeCompilerCallbacks, options: CompilerOptions): Promise { try { // TEST: allow command-line simulation of infrastructure fatal errors, and // also for unit tests @@ -158,6 +185,21 @@ async function build(filename: string, outfile: string, parentCallbacks: NodeCom const callbacks = new CompilerFileCallbacks(buildFilename, options, parentCallbacks); callbacks.reportMessage(InfrastructureMessages.Info_BuildingFile({filename:buildFilename, relativeFilename})); + let outfile = outfileSpec?.path; + + // Special case for directory outfile - create folder if required + if(outfileSpec?.isFolder) { + if(!fs.existsSync(outfileSpec.path)) { + fs.mkdirSync(outfileSpec.path, { recursive: true }); + } + + let base = path.basename(filename); + if(base.endsWith(builder.sourceExtension)) { + base = base.substring(base.length - builder.sourceExtension.length) + builder.compiledExtension; + } + outfile = path.join(outfile, base); + } + let result = await builder.build(filename, outfile, callbacks, options); result = result && !callbacks.hasFailureMessage(); if(result) { @@ -178,13 +220,61 @@ async function build(filename: string, outfile: string, parentCallbacks: NodeCom return result; } catch(e) { parentCallbacks.reportMessage(InfrastructureMessages.Fatal_UnexpectedException({e})); - return false; + return null; } } +/** + * Interpret the output filename based on shape of input and filesystem status. + * + * The output path is treated as a folder if: + * (a) more than one input file is specified, or + * (b) it ends with a trailing slash or backslash, or + * (c) it already exists and is a folder + * + * @param path + * @param inputFilenameCount + * @returns null if a regular file is in the way of a folder, otherwise a specification + */ +function interpretOutFile(path: string|undefined, inputFilenameCount: number, statSync: (path: fs.PathLike, options?: fs.StatSyncOptions) => {isDirectory?: ()=>boolean}): OutFileSpecification { + if(path === null || !inputFilenameCount || inputFilenameCount < 1) { + throw new Error('Invalid parameters'); + } + + const spec: OutFileSpecification = { + isFolder: false, + path + }; + + if(!path) { + return spec; + } + + if(inputFilenameCount > 1 || + (path.endsWith('/') || path.endsWith('\\')) || + statSync(path, {throwIfNoEntry: false})?.isDirectory()) { + + spec.isFolder = true; + + if(path.endsWith('/') || path.endsWith('\\')) { + // remove trailing delimiter + spec.path = path.substring(0, path.length-1); + } + + const stats = statSync(spec.path, {throwIfNoEntry: false}); + if(stats && !stats.isDirectory()) { + // existing file is in the way + return null; + } + } + + return spec; +} + /** * these are exported only for unit tests, do not use */ export const unitTestEndpoints = { build, + interpretOutFile, }; diff --git a/developer/src/kmc/src/messages/infrastructureMessages.ts b/developer/src/kmc/src/messages/infrastructureMessages.ts index 338af89073..7a7e8f00bd 100644 --- a/developer/src/kmc/src/messages/infrastructureMessages.ts +++ b/developer/src/kmc/src/messages/infrastructureMessages.ts @@ -1,3 +1,6 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ import { CompilerError, CompilerErrorNamespace, CompilerErrorSeverity, CompilerMessageSpec as m, CompilerMessageDef as def, CompilerMessageSpecWithException } from "@keymanapp/developer-utils"; const Namespace = CompilerErrorNamespace.Infrastructure; @@ -88,10 +91,6 @@ export class InfrastructureMessages { static Hint_ProjectIsVersion10 = () => m(this.HINT_ProjectIsVersion10, `The project file is an older version and can be upgraded to version 17.0`); - static ERROR_OutFileCanOnlyBeSpecifiedWithSingleInfile = SevError | 0x0015; - static Error_OutFileCanOnlyBeSpecifiedWithSingleInfile = () => m(this.ERROR_OutFileCanOnlyBeSpecifiedWithSingleInfile, - `Parameter --out-file can only be used with a single input file.`); - static ERROR_InvalidMessageFormat = SevError | 0x0016; static Error_InvalidMessageFormat = (o:{message:string}) => m(this.ERROR_InvalidMessageFormat, `Invalid parameter: --message ${def(o.message)} must match format '[KM]#####[:Disable|Info|Hint|Warn|Error]'`); @@ -218,5 +217,15 @@ export class InfrastructureMessages { `${def(o.relativeFilename)} failed to validate.` )}); + static ERROR_OutFileMustBeAFolder = SevError | 0x002C; + static Error_OutFileMustBeAFolder = () => m( + this.ERROR_OutFileMustBeAFolder, + `Parameter --out-file must refer to a folder.`, ` + If multiple input files are specified, or if the parameter --out-file ends + with a slash (/) or backslash (\\), or if the folder referenced by the + parameter already exists, then kmc will treat the parameter as a folder. + However, as a file already exists with the same name, kmc cannot continue. + `); + } diff --git a/developer/src/kmc/src/util/baseOptions.ts b/developer/src/kmc/src/util/baseOptions.ts index f3223238ec..0b6636705c 100644 --- a/developer/src/kmc/src/util/baseOptions.ts +++ b/developer/src/kmc/src/util/baseOptions.ts @@ -1,3 +1,9 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * Basic options for kmc - shared across commands + */ +import * as path from 'node:path'; import { ALL_COMPILER_LOG_FORMATS, ALL_COMPILER_LOG_LEVELS, CompilerLogFormat, CompilerLogLevel } from "@keymanapp/developer-utils"; import { Command, Option } from "commander"; @@ -45,7 +51,7 @@ export class BaseOptions { export class BuildBaseOptions extends BaseOptions { public static addOutFile(program: Command) { - return program.option('-o, --out-file ', 'Override the default path and filename for the output file') + return program.option('-o, --out-file ', 'Override default folder and/or filename for the output file; terminate with '+path.delimiter+' for folder') } public static addAll(program: Command) { diff --git a/developer/src/kmc/src/util/sysexits.ts b/developer/src/kmc/src/util/sysexits.ts index 7256dd4e77..27a90f4b7c 100644 --- a/developer/src/kmc/src/util/sysexits.ts +++ b/developer/src/kmc/src/util/sysexits.ts @@ -7,6 +7,7 @@ import { KeymanSentry } from './KeymanSentry.js'; export const enum SysExits { EX_USAGE = 64, EX_DATAERR = 65, + EX_SOFTWARE = 70, }; export async function exitProcess(exitCode?: number): Promise { diff --git a/developer/src/kmc/test/build.tests.ts b/developer/src/kmc/test/build.tests.ts index b615c97f49..0abe1446f6 100644 --- a/developer/src/kmc/test/build.tests.ts +++ b/developer/src/kmc/test/build.tests.ts @@ -1,12 +1,14 @@ /* * Keyman is copyright (C) SIL Global. MIT License. */ -import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers'; -import { clearOptions } from '../src/util/options.js'; +import * as fs from 'node:fs'; import { assert } from 'chai'; import 'mocha'; -import { BuildProject } from '../src/commands/buildClasses/BuildProject.js'; +import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers'; import { makePathToFixture } from './helpers/index.js'; +import { clearOptions } from '../src/util/options.js'; +import { BuildProject } from '../src/commands/buildClasses/BuildProject.js'; +import { unitTestEndpoints } from '../src/commands/build.js'; interface CompilerWarningsAsErrorsTruthTable { cli: boolean; @@ -54,3 +56,99 @@ describe('compilerWarningsAsErrors', function () { }); } }); + +describe('interpretOutFile()', function() { + + function statSyncStub(path: fs.PathLike, options?: fs.StatSyncOptions): fs.Stats { + if(path === 'does_not_exist') return null; + return { + isFile: () => !path.toString().startsWith('existing_folder'), + isDirectory: () => path.toString().startsWith('existing_folder'), + isBlockDevice: () => false, + isCharacterDevice: () => false, + isSymbolicLink: () => false, + isFIFO: () => false, + isSocket: () => false, + dev: null, + ino: null, + mode: null, + nlink: null, + uid: null, + gid: null, + rdev: null, + size: null, + blksize: null, + blocks: null, + atimeMs: null, + mtimeMs: null, + ctimeMs: null, + birthtimeMs: null, + atime: null, + mtime: null, + ctime: null, + birthtime: null + } + } + + it(`should throw with invalid parameters`, function() { + assert.throws(() => unitTestEndpoints.interpretOutFile(null, 1, statSyncStub)); + assert.throws(() => unitTestEndpoints.interpretOutFile(undefined, null, statSyncStub)); + assert.throws(() => unitTestEndpoints.interpretOutFile(undefined, -1, statSyncStub)); + assert.throws(() => unitTestEndpoints.interpretOutFile(undefined, 0, statSyncStub)); + assert.doesNotThrow(() => unitTestEndpoints.interpretOutFile(undefined, 1, statSyncStub)); + assert.doesNotThrow(() => unitTestEndpoints.interpretOutFile(undefined, 2, statSyncStub)); + }); + + it(`should return undefined path if no path is specified`, function() { + const spec1 = unitTestEndpoints.interpretOutFile(undefined, 1, statSyncStub); + assert.isFalse(spec1.isFolder); + assert.isUndefined(spec1.path); + + const spec2 = unitTestEndpoints.interpretOutFile(undefined, 2, statSyncStub); + assert.isFalse(spec2.isFolder); + assert.isUndefined(spec2.path); + }); + + it(`should return isFolder=true if path is specified and more than 1 input filename is given`, function() { + const spec1 = unitTestEndpoints.interpretOutFile('does_not_exist', 2, statSyncStub); + assert.isNotNull(spec1); + assert.isTrue(spec1.isFolder); + assert.equal(spec1.path, 'does_not_exist'); + }); + + it(`should return path without trailing delimiter if trailing delimiter is specified`, function() { + const spec1 = unitTestEndpoints.interpretOutFile('does_not_exist/', 1, statSyncStub); + assert.isNotNull(spec1); + assert.isTrue(spec1.isFolder); + assert.equal(spec1.path, 'does_not_exist'); + + // existing folder test for trimming delimiter is covered in next test + }); + + it(`should return path as a folder if target path is a folder`, function() { + const spec1 = unitTestEndpoints.interpretOutFile('existing_folder', 1, statSyncStub); + assert.isNotNull(spec1); + assert.isTrue(spec1.isFolder); + assert.equal(spec1.path, 'existing_folder'); + + const spec2 = unitTestEndpoints.interpretOutFile('existing_folder/', 1, statSyncStub); + assert.isNotNull(spec2); + assert.isTrue(spec2.isFolder); + assert.equal(spec2.path, 'existing_folder'); + }); + + it(`should return null if a file exists in the target folder location`, function() { + const spec1 = unitTestEndpoints.interpretOutFile('existing_file', 2, statSyncStub); + assert.isNull(spec1); + + const spec2 = unitTestEndpoints.interpretOutFile('existing_file/', 1, statSyncStub); + assert.isNull(spec2); + }); + + it(`should return isFolder = false if a single input file and no trailing delimiter and no folder exists`, function() { + const spec1 = unitTestEndpoints.interpretOutFile('anything', 1, statSyncStub); + assert.isNotNull(spec1); + assert.isFalse(spec1.isFolder); + assert.equal(spec1.path, 'anything'); + }); +}); \ No newline at end of file diff --git a/developer/src/kmc/test/infrastructureMessages.tests.ts b/developer/src/kmc/test/infrastructureMessages.tests.ts index 68edaa7a10..d44cc8e972 100644 --- a/developer/src/kmc/test/infrastructureMessages.tests.ts +++ b/developer/src/kmc/test/infrastructureMessages.tests.ts @@ -1,3 +1,6 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ import 'mocha'; import * as fs from 'fs'; import { assert } from 'chai'; @@ -66,7 +69,7 @@ describe('InfrastructureMessages', function () { const projectPath = makePathToFixture('kpj-2.0/khmer_angkor', 'khmer_angkor.kpj'); const outFilePath = makePathToFixture('kpj-2.0/khmer_angkor', 'khmer_angkor.kmx'); const options: CompilerOptions = {...defaultCompilerOptions}; - await unitTestEndpoints.build(projectPath, outFilePath, ncb, options); + await unitTestEndpoints.build(projectPath, {path: outFilePath, isFolder: false}, ncb, options); assert.isTrue(ncb.hasMessage(InfrastructureMessages.ERROR_OutFileNotValidForProjects), 'ERROR_OutFileNotValidForProjects not generated, instead got: '+JSON.stringify(ncb.messages,null,2)); }); From 369911397af98e7be8f530df85d403e3f39a36c2 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 28 Aug 2026 11:49:59 +0200 Subject: [PATCH 19/84] fix(developer): validate the number of hardware layers only in Layr compiler `KeysCompiler` runs before `LayrCompiler` so this verification needs to defer rather than throw. We can assume that the `LayrCompiler` will catch it. Fixes: KEYMAN-DEVELOPER-3XD Fixes: #16454 Test-bot: skip --- developer/src/kmc-ldml/src/compiler/keys.ts | 10 +++------- .../sections/{keys => layr}/invalid-bad-modifier.xml | 2 +- developer/src/kmc-ldml/test/keys.tests.ts | 6 ------ developer/src/kmc-ldml/test/layr.tests.ts | 2 +- 4 files changed, 5 insertions(+), 15 deletions(-) rename developer/src/kmc-ldml/test/fixtures/sections/{keys => layr}/invalid-bad-modifier.xml (75%) diff --git a/developer/src/kmc-ldml/src/compiler/keys.ts b/developer/src/kmc-ldml/src/compiler/keys.ts index 8656e7fbf2..9653a94920 100644 --- a/developer/src/kmc-ldml/src/compiler/keys.ts +++ b/developer/src/kmc-ldml/src/compiler/keys.ts @@ -225,13 +225,9 @@ export class KeysCompiler extends SectionCompiler { // Finally, kmap // Use LayerMap + keys to generate compiled keys for hardware const hardwareLayers = this.hardwareLayers(); - /* c8 ignore next 3 */ - if (hardwareLayers.length > 1) { - // validation should have already caught this - throw Error( - `Internal error: Expected 0 or 1 hardware layer, not ${hardwareLayers.length}` - ); - } else if (hardwareLayers.length === 1) { + if (hardwareLayers.length >= 1) { + // Only 1 hardware layer is supported; however, `LayrCompiler` will report + // on this error, so we can just process the first one here const theLayers = hardwareLayers[0]; const { formId } = theLayers; for (const layer of theLayers.layer) { diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-bad-modifier.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-bad-modifier.xml similarity index 75% rename from developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-bad-modifier.xml rename to developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-bad-modifier.xml index 29a2ba7b73..fcb72da392 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-bad-modifier.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-bad-modifier.xml @@ -6,7 +6,7 @@ - + diff --git a/developer/src/kmc-ldml/test/keys.tests.ts b/developer/src/kmc-ldml/test/keys.tests.ts index 97171cf6fc..b2748cdd3e 100644 --- a/developer/src/kmc-ldml/test/keys.tests.ts +++ b/developer/src/kmc-ldml/test/keys.tests.ts @@ -309,12 +309,6 @@ describe('keys.kmap', function () { ]); }, }, - { - subpath: 'sections/keys/invalid-bad-modifier.xml', - errors: [ - LdmlCompilerMessages.Error_InvalidModifier({ modifiers: 'altR-shift' }), - ] - }, { subpath: 'sections/keys/invalid-missing-flick.xml', errors: [ diff --git a/developer/src/kmc-ldml/test/layr.tests.ts b/developer/src/kmc-ldml/test/layr.tests.ts index 64e4a3d373..1ee67b7261 100644 --- a/developer/src/kmc-ldml/test/layr.tests.ts +++ b/developer/src/kmc-ldml/test/layr.tests.ts @@ -94,7 +94,7 @@ describe('layr', function () { errors: [], }, { - subpath: 'sections/keys/invalid-bad-modifier.xml', + subpath: 'sections/layr/invalid-bad-modifier.xml', errors: [ LdmlCompilerMessages.Error_InvalidModifier({ modifiers: 'altR-shift', From 57f0dc4597613f01118d8d3a37b8ae1818fcfaf4 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 28 Aug 2026 13:21:12 +0200 Subject: [PATCH 20/84] fix(developer): validate id and modifiers attributes in Layr compiler Per the spec, the `id` attribute is required for touch layers, and `modifiers` attribute is required for hardware layers. There is ambiguity in the spec at present as to whether they should be allowed for the alternative type. * Validate that the attributes are present where required. * Tighten validation of `modifiers` attribute - it cannot be empty or missing for hardware; "" != "none". * Hint if the attribute is present when it probably shouldn't be (to be potentially raised to warning or error after spec clarified). * Fixup all keyboard3 xml files to conform to spec and eliminate hints. * Add unit tests. * Removed threshold warning for coverage as kmc-ldml is already > 90%. Fixes: #12423 --- .../ldml/invalid-keyboards/ik_001_bad_key.xml | 2 +- .../ldml/keyboards/k_000_minimal_keyboard.xml | 2 +- core/tests/unit/ldml/keyboards/k_001_tiny.xml | 2 +- .../unit/ldml/keyboards/k_002_tinyu32.xml | 2 +- .../unit/ldml/keyboards/k_003_transform.xml | 4 +- .../unit/ldml/keyboards/k_004_tinyshift.xml | 8 ++-- .../unit/ldml/keyboards/k_005_modbittest.xml | 2 +- .../unit/ldml/keyboards/k_006_backspace.xml | 4 +- .../ldml/keyboards/k_007_transform_rgx.xml | 4 +- .../ldml/keyboards/k_008_transform_norm.xml | 4 +- .../ldml/keyboards/k_009_transform_nfc.xml | 4 +- .../tests/unit/ldml/keyboards/k_012_other.xml | 6 +-- .../unit/ldml/keyboards/k_100_keytest.xml | 2 +- .../unit/ldml/keyboards/k_101_keytest.xml | 2 +- .../unit/ldml/keyboards/k_102_keytest.xml | 2 +- .../ldml/keyboards/k_200_reorder_nod_Lana.xml | 2 +- .../unit/ldml/keyboards/k_201_reorder_esk.xml | 2 +- .../unit/ldml/keyboards/k_210_marker.xml | 2 +- .../ldml/keyboards/k_211_marker_escape.xml | 2 +- .../ldml/keyboards/k_212_marker_11057.xml | 2 +- .../fixtures/xml/strs_invalid-illegal.xml | 2 +- .../xml/strs_invalid-illegal.xml.json | 2 +- developer/src/kmc-ldml/build.sh | 2 +- developer/src/kmc-ldml/src/compiler/keys.ts | 12 ++---- developer/src/kmc-ldml/src/compiler/layr.ts | 35 +++++++++++++---- .../src/compiler/ldml-compiler-messages.ts | 38 ++++++++++++++++++- .../src/compiler/visual-keyboard-compiler.ts | 3 +- developer/src/kmc-ldml/src/util/serialize.ts | 2 +- developer/src/kmc-ldml/src/util/util.ts | 11 +++++- .../test/fixtures/basic-serialized.xml | 2 +- .../src/kmc-ldml/test/fixtures/basic.txt | 2 +- .../src/kmc-ldml/test/fixtures/basic.xml | 3 +- .../test/fixtures/sections/keys/escaped.xml | 4 +- .../test/fixtures/sections/keys/escaped2.xml | 2 +- .../fixtures/sections/keys/gap-switch.xml | 4 +- .../test/fixtures/sections/keys/hardware.xml | 4 +- .../fixtures/sections/keys/hardware_iso.xml | 2 +- .../fixtures/sections/keys/hardware_us.xml | 2 +- .../fixtures/sections/keys/import-local.xml | 2 +- .../keys/invalid-hardware-too-many-keys.xml | 2 +- .../keys/invalid-hardware-too-many-rows.xml | 2 +- .../keys/invalid-key-missing-attrs.xml | 2 +- .../sections/keys/invalid-missing-flick.xml | 2 +- .../sections/keys/invalid-undefined-key.xml | 2 +- .../sections/keys/invalid-undefined-var-1.xml | 2 +- .../keys/invalid-undefined-var-1b.xml | 2 +- .../fixtures/sections/keys/many-modifiers.xml | 2 +- .../test/fixtures/sections/keys/markers.xml | 2 +- .../fixtures/sections/keys/maximal-nfc.xml | 4 +- .../test/fixtures/sections/keys/maximal.xml | 4 +- .../test/fixtures/sections/keys/minimal.xml | 2 +- .../fixtures/sections/keys/warn-no-keycap.xml | 2 +- .../sections/layr/error-bad-width-0.xml | 2 +- .../sections/layr/error-bad-width-1024.xml | 2 +- .../sections/layr/error-bad-width-1500.xml | 2 +- .../sections/layr/error-bad-width-x.xml | 2 +- .../sections/layr/error-custom-us-form.xml | 2 +- .../sections/layr/error-custom-zzz-form.xml | 2 +- .../sections/layr/error-dup-width.xml | 2 +- ...rror-hardware-layer-requires-modifiers.xml | 22 +++++++++++ .../layr/error-touch-layer-requires-id.xml | 22 +++++++++++ .../layr/hint-hardware-layer-has-id.xml | 22 +++++++++++ .../layr/hint-touch-layer-has-modifiers.xml | 22 +++++++++++ .../sections/layr/invalid-invalid-form.xml | 2 +- .../sections/layr/invalid-multi-hardware.xml | 6 +-- .../sections/layr/row-keys-whitespace.xml | 2 +- .../sections/layr/warn-custom-us-form.xml | 2 +- .../sections/layr/warn-custom-zzz-form.xml | 2 +- .../test/fixtures/sections/strs/hint-pua.xml | 4 +- .../sections/strs/invalid-illegal.xml | 2 +- .../fixtures/sections/strs/warn-denorm-1.xml | 4 +- .../fixtures/sections/strs/warn-denorm-2.xml | 4 +- .../fixtures/sections/strs/warn-denorm-3.xml | 4 +- .../fixtures/sections/strs/warn-denorm-4.xml | 4 +- .../sections/strs/warn-unassigned.xml | 4 +- .../sections/tran/fail-bad-tran-2.xml | 2 +- .../fixtures/sections/tran/tran-escape.xml | 2 +- developer/src/kmc-ldml/test/keys.tests.ts | 4 +- developer/src/kmc-ldml/test/layr.tests.ts | 34 ++++++++++++++--- developer/src/kmc-ldml/test/linter.tests.ts | 8 +++- developer/src/kmc-ldml/test/utils.tests.ts | 6 +-- .../test/visual-keyboard-compiler.tests.ts | 10 +++++ 82 files changed, 309 insertions(+), 123 deletions(-) create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/error-hardware-layer-requires-modifiers.xml create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/error-touch-layer-requires-id.xml create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/hint-hardware-layer-has-id.xml create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/hint-touch-layer-has-modifiers.xml diff --git a/core/tests/unit/ldml/invalid-keyboards/ik_001_bad_key.xml b/core/tests/unit/ldml/invalid-keyboards/ik_001_bad_key.xml index ce64bc97d5..35859d8bad 100644 --- a/core/tests/unit/ldml/invalid-keyboards/ik_001_bad_key.xml +++ b/core/tests/unit/ldml/invalid-keyboards/ik_001_bad_key.xml @@ -14,7 +14,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_000_minimal_keyboard.xml b/core/tests/unit/ldml/keyboards/k_000_minimal_keyboard.xml index 44c043f891..3e53bde1a5 100644 --- a/core/tests/unit/ldml/keyboards/k_000_minimal_keyboard.xml +++ b/core/tests/unit/ldml/keyboards/k_000_minimal_keyboard.xml @@ -15,7 +15,7 @@ Keys that don't show up in a row don't generate an output - + diff --git a/core/tests/unit/ldml/keyboards/k_001_tiny.xml b/core/tests/unit/ldml/keyboards/k_001_tiny.xml index b8a543cd2d..f4bd7c99c9 100644 --- a/core/tests/unit/ldml/keyboards/k_001_tiny.xml +++ b/core/tests/unit/ldml/keyboards/k_001_tiny.xml @@ -17,7 +17,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_002_tinyu32.xml b/core/tests/unit/ldml/keyboards/k_002_tinyu32.xml index 078e8aec3c..e675175a35 100644 --- a/core/tests/unit/ldml/keyboards/k_002_tinyu32.xml +++ b/core/tests/unit/ldml/keyboards/k_002_tinyu32.xml @@ -16,7 +16,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_003_transform.xml b/core/tests/unit/ldml/keyboards/k_003_transform.xml index 2fc8d61e3d..6ebed8b425 100644 --- a/core/tests/unit/ldml/keyboards/k_003_transform.xml +++ b/core/tests/unit/ldml/keyboards/k_003_transform.xml @@ -18,14 +18,14 @@ from https://github.com/unicode-org/cldr/blob/keyboard-preview/docs/ldml/tr35-ke - + - + diff --git a/core/tests/unit/ldml/keyboards/k_004_tinyshift.xml b/core/tests/unit/ldml/keyboards/k_004_tinyshift.xml index 2d152867a7..1b0e35052f 100644 --- a/core/tests/unit/ldml/keyboards/k_004_tinyshift.xml +++ b/core/tests/unit/ldml/keyboards/k_004_tinyshift.xml @@ -18,16 +18,16 @@ - + - + - + - + diff --git a/core/tests/unit/ldml/keyboards/k_005_modbittest.xml b/core/tests/unit/ldml/keyboards/k_005_modbittest.xml index 054c81d8c0..9ec4062bf8 100644 --- a/core/tests/unit/ldml/keyboards/k_005_modbittest.xml +++ b/core/tests/unit/ldml/keyboards/k_005_modbittest.xml @@ -12,7 +12,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_006_backspace.xml b/core/tests/unit/ldml/keyboards/k_006_backspace.xml index 763d90bc7f..b98356664c 100644 --- a/core/tests/unit/ldml/keyboards/k_006_backspace.xml +++ b/core/tests/unit/ldml/keyboards/k_006_backspace.xml @@ -11,14 +11,14 @@ - + - + diff --git a/core/tests/unit/ldml/keyboards/k_007_transform_rgx.xml b/core/tests/unit/ldml/keyboards/k_007_transform_rgx.xml index cc79b826de..05f70cf14b 100644 --- a/core/tests/unit/ldml/keyboards/k_007_transform_rgx.xml +++ b/core/tests/unit/ldml/keyboards/k_007_transform_rgx.xml @@ -18,14 +18,14 @@ from https://github.com/unicode-org/cldr/blob/keyboard-preview/docs/ldml/tr35-ke - + - + diff --git a/core/tests/unit/ldml/keyboards/k_008_transform_norm.xml b/core/tests/unit/ldml/keyboards/k_008_transform_norm.xml index cc1a7ab43d..8b3e544555 100644 --- a/core/tests/unit/ldml/keyboards/k_008_transform_norm.xml +++ b/core/tests/unit/ldml/keyboards/k_008_transform_norm.xml @@ -21,14 +21,14 @@ https://github.com/unicode-org/cldr/blob/keyboard-preview/docs/ldml/tr35-keyboar - + - + diff --git a/core/tests/unit/ldml/keyboards/k_009_transform_nfc.xml b/core/tests/unit/ldml/keyboards/k_009_transform_nfc.xml index e975260dcb..084fdd99fd 100644 --- a/core/tests/unit/ldml/keyboards/k_009_transform_nfc.xml +++ b/core/tests/unit/ldml/keyboards/k_009_transform_nfc.xml @@ -21,14 +21,14 @@ like k_008 but in NFC (and other normalizations) - + - + diff --git a/core/tests/unit/ldml/keyboards/k_012_other.xml b/core/tests/unit/ldml/keyboards/k_012_other.xml index 186cfd8869..f62377d4c0 100644 --- a/core/tests/unit/ldml/keyboards/k_012_other.xml +++ b/core/tests/unit/ldml/keyboards/k_012_other.xml @@ -14,13 +14,13 @@ will match the default layer - + - + - + diff --git a/core/tests/unit/ldml/keyboards/k_100_keytest.xml b/core/tests/unit/ldml/keyboards/k_100_keytest.xml index 6c2d693447..050e476436 100644 --- a/core/tests/unit/ldml/keyboards/k_100_keytest.xml +++ b/core/tests/unit/ldml/keyboards/k_100_keytest.xml @@ -14,7 +14,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_101_keytest.xml b/core/tests/unit/ldml/keyboards/k_101_keytest.xml index 2af4ee26c9..27b2bc7733 100644 --- a/core/tests/unit/ldml/keyboards/k_101_keytest.xml +++ b/core/tests/unit/ldml/keyboards/k_101_keytest.xml @@ -17,7 +17,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_102_keytest.xml b/core/tests/unit/ldml/keyboards/k_102_keytest.xml index ad0f1131fa..b094736422 100644 --- a/core/tests/unit/ldml/keyboards/k_102_keytest.xml +++ b/core/tests/unit/ldml/keyboards/k_102_keytest.xml @@ -33,7 +33,7 @@ Comment: enter=not mappable, causes ctx reset. - + diff --git a/core/tests/unit/ldml/keyboards/k_200_reorder_nod_Lana.xml b/core/tests/unit/ldml/keyboards/k_200_reorder_nod_Lana.xml index b6e6cc2e92..43203b6ed1 100644 --- a/core/tests/unit/ldml/keyboards/k_200_reorder_nod_Lana.xml +++ b/core/tests/unit/ldml/keyboards/k_200_reorder_nod_Lana.xml @@ -21,7 +21,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_201_reorder_esk.xml b/core/tests/unit/ldml/keyboards/k_201_reorder_esk.xml index 419d4d1794..eaccebfe2c 100644 --- a/core/tests/unit/ldml/keyboards/k_201_reorder_esk.xml +++ b/core/tests/unit/ldml/keyboards/k_201_reorder_esk.xml @@ -20,7 +20,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_210_marker.xml b/core/tests/unit/ldml/keyboards/k_210_marker.xml index 6f2eb9021a..e65e76ad1c 100644 --- a/core/tests/unit/ldml/keyboards/k_210_marker.xml +++ b/core/tests/unit/ldml/keyboards/k_210_marker.xml @@ -21,7 +21,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_211_marker_escape.xml b/core/tests/unit/ldml/keyboards/k_211_marker_escape.xml index 4130e22850..a33e99fb4f 100644 --- a/core/tests/unit/ldml/keyboards/k_211_marker_escape.xml +++ b/core/tests/unit/ldml/keyboards/k_211_marker_escape.xml @@ -18,7 +18,7 @@ - + diff --git a/core/tests/unit/ldml/keyboards/k_212_marker_11057.xml b/core/tests/unit/ldml/keyboards/k_212_marker_11057.xml index 7bbd2bb94a..80748e8584 100644 --- a/core/tests/unit/ldml/keyboards/k_212_marker_11057.xml +++ b/core/tests/unit/ldml/keyboards/k_212_marker_11057.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml b/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml index 3eddaffdee..270843453d 100644 --- a/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml +++ b/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml @@ -21,7 +21,7 @@ - + diff --git a/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml.json b/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml.json index e26bf18696..91c14cb129 100644 --- a/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml.json +++ b/developer/src/common/web/utils/test/fixtures/xml/strs_invalid-illegal.xml.json @@ -41,7 +41,7 @@ ] }, "layers": { - "formId": "us", + "formId": "touch", "minDeviceWidth": "123", "layer": { "id": "￾", diff --git a/developer/src/kmc-ldml/build.sh b/developer/src/kmc-ldml/build.sh index b9e259e8df..aa1ce44fff 100755 --- a/developer/src/kmc-ldml/build.sh +++ b/developer/src/kmc-ldml/build.sh @@ -86,4 +86,4 @@ builder_run_action configure do_configure builder_run_action build do_build builder_run_action build-fixtures do_build_fixtures builder_run_action api typescript_run_api_extractor developer/src/kmc-ldml main.d.ts -builder_run_action test typescript_run_eslint_mocha_tests 90 +builder_run_action test typescript_run_eslint_mocha_tests diff --git a/developer/src/kmc-ldml/src/compiler/keys.ts b/developer/src/kmc-ldml/src/compiler/keys.ts index 9653a94920..9740616bc0 100644 --- a/developer/src/kmc-ldml/src/compiler/keys.ts +++ b/developer/src/kmc-ldml/src/compiler/keys.ts @@ -9,7 +9,7 @@ import Keys = KMXPlus.Keys; import KeysKeys = KMXPlus.KeysKeys; import ListItem = KMXPlus.ListItem; import KeysFlicks = KMXPlus.KeysFlicks; -import { allUsedKeyIdsInFlick, allUsedKeyIdsInKey, allUsedKeyIdsInLayers, calculateUniqueKeys, hashFlicks, hashKeys, translateLayerAttrToModifier, validModifier } from '../util/util.js'; +import { allUsedKeyIdsInFlick, allUsedKeyIdsInKey, allUsedKeyIdsInLayers, calculateUniqueKeys, hashFlicks, hashKeys, translateLayerAttrToModifier } from '../util/util.js'; import { SubstitutionUse, Substitutions } from './substitution-tracker.js'; /** reserved name for the special gap key. space is not allowed in key ids. */ @@ -457,12 +457,6 @@ export class KeysCompiler extends SectionCompiler { let valid = true; const { modifiers } = layer; - if (!validModifier(modifiers)) { - this.callbacks.reportMessage( - LdmlCompilerMessages.Error_InvalidModifier({ modifiers }, layer) - ); - valid = false; - } if (layer.row.length > keymap.length) { this.callbacks.reportMessage( @@ -480,7 +474,7 @@ export class KeysCompiler extends SectionCompiler { LdmlCompilerMessages.Error_RowOnHardwareLayerHasTooManyKeys({ row: y + 1, hardware: layers.formId, - modifiers: modifiers || 'none', + modifiers, }, row) ); valid = false; @@ -497,7 +491,7 @@ export class KeysCompiler extends SectionCompiler { keyId: key, col: x + 1, row: y + 1, - layer: layer.id, + layer: layer.id ?? layer.modifiers, // just to give a useful reference point in the error message form: "hardware", }, row) ); diff --git a/developer/src/kmc-ldml/src/compiler/layr.ts b/developer/src/kmc-ldml/src/compiler/layr.ts index baaf9282b5..f260d4f2aa 100644 --- a/developer/src/kmc-ldml/src/compiler/layr.ts +++ b/developer/src/kmc-ldml/src/compiler/layr.ts @@ -27,6 +27,7 @@ export class LayrCompiler extends SectionCompiler { if (formId === 'touch') { touchLayers++; totalLayerCount += layers.layer?.length; + // TODO-LDML: CLDR-19754 spec does not require minDeviceWidth, but if multiple touch forms then it would be important for differentiation const { minDeviceWidth } = layers; if (!minDeviceWidth || minDeviceWidth < constants.layr_min_minDeviceWidth || @@ -40,6 +41,17 @@ export class LayrCompiler extends SectionCompiler { } else { deviceWidths.add(minDeviceWidth); } + // For touch layers, id attr must exist, and modifiers attribute should not + layers.layer.forEach(layer => { + if(typeof layer.id === 'undefined') { + this.callbacks.reportMessage(LdmlCompilerMessages.Error_TouchLayerRequiresId({minDeviceWidth}, layer)); + valid = false; + } + if(typeof layer.modifiers !== 'undefined') { + this.callbacks.reportMessage(LdmlCompilerMessages.Hint_TouchLayerHasModifiers({minDeviceWidth, id: layer.id}, layer)); + } + totalLayerCount++; + }); } else { // hardware hardwareLayers++; @@ -47,15 +59,22 @@ export class LayrCompiler extends SectionCompiler { valid = false; this.callbacks.reportMessage(LdmlCompilerMessages.Error_ExcessHardware({formId}, layers)); } + layers.layer.forEach(layer => { + const { modifiers } = layer; + if(typeof modifiers === 'undefined' || modifiers == '') { + this.callbacks.reportMessage(LdmlCompilerMessages.Error_HardwareLayerRequiresModifiers({ formId }, layer)); + valid = false; + } + else if (!validModifier(modifiers)) { + this.callbacks.reportMessage(LdmlCompilerMessages.Error_InvalidModifier({ modifiers }, layer)); + valid = false; + } + if(typeof layer.id !== 'undefined') { + this.callbacks.reportMessage(LdmlCompilerMessages.Hint_HardwareLayerHasId({formId, id: layer.id}, layer)); + } + totalLayerCount++; + }); } - layers.layer.forEach((layer) => { - const { modifiers } = layer; - totalLayerCount++; - if (!validModifier(modifiers)) { - this.callbacks.reportMessage(LdmlCompilerMessages.Error_InvalidModifier({ modifiers }, layer)); - valid = false; - } - }); }); if (totalLayerCount === 0) { // TODO-LDML: does not validate touch layers yet // no layers seen anywhere diff --git a/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts b/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts index 1f879f475b..7d0ae6e308 100644 --- a/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts +++ b/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts @@ -40,7 +40,7 @@ export class LdmlCompilerMessages { static ERROR_KeyNotFoundInKeyBag = SevError | 0x0005; static Error_KeyNotFoundInKeyBag = (o: { keyId: string, col: number, row: number, layer: string, form: string }, compileContext?: ObjectWithCompileContext) => mx( this.ERROR_KeyNotFoundInKeyBag, compileContext, - `Key '${def(o.keyId)}' in position #${def(o.col)} on row #${def(o.row)} of layer ${def(o.layer)}, form '${def(o.form)}' not found in key bag`, + `Key '${def(o.keyId)}' in position #${def(o.col)} on row #${def(o.row)} of layer '${def(o.layer)}', form '${def(o.form)}' not found in key bag`, ); static HINT_OneOrMoreRepeatedLocales = SevHint | 0x0006; @@ -292,6 +292,42 @@ export class LdmlCompilerMessages { `**Hint**: Use "${def(o.recommended)}"`, ); + static ERROR_TouchLayerRequiresId = SevError | 0x0031; + static Error_TouchLayerRequiresId = (o: { minDeviceWidth: number }, compileContext?: ObjectWithCompileContext) => mx( + this.ERROR_TouchLayerRequiresId, compileContext, + `Layer for touch form with minDeviceWidth=${def(o.minDeviceWidth)} requires an "id" attribute`, ` + Touch layers must have an \`id\` attribute, but should not have a \`modifiers\` + attribute, and conversely, hardware layers must have a \`modifiers\` attribute + and should not have an \`id\` attribute. + `); + + static HINT_TouchLayerHasModifiers = SevHint | 0x0032; + static Hint_TouchLayerHasModifiers = (o: { minDeviceWidth: number, id: string }, compileContext?: ObjectWithCompileContext) => mx( + this.HINT_TouchLayerHasModifiers, compileContext, + `Touch layer with id "${def(o.id)}" for touch form with minDeviceWidth=${def(o.minDeviceWidth)} should not have a "modifiers" attribute`, ` + Touch layers must have an \`id\` attribute, but should not have a \`modifiers\` + attribute, and conversely, hardware layers must have a \`modifiers\` attribute + and should not have an \`id\` attribute. + `); + + static HINT_HardwareLayerHasId = SevHint | 0x0033; + static Hint_HardwareLayerHasId = (o: { formId: string, id: string }, compileContext?: ObjectWithCompileContext) => mx( + this.HINT_HardwareLayerHasId, compileContext, + `Layer for hardware form "${def(o.formId)}" should not have an "id" attribute (currently "${def(o.id)}")`, ` + Touch layers must have an \`id\` attribute, but should not have a \`modifiers\` + attribute, and conversely, hardware layers must have a \`modifiers\` attribute + and should not have an \`id\` attribute. + `); + + static ERROR_HardwareLayerRequiresModifiers = SevError | 0x0034; + static Error_HardwareLayerRequiresModifiers = (o: { formId: string }, compileContext?: ObjectWithCompileContext) => mx( + this.ERROR_HardwareLayerRequiresModifiers, compileContext, + `Layers for hardware form "${def(o.formId)}" require a "modifiers" attribute`, ` + Touch layers must have an \`id\` attribute, but should not have a \`modifiers\` + attribute, and conversely, hardware layers must have a \`modifiers\` attribute + and should not have an \`id\` attribute. + `); + // // Transform syntax errors begin at ...F00 (SevErrorTransform) diff --git a/developer/src/kmc-ldml/src/compiler/visual-keyboard-compiler.ts b/developer/src/kmc-ldml/src/compiler/visual-keyboard-compiler.ts index 480ac5add5..c299939886 100644 --- a/developer/src/kmc-ldml/src/compiler/visual-keyboard-compiler.ts +++ b/developer/src/kmc-ldml/src/compiler/visual-keyboard-compiler.ts @@ -8,6 +8,7 @@ import { ModifierKeyConstants, KMXPlus, VisualKeyboard } from "@keymanapp/common-types"; import { CompilerCallbacks } from "@keymanapp/developer-utils"; import { LdmlCompilerMessages } from "./ldml-compiler-messages.js"; +import { modifiersToString } from "../util/util.js"; // This is a partial polyfill for findLast, so not polluting Array.prototype // https://medium.com/@stheodorejohn/findlast-method-polyfill-in-javascript-bridging-browser-gaps-c3baf6aabae1 @@ -93,7 +94,7 @@ export class LdmlKeyboardVisualKeyboardCompiler { layer: KMXPlus.LayrEntry, hardware: string, ) { - const layerId = layer.id.value; + const layerId = layer.id.value ?? modifiersToString(layer.mod); // used only for reference in error messages hardware = 'us'; // TODO-LDML: US Only. We need to clean this up for other hardware forms diff --git a/developer/src/kmc-ldml/src/util/serialize.ts b/developer/src/kmc-ldml/src/util/serialize.ts index 2a7391d0c6..663304a0ae 100644 --- a/developer/src/kmc-ldml/src/util/serialize.ts +++ b/developer/src/kmc-ldml/src/util/serialize.ts @@ -183,7 +183,7 @@ export function kmxToXml(kmx: KMXPlus.KMXPlusFile): string { return { layers: layr.lists.map(({ hardware, minDeviceWidth, layers }) => ({ ...stringToAttr('formId', hardware), - ...numberToAttr('minDeviceWidth', minDeviceWidth), + ...numberToAttr('minDeviceWidth', minDeviceWidth === 0 ? undefined : minDeviceWidth), layer: layers.map(({ id, mod, rows }) => ({ ...stringToAttr('id', id), ...asAttr('modifiers', modToString(mod)), diff --git a/developer/src/kmc-ldml/src/util/util.ts b/developer/src/kmc-ldml/src/util/util.ts index 316e8bd5d7..6bb977bde0 100644 --- a/developer/src/kmc-ldml/src/util/util.ts +++ b/developer/src/kmc-ldml/src/util/util.ts @@ -164,6 +164,15 @@ export function translateLayerAttrToModifier(layer: LDMLKeyboard.LKLayer) : numb return modifiers.split(',').map(m => translateModifierSubsetToLayer(m)).sort(); } +export function modifiersToString(modifiers: number) : string { + if (!modifiers) return 'none'; + const result: string[] = []; + for(const mod of constants.keys_mod_map) { + if(mod[1] != constants.keys_mod_none && modifiers & mod[1]) result.push(mod[0]); + } + return result.join(' '); +} + function translateModifierSubsetToLayer(modifiers: string) : number { // TODO-LDML: Default #11072 if (modifiers) { @@ -186,7 +195,7 @@ function translateModifierSubsetToLayer(modifiers: string) : number { * @returns true if valid */ export function validModifier(modifier?: string) : boolean { - if (!modifier) return true; // valid to have no modifier, == none + if (!modifier) return false; // hardware layer must have a modifier // TODO-LDML: enforce illegal combinations per spec. for (const sub of modifier.trim().split(',')) { for (const str of sub.trim().split(' ')) { diff --git a/developer/src/kmc-ldml/test/fixtures/basic-serialized.xml b/developer/src/kmc-ldml/test/fixtures/basic-serialized.xml index aa570fd6f0..67ab074ba1 100644 --- a/developer/src/kmc-ldml/test/fixtures/basic-serialized.xml +++ b/developer/src/kmc-ldml/test/fixtures/basic-serialized.xml @@ -11,7 +11,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/basic.txt b/developer/src/kmc-ldml/test/fixtures/basic.txt index 81748b400e..f028f2155d 100644 --- a/developer/src/kmc-ldml/test/fixtures/basic.txt +++ b/developer/src/kmc-ldml/test/fixtures/basic.txt @@ -408,7 +408,7 @@ block(layr) # struct COMP_KMXPLUS_LAYR { index(strNull,strUs,2) # KMXPLUS_STR hardware = 'us' 00 00 00 00 # KMX_DWORD layer; 01 00 00 00 # count - 7B 00 00 00 # KMX_DWORD minDeviceWidth; // 123 + 00 00 00 00 # KMX_DWORD minDeviceWidth; // 0 # layers 0 00 00 00 00 # KMXPLUS_STR id; 00 00 00 00 # KMX_DWORD mod diff --git a/developer/src/kmc-ldml/test/fixtures/basic.xml b/developer/src/kmc-ldml/test/fixtures/basic.xml index 168ee0ef9a..0fa7dc77a8 100644 --- a/developer/src/kmc-ldml/test/fixtures/basic.xml +++ b/developer/src/kmc-ldml/test/fixtures/basic.xml @@ -23,8 +23,7 @@ - - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped.xml index 99f9609d21..a3f5dd423c 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped.xml @@ -30,11 +30,11 @@ - + - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped2.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped2.xml index 20991504b7..e4451484fe 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped2.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/escaped2.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/gap-switch.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/gap-switch.xml index a22eb6dc8e..d76717f50b 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/gap-switch.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/gap-switch.xml @@ -11,11 +11,11 @@ - + - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware.xml index c793eefa4e..8e5ebdbd7e 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware.xml @@ -11,11 +11,11 @@ - + - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_iso.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_iso.xml index 1d2d53aa13..227bfbca35 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_iso.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_iso.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_us.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_us.xml index 0c4a0ee78a..77fa794f4f 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_us.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/hardware_us.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/import-local.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/import-local.xml index c3ef2b3ef6..10050d36c0 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/import-local.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/import-local.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-keys.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-keys.xml index 6255e04d55..202da83207 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-keys.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-keys.xml @@ -22,7 +22,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-rows.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-rows.xml index a80f26e39c..767de7acad 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-rows.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-hardware-too-many-rows.xml @@ -9,7 +9,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-key-missing-attrs.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-key-missing-attrs.xml index 0dec7a50fc..71e2446bf3 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-key-missing-attrs.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-key-missing-attrs.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-missing-flick.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-missing-flick.xml index d5ea11be31..8d474f5f69 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-missing-flick.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-missing-flick.xml @@ -12,7 +12,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-key.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-key.xml index 6417058b5c..71c9fdb7df 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-key.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-key.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1.xml index d679a35421..a0466969bc 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1b.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1b.xml index 384babd70c..fb329cc738 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1b.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/invalid-undefined-var-1b.xml @@ -9,7 +9,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/many-modifiers.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/many-modifiers.xml index 5c380cd737..85e84d3a1f 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/many-modifiers.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/many-modifiers.xml @@ -7,7 +7,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/markers.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/markers.xml index 2f5183600e..09c06cd9f6 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/markers.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/markers.xml @@ -17,7 +17,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal-nfc.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal-nfc.xml index c7c6dccd71..ea7507cddc 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal-nfc.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal-nfc.xml @@ -38,11 +38,11 @@ - + - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal.xml index b7c5ade4bc..deceff6a21 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/maximal.xml @@ -36,11 +36,11 @@ - + - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/minimal.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/minimal.xml index f670d95d4f..7227fcf8a9 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/minimal.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/minimal.xml @@ -9,7 +9,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/keys/warn-no-keycap.xml b/developer/src/kmc-ldml/test/fixtures/sections/keys/warn-no-keycap.xml index 6d0cf23f5b..f28da4fd57 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/keys/warn-no-keycap.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/keys/warn-no-keycap.xml @@ -20,7 +20,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml index 3054afceb7..956cc28019 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml index d1d34b598f..50b22150f5 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml index 5000e27304..87c30e9e46 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml index fec6f8d26f..392cc868b4 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-us-form.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-us-form.xml index 3a242dddfd..9195dd6d98 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-us-form.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-us-form.xml @@ -16,7 +16,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-zzz-form.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-zzz-form.xml index b1ca16c5a1..cd5a044a10 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-zzz-form.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-custom-zzz-form.xml @@ -16,7 +16,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-dup-width.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-dup-width.xml index 695e2dbde0..af69e2b205 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-dup-width.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-dup-width.xml @@ -8,7 +8,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-hardware-layer-requires-modifiers.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-hardware-layer-requires-modifiers.xml new file mode 100644 index 0000000000..9b77333ca8 --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-hardware-layer-requires-modifiers.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-touch-layer-requires-id.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-touch-layer-requires-id.xml new file mode 100644 index 0000000000..3030c58eaa --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-touch-layer-requires-id.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-hardware-layer-has-id.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-hardware-layer-has-id.xml new file mode 100644 index 0000000000..1065e04c94 --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-hardware-layer-has-id.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-touch-layer-has-modifiers.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-touch-layer-has-modifiers.xml new file mode 100644 index 0000000000..1f38e43df6 --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-touch-layer-has-modifiers.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-invalid-form.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-invalid-form.xml index c15dac8c26..8d8e91f83f 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-invalid-form.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-invalid-form.xml @@ -9,7 +9,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-multi-hardware.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-multi-hardware.xml index 7d3df0cb34..2a358ffdd8 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-multi-hardware.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/invalid-multi-hardware.xml @@ -1,6 +1,6 @@ - + @@ -9,14 +9,14 @@ - + - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/row-keys-whitespace.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/row-keys-whitespace.xml index f8d1a629d5..c69c74085c 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/row-keys-whitespace.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/row-keys-whitespace.xml @@ -9,7 +9,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-us-form.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-us-form.xml index ace1485521..e80e0624b6 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-us-form.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-us-form.xml @@ -16,7 +16,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-zzz-form.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-zzz-form.xml index 52c6e3a2e9..869db7789c 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-zzz-form.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/warn-custom-zzz-form.xml @@ -14,7 +14,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/hint-pua.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/hint-pua.xml index 9ce063580b..c4cb6c80e3 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/hint-pua.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/hint-pua.xml @@ -20,8 +20,8 @@ - - + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/invalid-illegal.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/invalid-illegal.xml index 3eddaffdee..270843453d 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/invalid-illegal.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/invalid-illegal.xml @@ -21,7 +21,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-1.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-1.xml index 49cd61d358..6fa23ddd0d 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-1.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-1.xml @@ -9,8 +9,8 @@ - - + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-2.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-2.xml index ec001db768..4a49747916 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-2.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-2.xml @@ -13,8 +13,8 @@ - - + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-3.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-3.xml index a40c119099..1cd994d26d 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-3.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-3.xml @@ -17,8 +17,8 @@ - - + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-4.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-4.xml index cf443c61fe..f4aec7ea42 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-4.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-denorm-4.xml @@ -11,8 +11,8 @@ - - + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-unassigned.xml b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-unassigned.xml index fa21ebe28c..f009aeb1aa 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-unassigned.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/strs/warn-unassigned.xml @@ -20,8 +20,8 @@ - - + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/tran/fail-bad-tran-2.xml b/developer/src/kmc-ldml/test/fixtures/sections/tran/fail-bad-tran-2.xml index 24d904f7f2..51d579f2f0 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/tran/fail-bad-tran-2.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/tran/fail-bad-tran-2.xml @@ -7,7 +7,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/tran/tran-escape.xml b/developer/src/kmc-ldml/test/fixtures/sections/tran/tran-escape.xml index c4f7872587..6fc85562c1 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/tran/tran-escape.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/tran/tran-escape.xml @@ -5,7 +5,7 @@ - + diff --git a/developer/src/kmc-ldml/test/keys.tests.ts b/developer/src/kmc-ldml/test/keys.tests.ts index b2748cdd3e..ef8138bd26 100644 --- a/developer/src/kmc-ldml/test/keys.tests.ts +++ b/developer/src/kmc-ldml/test/keys.tests.ts @@ -452,7 +452,7 @@ describe('keys.kmap', function () { assert.isNull(keys); assert.equal(compilerTestCallbacks.messages.length, 1); - assert.deepEqual(compilerTestCallbacks.messages[0], LdmlCompilerMessages.Error_RowOnHardwareLayerHasTooManyKeys({ row: 1, hardware: 'us', modifiers: 'none' }, withOffset(785) as LDMLKeyboard.LKRow)); + assert.deepEqual(compilerTestCallbacks.messages[0], LdmlCompilerMessages.Error_RowOnHardwareLayerHasTooManyKeys({ row: 1, hardware: 'us', modifiers: 'none' }, withOffset(792) as LDMLKeyboard.LKRow)); }); it('should reject layouts with undefined keys', async function() { @@ -460,7 +460,7 @@ describe('keys.kmap', function () { assert.isNull(keys); assert.equal(compilerTestCallbacks.messages.length, 1); - assert.deepEqual(compilerTestCallbacks.messages[0], LdmlCompilerMessages.Error_KeyNotFoundInKeyBag({col: 1, form: 'hardware', keyId: 'foo', layer: 'base', row: 1}, withOffset(271) as LDMLKeyboard.LKRow)); + assert.deepEqual(compilerTestCallbacks.messages[0], LdmlCompilerMessages.Error_KeyNotFoundInKeyBag({col: 1, form: 'hardware', keyId: 'foo', layer: 'none', row: 1}, withOffset(278) as LDMLKeyboard.LKRow)); }); it('should reject layouts with invalid keys', async function() { const keys = await loadSectionFixture(KeysCompiler, 'sections/keys/invalid-key-missing-attrs.xml', compilerTestCallbacks, keysDependencies) as Keys; diff --git a/developer/src/kmc-ldml/test/layr.tests.ts b/developer/src/kmc-ldml/test/layr.tests.ts index 1ee67b7261..fa7a5889de 100644 --- a/developer/src/kmc-ldml/test/layr.tests.ts +++ b/developer/src/kmc-ldml/test/layr.tests.ts @@ -41,7 +41,7 @@ describe('layr', function () { assert.ok(row0); assert.equal(row0.keys.length, 2); - assert.equal(layer0.id.value, 'base'); + assert.equal(layer0.id.value, ''); assert.equal(layer0.mod, constants.keys_mod_none); assert.equal(row0.keys[0]?.value, 'grave'); }, @@ -58,7 +58,7 @@ describe('layr', function () { assert.equal(listHardware.layers.length, 2); const hardware0 = listHardware.layers[0]; assert.ok(hardware0); - assert.equal(hardware0.id.value, 'base'); + assert.equal(hardware0.id.value, ''); assert.equal(hardware0.mod, constants.keys_mod_none); const hardware0row0 = hardware0.rows[0]; assert.ok(hardware0row0); @@ -67,7 +67,7 @@ describe('layr', function () { const hardware1 = listHardware.layers[1]; assert.ok(hardware1); assert.equal(hardware1.rows.length, 1); - assert.equal(hardware1.id.value, 'shift'); + assert.equal(hardware1.id.value, ''); assert.equal(hardware1.mod, constants.keys_mod_shift); const hardware1row0 = hardware1.rows[0]; assert.ok(hardware1row0); @@ -130,7 +130,7 @@ describe('layr', function () { ])); assert.sameDeepMembers(bymod, [ // flatten the layers for comparison, assume a single key - ['base', constants.keys_mod_none, 'a'], + ['', constants.keys_mod_none, 'a'], ['', constants.keys_mod_altR, 'c'], ['', constants.keys_mod_ctrl | constants.keys_mod_shift, 'c'], ]); @@ -157,7 +157,7 @@ describe('layr', function () { const layer0 = list0.layers[0]; assert.ok(layer0); assert.equal(layer0.rows.length, 2); - assert.equal(layer0.id.value, 'base'); + assert.equal(layer0.id.value, ''); assert.equal(layer0.mod, constants.keys_mod_none); for(const row of layer0.rows) { assert.ok(row); @@ -180,5 +180,29 @@ describe('layr', function () { LdmlCompilerMessages.Error_InvalidLayerWidth({ minDeviceWidth }), ] })), + { + subpath: 'sections/layr/error-touch-layer-requires-id.xml', + errors: [ + LdmlCompilerMessages.Error_TouchLayerRequiresId({ minDeviceWidth: 120}), + ] + }, + { + subpath: 'sections/layr/error-hardware-layer-requires-modifiers.xml', + errors: [ + LdmlCompilerMessages.Error_HardwareLayerRequiresModifiers({ formId: 'us' }), + ] + }, + { + subpath: 'sections/layr/hint-touch-layer-has-modifiers.xml', + warnings: [ // hints grouped under warnings + LdmlCompilerMessages.Hint_TouchLayerHasModifiers({id: 'base', minDeviceWidth: 120}), + ] + }, + { + subpath: 'sections/layr/hint-hardware-layer-has-id.xml', + warnings: [ // hints grouped under warnings + LdmlCompilerMessages.Hint_HardwareLayerHasId({formId: 'iso', id: 'base'}), + ] + }, ]); }); diff --git a/developer/src/kmc-ldml/test/linter.tests.ts b/developer/src/kmc-ldml/test/linter.tests.ts index cd122840e8..21d5c723ad 100644 --- a/developer/src/kmc-ldml/test/linter.tests.ts +++ b/developer/src/kmc-ldml/test/linter.tests.ts @@ -7,10 +7,16 @@ import { LdmlCompilerMessages } from '../src/compiler/ldml-compiler-messages.js' describe('linter-tests', function() { this.slow(500); // 0.5 sec -- json schema validation takes a while - before(function() { + this.beforeEach(function() { compilerTestCallbacks.clear(); }); + this.afterEach(function() { + if(this.currentTest.isFailed()) { + compilerTestCallbacks.printMessages(); + } + }); + it('should warn on mark keys with no display', async function () { // unassigned not implemented yet const inputFilename = makePathToFixture('sections/keys/warn-no-keycap.xml'); diff --git a/developer/src/kmc-ldml/test/utils.tests.ts b/developer/src/kmc-ldml/test/utils.tests.ts index 5b5a102f43..d59ceffd87 100644 --- a/developer/src/kmc-ldml/test/utils.tests.ts +++ b/developer/src/kmc-ldml/test/utils.tests.ts @@ -224,11 +224,11 @@ describe('test of util/util.ts', () => { }); }); describe('isValidModifier()', () => { - it('should treat falsy values as valid', () => { + it('should treat falsy values as invalid', () => { for(const str of [ - null, undefined, '', 'none' + null, undefined, '' ]) { - assert.ok(validModifier(str), `validModifier(${JSON.stringify(str)})`); + assert.notOk(validModifier(str), `validModifier(${JSON.stringify(str)})`); } }); it('should treat bad values as invalid', () => { diff --git a/developer/src/kmc-ldml/test/visual-keyboard-compiler.tests.ts b/developer/src/kmc-ldml/test/visual-keyboard-compiler.tests.ts index a6f0de9250..9155685618 100644 --- a/developer/src/kmc-ldml/test/visual-keyboard-compiler.tests.ts +++ b/developer/src/kmc-ldml/test/visual-keyboard-compiler.tests.ts @@ -18,6 +18,16 @@ import { LdmlKeyboardCompiler } from '../src/main.js'; describe('visual-keyboard-compiler', function() { this.slow(500); // 0.5 sec -- json schema validation takes a while + this.beforeEach(function() { + compilerTestCallbacks.clear(); + }); + + this.afterEach(function() { + if(this.currentTest.isFailed()) { + compilerTestCallbacks.printMessages(); + } + }); + it('should build fixtures', async function() { // Let's build basic.xml From 20e651fd99eaf08e2b40c2ae6de60324436ff72c Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Fri, 28 Aug 2026 15:36:37 +0200 Subject: [PATCH 21/84] chore(web): add publishing symbols to TC ios release build Build-bot: skip release:web,android,ios --- resources/teamcity/ios/ios-actions.inc.sh | 8 ++++++++ resources/teamcity/ios/keyman-ios-release.sh | 1 + 2 files changed, 9 insertions(+) diff --git a/resources/teamcity/ios/ios-actions.inc.sh b/resources/teamcity/ios/ios-actions.inc.sh index acf904fe0f..765e3542ab 100755 --- a/resources/teamcity/ios/ios-actions.inc.sh +++ b/resources/teamcity/ios/ios-actions.inc.sh @@ -13,3 +13,11 @@ ios_capture_build_artifacts() { "${KEYMAN_ROOT}/ios/tools/prepRelease.sh" builder_echo end "prep-release" success "Finished capturing build artifacts" } + +ios_publish_symbols() { + builder_echo start "publish to Sentry" "Publishing source map to Sentry" + + builder_launch /ios/build.sh "publish-symbols" + + builder_echo end "publish to Sentry" success "Finished publishing source map to Sentry" +} diff --git a/resources/teamcity/ios/keyman-ios-release.sh b/resources/teamcity/ios/keyman-ios-release.sh index 8942a9f135..15d09e5ef7 100755 --- a/resources/teamcity/ios/keyman-ios-release.sh +++ b/resources/teamcity/ios/keyman-ios-release.sh @@ -243,6 +243,7 @@ function do_build() { function do_publish() { _publish_to_downloads_keyman_com + ios_publish_symbols tc_upload_help "Keyman for iOS" ios if [[ "${KEYMAN_TIER}" == "stable" ]]; then From 2f60544835fbe596ce66984692d3af11bb7b2e4a Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 28 Aug 2026 17:31:06 +0200 Subject: [PATCH 22/84] docs(developer): tweak comments Co-authored-by: Eberhard Beilharz Co-authored-by: Sabine Schmitt --- developer/src/kmc-kmn/test/compiler.tests.ts | 5 ++++- developer/src/kmcmplib/src/Compiler.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/developer/src/kmc-kmn/test/compiler.tests.ts b/developer/src/kmc-kmn/test/compiler.tests.ts index c4bc020929..ce27552585 100644 --- a/developer/src/kmc-kmn/test/compiler.tests.ts +++ b/developer/src/kmc-kmn/test/compiler.tests.ts @@ -148,10 +148,13 @@ describe('Compiler class', function() { const result = await compileTestKeyboard(callbacks, ['keyboards', 'targets-with-whitespace.kmn']); assert.isNotNull(result); - // Verifies that targets has 'any' as it contains both JS and KMX targets + // Verify implictly that `&targets` store was interpreted correctly as 'any' + // because the compiler generated both JS and KMX targets (#13721) assert.isNotNull(result.artifacts.js); assert.isNotNull(result.artifacts.kmx); + // Then verify directly that the `&targets` store was trimmed by looking at + // the final value in the kmx data const reader = new KmxFileReader(); const keyboard = reader.read(result.artifacts.kmx.data); assert.equal(keyboard.targets, 'any'); diff --git a/developer/src/kmcmplib/src/Compiler.cpp b/developer/src/kmcmplib/src/Compiler.cpp index e73b2b9a45..8204cc2e2e 100644 --- a/developer/src/kmcmplib/src/Compiler.cpp +++ b/developer/src/kmcmplib/src/Compiler.cpp @@ -1336,7 +1336,7 @@ KMX_BOOL ProcessSystemStore(PFILE_KEYBOARD fk, KMX_DWORD SystemID, PFILE_STORE s * &targets dpString value to remove unnecessary whitespace. Does not * reallocate sp->dpString, but overwrites its value with a string the * same length or shorter. - * @param sp store value to rewrite + * @param store store value to rewrite * @param targets (output) * @return FALSE if no targets found or invalid targets found */ From d7b40844389ef27297a5ce73e97f98e147518b8f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 07:55:16 +0200 Subject: [PATCH 23/84] fix(developer): improve scroll wheel behavior in Character Map The Character Map scroll will now scroll from current scroll position when the scroll wheel is used, one row at a time, rather than moving the currently selected cell. This behavior is more natural and allows mixed use of the scrollbar and the scrollwheel. Fixes: #14159 Test-bot: skip --- .../delphi/charmap/UfrmCharacterMapNew.pas | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/common/windows/delphi/charmap/UfrmCharacterMapNew.pas b/common/windows/delphi/charmap/UfrmCharacterMapNew.pas index 2e807ede94..a99212761f 100644 --- a/common/windows/delphi/charmap/UfrmCharacterMapNew.pas +++ b/common/windows/delphi/charmap/UfrmCharacterMapNew.pas @@ -896,22 +896,36 @@ end; procedure TfrmCharacterMapNew.gridMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin + Handled := True; if ssCtrl in Shift then begin - Handled := True; + // Zoom if tbSize.Position < tbSize.Max then tbSize.Position := tbSize.Position + tbSize.PageSize; + end + else + begin + // Scroll + if grid.TopRow < grid.RowCount - grid.VisibleRowCount then + grid.TopRow := grid.TopRow + 1; end; end; procedure TfrmCharacterMapNew.gridMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin + Handled := True; if ssCtrl in Shift then begin - Handled := True; + // Zoom if tbSize.Position > tbSize.Min then tbSize.Position := tbSize.Position - tbSize.PageSize; + end + else + begin + // Scroll + if grid.TopRow > 0 then + grid.TopRow := grid.TopRow - 1; end; end; From 4b581c1e65074840f2c5bb32870abce743447a22 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 08:05:40 +0200 Subject: [PATCH 24/84] fix(developer): disable Copy Link in Model Editor if no link to copy Also reorder the buttons more logically, so Copy Link is next to Test Keyboard, so that the Email Links button which applies to all items in the list is separate from the Test Keyboard and Copy Link buttons. Fixes: #12669 Test-bot: skip --- .../Keyman.Developer.UI.UfrmModelEditor.dfm | 1174 ++++++++--------- .../Keyman.Developer.UI.UfrmModelEditor.pas | 1 + 2 files changed, 588 insertions(+), 587 deletions(-) diff --git a/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.dfm b/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.dfm index 12a46b043c..ad25a6a710 100644 --- a/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.dfm +++ b/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.dfm @@ -1,587 +1,587 @@ -inherited frmModelEditor: TfrmModelEditor - Left = 0 - Top = 0 - Caption = 'frmModelEditor' - ClientHeight = 708 - ClientWidth = 712 - Font.Name = 'Tahoma' - Position = poDesigned - ExplicitWidth = 712 - ExplicitHeight = 708 - PixelsPerInch = 96 - TextHeight = 13 - object pages: TLeftTabbedPageControl - Left = 0 - Top = 0 - Width = 712 - Height = 708 - ActivePage = pageDetails - Align = alClient - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Segoe UI' - Font.Style = [] - Images = modActionsMain.ilEditorPages - MultiLine = True - OwnerDraw = True - ParentFont = False - TabHeight = 90 - TabOrder = 0 - TabPosition = tpLeft - TabWidth = 60 - OnChanging = pagesChanging - object pageDetails: TTabSheet - Caption = 'Details' - ImageIndex = 2 - object sbDetails: TScrollBox - Left = 0 - Top = 0 - Width = 619 - Height = 708 - Align = alClient - BevelInner = bvNone - BevelOuter = bvNone - BorderStyle = bsNone - Color = 14211288 - ParentColor = False - TabOrder = 0 - OnMouseWheel = sbDetailsMouseWheel - object panWordlists: TPanel - AlignWithMargins = True - Left = 4 - Top = 279 - Width = 611 - Height = 232 - Margins.Left = 4 - Margins.Top = 4 - Margins.Right = 4 - Margins.Bottom = 4 - Align = alTop - BevelOuter = bvNone - TabOrder = 1 - ExplicitTop = 261 - DesignSize = ( - 611 - 232) - object lblWordlists: TLabel - AlignWithMargins = True - Left = 12 - Top = 4 - Width = 64 - Height = 17 - Caption = 'Wordlists' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -14 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object lblReadOnly: TLabel - Left = 15 - Top = 200 - Width = 415 - Height = 13 - Caption = - 'The editor was unable to parse the source file. Details shown he' + - 're are read-only.' - end - object gridWordlists: TStringGrid - Left = 12 - Top = 27 - Width = 485 - Height = 160 - Anchors = [akLeft, akTop, akRight] - ColCount = 1 - FixedCols = 0 - FixedRows = 0 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect] - TabOrder = 0 - OnDblClick = gridWordlistsDblClick - ColWidths = ( - 271) - RowHeights = ( - 24 - 24 - 24 - 24 - 24) - end - object cmdAddWordlist: TButton - Left = 503 - Top = 27 - Width = 101 - Height = 25 - Anchors = [akTop, akRight] - Caption = '&Add...' - TabOrder = 1 - OnClick = cmdAddWordlistClick - end - object cmdRemoveWordlist: TButton - Left = 503 - Top = 58 - Width = 100 - Height = 25 - Anchors = [akTop, akRight] - Caption = 'Remove' - TabOrder = 2 - OnClick = cmdRemoveWordlistClick - end - end - object panBasicInformation: TPanel - AlignWithMargins = True - Left = 4 - Top = 6 - Width = 611 - Height = 265 - Margins.Left = 4 - Margins.Top = 6 - Margins.Right = 4 - Margins.Bottom = 4 - Align = alTop - AutoSize = True - BevelOuter = bvNone - ParentColor = True - TabOrder = 0 - DesignSize = ( - 611 - 265) - object lblFormat: TLabel - Left = 12 - Top = 30 - Width = 36 - Height = 13 - Caption = '&Format' - FocusControl = cbFormat - end - object lblBasicInformation: TLabel - AlignWithMargins = True - Left = 12 - Top = 3 - Width = 123 - Height = 17 - Caption = 'Basic Information' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -14 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object lblWordBreaker: TLabel - Left = 12 - Top = 56 - Width = 71 - Height = 13 - Caption = '&Word breaker' - end - object lblComments: TLabel - Left = 12 - Top = 181 - Width = 50 - Height = 13 - Caption = 'Comme&nts' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object lblInsertAfterWord: TLabel - Left = 12 - Top = 83 - Width = 86 - Height = 13 - Caption = '&Insert after word' - FocusControl = cbInsertAfterWord - end - object lblQuotationMarks: TLabel - Left = 12 - Top = 110 - Width = 86 - Height = 13 - Caption = '&Quotation marks' - FocusControl = cbOpenQuote - end - object lblOpenQuote: TLabel - Left = 106 - Top = 110 - Width = 27 - Height = 13 - Caption = 'open' - FocusControl = cbOpenQuote - end - object lblCloseQuote: TLabel - Left = 220 - Top = 110 - Width = 26 - Height = 13 - Caption = 'close' - FocusControl = cbCloseQuote - end - object cbFormat: TComboBox - Left = 106 - Top = 26 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 0 - OnClick = cbFormatClick - Items.Strings = ( - 'Wordlist (trie-1.0)' - 'Custom (custom-1.0)') - end - object cbWordBreaker: TComboBox - Left = 106 - Top = 53 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 1 - OnClick = cbWordBreakerClick - Items.Strings = ( - 'default' - 'ascii' - 'custom') - end - object memoComments: TMemo - Left = 106 - Top = 178 - Width = 498 - Height = 87 - Anchors = [akLeft, akTop, akRight] - BevelOuter = bvNone - TabOrder = 7 - OnChange = memoCommentsChange - end - object cbInsertAfterWord: TComboBox - Left = 106 - Top = 80 - Width = 145 - Height = 21 - TabOrder = 2 - OnChange = cbInsertAfterWordClick - OnClick = cbInsertAfterWordClick - OnKeyUp = cbInsertAfterWordKeyUp - end - object cbOpenQuote: TComboBox - Left = 139 - Top = 107 - Width = 63 - Height = 21 - TabOrder = 3 - OnChange = cbOpenQuoteClick - OnClick = cbOpenQuoteClick - OnKeyUp = cbOpenQuoteKeyUp - end - object chkIsRTL: TCheckBox - Left = 106 - Top = 134 - Width = 111 - Height = 17 - Caption = 'Right-to-left script' - TabOrder = 5 - OnClick = chkIsRTLClick - end - object cbCloseQuote: TComboBox - Left = 252 - Top = 107 - Width = 63 - Height = 21 - TabOrder = 4 - OnChange = cbCloseQuoteClick - OnClick = cbCloseQuoteClick - OnKeyUp = cbCloseQuoteKeyUp - end - object chkLanguageUsesCasing: TCheckBox - Left = 106 - Top = 155 - Width = 145 - Height = 17 - Caption = 'Language uses casing' - TabOrder = 6 - OnClick = chkLanguageUsesCasingClick - end - end - end - end - object pageSource: TTabSheet - Caption = 'Source' - ImageIndex = 9 - end - object pageCompile: TTabSheet - Caption = 'Build' - ImageIndex = 1 - object sbCompile: TScrollBox - Left = 0 - Top = 0 - Width = 619 - Height = 708 - Align = alClient - BevelInner = bvNone - BevelOuter = bvNone - BorderStyle = bsNone - Color = 14211288 - ParentColor = False - TabOrder = 0 - OnMouseWheel = sbDetailsMouseWheel - object lblCongrats: TLabel - Left = 10 - Top = 13 - Width = 333 - Height = 13 - Caption = - 'The model must be compiled in order to distribute or install ' + - 'it' - end - object panBuildLexicalModel: TPanel - Left = 10 - Top = 235 - Width = 471 - Height = 353 - BevelOuter = bvNone - Color = 15921906 - ParentBackground = False - TabOrder = 2 - object lblDebugHostCaption: TLabel - Left = 12 - Top = 158 - Width = 222 - Height = 13 - Caption = 'Server is active at following web addresses:' - end - object lblCrossPlatform: TLabel - Left = 12 - Top = 14 - Width = 237 - Height = 17 - Caption = 'Test Lexical Model in Web Browser' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -14 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label1: TLabel - Left = 12 - Top = 48 - Width = 105 - Height = 13 - Caption = 'Keyboard for testing' - end - object Label2: TLabel - Left = 12 - Top = 72 - Width = 389 - Height = 26 - Caption = - 'Optionally, select a compiled keyboard with which to test this l' + - 'exical model. Any keyboards already loaded in the web debugger w' + - 'ill also be available.' - WordWrap = True - end - object imgQRCode: TImage - Left = 309 - Top = 152 - Width = 128 - Height = 128 - Proportional = True - Stretch = True - end - object cmdTestLexicalModel: TButton - Left = 12 - Top = 122 - Width = 150 - Height = 25 - Action = modActionsModelEditor.actModelTest - TabOrder = 2 - end - object cmdOpenDebugHost: TButton - Left = 12 - Top = 286 - Width = 109 - Height = 25 - Caption = 'Open in browser' - TabOrder = 5 - OnClick = cmdOpenDebugHostClick - end - object lbDebugHosts: TListBox - Left = 12 - Top = 183 - Width = 289 - Height = 97 - ItemHeight = 13 - TabOrder = 4 - OnClick = lbDebugHostsClick - end - object cmdSendURLsToEmail: TButton - Left = 127 - Top = 286 - Width = 109 - Height = 25 - Caption = 'Send to &email...' - TabOrder = 6 - OnClick = cmdSendURLsToEmailClick - end - object editTestKeyboard: TEdit - Left = 123 - Top = 45 - Width = 158 - Height = 21 - TabOrder = 0 - OnChange = editTestKeyboardChange - end - object cmdBrowseTestKeyboard: TButton - Left = 287 - Top = 43 - Width = 75 - Height = 25 - Caption = '&Browse...' - TabOrder = 1 - OnClick = cmdBrowseTestKeyboardClick - end - object cmdCopyDebuggerLink: TButton - Left = 242 - Top = 286 - Width = 109 - Height = 25 - Caption = 'Copy &link' - TabOrder = 7 - OnClick = cmdCopyDebuggerLinkClick - end - object cmdConfigureWebDebugger: TButton - Left = 168 - Top = 122 - Width = 153 - Height = 25 - Action = modActionsMain.actToolsWebConfigure - TabOrder = 3 - end - end - object panOpenInExplorer: TPanel - Left = 10 - Top = 148 - Width = 471 - Height = 67 - BevelOuter = bvNone - Color = 15921906 - ParentBackground = False - TabOrder = 1 - object lblOpenInExplorer: TLabel - Left = 9 - Top = 6 - Width = 115 - Height = 17 - Caption = 'Open in Explorer' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -14 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object cmdOpenSourceFolder: TButton - Left = 9 - Top = 33 - Width = 138 - Height = 25 - Caption = '&Open source folder' - TabOrder = 0 - OnClick = cmdOpenSourceFolderClick - end - object cmdOpenBuildFolder: TButton - Left = 153 - Top = 33 - Width = 138 - Height = 25 - Caption = 'Open &build folder' - TabOrder = 1 - OnClick = cmdOpenBuildFolderClick - end - object cmdOpenProjectFolder: TButton - Left = 297 - Top = 33 - Width = 138 - Height = 25 - Caption = 'Open pro&ject folder' - TabOrder = 2 - OnClick = cmdOpenProjectFolderClick - end - end - object panFileActions: TPanel - Left = 10 - Top = 32 - Width = 471 - Height = 97 - BevelOuter = bvNone - Color = 15921906 - ParentBackground = False - TabOrder = 0 - object lblFileActions: TLabel - Left = 9 - Top = 6 - Width = 75 - Height = 17 - Caption = 'File actions' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -14 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label5: TLabel - Left = 10 - Top = 71 - Width = 82 - Height = 13 - Caption = 'Target filename:' - end - object cmdAddToProject: TButton - Left = 153 - Top = 32 - Width = 137 - Height = 25 - Action = modActionsMain.actProjectAddCurrentEditorFile - TabOrder = 1 - end - object cmdCompile: TButton - Left = 10 - Top = 32 - Width = 137 - Height = 25 - Action = modActionsModelEditor.actModelCompile - TabOrder = 0 - end - object editOutPath: TEdit - Left = 98 - Top = 68 - Width = 359 - Height = 21 - TabStop = False - ParentColor = True - ReadOnly = True - TabOrder = 2 - end - end - end - end - end - object dlgAddWordlist: TOpenDialog - Options = [ofHideReadOnly, ofPathMustExist, ofEnableSizing] - Title = 'Create or Add Wordlist' - Left = 32 - Top = 216 - end - object dlgBrowseTestKeyboard: TOpenDialog - DefaultExt = 'js' - Filter = 'Compiled keyboard files (*.js)|*.js|All files (*.*)|*.*' - Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] - Title = 'Select compiled keyboard to test with' - Left = 32 - Top = 280 - end -end +inherited frmModelEditor: TfrmModelEditor + Left = 0 + Top = 0 + Caption = 'frmModelEditor' + ClientHeight = 708 + ClientWidth = 712 + Font.Name = 'Tahoma' + Position = poDesigned + ExplicitWidth = 712 + ExplicitHeight = 708 + PixelsPerInch = 96 + TextHeight = 13 + object pages: TLeftTabbedPageControl + Left = 0 + Top = 0 + Width = 712 + Height = 708 + ActivePage = pageDetails + Align = alClient + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Segoe UI' + Font.Style = [] + Images = modActionsMain.ilEditorPages + MultiLine = True + OwnerDraw = True + ParentFont = False + TabHeight = 90 + TabOrder = 0 + TabPosition = tpLeft + TabWidth = 60 + OnChanging = pagesChanging + object pageDetails: TTabSheet + Caption = 'Details' + ImageIndex = 2 + object sbDetails: TScrollBox + Left = 0 + Top = 0 + Width = 619 + Height = 708 + Align = alClient + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + Color = 14211288 + ParentColor = False + TabOrder = 0 + OnMouseWheel = sbDetailsMouseWheel + object panWordlists: TPanel + AlignWithMargins = True + Left = 4 + Top = 279 + Width = 611 + Height = 232 + Margins.Left = 4 + Margins.Top = 4 + Margins.Right = 4 + Margins.Bottom = 4 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + ExplicitTop = 261 + DesignSize = ( + 611 + 232) + object lblWordlists: TLabel + AlignWithMargins = True + Left = 12 + Top = 4 + Width = 64 + Height = 17 + Caption = 'Wordlists' + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lblReadOnly: TLabel + Left = 15 + Top = 200 + Width = 415 + Height = 13 + Caption = + 'The editor was unable to parse the source file. Details shown he' + + 're are read-only.' + end + object gridWordlists: TStringGrid + Left = 12 + Top = 27 + Width = 485 + Height = 160 + Anchors = [akLeft, akTop, akRight] + ColCount = 1 + FixedCols = 0 + FixedRows = 0 + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect] + TabOrder = 0 + OnDblClick = gridWordlistsDblClick + ColWidths = ( + 271) + RowHeights = ( + 24 + 24 + 24 + 24 + 24) + end + object cmdAddWordlist: TButton + Left = 503 + Top = 27 + Width = 101 + Height = 25 + Anchors = [akTop, akRight] + Caption = '&Add...' + TabOrder = 1 + OnClick = cmdAddWordlistClick + end + object cmdRemoveWordlist: TButton + Left = 503 + Top = 58 + Width = 100 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Remove' + TabOrder = 2 + OnClick = cmdRemoveWordlistClick + end + end + object panBasicInformation: TPanel + AlignWithMargins = True + Left = 4 + Top = 6 + Width = 611 + Height = 265 + Margins.Left = 4 + Margins.Top = 6 + Margins.Right = 4 + Margins.Bottom = 4 + Align = alTop + AutoSize = True + BevelOuter = bvNone + ParentColor = True + TabOrder = 0 + DesignSize = ( + 611 + 265) + object lblFormat: TLabel + Left = 12 + Top = 30 + Width = 36 + Height = 13 + Caption = '&Format' + FocusControl = cbFormat + end + object lblBasicInformation: TLabel + AlignWithMargins = True + Left = 12 + Top = 3 + Width = 123 + Height = 17 + Caption = 'Basic Information' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lblWordBreaker: TLabel + Left = 12 + Top = 56 + Width = 71 + Height = 13 + Caption = '&Word breaker' + end + object lblComments: TLabel + Left = 12 + Top = 181 + Width = 50 + Height = 13 + Caption = 'Comme&nts' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblInsertAfterWord: TLabel + Left = 12 + Top = 83 + Width = 86 + Height = 13 + Caption = '&Insert after word' + FocusControl = cbInsertAfterWord + end + object lblQuotationMarks: TLabel + Left = 12 + Top = 110 + Width = 86 + Height = 13 + Caption = '&Quotation marks' + FocusControl = cbOpenQuote + end + object lblOpenQuote: TLabel + Left = 106 + Top = 110 + Width = 27 + Height = 13 + Caption = 'open' + FocusControl = cbOpenQuote + end + object lblCloseQuote: TLabel + Left = 220 + Top = 110 + Width = 26 + Height = 13 + Caption = 'close' + FocusControl = cbCloseQuote + end + object cbFormat: TComboBox + Left = 106 + Top = 26 + Width = 145 + Height = 21 + Style = csDropDownList + TabOrder = 0 + OnClick = cbFormatClick + Items.Strings = ( + 'Wordlist (trie-1.0)' + 'Custom (custom-1.0)') + end + object cbWordBreaker: TComboBox + Left = 106 + Top = 53 + Width = 145 + Height = 21 + Style = csDropDownList + TabOrder = 1 + OnClick = cbWordBreakerClick + Items.Strings = ( + 'default' + 'ascii' + 'custom') + end + object memoComments: TMemo + Left = 106 + Top = 178 + Width = 498 + Height = 87 + Anchors = [akLeft, akTop, akRight] + BevelOuter = bvNone + TabOrder = 7 + OnChange = memoCommentsChange + end + object cbInsertAfterWord: TComboBox + Left = 106 + Top = 80 + Width = 145 + Height = 21 + TabOrder = 2 + OnChange = cbInsertAfterWordClick + OnClick = cbInsertAfterWordClick + OnKeyUp = cbInsertAfterWordKeyUp + end + object cbOpenQuote: TComboBox + Left = 139 + Top = 107 + Width = 63 + Height = 21 + TabOrder = 3 + OnChange = cbOpenQuoteClick + OnClick = cbOpenQuoteClick + OnKeyUp = cbOpenQuoteKeyUp + end + object chkIsRTL: TCheckBox + Left = 106 + Top = 134 + Width = 111 + Height = 17 + Caption = 'Right-to-left script' + TabOrder = 5 + OnClick = chkIsRTLClick + end + object cbCloseQuote: TComboBox + Left = 252 + Top = 107 + Width = 63 + Height = 21 + TabOrder = 4 + OnChange = cbCloseQuoteClick + OnClick = cbCloseQuoteClick + OnKeyUp = cbCloseQuoteKeyUp + end + object chkLanguageUsesCasing: TCheckBox + Left = 106 + Top = 155 + Width = 145 + Height = 17 + Caption = 'Language uses casing' + TabOrder = 6 + OnClick = chkLanguageUsesCasingClick + end + end + end + end + object pageSource: TTabSheet + Caption = 'Source' + ImageIndex = 9 + end + object pageCompile: TTabSheet + Caption = 'Build' + ImageIndex = 1 + object sbCompile: TScrollBox + Left = 0 + Top = 0 + Width = 619 + Height = 708 + Align = alClient + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + Color = 14211288 + ParentColor = False + TabOrder = 0 + OnMouseWheel = sbDetailsMouseWheel + object lblCongrats: TLabel + Left = 10 + Top = 13 + Width = 333 + Height = 13 + Caption = + 'The model must be compiled in order to distribute or install ' + + 'it' + end + object panBuildLexicalModel: TPanel + Left = 10 + Top = 235 + Width = 471 + Height = 353 + BevelOuter = bvNone + Color = 15921906 + ParentBackground = False + TabOrder = 2 + object lblDebugHostCaption: TLabel + Left = 12 + Top = 158 + Width = 222 + Height = 13 + Caption = 'Server is active at following web addresses:' + end + object lblCrossPlatform: TLabel + Left = 12 + Top = 14 + Width = 237 + Height = 17 + Caption = 'Test Lexical Model in Web Browser' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 12 + Top = 48 + Width = 105 + Height = 13 + Caption = 'Keyboard for testing' + end + object Label2: TLabel + Left = 12 + Top = 72 + Width = 389 + Height = 26 + Caption = + 'Optionally, select a compiled keyboard with which to test this l' + + 'exical model. Any keyboards already loaded in the web debugger w' + + 'ill also be available.' + WordWrap = True + end + object imgQRCode: TImage + Left = 309 + Top = 152 + Width = 128 + Height = 128 + Proportional = True + Stretch = True + end + object cmdTestLexicalModel: TButton + Left = 12 + Top = 122 + Width = 150 + Height = 25 + Action = modActionsModelEditor.actModelTest + TabOrder = 2 + end + object cmdOpenDebugHost: TButton + Left = 12 + Top = 286 + Width = 109 + Height = 25 + Caption = 'Open in browser' + TabOrder = 5 + OnClick = cmdOpenDebugHostClick + end + object lbDebugHosts: TListBox + Left = 12 + Top = 183 + Width = 289 + Height = 97 + ItemHeight = 13 + TabOrder = 4 + OnClick = lbDebugHostsClick + end + object cmdSendURLsToEmail: TButton + Left = 253 + Top = 286 + Width = 109 + Height = 25 + Caption = 'Send to &email...' + TabOrder = 7 + OnClick = cmdSendURLsToEmailClick + end + object editTestKeyboard: TEdit + Left = 123 + Top = 45 + Width = 158 + Height = 21 + TabOrder = 0 + OnChange = editTestKeyboardChange + end + object cmdBrowseTestKeyboard: TButton + Left = 287 + Top = 43 + Width = 75 + Height = 25 + Caption = '&Browse...' + TabOrder = 1 + OnClick = cmdBrowseTestKeyboardClick + end + object cmdCopyDebuggerLink: TButton + Left = 127 + Top = 286 + Width = 109 + Height = 25 + Caption = 'Copy &link' + TabOrder = 6 + OnClick = cmdCopyDebuggerLinkClick + end + object cmdConfigureWebDebugger: TButton + Left = 168 + Top = 122 + Width = 153 + Height = 25 + Action = modActionsMain.actToolsWebConfigure + TabOrder = 3 + end + end + object panOpenInExplorer: TPanel + Left = 10 + Top = 148 + Width = 471 + Height = 67 + BevelOuter = bvNone + Color = 15921906 + ParentBackground = False + TabOrder = 1 + object lblOpenInExplorer: TLabel + Left = 9 + Top = 6 + Width = 115 + Height = 17 + Caption = 'Open in Explorer' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object cmdOpenSourceFolder: TButton + Left = 9 + Top = 33 + Width = 138 + Height = 25 + Caption = '&Open source folder' + TabOrder = 0 + OnClick = cmdOpenSourceFolderClick + end + object cmdOpenBuildFolder: TButton + Left = 153 + Top = 33 + Width = 138 + Height = 25 + Caption = 'Open &build folder' + TabOrder = 1 + OnClick = cmdOpenBuildFolderClick + end + object cmdOpenProjectFolder: TButton + Left = 297 + Top = 33 + Width = 138 + Height = 25 + Caption = 'Open pro&ject folder' + TabOrder = 2 + OnClick = cmdOpenProjectFolderClick + end + end + object panFileActions: TPanel + Left = 10 + Top = 32 + Width = 471 + Height = 97 + BevelOuter = bvNone + Color = 15921906 + ParentBackground = False + TabOrder = 0 + object lblFileActions: TLabel + Left = 9 + Top = 6 + Width = 75 + Height = 17 + Caption = 'File actions' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label5: TLabel + Left = 10 + Top = 71 + Width = 82 + Height = 13 + Caption = 'Target filename:' + end + object cmdAddToProject: TButton + Left = 153 + Top = 32 + Width = 137 + Height = 25 + Action = modActionsMain.actProjectAddCurrentEditorFile + TabOrder = 1 + end + object cmdCompile: TButton + Left = 10 + Top = 32 + Width = 137 + Height = 25 + Action = modActionsModelEditor.actModelCompile + TabOrder = 0 + end + object editOutPath: TEdit + Left = 98 + Top = 68 + Width = 359 + Height = 21 + TabStop = False + ParentColor = True + ReadOnly = True + TabOrder = 2 + end + end + end + end + end + object dlgAddWordlist: TOpenDialog + Options = [ofHideReadOnly, ofPathMustExist, ofEnableSizing] + Title = 'Create or Add Wordlist' + Left = 32 + Top = 216 + end + object dlgBrowseTestKeyboard: TOpenDialog + DefaultExt = 'js' + Filter = 'Compiled keyboard files (*.js)|*.js|All files (*.*)|*.*' + Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Title = 'Select compiled keyboard to test with' + Left = 32 + Top = 280 + end +end diff --git a/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.pas b/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.pas index bc02e65bd7..baaa0a44aa 100644 --- a/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.pas +++ b/developer/src/tike/child/Keyman.Developer.UI.UfrmModelEditor.pas @@ -418,6 +418,7 @@ begin { Build tab } cmdOpenDebugHost.Enabled := lbDebugHosts.ItemIndex >= 0; + cmdCopyDebuggerLink.Enabled := lbDebugHosts.ItemIndex >= 0; cmdSendURLsToEmail.Enabled := lbDebugHosts.Items.Count > 0; // I4506 // We use FProjectFile because we don't want to accidentally create a standalone From f65299cb361e7e600eae99e6ee1e241ee97f6263 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 09:28:34 +0200 Subject: [PATCH 25/84] fix(developer): use path not dependent on pwd for starting Server Fixes: #12165 Test-bot: skip --- developer/src/server/src/environment.ts | 20 ++++++++++++++++++++ developer/src/server/src/routes.ts | 8 +++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/developer/src/server/src/environment.ts b/developer/src/server/src/environment.ts index f3e0566024..9b9659ba4a 100644 --- a/developer/src/server/src/environment.ts +++ b/developer/src/server/src/environment.ts @@ -1,5 +1,25 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * Environmental variables and paths + */ +import path from 'node:path'; import { extractVersionData } from './version-data.js'; // TODO: environment should be just KEYMAN_VERSION import KEYMAN_VERSION from "@keymanapp/keyman-version"; export const environment = extractVersionData(KEYMAN_VERSION.VERSION_WITH_TAG); + +/** + * @returns base path for the running server -- where index.js is stored + */ +export function serverBasePath() { + return path.join(import.meta.dirname, '../../build/src'); +} + +/** + * @returns path where the site public files can be found -- index.html + */ +export function serverSitePath() { + return path.join(serverBasePath(), 'site'); +} diff --git a/developer/src/server/src/routes.ts b/developer/src/server/src/routes.ts index acccf23402..4bb4386522 100644 --- a/developer/src/server/src/routes.ts +++ b/developer/src/server/src/routes.ts @@ -1,3 +1,8 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * Setup URL routes for Keyman Developer Server + */ import * as express from 'express'; import * as ws from 'ws'; import * as multer from 'multer'; @@ -16,6 +21,7 @@ import { standardPaths } from './standardPaths.js'; import chalk from 'chalk'; import { shutdown } from './shutdown.js'; import { getOption } from './options.js'; +import { serverSitePath } from './environment.js'; export default function setupRoutes(app: express.Express, upload: multer.Multer, wsServer: ws.WebSocketServer, environment: Environment ) { @@ -51,7 +57,7 @@ export default function setupRoutes(app: express.Express, upload: multer.Multer, /* All routes */ - app.use('/', express.static('build/src/site')); + app.use('/', express.static(serverSitePath())); app.post('/upload', localhostOnly, upload.single('file'), (req, res, next) => { const name = req.file.originalname; From 9f7beafc57a9b7f4e3a8bedfd70bc05333d2c378 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 09:52:30 +0200 Subject: [PATCH 26/84] chore(developer): remove duplicated versioning information from Server Use `KEYMAN_VERSION` instead of parsing version information. Test-bot: skip --- developer/src/server/src/environment.ts | 5 -- .../server/src/handlers/inc/packages-json.ts | 14 +++-- developer/src/server/src/index.ts | 11 ++-- developer/src/server/src/routes.ts | 10 ++-- developer/src/server/src/version-data.ts | 52 ------------------- 5 files changed, 22 insertions(+), 70 deletions(-) delete mode 100644 developer/src/server/src/version-data.ts diff --git a/developer/src/server/src/environment.ts b/developer/src/server/src/environment.ts index 9b9659ba4a..8c5a26881d 100644 --- a/developer/src/server/src/environment.ts +++ b/developer/src/server/src/environment.ts @@ -4,11 +4,6 @@ * Environmental variables and paths */ import path from 'node:path'; -import { extractVersionData } from './version-data.js'; -// TODO: environment should be just KEYMAN_VERSION - -import KEYMAN_VERSION from "@keymanapp/keyman-version"; -export const environment = extractVersionData(KEYMAN_VERSION.VERSION_WITH_TAG); /** * @returns base path for the running server -- where index.js is stored diff --git a/developer/src/server/src/handlers/inc/packages-json.ts b/developer/src/server/src/handlers/inc/packages-json.ts index 377e4b9856..12dfd1ba57 100644 --- a/developer/src/server/src/handlers/inc/packages-json.ts +++ b/developer/src/server/src/handlers/inc/packages-json.ts @@ -1,15 +1,21 @@ -import { KeymanUrls } from '@keymanapp/developer-utils'; +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * API: return list of packages under testing and urls for installing in mobile + * apps + */ import * as express from 'express'; +import { KeymanUrls } from '@keymanapp/developer-utils'; +import KEYMAN_VERSION from '@keymanapp/keyman-version'; import { data } from "../../data.js"; -import { environment } from '../../environment.js'; export default function handleIncPackagesJson (req: express.Request, res: express.Response) { const packages = Object.keys(data.packages).map(id => { return { id: id, filename: id+'.kmp', name: data.packages[id].name} }); res.send({ packages: packages, urls: { - installLinkAndroid: KeymanUrls.KeymanDeveloper_KeymanForAndroidDownload(environment.versionRelease), - installLinkIos: KeymanUrls.KeymanDeveloper_KeymanForIosDownload(environment.versionRelease), + installLinkAndroid: KeymanUrls.KeymanDeveloper_KeymanForAndroidDownload(KEYMAN_VERSION.VERSION_RELEASE), + installLinkIos: KeymanUrls.KeymanDeveloper_KeymanForIosDownload(KEYMAN_VERSION.VERSION_RELEASE), } }); } diff --git a/developer/src/server/src/index.ts b/developer/src/server/src/index.ts index e248b19625..68b2cf7a9e 100644 --- a/developer/src/server/src/index.ts +++ b/developer/src/server/src/index.ts @@ -1,12 +1,17 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + * + * Keyman Developer Server main program + */ import * as fs from 'node:fs'; import * as path from 'node:path'; import chalk from 'chalk'; import express from 'express'; import multer from 'multer'; import * as ws from 'ws'; +import KEYMAN_VERSION from '@keymanapp/keyman-version'; import { KeymanSentry } from './KeymanSentry.js'; import { standardPaths } from './standardPaths.js'; -import { environment } from './environment.js'; import setupRoutes from './routes.js'; import { shutdown } from './shutdown.js'; import { initTray } from './tray.js'; @@ -23,7 +28,7 @@ const options = { // set of options if an error occurs. await loadOptions(); -console.log(`Starting Keyman Developer Server ${environment.versionWithTag}, listening on port ${getOption('web host port')}.`); +console.log(`Starting Keyman Developer Server ${KEYMAN_VERSION.VERSION_WITH_TAG}, listening on port ${getOption('web host port')}.`); KeymanSentry.init(); try { @@ -74,7 +79,7 @@ export async function run() { /* Setup routes */ - setupRoutes(app, upload, wsServer, environment); + setupRoutes(app, upload, wsServer); /* Start the web server */ diff --git a/developer/src/server/src/routes.ts b/developer/src/server/src/routes.ts index 4bb4386522..fc07968b5a 100644 --- a/developer/src/server/src/routes.ts +++ b/developer/src/server/src/routes.ts @@ -6,6 +6,7 @@ import * as express from 'express'; import * as ws from 'ws'; import * as multer from 'multer'; +import KEYMAN_VERSION from '@keymanapp/keyman-version'; import handleIncKeyboardsJs from './handlers/inc/keyboards-js.js'; import { data, DebugFont, DebugKeyboard, DebugModel, DebugObject, DebugPackage, isValidId } from './data.js'; import apiGet from './handlers/api/debugobject/get.js'; @@ -16,23 +17,20 @@ import apiUnregister from './handlers/api/debugobject/unregister.js'; import handleIncPackagesJson from './handlers/inc/packages-json.js'; import apiPackageRegister from './handlers/api/package/register.js'; import handleIncKeyboardsCss from './handlers/inc/keyboards-css.js'; -import { Environment } from './version-data.js'; import { standardPaths } from './standardPaths.js'; import chalk from 'chalk'; import { shutdown } from './shutdown.js'; import { getOption } from './options.js'; import { serverSitePath } from './environment.js'; -export default function setupRoutes(app: express.Express, upload: multer.Multer, wsServer: ws.WebSocketServer, environment: Environment ) { +export default function setupRoutes(app: express.Express, upload: multer.Multer, wsServer: ws.WebSocketServer ) { /* Middleware - JSON and logging */ app.use(express.json()); // for parsing application/json app.use(function (req, _res, next) { - // if(environment.environment == 'local') { - console.log(req.method + ' ' + req.path); - // } + console.log(req.method + ' ' + req.path); next(); }); @@ -99,7 +97,7 @@ export default function setupRoutes(app: express.Express, upload: multer.Multer, app.get('/inc/packages.json', handleIncPackagesJson); app.get('/api-public/version', (req,res,next)=>{ - res.json({version: environment.versionWithTag, isApiAvailable: isLocalhost(req)}); + res.json({version: KEYMAN_VERSION.VERSION_WITH_TAG, isApiAvailable: isLocalhost(req)}); next(); }); diff --git a/developer/src/server/src/version-data.ts b/developer/src/server/src/version-data.ts deleted file mode 100644 index a082a65170..0000000000 --- a/developer/src/server/src/version-data.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - Version information from builder-basic.inc.sh: - - # KEYMAN_VERSION: Full current build version, e.g. "14.0.1" - # [KEYMAN_VERSION_WIN: Full current build version for Windows, e.g. "14.0.1.0"] - # KEYMAN_VERSION_RELEASE: Current release version, e.g. "14.0" - # KEYMAN_VERSION_MAJOR: Major version, e.g. "14" - # KEYMAN_VERSION_MINOR: Minor version, e.g. "0" - # KEYMAN_VERSION_PATCH: Patch version, e.g. "1" - # KEYMAN_TIER: Current tier, one of "alpha", "beta" or "stable" - # KEYMAN_VERSION_TAG: Tier + Pull Request + Location of build [-alpha|-beta][-test[-1234]][-local] - # KEYMAN_VERSION_WITH_TAG: e.g. "14.0.1-alpha-test-1234" or "14.0.5-beta-local" or "14.0.1-alpha-test" - # [KEYMAN_ROOT: fully resolved root path of Keyman repository] - # KEYMAN_VERSION_ENVIRONMENT: One of: local, test, alpha, beta, stable - # KEYMAN_VERSION_GIT_TAG: Git tag for the release, "release@$KEYMAN_VERSION_WITH_TAG", e.g. "release@14.0.1-alpha-test-1234" -*/ - -export interface Environment { - version: string; - versionRelease: string; - versionMajor: string; - versionMinor: string; - versionPatch: string; - tier: string; - versionTag: string; - versionWithTag: string; - versionEnvironment: string; - versionGitTag: string; - // Pull Request Data - pr: string; -} - -export function extractVersionData(version: string): Environment { - const versionData = /^(\d+)\.(\d+)\.(\d+)((?:-(alpha|beta))?(?:-(test|local))?(?:-(\d+))?)$/.exec(version); - if(!versionData) return null; - - return { - version: `${versionData[1]}.${versionData[2]}.${versionData[3]}`, - versionRelease: `${versionData[1]}.${versionData[2]}`, - versionMajor: versionData[1], - versionMinor: versionData[2], - versionPatch: versionData[3], - tier: versionData[5] || 'stable', - versionTag: versionData[4], - versionWithTag: version, - versionEnvironment: versionData[6] || versionData[5] || 'stable', - versionGitTag: 'release@'+version, - - pr: versionData[7] || '' - }; -}; - From 4c2ba9f8e08cb1193aa03ef0045b01a16d2fd7db Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 10:07:00 +0200 Subject: [PATCH 27/84] fix(developer): handle comment without trailing whitespace Fixes: #12070 Test-bot: skip --- developer/src/kmcmplib/src/Compiler.cpp | 2 +- developer/src/kmcmplib/tests/gtest-compiler.tests.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/developer/src/kmcmplib/src/Compiler.cpp b/developer/src/kmcmplib/src/Compiler.cpp index d9f3c5c9cb..e0f4b273ca 100644 --- a/developer/src/kmcmplib/src/Compiler.cpp +++ b/developer/src/kmcmplib/src/Compiler.cpp @@ -2079,7 +2079,7 @@ int LineTokenType(PKMX_WCHAR *str) switch (towupper(*p)) { case 'C': - if (iswspace(*(p + 1))) return T_COMMENT; + if (iswspace(*(p + 1)) || *(p + 1) == 0) return T_COMMENT; break; case 0: return T_BLANK; diff --git a/developer/src/kmcmplib/tests/gtest-compiler.tests.cpp b/developer/src/kmcmplib/tests/gtest-compiler.tests.cpp index 7e65bfdd55..3862eca44b 100644 --- a/developer/src/kmcmplib/tests/gtest-compiler.tests.cpp +++ b/developer/src/kmcmplib/tests/gtest-compiler.tests.cpp @@ -663,7 +663,7 @@ TEST_F(CompilerTest, LineTokenType_test) { // comment without following space ... potential bug, but ReadLine() currently ensures following space u16cpy(str, u"c"); p = str; - EXPECT_EQ(T_UNKNOWN, LineTokenType(&p)); + EXPECT_EQ(T_COMMENT, LineTokenType(&p)); EXPECT_EQ(0, p - str); // T_KEYTOKEY From efedd63fa4f4a89e063c316995214edb9afa6b79 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 10:25:10 +0200 Subject: [PATCH 28/84] chore(developer): remove version-data tests and add environment tests Server lacks tests at present. Removing version-data tests as no longer relevant meant that there were no tests! So, added environment tests which relate to changes in #16476. --- .../src/server/test/environment.tests.ts | 20 +++++++ .../src/server/test/version-data.tests.ts | 55 ------------------- 2 files changed, 20 insertions(+), 55 deletions(-) create mode 100644 developer/src/server/test/environment.tests.ts delete mode 100644 developer/src/server/test/version-data.tests.ts diff --git a/developer/src/server/test/environment.tests.ts b/developer/src/server/test/environment.tests.ts new file mode 100644 index 0000000000..352cdc3d32 --- /dev/null +++ b/developer/src/server/test/environment.tests.ts @@ -0,0 +1,20 @@ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import {assert} from 'chai'; +import 'mocha'; +import { serverBasePath, serverSitePath } from '../src/environment.js'; + +describe('serverBasePath', function() { + it('should find index.js in the base path', function() { + assert.isTrue(fs.existsSync(path.join(serverBasePath(), 'index.js'))); + }); +}); + +describe('serverSitePath', function() { + it('should find index.html in the base path', function() { + assert.isTrue(fs.existsSync(path.join(serverSitePath(), 'index.html'))); + }); +}); diff --git a/developer/src/server/test/version-data.tests.ts b/developer/src/server/test/version-data.tests.ts deleted file mode 100644 index 74762b7d7f..0000000000 --- a/developer/src/server/test/version-data.tests.ts +++ /dev/null @@ -1,55 +0,0 @@ -import {assert} from 'chai'; -import 'mocha'; -import { extractVersionData } from '../src/version-data.js'; - -describe('extractVersionData', function() { - it('should parse version strings', function() { - let v = extractVersionData('14.0.283'); - assert.equal(v.version, '14.0.283'); - assert.equal(v.versionRelease, '14.0'); - assert.equal(v.versionMajor, '14'); - assert.equal(v.versionMinor, '0'); - assert.equal(v.versionPatch, '283'); - assert.equal(v.tier, 'stable'); - assert.equal(v.versionTag, ''); - assert.equal(v.versionWithTag, '14.0.283'); - assert.equal(v.versionEnvironment, 'stable'); - assert.equal(v.pr, ''); - - v = extractVersionData('14.0.283-beta'); - assert.equal(v.version, '14.0.283'); - assert.equal(v.versionRelease, '14.0'); - assert.equal(v.versionMajor, '14'); - assert.equal(v.versionMinor, '0'); - assert.equal(v.versionPatch, '283'); - assert.equal(v.tier, 'beta'); - assert.equal(v.versionTag, '-beta'); - assert.equal(v.versionWithTag, '14.0.283-beta'); - assert.equal(v.versionEnvironment, 'beta'); - assert.equal(v.pr, ''); - - v = extractVersionData('14.0.283-alpha-local'); - assert.equal(v.version, '14.0.283'); - assert.equal(v.versionRelease, '14.0'); - assert.equal(v.versionMajor, '14'); - assert.equal(v.versionMinor, '0'); - assert.equal(v.versionPatch, '283'); - assert.equal(v.tier, 'alpha'); - assert.equal(v.versionTag, '-alpha-local'); - assert.equal(v.versionWithTag, '14.0.283-alpha-local'); - assert.equal(v.versionEnvironment, 'local'); - assert.equal(v.pr, ''); - - v = extractVersionData('14.0.283-alpha-test-1234'); - assert.equal(v.version, '14.0.283'); - assert.equal(v.versionRelease, '14.0'); - assert.equal(v.versionMajor, '14'); - assert.equal(v.versionMinor, '0'); - assert.equal(v.versionPatch, '283'); - assert.equal(v.tier, 'alpha'); - assert.equal(v.versionTag, '-alpha-test-1234'); - assert.equal(v.versionWithTag, '14.0.283-alpha-test-1234'); - assert.equal(v.versionEnvironment, 'test'); - assert.equal(v.pr, '1234'); - }); -}); \ No newline at end of file From 3d3a5ca1fb262eb7bcb024300f37fac5b94cb0c5 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 10:36:00 +0200 Subject: [PATCH 29/84] chore(developer): strip out defunct printing support Printing has not been supported from Keyman Developer for quite some time. This does not appear to have been raised as a user issue. Remove printing support, and cleanup user interface. As a side-effect, this will fix #11249, as Delphi's printer support will no longer poll for default printer on start. Fixes: #11249 --- .../delphi/components/KMDActionInterfaces.pas | 11 - developer/src/tike/actions/dmActionsMain.dfm | 7106 ++++++++--------- developer/src/tike/actions/dmActionsMain.pas | 37 - developer/src/tike/child/UfrmEditor.dfm | 1478 ++-- developer/src/tike/child/UfrmEditor.pas | 15 +- developer/src/tike/child/UfrmKeymanWizard.pas | 17 +- developer/src/tike/main/UframeTextEditor.dfm | 1134 ++- developer/src/tike/main/UframeTextEditor.pas | 16 - developer/src/tike/main/UfrmMain.dfm | 6313 ++++++++------- developer/src/tike/main/UfrmMain.pas | 6 - 10 files changed, 7985 insertions(+), 8148 deletions(-) diff --git a/developer/src/common/delphi/components/KMDActionInterfaces.pas b/developer/src/common/delphi/components/KMDActionInterfaces.pas index 6c58fca2dc..9de6a4b90c 100644 --- a/developer/src/common/delphi/components/KMDActionInterfaces.pas +++ b/developer/src/common/delphi/components/KMDActionInterfaces.pas @@ -45,17 +45,6 @@ type function CanClearSelection: Boolean; end; - IKMDPrintActions = interface - ['{C6F05AD6-42A3-404F-944C-904393A51837}'] - //function PageSetup: Boolean; - function PrintFile: Boolean; - end; - - IKMDPrintPreviewActions = interface(IKMDPrintActions) - ['{B5879BC4-7A0C-4E00-AAE3-E2D48489152A}'] - function PrintPreview: Boolean; - end; - IKMDViewExpandEditorActions = interface ['{680A172E-A221-4CDA-B68C-1E2AF8487510}'] procedure ExpandContractEditor; diff --git a/developer/src/tike/actions/dmActionsMain.dfm b/developer/src/tike/actions/dmActionsMain.dfm index 5321f76e79..6b6aa7a1c8 100644 --- a/developer/src/tike/actions/dmActionsMain.dfm +++ b/developer/src/tike/actions/dmActionsMain.dfm @@ -1,3568 +1,3538 @@ -object modActionsMain: TmodActionsMain - OldCreateOrder = False - OnCreate = DataModuleCreate - Height = 414 - Width = 557 - object actionsMain: TActionList - Images = frmKeymanDeveloper.lstImages - Left = 32 - Top = 28 - object actViewCharacterMap: TAction - Category = 'View' - Caption = '&Character Map' - Hint = 'Character Map|Display the character map window' - ShortCut = 24643 - OnExecute = actViewCharacterMapExecute - OnUpdate = actViewCharacterMapUpdate - end - object actFileNew: TAction - Category = 'File' - Caption = '&New...' - Hint = 'New|Creates a new file' - ImageIndex = 0 - ShortCut = 16462 - OnExecute = actFileNewExecute - OnUpdate = actFileNewUpdate - end - object actViewCharacterIdentifier: TAction - Category = 'View' - Caption = 'Character &Identifier' - Hint = 'Character Identifier|Display the character identifier window' - ShortCut = 24649 - OnExecute = actViewCharacterIdentifierExecute - OnUpdate = actViewCharacterIdentifierUpdate - end - object actFileOpen: TFileOpen - Category = 'File' - Caption = '&Open...' - Dialog.Options = [ofHideReadOnly, ofAllowMultiSelect, ofFileMustExist, ofEnableSizing] - Hint = 'Open|Opens an existing file' - ImageIndex = 1 - ShortCut = 16463 - OnAccept = actFileOpenAccept - OnUpdate = actFileOpenUpdate - end - object actFileSave: TAction - Category = 'File' - Caption = '&Save' - Hint = 'Save|Saves the active file' - ImageIndex = 2 - ShortCut = 16467 - OnExecute = actFileSaveExecute - OnUpdate = actFileSaveUpdate - end - object actFileSaveAs: TFileSaveAs - Category = 'File' - Caption = 'Save &As...' - Dialog.Title = 'Save As' - Dialog.OnCanClose = actFileSaveAsSaveDialogCanClose - Hint = 'Save As|Saves the active file with a new name' - BeforeExecute = actFileSaveAsBeforeExecute - OnAccept = actFileSaveAsAccept - OnUpdate = actFileSaveAsUpdate - end - object actFileSaveCopyAs: TAction - Category = 'File' - Caption = 'Save cop&y as...' - ImageIndex = 17 - OnExecute = actFileSaveCopyAsExecute - OnUpdate = actFileSaveCopyAsUpdate - end - object actFileRevert: TAction - Category = 'File' - Caption = '&Revert' - Hint = 'Revert|Reload last saved version of active file' - ImageIndex = 18 - OnExecute = actFileRevertExecute - OnUpdate = actFileRevertUpdate - end - object actFilePageSetup: TFilePageSetup - Category = 'File' - Caption = 'Page Set&up...' - Dialog.MinMarginLeft = 0 - Dialog.MinMarginTop = 0 - Dialog.MinMarginRight = 0 - Dialog.MinMarginBottom = 0 - Dialog.MarginLeft = 2500 - Dialog.MarginTop = 2500 - Dialog.MarginRight = 2500 - Dialog.MarginBottom = 2500 - Dialog.PageWidth = 21000 - Dialog.PageHeight = 29700 - OnUpdate = actFilePageSetupUpdate - end - object actFilePrint: TAction - Category = 'File' - Caption = '&Print...' - ImageIndex = 20 - ShortCut = 16464 - OnExecute = actFilePrintExecute - OnUpdate = actFilePrintUpdate - end - object actFilePrintPreview: TAction - Category = 'File' - Caption = 'Print Pre&view' - ImageIndex = 19 - OnExecute = actFilePrintPreviewExecute - OnUpdate = actFilePrintPreviewUpdate - end - object actFileExit: TFileExit - Category = 'File' - Caption = 'E&xit' - Hint = 'Exit|Quits the application' - end - object actEditUndo: TKMDEditUndo - Category = 'Edit' - Caption = '&Undo' - Hint = 'Undo|Reverts the last action' - ImageIndex = 7 - ShortCut = 16474 - end - object actEditRedo: TKMDEditRedo - Category = 'Edit' - Caption = '&Redo' - Enabled = False - Hint = 'Redo|Revert the last undo' - ImageIndex = 8 - ShortCut = 24666 - end - object actEditCut: TKMDEditCut - Category = 'Edit' - Caption = 'Cu&t' - Enabled = False - Hint = 'Cut|Cuts the selection and puts it on the Clipboard' - ImageIndex = 4 - ShortCut = 16472 - end - object actEditCopy: TKMDEditCopy - Category = 'Edit' - Caption = '&Copy' - Enabled = False - Hint = 'Copy|Copies the selection and puts it on the Clipboard' - ImageIndex = 5 - ShortCut = 16451 - end - object actEditPaste: TKMDEditPaste - Category = 'Edit' - Caption = '&Paste' - Enabled = False - Hint = 'Paste|Inserts Clipboard contents' - ImageIndex = 6 - ShortCut = 16470 - end - object actEditSelectAll: TKMDEditSelectAll - Category = 'Edit' - Caption = 'Select &All' - Hint = 'Select All|Selects the entire document' - ShortCut = 16449 - end - object actEditDelete: TKMDEditDelete - Category = 'Edit' - Caption = 'Clear selection' - Hint = 'Clear selection|Erases the selection' - ImageIndex = 21 - end - object actSearchFind: TKMDSearchFind - Category = 'Search' - Caption = '&Find...' - Hint = 'Find|Finds the specified text' - ImageIndex = 22 - ShortCut = 16454 - BeforeExecute = actSearchFindBeforeExecute - OnUpdate = actSearchFindUpdate - end - object actSearchFindNext: TKMDSearchFindNext - Category = 'Search' - Caption = 'Find &Next' - Hint = 'Find Next|Repeats the last find' - SearchFind = actSearchFind - ShortCut = 114 - end - object actSearchReplace: TKMDSearchReplace - Category = 'Search' - Caption = '&Replace' - Hint = 'Replace|Replaces specific text with different text' - ImageIndex = 23 - ShortCut = 16456 - end - object actHelpContents: THelpContents - Category = 'Help' - Caption = '&Contents' - Enabled = False - Hint = 'Help Contents' - ImageIndex = 12 - OnExecute = actHelpContentsExecute - end - object actHelpTopicSearch: THelpTopicSearch - Category = 'Help' - Caption = '&Topic Search' - Enabled = False - Hint = 'Topic Search' - end - object actHelpContextAction: THelpContextAction - Category = 'Help' - Caption = 'Context &Help...' - Enabled = False - end - object actViewMessages: TAction - Category = 'View' - Caption = '&Messages' - Hint = 'Messages|View the messages window' - ShortCut = 24653 - OnExecute = actViewMessagesExecute - OnUpdate = actViewMessagesUpdate - end - object actViewProject: TAction - Category = 'View' - Caption = '&Project' - Hint = 'Project|View the current project' - ShortCut = 24656 - OnExecute = actViewProjectExecute - OnUpdate = actViewProjectUpdate - end - object actViewToolbar: TAction - Category = 'View' - Caption = '&Toolbar' - Hint = 'Toolbar|Show or hide the toolbar' - OnExecute = actViewToolbarExecute - OnUpdate = actViewToolbarUpdate - end - object actViewStatusBar: TAction - Category = 'View' - Caption = '&Status Bar' - Hint = 'Status Bar|Show or hide the status bar' - OnExecute = actViewStatusBarExecute - OnUpdate = actViewStatusBarUpdate - end - object actProjectNew: TAction - Category = 'Project' - Caption = '&New Project...' - ImageIndex = 27 - OnExecute = actProjectNewExecute - end - object actProjectOpen: TFileOpen - Category = 'Project' - Caption = '&Open Project...' - Dialog.DefaultExt = 'kpj' - Dialog.Filter = 'Keyman Developer Project Files (*.kpj)|*.kpj|All Files (*.*)|*.*' - Dialog.Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] - Hint = 'Open Project|Opens an existing project' - ImageIndex = 28 - ShortCut = 24655 - OnAccept = actProjectOpenAccept - end - object actProjectAddCurrentEditorFile: TAction - Category = 'Project' - Caption = '&Current Editor File' - Hint = - 'Add Current Editor File|Adds the current editor file to the proj' + - 'ect' - OnExecute = actProjectAddCurrentEditorFileExecute - OnUpdate = actProjectAddCurrentEditorFileUpdate - end - object actProjectAddFiles: TFileOpen - Category = 'Project' - Caption = '&Other Files...' - Dialog.Options = [ofHideReadOnly, ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing] - Hint = 'Add Other Files|Adds files from disk to the project' - ImageIndex = 30 - ShortCut = 16463 - OnAccept = actProjectAddFilesAccept - OnUpdate = actProjectAddFilesUpdate - end - object actProjectSettings: TAction - Category = 'Project' - Caption = 'Pro&ject Settings...' - Hint = 'Project Settings|Edit settings for this project' - ImageIndex = 31 - OnExecute = actProjectSettingsExecute - OnUpdate = actProjectSettingsUpdate - end - object actToolsOptions: TAction - Category = 'Tools' - Caption = '&Options...' - ImageIndex = 33 - OnExecute = actToolsOptionsExecute - end - object actToolsVirtualKeyIdentifier: TAction - Category = 'Tools' - Caption = '&Virtual Key Identifier...' - ShortCut = 16459 - OnExecute = actToolsVirtualKeyIdentifierExecute - end - object actHelpAbout: TAction - Category = 'Help' - Caption = '&About...' - ImageIndex = 56 - OnExecute = actHelpAboutExecute - end - object actViewCodeFont: TFontEdit - Category = 'View' - Caption = 'Code F&ont...' - Dialog.OnShow = actViewCodeFontFontDialogShow - Dialog.Font.Charset = DEFAULT_CHARSET - Dialog.Font.Color = clWindowText - Dialog.Font.Height = -11 - Dialog.Font.Name = 'Tahoma' - Dialog.Font.Style = [] - Dialog.Options = [fdApplyButton] - Dialog.OnApply = actViewCodeFontFontDialogApply - Hint = 'Code Font|Set the font for the code editor' - ImageIndex = 26 - BeforeExecute = actViewCodeFontBeforeExecute - OnAccept = actViewCodeFontAccept - OnUpdate = actViewCodeFontUpdate - end - object actViewCharFont: TFontEdit - Category = 'View' - Caption = 'Character &Font...' - Dialog.OnShow = actViewCharFontFontDialogShow - Dialog.Font.Charset = DEFAULT_CHARSET - Dialog.Font.Color = clWindowText - Dialog.Font.Height = -11 - Dialog.Font.Name = 'Tahoma' - Dialog.Font.Style = [] - Dialog.Options = [fdApplyButton] - Dialog.OnApply = actViewCharFontFontDialogApply - Hint = - 'Character Font|Set the font for text in quotes and comments and ' + - 'keyboard views' - ImageIndex = 25 - ShortCut = 24646 - BeforeExecute = actViewCharFontBeforeExecute - OnAccept = actViewCharFontAccept - OnUpdate = actViewCharFontUpdate - end - object actViewExpandEditor: TAction - Category = 'View' - Caption = '&Expand Editor' - ImageIndex = 55 - ShortCut = 122 - OnExecute = actViewExpandEditorExecute - OnUpdate = actViewExpandEditorUpdate - end - object actViewHelp: TAction - Category = 'View' - Caption = 'Context &Help' - ShortCut = 24648 - OnExecute = actViewHelpExecute - OnUpdate = actViewHelpUpdate - end - object actWindowNext: TAction - Category = 'Window' - Caption = '&Next Window' - ShortCut = 16393 - OnExecute = actWindowNextExecute - OnUpdate = actWindowNextUpdate - end - object actWindowPrev: TAction - Category = 'Window' - Caption = '&Previous Window' - ShortCut = 24585 - OnExecute = actWindowPrevExecute - OnUpdate = actWindowPrevUpdate - end - object actWindowClose: TAction - Category = 'Window' - Caption = '&Close' - Hint = 'Close Tab|Closes the active tab' - ImageIndex = 14 - ShortCut = 16499 - OnExecute = actWindowCloseExecute - OnUpdate = actWindowCloseUpdate - end - object actToolsFileFormat: TAction - Category = 'Tools' - Caption = 'File &Format...' - Hint = 'File Format|Set the file format of the current editor file' - OnExecute = actToolsFileFormatExecute - OnUpdate = actToolsFileFormatUpdate - end - object actViewMessageNext: TAction - Category = 'View' - Caption = '&Next Message' - ShortCut = 115 - OnExecute = actViewMessageNextExecute - OnUpdate = actViewMessageNextUpdate - end - object actViewMessagePrevious: TAction - Category = 'View' - Caption = '&Previous Message' - ShortCut = 8307 - OnExecute = actViewMessagePreviousExecute - OnUpdate = actViewMessagePreviousUpdate - end - object actViewTabNext: TAction - Category = 'View' - Caption = '&Next Tab' - SecondaryShortCuts.Strings = ( - 'Alt+PgDn') - ShortCut = 16418 - OnExecute = actViewTabNextExecute - OnUpdate = actViewTabNextUpdate - end - object actViewTabPrevious: TAction - Category = 'View' - Caption = '&Previous Tab' - SecondaryShortCuts.Strings = ( - 'Alt+PgUp') - ShortCut = 16417 - OnExecute = actViewTabPreviousExecute - OnUpdate = actViewTabPreviousUpdate - end - object actHelpCheckForUpdates: TAction - Category = 'Help' - Caption = 'Check for &Updates...' - OnExecute = actHelpCheckForUpdatesExecute - end - object actToolsReloadANSI: TAction - Category = 'Tools' - Caption = 'Reload as ANSI' - OnExecute = actToolsReloadANSIExecute - OnUpdate = actToolsReloadANSIUpdate - end - object actToolsReloadUTF8: TAction - Category = 'Tools' - Caption = 'Reload as UTF-8' - OnExecute = actToolsReloadUTF8Execute - OnUpdate = actToolsReloadUTF8Update - end - object actToolsReloadUTF16: TAction - Category = 'Tools' - Caption = 'Reload as UTF-16' - OnExecute = actToolsReloadUTF16Execute - OnUpdate = actToolsReloadUTF16Update - end - object actToolsReload: TAction - Category = 'Tools' - Caption = 'Reload as format' - end - object actViewDesign: TAction - Category = 'View' - Caption = '&Design view' - ShortCut = 32805 - OnExecute = actViewDesignExecute - OnUpdate = actViewDesignUpdate - end - object actViewCode: TAction - Category = 'View' - Caption = '&Code view' - ShortCut = 32807 - OnExecute = actViewCodeExecute - OnUpdate = actViewCodeUpdate - end - object actProjectClose: TAction - Category = 'Project' - Caption = '&Close Project' - OnExecute = actProjectCloseExecute - OnUpdate = actProjectCloseUpdate - end - object actToolsWebCopyPublicUrl: TAction - Category = 'Tools' - Caption = '&Copy URL to clipboard' - OnExecute = actToolsWebCopyPublicUrlExecute - OnUpdate = actToolsWebCopyPublicUrlUpdate - end - object actToolsWebOpenPublicUrl: TAction - Category = 'Tools' - Caption = '&Open in browser' - OnExecute = actToolsWebOpenPublicUrlExecute - OnUpdate = actToolsWebOpenPublicUrlUpdate - end - object actToolsWebConfigure: TAction - Category = 'Tools' - Caption = 'Co&nfigure...' - OnExecute = actToolsWebConfigureExecute - end - object actToolsWebStartServer: TAction - Category = 'Tools' - Caption = '&Start server' - OnExecute = actToolsWebStartServerExecute - OnUpdate = actToolsWebStartServerUpdate - end - object actToolsWebStopServer: TAction - Category = 'Tools' - Caption = '&Stop server' - OnExecute = actToolsWebStopServerExecute - OnUpdate = actToolsWebStopServerUpdate - end - object actWindowNew: TAction - Category = 'Window' - Caption = '&New window' - OnExecute = actWindowNewExecute - end - end - object ActionManager1: TActionManager - ActionBars = < - item - end> - LinkedActionLists = < - item - ActionList = actionsMain - Caption = 'actionsMain' - end> - Left = 180 - Top = 164 - StyleName = 'XP Style' - end - object ilMain: TImageList - Left = 304 - Top = 236 - Bitmap = { - 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000003000000001002000000000000030 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 - C600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF00000000000000000000000000BDD6 - CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE - C60000000000000000000000000000000000000000000000000000000000BDCE - C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE - D600BDCEC6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF000000000000000000BDD6C600DEE7 - E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF - EF00C6D6CE000000000000000000000000000000000000000000BDCEC600E7EF - E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 - F700DEE7DE00BDD6C60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00188C180029942900399C - 3900399C3900399C3900FFFFFF00A5D6A5004AA54A004AA54A004AA54A0029A5 - 290018A51800009C0000007B0000FFFFFF0000000000BDD6C600DEE7E700FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700C6D6CE00000000000000000000000000BDCEC600E7EFE700FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF - F700EFF7F700DEE7DE00BDCEC600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 - 420042A5420042A54200FFFFFF00FFFFFF00A5D6A5004AA54A004AA54A0039A5 - 390021A5210008A50800087B0800FFFFFF00C6DED600D6DEDE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00EFF7EF00BDCEC60000000000BDD6CE00D6E7DE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00F7FFF700EFF7F700CEDED600BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00A5D6A5004AA54A0039A5 - 390021A5210010A5100008840800FFFFFF00BDD6CE00EFF7EF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00FFFFFF00D6DED600BDDECE00BDD6C600EFF7F700FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00F7FFF700DEEFE700BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00319C31004AA54A0052A5 - 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A50039A5 - 390021A5210018A5180010841000FFFFFF00C6DECE00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE00C6D6CE00FFFFFF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00429C420052A552004AA5 - 4A004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 - A500219C2100219C210018841800FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0042A5420052A5520052A5 - 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 - A500219C2100219C2100217B2100FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0052A552005AAD5A005AAD - 5A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A5003194 - 31002994290029942900217B2100FFFFFF00C6D6CE00FFFFFF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE00C6DECE00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052AD5200FFFFFF00FFFFFF00FFFFFF00A5D6A500399C39003194 - 31002994290029942900217B2100FFFFFF00BDD6C600EFF7F700FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00F7FFF700DEEFE700BDD6CE00BDD6CE00EFF7EF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00FFFFFF00D6DED600BDDECE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A00FFFFFF00FFFFFF00A5D6A500429C4200429C4200399C - 39003194310031943100217B2100FFFFFF00BDD6CE00D6E7DE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00F7FFF700EFF7F700CEDED600BDD6CE00C6DED600D6DEDE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00EFF7EF00BDCEC600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B56300FFFFFF00A5D6A5005AAD5A0052A552004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF0000000000BDCEC600E7EFE700FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF - F700EFF7F700DEE7DE00BDCEC6000000000000000000BDD6C600DEE7E700FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700C6D6CE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF000000000000000000BDCEC600E7EF - E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 - F700DEE7DE00BDD6C60000000000000000000000000000000000BDD6C600DEE7 - E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF - EF00C6D6CE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF00000000000000000000000000BDCE - C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE - D600BDCEC600000000000000000000000000000000000000000000000000BDD6 - CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE - C600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 - C600000000000000000000000000000000000000000000000000000000000000 - 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000BDBDBD000000840000007300100000006363630000000000000000000000 - 000000000000000000000000000000000000FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF00FFFFFF0052ADFF0018529400185A - 9C00185A9C00185A9C00185AA500185AA500185A9C00185A9C00185294001852 - 940018528C00184A84004AADFF00FFFFFF00FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF000000000000000000BDBDBD003131 - 31000000AD000000FF000000DE00000042005252520000000000000000000000 - 000000000000000000000000000000000000FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF00FFFFFF00185AA500186BBD001873 - CE001873CE001873CE001873CE001873CE001873CE001873CE001873CE00186B - C600186BBD00185AA500104A7B00FFFFFF00FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF000000000000000000737373000000 - 42000000FF000000FF000000840000319C002121210000000000000000000000 - 000000000000000000000000000000000000FFFFFF00188C180029942900399C - 3900399C3900399C390039A53900A5D6A500FFFFFF0021AD210018AD180010B5 - 100008AD0800009C0000007B0000FFFFFF00FFFFFF001863AD001873CE00187B - DE00187BDE00187BE7001884E700188CF700188CF700188CF700188CF700187B - DE00186BC6001863AD0018528C00FFFFFF00FFFFFF00188C180029942900399C - 3900399C3900399C390039A539004AA54A00A5D6A500FFFFFF004AA54A0031A5 - 310018A51800009C0000007B0000FFFFFF00000000008C8C8C00BDBDBD000000 - 4200000084000000EF000000FF000000CE000000310073737300000000000000 - 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 - 42004AA54A0042A5420042A54200FFFFFF00FFFFFF00FFFFFF0021B5210018B5 - 180010AD100008A50800087B0800FFFFFF00FFFFFF00186BC600187BDE001884 - EF00FFFFFF0084C6FF00188CF700188CF700188CF700188CF70084C6FF00FFFF - FF001873CE00186BBD0018529400FFFFFF00FFFFFF0021942100399C390042A5 - 420042A5420042A542004AA54A00A5D6A500FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210008A50800087B0800FFFFFF000000000000000000001000000000 - AD000000FF000000FF000000FF000000DE001010100000002100525252007373 - 730031009C0000313100A5A5A50000000000FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A0042A5420042AD4200FFFFFF00FFFFFF00FFFFFF0018B5 - 180010AD100010A5100008840800FFFFFF00FFFFFF001873CE001884E700188C - F700188CFF00FFFFFF0084C6FF00188CF700188CF70084C6FF00FFFFFF001884 - E7001873D600186BC600185A9C00FFFFFF00FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210010A5100008840800FFFFFF0000000000BDBDBD00100000000000 - 84000000FF000000CE000000EF0000008400000084000000FF000000BD000000 - 840000006300737373000021000063636300FFFFFF00319C31004AA54A0052A5 - 520052A552004AA54A004AA54A0042A5420039AD3900FFFFFF00FFFFFF00FFFF - FF0018AD180018A5180010841000FFFFFF00FFFFFF00187BDE00188CF700188C - FF00188CF700188CF700FFFFFF0084C6FF0084C6FF00FFFFFF00188CF7001884 - E7001873D6001873CE00185AA500FFFFFF00FFFFFF00319C31004AA54A0052A5 - 52004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210018A5180010841000FFFFFF000000000021212100000021000000 - AD000000FF0000004200000084000000FF000000FF0000007300000042000000 - 420073737300313163000000AD0000006300FFFFFF00429C420052A55200FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00219C210018841800FFFFFF00FFFFFF001884E700188CFF00188C - F700188CF700188CF700188CF700FFFFFF0084C6FF00188CF7001884EF00187B - DE001873CE001873CE001863AD00FFFFFF00FFFFFF00429C420052A552004AA5 - 4A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042A5420031A5 - 3100219C2100219C210018841800FFFFFF00000000008C8C8C0000009C000000 - FF000000EF00000073000000EF000000FF000000EF0000003100100000005252 - 52000000EF000000FF000000DE0031316300FFFFFF0042A542005AAD5A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00219C2100217B2100FFFFFF00FFFFFF001884EF00188CFF00188C - FF00188CF700188CF70084C6FF00FFFFFF00FFFFFF0084C6FF001884E7001873 - D6001873CE001873CE001863AD00FFFFFF00FFFFFF0042A5420052A5520052A5 - 5200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C3900299C - 2900219C2100219C2100217B2100FFFFFF000000000010000000000042000031 - CE000000FF0000009C000000FF000000FF000000EF00000073000000AD000000 - CE000000FF000000FF000000AD0021212100FFFFFF0052A5520063AD630063AD - 63005AAD5A0052A552004AA54A00429C4200399C3900FFFFFF00FFFFFF00FFFF - FF00299C290029942900217B2100FFFFFF00FFFFFF00188CFF002194FF002194 - FF00188CFF0084C6FF00FFFFFF001884F7001884EF00FFFFFF0084C6FF001873 - CE001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552005AAD5A005AAD - 5A0052A55200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C39003194 - 31002994290029942900217B2100FFFFFF00000000008C8C8C00000000000000 - AD000000FF000000EF0000007300000052000031CE000000AD000000EF000000 - EF000000BD0000006300BDBDBD0000000000FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052A552004AA54A00429C4200FFFFFF00FFFFFF00FFFFFF002994 - 29002994290029942900217B2100FFFFFF00FFFFFF00188CFF0039A5FF0039A5 - FF0084C6FF00FFFFFF00188CFF00188CFF001884EF001884E700FFFFFF0084C6 - FF001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052AD5200A5D6A500FFFFFF00FFFFFF00FFFFFF00399C39003194 - 31002994290029942900217B2100FFFFFF000000000000000000000000000000 - 52000000FF000000BD000031CE000000AD00000073003100CE00525252002121 - 21000000AD00000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A0052A55200FFFFFF00FFFFFF00FFFFFF00319C3100319C - 31003194310031943100217B2100FFFFFF00FFFFFF002194FF0052ADFF004AAD - FF00FFFFFF002194FF002194FF001894FF00188CF7001884EF001884E700FFFF - FF001873CE001873CE001863AD00FFFFFF00FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A005AAD5A00A5D6A500FFFFFF00FFFFFF00429C4200399C - 39003194310031943100217B2100FFFFFF0000000000A5A5A500000000000000 - 52000000AD0000005200000073000031FF000000730000005200212121000000 - 100000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B5630063AD6300B5DEB500FFFFFF004AA54A004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF00FFFFFF0039A5FF006BBDFF0052AD - FF0039A5FF00319CFF00299CFF00299CFF002194FF00188CFF001884F7001884 - EF00187BDE001873CE001863AD00FFFFFF00FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B5630063AD630063AD6300A5D6A500FFFFFF004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF000000000000000000000000003131 - 3100000042000000CE000000AD000000DE00000063000000420000004200BDBD - BD0000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF00FFFFFF004AADFF0084C6FF006BBD - FF0052ADFF004AADFF0039A5FF00319CFF00299CFF002194FF001894FF00188C - F7001884EF001873CE00185A9C00FFFFFF00FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF000000000000000000000000000000 - 00008C8C8C002121210000004200313131008C8C8C00BDC6C600000000000000 - 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF00FFFFFF00ADDEFF004AADFF00319C - FF002194FF00188CFF00188CFF00188CF700188CF7001884EF001884E700187B - DE001873CE00186BBD0063B5FF00FFFFFF00FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0000000000424D3E000000000000003E000000 - 2800000040000000300000000100010000000000800100000000000000000000 - 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000 - FFFFFFFF00000000F00FF03F00000000F7EFF7BF00000000F7EFF7BF00000000 - F7EFF78F00000000F7EFF02F00000000F7EFF02F00000000F00FFDEF00000000 - F00FFC0F00000000FFFFFC0F00000000FFFFFFFF00000000FFFFFFFF00000000 - FFFFFFFF00000000FFFFFFFF000000008001F01FF00FFFFF0000E00FE007FFFF - 0000C007C003FFFF000080038001FFFF000000010000F81F000000000000F81F - 000000000000FFFF000000000000FFFF000000000000FFFF000000000000FFFF - 000000000000FFFF000000000001FFFF000080018003FFFF0000C003C007FFFF - 0000E007E00FFFFF8001F00FF01FFFFFFFFF800180018001F07F000000000000 - C07F000000000000C07F000000000000003F0000000000008001000000000000 - 0000000000000000800000000000000000000000000000008000000000000000 - 00010000000000008007000000000000800F000000000000E00F000000000000 - F03F000000000000FFFF80018001800100000000000000000000000000000000 - 000000000000} - end - object ilEditorPages: TImageList - Height = 32 - Width = 32 - Left = 124 - Top = 116 - Bitmap = { - 494C010112004801040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 000000000000360000002800000080000000A000000001002000000000000040 - 0100000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF000000000000000000000000000000000000000000000000000000 - 000000000000A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 000000000000000000000000000000000000186BBE003783CC003783CC003783 - CC003783CC003783CC003783CC001267BC003783CC003783CC003783CC003783 - CC003783CC003783CC003783CC003783CC003783CC003783CC003783CC003783 - CC003783CC003783CC003783CC003783CC002071C2003581CB003783CC003783 - CC003783CC003783CC003783CC001267BC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00000000000000000000000000000000000000000000000000000000000000 - 0000A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 000000000000000000000000000000000000156ABD00317EC900317EC900317E - C900317EC900317EC900317EC9001066BB00317EC900317EC900317EC900317E - C900317EC900317EC900317EC900317EC900317EC900317EC900317EC900317E - C900317EC900317EC900317EC900317EC9001C6FC000307DC800317EC900317E - C900317EC900317EC900317EC9001066BB000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000003682CB007DB6EA007DB6EA007DB6 - EA007DB6EA007DB6EA007DB6EA002878C5007DB6EA007DB6EA007DB6EA007DB6 - EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6 - EA007DB6EA007DB6EA007DB6EA007DB6EA00488FD30079B3E8007DB6EA007DB6 - EA007DB6EA007DB6EA007DB6EA002878C5000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000003E88CF0091C5F20091C5F20091C5 - F20091C5F20091C5F20091C5F2002F7CC80091C5F20091C5F20091C5F20091C5 - F20091C5F20091C5F20091C5F20091C5F20091C5F20091C5F20091C5F20091C5 - F20091C5F20091C5F20091C5F20091C5F2005397D8008CC1F00091C5F20091C5 - F20091C5F20091C5F20091C5F2002F7CC8000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE0000000000A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA - FF00A8CAFF00A8CAFF00A8CAFF0000000000CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D6003883CC0082BAEC0082BAEC0082BA - EC0082BAEC0082BAEC0082BAEC002A79C60082BAEC0082BAEC0082BAEC0082BA - EC0082BAEC0082BAEC0082BAEC0082BAEC0082BAEC0082BAEC0082BAEC0082BA - EC0082BAEC0082BAEC0082BAEC0082BAEC004A91D4007EB7EA0082BAEC0082BA - EC0082BAEC0082BAEC0082BAEC002A79C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000007394DE000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C60000000000A8CAFF00A8CA - FF00A8CAFF000000000000000000000000000000000000000000000000000000 - 0000A8CAFF00A8CAFF00A8CAFF00000000000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6007394DE003D87CE008DC2F1008DC2F1008DC2 - F1008DC2F1008DC2F1008DC2F1002D7CC7008DC2F1008DC2F1008DC2F1008DC2 - F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2 - F1008DC2F1008DC2F1008DC2F1008DC2F1005196D70088BFEE008DC2F1008DC2 - F1008DC2F1008DC2F1008DC2F1002D7CC7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF0000000000A8CAFF00A8CA - FF00000000007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C10000000000A8CAFF00A8CAFF0000000000FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF0000000000A8CAFF000000 - 00007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC10000000000A8CAFF0000000000FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A50000000000A8CAFF000000 - 00007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC10000000000A8CAFF0000000000A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF0000000000A8CAFF000000 - 00007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC10000000000A8CAFF0000000000A5A5A500FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C600166ABD003380CA003380CA003380 - CA003380CA003380CA003380CA001066BB003380CA003380CA003380CA003380 - CA003380CA003380CA003380CA003380CA003380CA003380CA003380CA003380 - CA003380CA003380CA003380CA003380CA001D6FC000317EC9003380CA003380 - CA003380CA003380CA003380CA001066BB000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A6A2A600000000007F9A - C1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC1007F9AC10000000000FFF0FF00A5A5A500FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A79FA7000E0E0E007F9A - C1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC1007F9AC10000000000AD94AD00A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFF2FF00101010007F9A - C1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC1007F9AC1003A3A3A00A5A3A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFEEFF000A0A - 0A007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A - C1007F9AC10000000000FFF8FF00A8A8A800FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C600166ABE003480CA003480CA003480 - CA003480CA003480CA003480CA001166BB003480CA003480CA003480CA003480 - CA003480CA003480CA003480CA003480CA003480CA003480CA003480CA003480 - CA003480CA003480CA003480CA003480CA001E70C100327FCA003480CA003480 - CA003480CA003480CA003480CA001166BB000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500ACAC - AC001D1D1D00000000007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1000000 - 000000000000AD94AD00ADADAD00A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00AEAEAE001F1F1F0000000000000000000000000000000000AC96 - AC00FFF8FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5000042C600478ED300A6D4FB00A6D4FB00A6D4 - FB00A6D4FB00A6D4FB00A6D4FB003581CB00A6D4FB00A6D4FB00A6D4FB00A6D4 - FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4 - FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB005FA0DD00A0D0F900A6D4FB00A6D4 - FB00A6D4FB00A6D4FB00A6D4FB003581CB000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00FFFFFF000042C6002D7BC70068A7E10068A7E10068A7 - E10068A7E10068A7E10068A7E1002273C20068A7E10068A7E10068A7E10068A7 - E10068A7E10068A7E10068A7E10068A7E10068A7E10068A7E10068A7E10068A7 - E10068A7E10068A7E10068A7E10068A7E1003C86CE0065A4DF0068A7E10068A7 - E10068A7E10068A7E10068A7E1002273C2000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000007394DE000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6007394DE004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB - FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000002072C2004A91D4004A91D4004A91 - D4004A91D4004A91D4004A91D400186CBE004A91D4004A91D4004A91D4004A91 - D4004A91D4004A91D4004A91D4004A91D4004A91D4004A91D4004A91D4004A91 - D4004A91D4004A91D4004A91D4004A91D4002B79C600488FD3004A91D4004A91 - D4004A91D4004A91D4004A91D400186CBE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000004242420042424200424242004242 - 4200424242004242420063636300848484004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600ADADAD00D6D6D600CECECE00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600ADADAD00D6D6D600CECECE00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000D6D6 - D600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600A5A5A500D6D6D600C6C6C600C6C6C600C6C6C6008484 - 8400848484008484840084848400848484008484840084848400C6C6C600C6C6 - C600C6C6C600C6C6C6008484840084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000D6D6D600D6D6 - D600848484006363630063636300424242004242420063636300636363008484 - 8400D6D6D600D6D6D60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600BDBDBD00B5B5B500B5B5 - B500B5B5B500B5B5B5009C9C9C00C6C6C600BDBDBD00B5B5B500B5B5B5008484 - 8400B5B5B500B5B5B500B5B5B500B5B5B500B5B5B50084848400B5B5B500B5B5 - B500B5B5B50084848400C6C6BD00BDBDBD008484840084848400C6C6C600CECE - CE00CECECE00CECECE0084848400848484000000000000000000000000000000 - 0000FFFFFF00FFFFFF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00F7F7F700FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000D6D6D600636363006363 - 6300A5A5A500C6C6C600D6D6D600D6D6D600D6D6D600D6D6D600C6C6C600A5A5 - A5006363630063636300D6D6D600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000315AC6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C600315AC600E7E7E700C6C6C600C6C6C60084848400CECE - CE00CECECE00CECECE00CECECE0084848400FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00EFEFEF00DEDEDE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600E7E7E700F7F7F700FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000D6D6D600CECECE0063636300C6C6C600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600C6C6C60063636300CECECE00D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600B5B5B500F7F7F700C6C6C60084848400CECE - CE00CECECE00CECECE00CECECE00CECECE00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00E7E7E700DEDEDE0000000000000000000000000000000000000000000000 - 0000D6D6D600E7E7E700F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000C6C6C60042424200C6C6C600DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00637BD600DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00C6C6C60042424200C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E700F7F7F70084848400C6C6C600D6D6 - D600D6D6D600D6D6D60084848400D6D6D600DEDEDE00D6D6D600D6D6D600D6D6 - D600CECECE00CECECE00000000000031A5000031A5000031A5000031A5000031 - A50000000000D6D6D600E7E7E700E7E7E700EFEFEF00EFEFEF00F7F7F700FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600637BD600E7E7E700E7E7 - E700E7E7E700DEDEDE00DEDEDE00C6C6C60063636300D6D6D600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 - 42004242420042424200424242004242420042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E700C6C6C60084848400D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600848484000000000000000000000000000000 - 00000000000000000000000000000031A5000031A5000031A5000031A5000031 - A5000031A50000000000CECECE00CECECE00D6D6D600D6D6D600E7E7E700E7E7 - E700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00F7F7F700FFFFFF00FFFF - FF00000000000000000000000000000000000000000000000000000000000000 - 000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00DEDEDE00E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600315AC600637BD600E7E7 - E700E7E7E700DEDEDE00DEDEDE00DEDEDE00C6C6C60063636300D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C6009C9C9C00A5A5A500C6C6C600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D60000000000E7E7E700D6D6D600C6C6 - C600B5B5B500A5A5A500000000000042C6000042C6000042C6000042C6000042 - C6000042C6000031A50000000000000000000000000000000000CECECE00CECE - CE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600E7E7E700EFEFEF00F7F7 - F700FFFFFF000000000000000000000000000000000000000000000000000000 - 000000000000D6D6D60063636300DEDEDE00DEDEDE00DEDEDE00637BD600315A - C600315AC600315AC600315AC600315AC600315AC6000042C600315AC600637B - D600E7E7E700DEDEDE00DEDEDE00DEDEDE00DEDEDE0063636300D6D6D6000000 - 000000000000000000000000000000000000000000000000000000000000CECE - CE0000000000000000000000000000000000000000000000000000000000CECE - CE000000000000000000000000000000000000000000CECECE00000000000000 - 00000000000000000000000000000000000000000000CECECE00000000000000 - 00000000000000000000CECECE00000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600C6C6C600D6D6D600DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 - 00000000000000000000000000000031A5000031A5000031A5000031A5000031 - A5000031A5000031A5000031A5000031A5000031A50000000000000000000000 - 00000000000000000000000000000000000000000000CECECE00D6D6D600E7E7 - E700F7F7F700FFFFFF0000000000000000000000000000000000000000000000 - 00000000000084848400A5A5A500E7E7E700E7E7E700E7E7E700315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C600315A - C600637BD600E7E7E700E7E7E700E7E7E700E7E7E700A5A5A500848484000000 - 00000000000000000000000000000000000000000000000000000042C600CECE - CE000000000000000000000000000000000000000000000000000042C600CECE - CE00000000000000000000000000000000000042C600CECECE00000000000000 - 0000000000000000000000000000B1C3ED000042C600B1C3ED00CECECE000000 - 0000000000000042C600CECECE00000000000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C600C6C6C600D6D6D600DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 - 00000000000000000000000000000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C60000000000E7E7E700DEDE - DE00DEDEDE00CECECE00CECECE00CECECE00C6C6C6000000000000000000D6D6 - D600E7E7E700F7F7F700FFFFFF00000000000000000000000000000000000000 - 00000000000063636300C6C6C600E7E7E700E7E7E700E7E7E700315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C600315AC600637BD600E7E7E700E7E7E700E7E7E700C6C6C600636363000000 - 00000000000000000000000000000000000000000000000000004576DB00B1C3 - ED00CECECE0000000000000000000000000000000000B1C3ED004576DB000000 - 00000000000000000000CECECE00CECECE000042C600CECECE00000000000000 - 0000CECECE0000000000000000000042C600CECECE000042C600000000000000 - 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C6004A4A4A004242420042424200424242004242 - 42004242420042424200424242004242420000000000D6D6D600D6D6D600CECE - CE00CECECE00CECECE00000000000031A5000031A5000031A5000031A5000042 - C6000042C600315AC600315AC600315AC600315AC60000000000FFFFFF00FFFF - FF00FFFFFF00F7F7F700F7F7F700EFEFEF00E7E7E700DEDEDE00CECECE000000 - 0000D6D6D600E7E7E700F7F7F700FFFFFF000000000000000000000000000000 - 00000000000063636300E7E7E700E7E7E700E7E7E700E7E7E700315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C600315AC600637BD600E7E7E700E7E7E700E7E7E700636363000000 - 0000000000000000000000000000000000000000000000000000B1C3ED000042 - C600CECECE00CECECE00CECECE00CECECE00CECECE000042C600B1C3ED000000 - 0000B1C3ED004576DB004576DB00B1C3ED000042C600CECECE00000000004576 - DB00CECECE0000000000000000000042C6000042C600B1C3ED00000000000000 - 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000315AC600315AC600315AC600315AC600315A - C6007394DE00EFEFEF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 - 00000000000000000000000000005A5A5A00FFFFFF00FFFFFF00EFEFEF00DEDE - DE0000000000D6D6D600E7E7E700F7F7F7000000000000000000000000000000 - 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C600315AC600637BD600EFEFEF00EFEFEF00424242000000 - 0000000000000000000000000000000000000000000000000000000000004576 - DB000042C6000042C6000042C6000042C6000042C6004576DB00000000000000 - 00004576DB00CECECE007394DE004576DB000042C600CECECE00B1C3ED004576 - DB000000000000000000000000000042C600CECECE0000000000000000000000 - 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 00000000000000000000000000000000000000000000E7E7E700D6D6D600C6C6 - C600B5B5B500A5A5A50000000000EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00EFEFEF007394DE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000DEDEDE00000000005A5A5A00FFFFFF00F7F7 - F700E7E7E70000000000D6D6D600EFEFEF000000000000000000000000000000 - 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C600315AC600637BD600EFEFEF00EFEFEF00424242000000 - 000000000000000000000000000000000000000000000000000000000000B1C3 - ED000042C600CECECE0000000000000000000042C600B1C3ED00000000000000 - 00000042C600CECECE0000000000000000000042C6000042C6004576DB00B1C3 - ED000000000000000000000000004576DB007394DE00CECECE00000000000000 - 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000007394DE007394DE007394DE007394DE007394 - DE00315AC6000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000DEDEDE005A5A5A00FFFF - FF00FFFFFF00EFEFEF0000000000E7E7E7000000000000000000000000000000 - 00000000000063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C600315AC600637BD600EFEFEF00EFEFEF00EFEFEF00636363000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00004576DB00B1C3ED0000000000B1C3ED004576DB0000000000000000000000 - 00004576DB00000000007394DE004576DB000042C600CECECE00000000000000 - 0000000000000000000000000000000000000042C6007394DE00000000000000 - 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000315AC600315AC600315AC600315AC600315A - C600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000DEDEDE000000 - 0000FFFFFF00FFFFFF0000000000D6D6D6000000000000000000000000000000 - 00000000000063636300C6C6C600EFEFEF00EFEFEF00EFEFEF00315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C600315AC600637BD600EFEFEF00EFEFEF00EFEFEF00C6C6C600636363000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000B1C3ED000042C600CECECE000042C600B1C3ED0000000000000000000000 - 0000B1C3ED004576DB004576DB00B1C3ED000042C600CECECE00000000000000 - 00000000000000000000000000000042C600B1C3ED00CECECE00000000000000 - 0000000000004576DB0000000000000000000042C600FFFFFF00FFFFFF004242 - 420042424200424242004242420042424200FFFFFF0042424200424242004242 - 4200424242004242420042424200FFFFFF004242420042424200424242004242 - 4200FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000005A5A - 5A00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 00000000000084848400A5A5A500F7F7F700F7F7F700F7F7F700315AC6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C600315A - C600637BD600F7F7F700F7F7F700F7F7F700F7F7F700A5A5A500848484000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000004576DB00000000004576DB000000000000000000000000000000 - 0000CECECE00CECECE00CECECE00CECECE000042C600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00B1C3ED000042C60000000000CECECE00CECE - CE004576DB00B1C3ED0000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000DEDE - DE0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 - 000000000000D6D6D60063636300F7F7F700F7F7F700F7F7F700637BD600315A - C600315AC600315AC600315AC600315AC600315AC6000042C600315AC600637B - D600E7E7E700F7F7F700F7F7F700F7F7F700F7F7F70063636300D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000B1C3ED000042C600B1C3ED000000000000000000000000000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000000000000000000B1C3ED004576DB000042C6004576 - DB00B1C3ED000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00005A5A5A00FFFFFF00FFFFFF00525252000000000000000000000000000000 - 0000000000000000000063636300D6D6D600F7F7F700F7F7F700F7F7F700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600315AC600637BD600E7E7 - E700E7E7E700F7F7F700F7F7F700F7F7F700D6D6D60063636300000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 - 420042424200424242004242420042424200424242004242420042424200FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000084848400FFFFFF00FFFFFF00848484000000000000000000000000000000 - 000000000000000000000000000063636300D6D6D600FFFFFF00FFFFFF00E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600637BD600E7E7E700E7E7 - E700E7E7E700FFFFFF00FFFFFF00D6D6D6006363630000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000A5A5A500F7F7F700F7F7F700A5A5A5000000000000000000000000000000 - 00000000000000000000000000000000000042424200D6D6D600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00637BD600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00D6D6D600424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000C6C6C600F7F7F700F7F7F700BDBDBD000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C60063636300D6D6D600FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00D6D6D60063636300C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 - 42004242420042424200424242004242420042424200FFFFFF00424242004242 - 4200424242004242420042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000DEDEDE00FFFFFF00FFFFFF00DEDEDE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000636363006363 - 6300A5A5A500C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600A5A5 - A500636363006363630000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000D6D6 - D600848484006363630063636300424242004242420063636300636363008484 - 8400D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 - 4200424242004242420042424200424242004242420042424200FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000315AC6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C600315AC600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000D6D6 - D600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00D6D6D60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BDBDBD00B5B5B500C6C6 - C600D6D6D600DEDEDE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000637BD600315AC6000042C6000042 - C600315AC600637BD6008494C6008494C600ADADAD00BDBDBD00CECECE00D6D6 - D600DEDEDE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002963 - CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000315AC600EFDED600F7F7E700F7F7E700F7F7 - E700D6D6CE00CECEC600A5A59C00637BD600315AC6000042C6000042C600315A - C600637BD6008494C6009C9C9C00ADADAD00BDBDBD00D6D6D600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002963 - CE00FFFFFF00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C60084848400ADADAD00D6D6D600EFEFEF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFDED600F7F7E700F7F7E700F7F7 - E700F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00CECE - C600C6C6BD00637BD600315AC6000042C6000042C6008494C600DEDEDE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002963 - CE00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C60063636300636363007373730094949400B5B5B500D6D6 - D600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFDED600F7F7E7007B7B73006B6B - 63007B7B73007B7B73006B6B6B00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7F7 - F700F7FFF700FFFFF700FFFFF700FFFFF700FFFFF700315AC600D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002963 - CE00FFFFFF00FFFFFF000042C6000042C600FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C6006B6B6B006363630063636300636363006B6B6B007B7B - 7B0094949400C6C6C600EFEFEF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7D600F7F7E700F7F7E700F7F7 - EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7FF - F700FFFFF700FFFFF700FFFFF700FFFFF700FFFFFF000042C600D6D6D6000000 - 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002963 - CE00FFFFFF00FFFFFF000042C6000042C6000042C600FFFFFF000042C600FFFF - FF00FFFFFF000042C600CECECE00ADADAD00848484006B6B6B00636363006363 - 63006363630063636300737373009C9C9C00C6C6C600EFEFEF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7D600F7F7E7007B7B73007B7B - 73007B7B73006B6B6B009C9C9400F7F7EF00F7F7EF00F7F7F700F7FFF700F7FF - F700FFFFF700FFFFF700FFFFF700FFFFFF00FFFFFF000042C600D6D6D6000000 - 0000000000000000000000000000000000004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 420042424200424242004242420042424200D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000000000002963 - CE00FFFFFF00FFFFFF00FFFFFF000042C6000042C6000042C6000042C600FFFF - FF00FFFFFF000042C600E7E7E700E7E7E700D6D6D600BDBDBD009C9C9C008484 - 84006B6B6B006363630063636300636363006B6B6B0084848400ADADAD00DEDE - DE00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7D600F7F7EF00F7F7EF00F7F7 - EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7FFF700F7FFF700FFFF - F700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00D6D6D600D6D6D600424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242000000000000000000000000002963 - CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C6000042C6000042C600FFFF - FF00FFFFFF000042C600E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE00CECE - CE00B5B5B500949494007B7B7B00636363006363630063636300636363008484 - 8400DEDEDE000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 - EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7F7F700F7FFF700FFFFF700FFFF - F700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400424242004242420042424200424242004242420042424200424242008484 - 8400CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6 - D600D6D6D600D6D6D600D6D6D60042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000002963 - CE00FFFFFF00FFFFFF00FFFFFF000042C6000042C6000042C6000042C600FFFF - FF00FFFFFF000042C600F7F7F700EFEFEF00E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700DEDEDE00C6C6C6009C9C9C006B6B6B0063636300636363006363 - 6300ADADAD000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 - EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7FFF700FFFFF700FFFFF700FFFF - F700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200DEDEDE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600C6C6C6004242 - 4200CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D60042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000002963 - CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C600FFFFFF00FFFFFF00EFEFEF00E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700DEDEDE009494940063636300636363006363 - 6300949494000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00E7E7DE00B5BDB500D6D6 - CE00F7F7EF00F7F7EF00F7F7F700F7FFF700F7FFF700FFFFF700FFFFF700FFFF - F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600CECECE004242 - 4200DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE004242 - 4200CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600424242008484840084848400848484008484 - 84008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600849CCE001852 - D6004A73D6009CADD600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000002963 - CE002963CE002963CE002963CE002963CE002963CE002963CE002963CE002963 - CE002963CE000042C600FFFFFF00FFFFFF00FFFFFF00F7F7F700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700B5B5B50063636300636363006363 - 6300BDBDBD000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00E7E7DE00B5BDB5008C8C - 84007B7B7B006B6B6B007B7B7B007B7B7B006B6B6B007B7B7B009C9C9C00BDBD - BD00BDBDBD00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600CECECE00CECECE00CECECE008484 - 8400424242004242420042424200424242004242420042424200424242008484 - 8400CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D60042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C6001852E700294A - C6004263CE001039D6002152E7006B8CDE00ADBDD600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 000000000000BDBDBD008C8C8C0094949400D6D6D600F7F7F700CECECE00F7F7 - F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700ADADAD0063636300636363007373 - 7300DEDEDE000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 - EF00F7F7F700F7F7F700F7FFF700FFFFF700FFFFF700FFFFF700CECECE00BDBD - BD00ADADAD0084847B00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600424242008484840084848400CECECE00CECE - CE00CECECE0084848400CECECE00CECECE00CECECE009CB5D6001842D600E7EF - CE00FFF7CE00E7E7CE0094A5CE003152CE001042DE004273E7009CADCE00CECE - CE00CECECE00CECECE0042424200424242004242420042424200CECECE00CECE - CE00CECECE00CECECE00CECECE00424242000000000000000000000000000000 - 0000E7E7E700A5A5A5008C8C8C009C9C9C00EFEFEF00D6D6D6009C9C9C00EFEF - EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEF - EF00E7E7E700E7E7E700E7E7E700DEDEDE008C8C8C0063636300636363009494 - 9400000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7EF007B7B7B006B6B - 6B007B7B7B007B7B7B006B6B6B007B7B7B008C8C8C00BDBDBD00BDBDBD00EFEF - EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D60042424200CECECE00CECECE0084848400CECE - CE00CECECE0084848400CECECE00CECECE00CECECE00849CE7007394E700FFFF - FF00FFFFF700FFF7DE00FFEFCE00FFF7CE00BDC6CE000839C600316BDE00CECE - CE00CECECE00CECECE0042424200CECECE00CECECE00CECECE00CECECE004242 - 4200CECECE00CECECE0042424200CECECE000000000000000000000000000000 - 0000CECECE00949494008C8C8C00BDBDBD00F7F7F700B5B5B500ADADAD00F7F7 - F700FFFFFF00E7E7E700ADADAD00ADADAD00FFFFFF00FFFFFF00FFFFFF00F7F7 - F700E7E7E700E7E7E700E7E7E700CECECE0073737300636363006B6B6B00BDBD - BD00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 - F700F7FFF700F7FFF700FFFFF700FFFFF700DEDEDE00BDBDBD00BDBDBD008484 - 7B008484840073737300DEDEDE00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C600D6D6D600D6D6D600D6D6D60042424200CECECE00CECECE00CECECE008484 - 8400CECECE0084848400CECECE00CECECE00CECECE00527BEF00BDCEF700DEDE - F700FFFFFF00FFFFFF00FFF7E700FFEFCE00FFF7CE00294AC6004A7BD600CECE - CE00CECECE00CECECE00CECECE0042424200CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE000000000000000000000000000000 - 0000B5B5B5008C8C8C008C8C8C00DEDEDE00EFEFEF0094949400ADADAD00EFEF - EF00CECECE009C9C9C00A5A5A500DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00EFEFEF00E7E7E700E7E7E700A5A5A500636363006363630084848400DEDE - DE00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7EF009C9C94007B7B - 7B006B6B6B007B7B7B007B7B7B00ADADAD00BDBDBD00BDBDBD00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200C6C6C600CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600DEDEDE00424242008484840084848400CECECE008484 - 8400CECECE0084848400CECECE00CECECE00B5C6DE004A73E700B5BDEF00BDC6 - EF00ADB5E700C6CEEF00FFFFFF00FFEFCE00D6DECE000031CE009CB5DE00CECE - CE00CECECE00CECECE00CECECE00CECECE0042424200CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE0042424200000000000000000000000000E7E7 - E7009C9C9C008C8C8C00A5A5A500F7F7F700D6D6D6008C8C8C008C8C8C00ADAD - AD009C9C9C00BDBDBD00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00EFEFEF00E7E7E700D6D6D6008C8C8C006363630063636300A5A5A5000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7F700F7F7F700F7FF - F700FFFFF700FFFFF700FFFFF700BDBDBD00BDBDBD00ADADAD0084847B008484 - 8400737373009C9C9C00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600DEDEDE00DEDEDE004242420084848400D6D6D600D6D6D6008484 - 8400D6D6D60084848400D6D6D600D6D6D6007B94E700849CE700848CDE005273 - D600B5BDEF00FFFFFF00FFFFFF00FFF7DE007B8CC6001852E700CECED600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D60042424200D6D6D6004242 - 4200D6D6D600D6D6D600D6D6D600D6D6D600000000000000000000000000CECE - CE008C8C8C008C8C8C00C6C6C600F7F7F700B5B5B500ADADAD00ADADAD008C8C - 8C00DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700E7E7E700BDBDBD00737373006363630073737300C6C6C6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7F7F700F7FFF700FFFF - F700FFFFF700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200CECECE00CECECE00CECE - CE000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C600DEDEDE00DEDEDE00DEDEDE0042424200D6D6D600D6D6D60084848400D6D6 - D600D6D6D60084848400D6D6D600D6D6D6006B8CEF00B5C6F70094A5E7008CA5 - E700EFF7FF00FFFFFF00FFFFFF00F7FFE700294AC600638CDE00D6D6D600D6D6 - D600D6D6D600D6D6D60042424200D6D6D600D6D6D60042424200D6D6D600D6D6 - D600D6D6D600D6D6D60042424200D6D6D600000000000000000000000000ADAD - AD008C8C8C0094949400D6D6D600EFEFEF009C9C9C00CECECE00DEDEDE008C8C - 8C00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700E7E7E7009C9C9C00636363006363630084848400E7E7E7000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7FFF700F7FFF700FFFF - F700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00424242008484840084848400D6D6D600D6D6 - D600D6D6D60084848400D6D6D600D6D6D600B5BDDE0094ADF700D6E7FF00D6DE - F700D6DEF700FFFFFF00FFFFFF00CECEE7000031D600A5BDDE00D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D6004242420042424200D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D60042424200000000000000000000000000BDBD - BD008C8C8C0094949400CECECE00E7E7E700BDBDBD00EFEFEF00FFFFFF00ADAD - AD00B5B5B500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700CECECE00848484006363630063636300ADADAD00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00F7FFF700BDBDB500BDBD - B500CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE0042424200D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D60084848400D6D6D600D6D6D600D6D6D600D6D6D600BDC6D600A5B5 - E700B5CEFF00E7EFFF00F7FFFF00637BD600215AE700D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600000000000000000000000000E7E7 - E700A5A5A5008C8C8C00ADADAD00EFEFEF00F7F7F700FFFFFF00FFFFFF00DEDE - DE009C9C9C00E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700B5B5B5006B6B6B00636363006B6B6B00DEDEDE00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7DE00FFFFF700BDBDB500BDBD - BD009C9C9C007B7B7B007B847B00DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600D6D6D600D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00424242008484840084848400848484008484 - 84008484840084848400DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00D6D6D600ADBDDE008C9CE7002952DE008CA5DE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 - 0000E7E7E700C6C6C600A5A5A500B5B5B500D6D6D600EFEFEF00FFFFFF00FFFF - FF00D6D6D600EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00EFEFEF009494940063636300636363008484840000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600EFE7E700FFFFF700DEDED600FFFF - F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E752000042424200DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 - 0000000000000000000000000000D6D6D600BDBDBD00ADADAD00BDBDBD00DEDE - DE00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00E7E7E700737373006363630063636300B5B5B50000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600F7E7E700FFFFF7008C8C8C007B7B - 7B007B7B7B0084847B008C8C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 00000000000000000000000000000000000042424200E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E752000042424200DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000D6D6D600B5B5 - B500ADADAD00C6C6C600DEDEDE00EFEFEF00FFFFFF00FFFFFF00FFFFFF00F7F7 - F700ADADAD00636363006363630073737300E7E7E70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600F7E7E700FFFFF700FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 000000000000000000000000000000000000C6C6C60042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200C6C6C6004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000E7E7E700CECECE00BDBDBD00BDBDBD00CECECE00DEDEDE00DEDEDE00C6C6 - C6007B7B7B006363630063636300949494000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600F7E7E7008C8C8C00BDBDBD00FFFF - FF00D6D6D600C6C6C600FFF7F700FFF7F700EFD6D600FFFFFF00FFFFFF00F7EF - EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000E7E7E700C6C6C600B5B5B500A5A5A5009494 - 94006B6B6B006363630073737300CECECE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C600E7CECE00636363006B6B6B00EFCE - CE00636363007B7B7B00B5ADB500EFDEDE006363630084848400FFFFFF007373 - 730073737300F7DEDE006363630084848400EFE7EF000042C600D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000EFEFEF00DEDEDE00B5B5 - B5007B7B7B0084848400C6C6C600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000637BD600637BD600315AC60063636300315A - C600315AC6007B7B7B008494C600315AC600315AC6006B6B6B008494C6008494 - C600737373008494C6008494C600848484009C9C9C00637BD600EFEFEF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000006B6B6B008C8C8C00848484008C8C - 8C008C8C8C007B7B7B0094949400848484008C8C8C007B7B7B00315AC600637B - D6006B6B6B00315AC600315AC6007B7B7B007B7B7B008494C600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000CECECE00EFEFEF00F7F7 - F700B5B5B500C6C6C600F7F7F700A5A5A50094949400CECECE00BDBDBD007B7B - 7B009C9C9C00BDBDBD006B6B6B006B6B6B00D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000042 - C600D6D6D600D6D6D60000000000000000000000000000000000000000000042 - C600D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000E7E7E700DEDEDE00DEDEDE00DEDEDE00DEDEDE00E7E7E7000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000042 - C6000042C600CECECE00000000000000000000000000000000000042C6000042 - C600CECECE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000E7E7E700D6D6 - D600C6C6CE009CADCE006384CE004A73C600527BC6006B8CC60094A5CE00C6CE - CE00D6D6D600DEDEDE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000DEDEDE00D6D6D6000042 - C6000042C600C6C6C600D6D6D6000000000000000000000000000042C6000042 - C600C6C6C600CECECE00D6D6D600DEDEDE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000E7E7E700CECECE008C9CCE00295A - C6000042C600104AC600295AC6002963CE00215AC600215AC600104AC6000042 - C6001852C6008494C600CECECE00DEDEDE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C6000042C6000042C6000042 - C6000042C6000042C600CECECE0000000000000000000042C6007394DE000042 - C6000042C6000042C6000042C600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000D6D6D600CECE - CE00D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000DEDEDE009CADC6001052C600084AC600527B - CE00CED6DE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700D6DE - E7006B8CD600084AC600084AC6007B94C600D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000042C6007394DE000042 - C6000042C6000042C600C6C6C600D6D6D600000000000042C6007394DE007394 - DE000042C6000042C60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000042C6002963CE00ADB5 - EF00CECECE000000000000000000000000000000000000000000000000000000 - 00000000000000000000DEDEDE005A7BC6000042C6004273CE00DEDEE700E7E7 - E700E7E7E700E7E7E700DEDEDE00D6D6D600E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E7006B8CD6000042C600396BC600CECED600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000042C6007394 - DE000042C6000042C6000042C600C6C6C6000042C6007394DE007394DE000042 - C6000042C600E7E7E70000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000042C6000042C6000042C6002963 - CE00D6D6D6000000000000000000000000000000000000000000000000000000 - 000000000000DEDEDE005A7BC600084AC600ADBDDE00E7E7E700E7E7E700E7E7 - E700E7E7E700BDBDBD006B6B6B0063636300A5A5A500E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700B5C6DE00104AC600295AC600CED6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE000042 - C6007394DE000042C6000042C600ADADAD000042C6007394DE000042C6000042 - C600C6C6C600CECECE00CECECE00D6D6D6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000042C6000042C6000042C600ADB5EF002963 - CE00000000000000000000000000000000000000000000000000000000000000 - 0000E7E7E7006B8CC6000842C600BDC6DE00E7E7E700E7E7E700E7E7E700E7E7 - E700DEDEDE006B6B6B00636363006363630063636300C6C6C600BDBDBD00DEDE - DE00E7E7E700E7E7E700E7E7E700E7E7E700CED6DE00104AC600396BC600DEDE - DE0000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D6008484840042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 42000042C6007394DE000042C6000042C6007394DE000042C6000042C6004A4A - 4A00424242004242420042424200848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000042C6000042C6000042C600ADB5EF002963CE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000ADB5CE000042C60094A5D600E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700C6C6C6006363630063636300636363006363630094949400ADADAD00B5B5 - B500E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700BDCEDE00084AC600849C - C600000000000000000000000000000000007394DE000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6007394DE0042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C6000042C6000042C6000042C6000042C600C6C6C600D6D6 - D600EFEFEF00FFFFFF00FFFFFF00424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000042C6000042C6000042C600ADB5EF002963CE00000000000000 - 000000000000000000000000000000000000000000000000000000000000E7E7 - E7002152C6004273CE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700B5B5B5006363630063636300636363006363630084848400D6D6D600B5B5 - B500E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E7007B94CE00084A - C600D6D6DE000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F7000042C6000042C6000042C6000042C6000042C6000042C600C6C6 - C600D6D6D600F7F7F700FFFFFF00424242000000000000000000000000000000 - 00000000000000000000000000000000000000000000D6D6D600CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600000000000000 - 00000042C6000042C6000042C600ADB5EF002963CE0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000009CAD - CE000042C600E7E7EF00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700A5A5A500636363006363630063636300636363007B7B7B00E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE001852 - C6006384C6000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C600CECECE00F7F7F700FFFFFF00424242000000000000000000000000000000 - 00000000000000000000E7E7E700CECECE00ADB5EF007394DE00315AC6000042 - C6000042C6000042C600315AC6007394DE00ADB5EF00BDBDBD00C6C6C6000042 - C6000042C6000042C600ADB5EF002963CE00E7E7E70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000003163 - C6004273CE00FFFFFF00E7E7E700E7E7E700E7E7E700C6C6C6008C8C8C009494 - 94006B6B6B006363630063636300636363006363630063636300DEDEDE00E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700638C - CE001852C600E7E7E70000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000042C6007394DE000042C6000042C6000042C6000042C6000042C6000042 - C600CECECE00F7F7F700FFFFFF0042424200D6D6D600CECECE00CECECE00CECE - CE00CECECE00C6C6C600ADB5EF000042C600315AC600BDC6CE00F7EFCE00F7EF - CE0084848400F7EFCE00F7EFCE00BDC6CE00315AC6000042C600315AC600ADB5 - EF002963CE00ADB5EF002963CE00C6C6C600CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000E7E7E7000842 - C600A5BDDE00FFFFFF00F7F7F700E7E7E700ADADAD0063636300636363006363 - 630063636300636363006363630063636300636363006363630094949400E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700CED6 - D6000042C600ADBDD60000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000042C6007394DE000042C6000042C6000042C6000042C6000042C6000042 - C600D6D6D600F7F7F700FFFFFF0042424200A5A5A50042424200424242004242 - 420042424200848484000042C600BDC6CE00F7EFCE00F7EFCE00F7EFCE00F7EF - CE0084848400F7EFCE00F7EFCE00F7EFCE00F7EFCE00BDC6CE000042C6002963 - CE00ADB5EF002963CE004A4A4A00424242004242420042424200424242004242 - 4200424242004242420042424200A5A5A5000000000000000000ADBDD6000042 - C600F7F7F700FFFFFF00FFFFFF00C6C6C6006363630063636300636363006363 - 630063636300636363006363630063636300636363006363630063636300CECE - CE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDE - DE001852C6007394CE0000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000042C6007394DE007394DE000042C6000042C6000042C6000042C6000042 - C600EFEFEF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF009C9C - 9C00ADB5EF000042C60084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484000042 - C600315AC600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00424242000000000000000000849CCE001852 - C600F7F7F700FFFFFF00FFFFFF009C9C9C006363630063636300636363006363 - 630063636300636363006363630063636300636363006363630063636300A5A5 - A500E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDE - DE003163C6004A73C60000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000042C6007394DE007394DE007394DE000042C6000042C600EFEF - EF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF009C9C - 9C000042C600ADB5EF00FFFFFF00F7EFCE00F7EFCE0084848400F7EFCE00F7EF - CE00F7EFCE00F7EFCE00F7EFCE0084848400F7EFCE00F7EFCE00F7EFCE00BDC6 - CE000042C600C6C6C60094949400F7F7F700FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF004242420000000000000000006B8CCE001852 - C600F7F7F700FFFFFF00FFFFFF00A5A5A5006363630063636300636363006363 - 63006363630063636300636363006363630073737300CECECE00D6D6D600CECE - CE00E7E7E700E7E7E700E7E7E7008C8C8C00C6C6C600E7E7E700E7E7E700DEDE - DE00426BC6003163C60000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000042C6000042C6000042C6000042C600F7F7F700FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A5008484 - 8400315AC600FFFFFF00FFFFFF00F7EFCE00F7EFCE0084848400F7EFCE00F7EF - CE00F7EFCE00F7EFCE00F7EFCE0084848400F7EFCE00F7EFCE00F7EFCE00F7EF - CE00315AC600A5A5A500949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5004242420000000000000000006B8CCE002963 - C600F7F7F700FFFFFF00FFFFFF00B5B5B5007B7B7B0063636300636363006363 - 630063636300636363006363630063636300ADADAD00848484006B6B6B00ADAD - AD00E7E7E700E7E7E700C6C6C60063636300A5A5A500E7E7E700E7E7E700DEDE - DE004273C6004273C60000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF007394 - DE00ADB5EF0084848400C6C6C600FFFFFF00F7EFCE0084848400F7EFCE008484 - 8400C6C6C600F7EFCE00F7EFCE0084848400F7EFCE0084848400F7EFCE00F7EF - CE00BDC6CE007394DE00CECECE00F7F7F700A5A5A500FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000849CD6001852 - C600EFEFEF00FFFFFF00FFFFFF00DEDEDE008C8C8C0073737300636363006363 - 6300636363006363630063636300636363007373730063636300636363006B6B - 6B00D6D6D600E7E7E7008C8C8C006363630094949400E7E7E700E7E7E700DEDE - DE003163BD004A73CE0000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF00315A - C600FFFFFF0084848400C6C6C600FFFFFF00F7EFCE0084848400F7EFCE00C6C6 - C60084848400F7EFCE00F7EFCE0084848400F7EFCE0084848400C6C6C600F7EF - CE00F7EFCE00315AC600CECECE00F7F7F700A5A5A500FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000B5C6E7000842 - C600E7E7E700FFFFFF00FFFFFF00FFFFFF00ADADAD008C8C8C006B6B6B00BDBD - BD00D6D6D600BDBDBD00C6C6C600848484006363630063636300A5A5A500ADAD - AD00A5A5A500A5A5A50063636300636363006B6B6B00C6C6C600CECECE009494 - 9400104ABD007394D60000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A5000042 - C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400F7EFCE00F7EF - CE00F7EFCE00F7EFCE00F7EFCE0084848400F7EFCE00F7EFCE00F7EFCE00F7EF - CE00F7EFCE000042C600949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500424242000000000000000000EFEFF7000042 - C6009CADCE00F7F7F700FFFFFF00E7E7E700ADADAD00F7F7F700F7F7F700BDBD - BD00DEDEDE00C6C6C600949494006B6B6B006363630063636300636363006363 - 6300636363006363630063636300636363006363630063636300636363006B6B - 6B000042C600CED6EF0000000000000000000042C600FFFFFF00FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF000042 - C600848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484000042C600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000003163 - C600426BC600E7E7E700FFFFFF00DEDEDE00A5A5A500ADADAD00CECECE00ADAD - AD008C8C8C0073737300ADADAD00737373006363630063636300636363006363 - 630063636300636363006363630063636300636363006363630063636300425A - 9400104AC6000000000000000000000000000042C600A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A5000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF000042 - C600FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00F7EFCE00F7EF - CE0084848400F7EFCE00F7EFCE00F7EFCE00F7EFCE00F7EFCE0084848400F7EF - CE00F7EFCE000042C600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000009CB5 - DE000842C600C6C6D600F7F7F700FFFFFF00FFFFFF009C9C9C008C8C8C008C8C - 8C008C8C8C0073737300B5B5B500CECECE007B7B7B0063636300636363006363 - 63006363630063636300636363006363630063636300636363006B6B6B00084A - BD006B8CD6000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A500315A - C600FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EF - CE0084848400F7EFCE00F7EFCE00F7EFCE00F7EFCE00F7EFCE0084848400F7EF - CE00BDC6CE00315AC600949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500FFFFFF00FFFFFF00424242000000000000000000000000000000 - 0000215AC600426BC600DEDEDE00F7F7F700CECECE00D6D6D600C6C6C600C6C6 - C600B5B5B5008C8C8C00848484006B6B6B006363630063636300636363006363 - 630063636300636363006363630063636300636363006B6B6B00426394000842 - C600000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF - FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF007394 - DE00ADB5EF00FFFFFF0084848400FFFFFF0084848400FFFFFF00FFFFFF00FFFF - FF0084848400F7EFCE0084848400C6C6C600F7EFCE00F7EFCE0084848400F7EF - CE00BDC6CE007394DE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00424242000000000000000000000000000000 - 0000C6CEEF000042C6009CADCE00D6D6D600ADADAD00E7E7E700FFFFFF00A5A5 - A500E7E7E7009C9C9C008C8C8C008C8C8C007B7B7B006B6B6B00636363006363 - 6300636363006363630063636300636363006B6B6B00636B7B000042C60084A5 - DE00000000000000000000000000000000007394DE000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6007394DE0042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF00ADB5 - EF00315AC600FFFFFF0084848400FFFFFF0084848400C6C6C600FFFFFF00FFFF - FF0084848400FFFFFF0084848400C6C6C600F7EFCE00F7EFCE0084848400F7EF - CE00315AC600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF - FF00A5A5A500FFFFFF00FFFFFF00424242000000000000000000000000000000 - 0000000000005A84D6000042C600ADB5CE00C6C6C600EFEFEF00FFFFFF00C6C6 - C600949494008C8C8C00949494008C8C8C008C8C8C008C8C8C00848484007373 - 73006363630063636300636363006B6B6B00636B7B00104ABD003163CE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A500A5A5 - A5000042C600ADB5EF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFCE0084848400BDC6 - CE000042C600949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5A500A5A5 - A500A5A5A500A5A5A500A5A5A500424242000000000000000000000000000000 - 00000000000000000000527BD600084AC6009CADCE00D6D6D600EFEFEF00F7F7 - F700C6C6C600BDBDBD00F7F7F7009C9C9C008C8C8C008C8C8C008C8C8C008C8C - 8C008C8C8C00848484007B7B7B006B738400084AC6002963CE00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF00A5A5 - A500ADB5EF000042C60084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484000042 - C600ADB5EF009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000000000 - 00000000000000000000000000007394DE000042C600527BC600C6C6CE00DEDE - DE00E7E7E700EFEFEF00F7F7F700DEDEDE00949494008C8C8C008C8C8C008C8C - 8C008C8C8C00848484004A6BA5000042C600396BCE0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 42004242420042424200424242008484840042424200FFFFFF00FFFFFF00A5A5 - A500FFFFFF00ADB5EF000042C600ADB5EF00FFFFFF0084848400FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084848400FFFFFF00ADB5EF000042C600ADB5 - EF00F7F7F7009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 - A500FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000000000 - 000000000000000000000000000000000000CED6F700215ACE000042C6005A7B - C600A5ADC600CECECE00CECECE00D6D6D600C6C6C6008C8C8C0084848400737B - 8C004263AD00084AC600084AC6009CB5E7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000A5A5A50042424200424242004242 - 42004242420042424200636363000042C600315AC60084848400FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084848400315AC6000042C600636363004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200A5A5A5000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000ADC6EF002963 - CE000042C6000042C600215AC6002963C6002963C6001852C6000842C6000042 - C6001852C6006B94DE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000ADB5EF007394DE00315AC6000042 - C6000042C6000042C600315AC6007394DE00ADB5EF0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000B5CEEF006B94DE00638CDE00638CDE00739CDE00ADBDEF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000DEDE - DE00DEDEDE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000DEDEDE00CECE - CE00CECECE00DEDEDE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6 - D600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00FFFFFF0000000000C6C6 - C600CECECE00DEDEDE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00FFFFFF0000000000C6C6 - C600D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000D6D6D600CECECE0042424200DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE004242 - 4200000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF0000000000C6C6C600CECE - CE00DEDEDE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000D6D6D600CECECE00CECECE00D6D6D600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000D6D6 - D600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200DEDEDE004242 - 4200000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000D6D6 - D600D6D6D600DEDEDE0000000000FFFFFF00FFFFFF0000000000BDBDBD00CECE - CE00DEDEDE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000002963CE004273D6004273D6002963CE00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000D6D6D600D6D6 - D600848484006363630063636300424242004242420063636300636363008484 - 8400D6D6D600D6D6D60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000D6D6D600CECECE0042424200DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE0042424200DEDEDE004242 - 420000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE000000000000000000C6C6C600B5B5 - B500ADADAD0000000000FFFFFF00FFFFFF0000000000ADADAD00ADADAD00B5B5 - B500C6C6C600CECECE00CECECE00D6D6D6000000000000000000000000000000 - 000000000000000000000000000000000000D6D6D600CECECE00D6D6D6000000 - 000000000000D6D6D6002963CE00CECECE00CECECE002963CE00D6D6D6000000 - 000000000000D6D6D600CECECE00D6D6D6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000D6D6D600636363006363 - 6300A5A5A500C6C6C600D6D6D600D6D6D600D6D6D600D6D6D600C6C6C600A5A5 - A5006363630063636300D6D6D600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000315AC6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C600315AC600DEDEDE0042424200E7E7E7004242 - 4200000000000000000000000000000000004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 42004242420042424200424242004242420000000000FFFFFF00000000005252 - 52005A5A5A0000000000FFFFFF00FFFFFF00000000005A5A5A005A5A5A004A4A - 4A00424242004242420042424200424242000000000000000000000000000000 - 0000000000000000000000000000D6D6D600A5BDF7002963CE00A5BDF700CECE - CE00CECECE00A5BDF7004273D600CECECE00CECECE004273D600A5BDF700CECE - CE00CECECE00A5BDF7002963CE00A5BDF700D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000D6D6D600CECECE0063636300C6C6C600D6D6 - D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 - D600D6D6D600C6C6C60063636300CECECE00D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE000042C600DEDEDE0042424200E7E7E7004242 - 42000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 000000000000FFFFFF00FFFFFF0000000000A5A5A500A5A5A500A5A5A500ADAD - AD00B5B5B500B5B5B500BDBDBD00424242000000000000000000000000000000 - 0000000000000000000000000000A5BDF7000042C600CECECE000042C600A5BD - F7002963CE000042C600CECECE00CECECE00CECECE00CECECE000042C6002963 - CE00A5BDF7000042C600CECECE000042C600A5BDF70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000C6C6C60042424200C6C6C600DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00C6C6C60042424200C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE000042C600E7E7E70042424200E7E7E7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF0000000000FFFFFF00FFFFFF0000000000BDBDBD00C6C6C600C6C6C600CECE - CE00D6D6D600DEDEDE00B5B5B500424242000000000000000000000000000000 - 00000000000000000000000000002963CE00CECECE00CECECE00CECECE000042 - C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE000042C600CECECE00CECECE00CECECE002963CE0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00DEDE - DE00DEDEDE00315AC6000042C6000042C6000042C6000042C600315AC600DEDE - DE00DEDEDE00DEDEDE00DEDEDE00C6C6C60063636300D6D6D600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE000042C600E7E7E70042424200E7E7E7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000CECECE00DEDEDE00B5B5B500424242000000000000000000000000000000 - 0000000000000000000000000000A5BDF7000042C600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE000042C600A5BDF70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00315AC6000042C6000042C600315AC600DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00C6C6C60063636300D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E7000042C600E7E7E70042424200E7E7E7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECE - CE00D6D6D600EFEFEF00BDBDBD00424242000000000000000000000000000000 - 000000000000000000000000000000000000A5BDF7000042C600CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE000042C600A5BDF7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000D6D6D60063636300DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE - DE00DEDEDE00DEDEDE00315AC6000042C6000042C600315AC600DEDEDE00DEDE - DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE0063636300D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E7000042C600E7E7E70042424200EFEFEF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00D6D6 - D600EFEFEF00F7F7F700BDBDBD00424242000000000000000000000000000000 - 0000000000000000000000000000D6D6D6002963CE00CECECE00CECECE00CECE - CE00CECECE00CECECE000042C6000042C6000042C6000042C600CECECE00CECE - CE00CECECE00CECECE00CECECE002963CE00D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000084848400A5A5A500E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700315AC6000042C6000042C600315AC600E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700A5A5A500848484000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E7000042C600E7E7E70042424200EFEFEF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00D6D6D600EFEF - EF00F7F7F700FFFFFF00C6C6C600424242000000000000000000000000000000 - 000000000000D6D6D600CECECE00A5BDF7000042C600CECECE00CECECE00CECE - CE00CECECE000042C600000000000000000000000000000000000042C600CECE - CE00CECECE00CECECE00CECECE000042C600A5BDF700CECECE00D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000063636300C6C6C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700315AC6000042C6000042C600315AC600E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700C6C6C600636363000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E7000042C600EFEFEF0042424200EFEFEF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00D6D6D600EFEFEF00F7F7 - F700FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000002963CE004273D6004273D600CECECE00CECECE00CECECE00CECE - CE000042C6000000000000000000000000000000000000000000000000000042 - C600CECECE00CECECE00CECECE00CECECE004273D6004273D6002963CE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000063636300E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700315AC6000042C6000042C600315AC600E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700636363000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 - E700E7E7E700E7E7E700E7E7E7000042C600EFEFEF0042424200EFEFEF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000CECECE00D6D6D600EFEFEF00F7F7F700FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000004273D600CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE000042C6000000000000000000000000000000000000000000000000000042 - C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE004273D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00315AC6000042C6000042C600315AC600EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00424242000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200EFEFEF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF0000000000CECECE00D6D6D600EFEFEF00F7F7F700FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000004273D600CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE000042C6000000000000000000000000000000000000000000000000000042 - C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE004273D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00637BD6000042C6000042C6000042C600315AC600EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00424242000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200EFEFEF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF0000000000CECECE00D6D6D600EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000004273D6004273D6004273D600CECECE00CECECE00CECECE00CECE - CE000042C600D6D6D60000000000000000000000000000000000D6D6D6000042 - C600CECECE00CECECE00CECECE00CECECE004273D6004273D6004273D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00636363000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200F7F7F7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000 - 0000CECECE00D6D6D600EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000A5BDF7000042C600CECECE00CECECE00CECE - CE00CECECE000042C600CECECE00CECECE00CECECE00CECECE000042C600CECE - CE00CECECE00CECECE00CECECE000042C600A5BDF70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000063636300C6C6C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00C6C6C600636363000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200F7F7F7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000000000DEDE - DE00DEDEDE00EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000000000002963CE00CECECE00CECECE00CECE - CE00CECECE00CECECE000042C6000042C6000042C6000042C600CECECE00CECE - CE00CECECE00CECECE00CECECE002963CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000084848400A5A5A500F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700ADB5EF00315AC600315AC600ADB5EF00F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700A5A5A500848484000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF000042C600F7F7F70042424200F7F7F7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000F7F7F700EFEF - EF00EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000D6D6D600A5BDF7000042C600CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE000042C600A5BDF700D6D6D60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000D6D6D60063636300F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F7000042C6000042C6000042C6000042C600F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F70063636300D6D6D6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF - EF00EFEFEF00EFEFEF00EFEFEF000042C600F7F7F70042424200F7F7F7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00F7F7 - F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000A5BDF7000042C600CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE00CECECE00CECECE00CECECE000042C600A5BDF70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000063636300D6D6D600F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F7000042C6000042C6000042C6000042C600F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700D6D6D60063636300000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F7000042C600F7F7F70042424200F7F7F7004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 00000000000000000000000000002963CE00CECECE00CECECE00CECECE000042 - C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE - CE000042C600CECECE00CECECE00CECECE002963CE0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000063636300D6D6D600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00ADB5EF00315AC600315AC600ADB5EF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00D6D6D6006363630000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F7000042C600F7F7F70042424200FFFFFF004242 - 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000A5BDF7000042C600CECECE000042C600A5BD - F7002963CE000042C600CECECE00CECECE00CECECE00CECECE000042C6002963 - CE00A5BDF7000042C600CECECE000042C600A5BDF70000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000042424200D6D6D600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00D6D6D600424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F7000042C600F7F7F70042424200424242000000 - 00000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 000000000000000000000000000000000000A5BDF7002963CE00A5BDF7000000 - 000000000000A5BDF7004273D600CECECE00CECECE004273D600A5BDF7000000 - 000000000000A5BDF7002963CE00A5BDF7000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C60063636300D6D6D600FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00D6D6D60063636300C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F7000042C600FFFFFF0042424200000000000000 - 00000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000004273D600CECECE00CECECE004273D600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000636363006363 - 6300A5A5A500C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600A5A5 - A500636363006363630000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 - F700F7F7F700F7F7F700F7F7F7000042C6004242420000000000000000000000 - 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000004273D6004273D6004273D6004273D600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000D6D6 - D600848484006363630063636300424242004242420063636300636363008484 - 8400D6D6D6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00315AC6000042 - C6000042C6000042C6000042C6000042C6000000000000000000000000000000 - 00000000000000000000000000000000000042424200E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600FFFF - FF00FFFFFF00FFFFFF000042C600000000000000000000000000000000000000 - 00000000000000000000000000000000000042424200E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 - 0000E7520000E7520000E7520000424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600FFFF - FF00FFFFFF000042C60000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C60042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200424242004242420042424200C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600FFFF - FF000042C6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C6000042 - C600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000315AC6000042C6000042C6000042C6000042C6000042C6000042C6000042 - C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000080000000A00000000100010000000000000A00000000000000000000 - 000000000000000000000000FFFFFF00FF8000FFFFFFFFFF0000000000000000 - FF8000FFFFFFFFFF0000000000000000FF8000FFFFFFFFFF0000000000000000 - FF8000FF000000000000000000000000FF8000FF000000000000000000000000 - FF8000FF000000000000000000000000FF8000FF000000000000000000000000 - FF8000FF000000000000000000000000FF8000FF000000000000000000000000 - FF8000FF000000000000000000000000FF8000FF000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000FFFFFFFF000000000000000000000000 - FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000 - FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - 00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF - 00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFE007FFFFFFFFFF - 00000000F807FFFFFFC003FFFFFFFFFF00000000F003FFFFFF8001FFFFFFFFFF - 000000000001FFFFFE00007FFFFFFFFF0000000000001FFFFE00007FFFFFFFFF - 000000000000003FFC00003FFFFFFFFF000000000000000FF800001FFFFFFFFF - 0000000000000007F800001FEFEFBFBD0000000000000003F800001FCFCF3E19 - 00000000FC000001F800001FC79C36390000000080000000F800001FC0102639 - 000000FF00000000F800001FE0300E79000000FF00003E00F800001FE3330E39 - 000000FF0003FF80F800001FF2743F39000000FFFC07FFC0F800001FF0703E3B - 000000FFFC0FFFE0F800001FFAF00043000000FFFFFFFFE0F800001FF8E00307 - 000000FFFFFFFFF0FC00003FFFFFFFFF000000FFFFFFFFF0FE00007FFFFFFFFF - 000000FFFFFFFFF0FF0000FFFFFFFFFF000000FFFFFFFFF0FF0000FFFFFFFFFF - 000000FFFFFFFFF0FFC003FFFFFFFFFF000000FFFFFFFFFFFFE007FFFFFFFFFF - 000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF - 000000FFFFFFFFFFFFFFFFFFFFFFFFFF000001FFFFFFFFFFFFFFFFFFFFFFFFFF - 000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - E003FFFFFF83FFFFFFFFFFFFFFFFFFFFE003FFFFFF0007FFFFFFFFFFFFFFFFFF - E003FFFFFE00003FFFFFFFFFFFFFFFFFE0003FFFFE00001FFFFFFFFFFFFFFFFF - E0000FFFFE00001FFFFFFFFFFFFFFFFFE00001FFFE00001F00000000FFFFFFFF - E000003FFE00001F0000000000000000E000000FFE00001F0000000000000000 - E0000007FE00001F0000000000000000E0000007FE00001F0000000000000000 - E0000007FE00001F0000000000000000E0000007FE00001F0000000000000000 - F8000007FE00001F0000000000000000F000000FFE00001F0000000000000000 - F000000FFE00001F0000000000000000F000000FFE00001F0000000000000000 - E000001FFE00001F0000000000000000E000001FFE00001F0000000000000000 - E000001FFE00001F0000000000000000E000003FFE00001F0000000000000000 - E000003FFE00001F0000000000000000F000007FFE00001F0000000000000000 - FE00007FFE00001F0000000000000000FFC0007FFE00001F0000000000000000 - FFF000FFFE00001FFFFFFFFFFFFFFFFFFFFE00FFFE00001FFFFFFFFFFFFFFFFF - FFFF81FFFE00001FFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFFFFFFFFFFFFFFFF - FFFFFFFFFF80007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E7FFFFFFFF - FFF81FFFFFFFFFFFFFFFE3C7FFFFFFFFFFC003FFFFFFFFFFFFFF81C0FFFFFFFF - FF0000FFFFFFFFFFFFFF0181FFFFFFC7FE00007FFFFFFFFFFFFF8083FFFFFF87 - FC00003FFFFFFFFFFFFFC003FFFFFF07F800001FFFFFFFFF00000000FFFFFE0F - F000000F0000000000000000FFFFFC1FF000000F0000000000000000FFFFF83F - E00000070000000000000000FF80307FE00000070000000000000000FC00007F - E0000003000000000000000000000000C0000003000000000000000000000000 - C0000003000000000000000000000000C0000003000000000000000000000000 - C0000003000000000000000000000000C0000003000000000000000000000000 - C0000003000000000000000000000000C0000003000000000000000000000000 - C0000003000000000000000000000000E0000007000000000000000000000000 - E0000007000000000000000000000000F000000F000000000000000000000000 - F000000F000000000000000000000000F800001FFFFFFFFF0000000000000000 - FC00003FFFFFFFFF0000000000000000FE00007FFFFFFFFF0000000000000000 - FF0000FFFFFFFFFFFFFFFFFF00000000FFC003FFFFFFFFFFFFFFFFFFFF007FFF - FFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFF03FFFFFFFFFFFFFFFFFF00000FFFFFFE03FFFFFFFFFFFFFFFFFF00000F - FFFFFE07FFFFFFFFFFFFFFFFFC00000FFFFFFC07FFFC3FFFFFE007FFFC00000F - FFFF6007FFFC3FFFFFC003FFF000000F00000000FF1818FFFF8001FFF000000F - 00000000FE00007FFE00007FF000000F00000000FE00007FFE00007FF000000F - 00000000FE00007FFC00003FF000000F00000000FE00007FF800001FF000000F - 00000000FF0000FFF800001FF000000F00000000FE00007FF800001FF000000F - 00000000F803C01FF800001FF000000F00000000F807E01FF800001FF000000F - 00000000F807E01FF800001FF000000F00000000F807E01FF800001FF000000F - 00000000F803C01FF800001FF000000F00000000FE00007FF800001FF000000F - 00000000FF0000FFF800001FF000000F00000000FE00007FF800001FF000000F - 00000000FE00007FFC00003FF000000F00000000FE00007FFE00007FF000000F - 00000000FE00007FFF0000FFF000001F00000000FF1818FFFF0000FFF000003F - 00000000FFFC3FFFFFC003FFF000007F00000000FFFC3FFFFFE007FFF00000FF - 00000000FFFFFFFFFFFFFFFFF00001FF00000000FFFFFFFFFFFFFFFFF00003FF - 00000000FFFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF - FFFFFFFFFFFFFFFFFFFFFFFFF0001FFF00000000000000000000000000000000 - 000000000000} - end -end +object modActionsMain: TmodActionsMain + OldCreateOrder = False + OnCreate = DataModuleCreate + Height = 414 + Width = 557 + object actionsMain: TActionList + Images = frmKeymanDeveloper.lstImages + Left = 32 + Top = 28 + object actViewCharacterMap: TAction + Category = 'View' + Caption = '&Character Map' + Hint = 'Character Map|Display the character map window' + ShortCut = 24643 + OnExecute = actViewCharacterMapExecute + OnUpdate = actViewCharacterMapUpdate + end + object actFileNew: TAction + Category = 'File' + Caption = '&New...' + Hint = 'New|Creates a new file' + ImageIndex = 0 + ShortCut = 16462 + OnExecute = actFileNewExecute + OnUpdate = actFileNewUpdate + end + object actViewCharacterIdentifier: TAction + Category = 'View' + Caption = 'Character &Identifier' + Hint = 'Character Identifier|Display the character identifier window' + ShortCut = 24649 + OnExecute = actViewCharacterIdentifierExecute + OnUpdate = actViewCharacterIdentifierUpdate + end + object actFileOpen: TFileOpen + Category = 'File' + Caption = '&Open...' + Dialog.Options = [ofHideReadOnly, ofAllowMultiSelect, ofFileMustExist, ofEnableSizing] + Hint = 'Open|Opens an existing file' + ImageIndex = 1 + ShortCut = 16463 + OnAccept = actFileOpenAccept + OnUpdate = actFileOpenUpdate + end + object actFileSave: TAction + Category = 'File' + Caption = '&Save' + Hint = 'Save|Saves the active file' + ImageIndex = 2 + ShortCut = 16467 + OnExecute = actFileSaveExecute + OnUpdate = actFileSaveUpdate + end + object actFileSaveAs: TFileSaveAs + Category = 'File' + Caption = 'Save &As...' + Dialog.Title = 'Save As' + Dialog.OnCanClose = actFileSaveAsSaveDialogCanClose + Hint = 'Save As|Saves the active file with a new name' + BeforeExecute = actFileSaveAsBeforeExecute + OnAccept = actFileSaveAsAccept + OnUpdate = actFileSaveAsUpdate + end + object actFileSaveCopyAs: TAction + Category = 'File' + Caption = 'Save cop&y as...' + ImageIndex = 17 + OnExecute = actFileSaveCopyAsExecute + OnUpdate = actFileSaveCopyAsUpdate + end + object actFileRevert: TAction + Category = 'File' + Caption = '&Revert' + Hint = 'Revert|Reload last saved version of active file' + ImageIndex = 18 + OnExecute = actFileRevertExecute + OnUpdate = actFileRevertUpdate + end + object actFileExit: TFileExit + Category = 'File' + Caption = 'E&xit' + Hint = 'Exit|Quits the application' + end + object actEditUndo: TKMDEditUndo + Category = 'Edit' + Caption = '&Undo' + Hint = 'Undo|Reverts the last action' + ImageIndex = 7 + ShortCut = 16474 + end + object actEditRedo: TKMDEditRedo + Category = 'Edit' + Caption = '&Redo' + Enabled = False + Hint = 'Redo|Revert the last undo' + ImageIndex = 8 + ShortCut = 24666 + end + object actEditCut: TKMDEditCut + Category = 'Edit' + Caption = 'Cu&t' + Enabled = False + Hint = 'Cut|Cuts the selection and puts it on the Clipboard' + ImageIndex = 4 + ShortCut = 16472 + end + object actEditCopy: TKMDEditCopy + Category = 'Edit' + Caption = '&Copy' + Enabled = False + Hint = 'Copy|Copies the selection and puts it on the Clipboard' + ImageIndex = 5 + ShortCut = 16451 + end + object actEditPaste: TKMDEditPaste + Category = 'Edit' + Caption = '&Paste' + Enabled = False + Hint = 'Paste|Inserts Clipboard contents' + ImageIndex = 6 + ShortCut = 16470 + end + object actEditSelectAll: TKMDEditSelectAll + Category = 'Edit' + Caption = 'Select &All' + Hint = 'Select All|Selects the entire document' + ShortCut = 16449 + end + object actEditDelete: TKMDEditDelete + Category = 'Edit' + Caption = 'Clear selection' + Hint = 'Clear selection|Erases the selection' + ImageIndex = 21 + end + object actSearchFind: TKMDSearchFind + Category = 'Search' + Caption = '&Find...' + Hint = 'Find|Finds the specified text' + ImageIndex = 22 + ShortCut = 16454 + BeforeExecute = actSearchFindBeforeExecute + OnUpdate = actSearchFindUpdate + end + object actSearchFindNext: TKMDSearchFindNext + Category = 'Search' + Caption = 'Find &Next' + Hint = 'Find Next|Repeats the last find' + SearchFind = actSearchFind + ShortCut = 114 + end + object actSearchReplace: TKMDSearchReplace + Category = 'Search' + Caption = '&Replace' + Hint = 'Replace|Replaces specific text with different text' + ImageIndex = 23 + ShortCut = 16456 + end + object actHelpContents: THelpContents + Category = 'Help' + Caption = '&Contents' + Enabled = False + Hint = 'Help Contents' + ImageIndex = 12 + OnExecute = actHelpContentsExecute + end + object actHelpTopicSearch: THelpTopicSearch + Category = 'Help' + Caption = '&Topic Search' + Enabled = False + Hint = 'Topic Search' + end + object actHelpContextAction: THelpContextAction + Category = 'Help' + Caption = 'Context &Help...' + Enabled = False + end + object actViewMessages: TAction + Category = 'View' + Caption = '&Messages' + Hint = 'Messages|View the messages window' + ShortCut = 24653 + OnExecute = actViewMessagesExecute + OnUpdate = actViewMessagesUpdate + end + object actViewProject: TAction + Category = 'View' + Caption = '&Project' + Hint = 'Project|View the current project' + ShortCut = 24656 + OnExecute = actViewProjectExecute + OnUpdate = actViewProjectUpdate + end + object actViewToolbar: TAction + Category = 'View' + Caption = '&Toolbar' + Hint = 'Toolbar|Show or hide the toolbar' + OnExecute = actViewToolbarExecute + OnUpdate = actViewToolbarUpdate + end + object actViewStatusBar: TAction + Category = 'View' + Caption = '&Status Bar' + Hint = 'Status Bar|Show or hide the status bar' + OnExecute = actViewStatusBarExecute + OnUpdate = actViewStatusBarUpdate + end + object actProjectNew: TAction + Category = 'Project' + Caption = '&New Project...' + ImageIndex = 27 + OnExecute = actProjectNewExecute + end + object actProjectOpen: TFileOpen + Category = 'Project' + Caption = '&Open Project...' + Dialog.DefaultExt = 'kpj' + Dialog.Filter = 'Keyman Developer Project Files (*.kpj)|*.kpj|All Files (*.*)|*.*' + Dialog.Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Hint = 'Open Project|Opens an existing project' + ImageIndex = 28 + ShortCut = 24655 + OnAccept = actProjectOpenAccept + end + object actProjectAddCurrentEditorFile: TAction + Category = 'Project' + Caption = '&Current Editor File' + Hint = + 'Add Current Editor File|Adds the current editor file to the proj' + + 'ect' + OnExecute = actProjectAddCurrentEditorFileExecute + OnUpdate = actProjectAddCurrentEditorFileUpdate + end + object actProjectAddFiles: TFileOpen + Category = 'Project' + Caption = '&Other Files...' + Dialog.Options = [ofHideReadOnly, ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Hint = 'Add Other Files|Adds files from disk to the project' + ImageIndex = 30 + ShortCut = 16463 + OnAccept = actProjectAddFilesAccept + OnUpdate = actProjectAddFilesUpdate + end + object actProjectSettings: TAction + Category = 'Project' + Caption = 'Pro&ject Settings...' + Hint = 'Project Settings|Edit settings for this project' + ImageIndex = 31 + OnExecute = actProjectSettingsExecute + OnUpdate = actProjectSettingsUpdate + end + object actToolsOptions: TAction + Category = 'Tools' + Caption = '&Options...' + ImageIndex = 33 + OnExecute = actToolsOptionsExecute + end + object actToolsVirtualKeyIdentifier: TAction + Category = 'Tools' + Caption = '&Virtual Key Identifier...' + ShortCut = 16459 + OnExecute = actToolsVirtualKeyIdentifierExecute + end + object actHelpAbout: TAction + Category = 'Help' + Caption = '&About...' + ImageIndex = 56 + OnExecute = actHelpAboutExecute + end + object actViewCodeFont: TFontEdit + Category = 'View' + Caption = 'Code F&ont...' + Dialog.OnShow = actViewCodeFontFontDialogShow + Dialog.Font.Charset = DEFAULT_CHARSET + Dialog.Font.Color = clWindowText + Dialog.Font.Height = -11 + Dialog.Font.Name = 'Tahoma' + Dialog.Font.Style = [] + Dialog.Options = [fdApplyButton] + Dialog.OnApply = actViewCodeFontFontDialogApply + Hint = 'Code Font|Set the font for the code editor' + ImageIndex = 26 + BeforeExecute = actViewCodeFontBeforeExecute + OnAccept = actViewCodeFontAccept + OnUpdate = actViewCodeFontUpdate + end + object actViewCharFont: TFontEdit + Category = 'View' + Caption = 'Character &Font...' + Dialog.OnShow = actViewCharFontFontDialogShow + Dialog.Font.Charset = DEFAULT_CHARSET + Dialog.Font.Color = clWindowText + Dialog.Font.Height = -11 + Dialog.Font.Name = 'Tahoma' + Dialog.Font.Style = [] + Dialog.Options = [fdApplyButton] + Dialog.OnApply = actViewCharFontFontDialogApply + Hint = + 'Character Font|Set the font for text in quotes and comments and ' + + 'keyboard views' + ImageIndex = 25 + ShortCut = 24646 + BeforeExecute = actViewCharFontBeforeExecute + OnAccept = actViewCharFontAccept + OnUpdate = actViewCharFontUpdate + end + object actViewExpandEditor: TAction + Category = 'View' + Caption = '&Expand Editor' + ImageIndex = 55 + ShortCut = 122 + OnExecute = actViewExpandEditorExecute + OnUpdate = actViewExpandEditorUpdate + end + object actViewHelp: TAction + Category = 'View' + Caption = 'Context &Help' + ShortCut = 24648 + OnExecute = actViewHelpExecute + OnUpdate = actViewHelpUpdate + end + object actWindowNext: TAction + Category = 'Window' + Caption = '&Next Window' + ShortCut = 16393 + OnExecute = actWindowNextExecute + OnUpdate = actWindowNextUpdate + end + object actWindowPrev: TAction + Category = 'Window' + Caption = '&Previous Window' + ShortCut = 24585 + OnExecute = actWindowPrevExecute + OnUpdate = actWindowPrevUpdate + end + object actWindowClose: TAction + Category = 'Window' + Caption = '&Close' + Hint = 'Close Tab|Closes the active tab' + ImageIndex = 14 + ShortCut = 16499 + OnExecute = actWindowCloseExecute + OnUpdate = actWindowCloseUpdate + end + object actToolsFileFormat: TAction + Category = 'Tools' + Caption = 'File &Format...' + Hint = 'File Format|Set the file format of the current editor file' + OnExecute = actToolsFileFormatExecute + OnUpdate = actToolsFileFormatUpdate + end + object actViewMessageNext: TAction + Category = 'View' + Caption = '&Next Message' + ShortCut = 115 + OnExecute = actViewMessageNextExecute + OnUpdate = actViewMessageNextUpdate + end + object actViewMessagePrevious: TAction + Category = 'View' + Caption = '&Previous Message' + ShortCut = 8307 + OnExecute = actViewMessagePreviousExecute + OnUpdate = actViewMessagePreviousUpdate + end + object actViewTabNext: TAction + Category = 'View' + Caption = '&Next Tab' + SecondaryShortCuts.Strings = ( + 'Alt+PgDn') + ShortCut = 16418 + OnExecute = actViewTabNextExecute + OnUpdate = actViewTabNextUpdate + end + object actViewTabPrevious: TAction + Category = 'View' + Caption = '&Previous Tab' + SecondaryShortCuts.Strings = ( + 'Alt+PgUp') + ShortCut = 16417 + OnExecute = actViewTabPreviousExecute + OnUpdate = actViewTabPreviousUpdate + end + object actHelpCheckForUpdates: TAction + Category = 'Help' + Caption = 'Check for &Updates...' + OnExecute = actHelpCheckForUpdatesExecute + end + object actToolsReloadANSI: TAction + Category = 'Tools' + Caption = 'Reload as ANSI' + OnExecute = actToolsReloadANSIExecute + OnUpdate = actToolsReloadANSIUpdate + end + object actToolsReloadUTF8: TAction + Category = 'Tools' + Caption = 'Reload as UTF-8' + OnExecute = actToolsReloadUTF8Execute + OnUpdate = actToolsReloadUTF8Update + end + object actToolsReloadUTF16: TAction + Category = 'Tools' + Caption = 'Reload as UTF-16' + OnExecute = actToolsReloadUTF16Execute + OnUpdate = actToolsReloadUTF16Update + end + object actToolsReload: TAction + Category = 'Tools' + Caption = 'Reload as format' + end + object actViewDesign: TAction + Category = 'View' + Caption = '&Design view' + ShortCut = 32805 + OnExecute = actViewDesignExecute + OnUpdate = actViewDesignUpdate + end + object actViewCode: TAction + Category = 'View' + Caption = '&Code view' + ShortCut = 32807 + OnExecute = actViewCodeExecute + OnUpdate = actViewCodeUpdate + end + object actProjectClose: TAction + Category = 'Project' + Caption = '&Close Project' + OnExecute = actProjectCloseExecute + OnUpdate = actProjectCloseUpdate + end + object actToolsWebCopyPublicUrl: TAction + Category = 'Tools' + Caption = '&Copy URL to clipboard' + OnExecute = actToolsWebCopyPublicUrlExecute + OnUpdate = actToolsWebCopyPublicUrlUpdate + end + object actToolsWebOpenPublicUrl: TAction + Category = 'Tools' + Caption = '&Open in browser' + OnExecute = actToolsWebOpenPublicUrlExecute + OnUpdate = actToolsWebOpenPublicUrlUpdate + end + object actToolsWebConfigure: TAction + Category = 'Tools' + Caption = 'Co&nfigure...' + OnExecute = actToolsWebConfigureExecute + end + object actToolsWebStartServer: TAction + Category = 'Tools' + Caption = '&Start server' + OnExecute = actToolsWebStartServerExecute + OnUpdate = actToolsWebStartServerUpdate + end + object actToolsWebStopServer: TAction + Category = 'Tools' + Caption = '&Stop server' + OnExecute = actToolsWebStopServerExecute + OnUpdate = actToolsWebStopServerUpdate + end + object actWindowNew: TAction + Category = 'Window' + Caption = '&New window' + OnExecute = actWindowNewExecute + end + end + object ActionManager1: TActionManager + ActionBars = < + item + end> + LinkedActionLists = < + item + ActionList = actionsMain + Caption = 'actionsMain' + end> + Left = 180 + Top = 164 + StyleName = 'XP Style' + end + object ilMain: TImageList + Left = 304 + Top = 236 + Bitmap = { + 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF00000000000000000000000000BDD6 + CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE + C60000000000000000000000000000000000000000000000000000000000BDCE + C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE + D600BDCEC6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF000000000000000000BDD6C600DEE7 + E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF + EF00C6D6CE000000000000000000000000000000000000000000BDCEC600E7EF + E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 + F700DEE7DE00BDD6C60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00188C180029942900399C + 3900399C3900399C3900FFFFFF00A5D6A5004AA54A004AA54A004AA54A0029A5 + 290018A51800009C0000007B0000FFFFFF0000000000BDD6C600DEE7E700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700C6D6CE00000000000000000000000000BDCEC600E7EFE700FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF + F700EFF7F700DEE7DE00BDCEC600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 + 420042A5420042A54200FFFFFF00FFFFFF00A5D6A5004AA54A004AA54A0039A5 + 390021A5210008A50800087B0800FFFFFF00C6DED600D6DEDE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFF7EF00BDCEC60000000000BDD6CE00D6E7DE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00F7FFF700EFF7F700CEDED600BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00A5D6A5004AA54A0039A5 + 390021A5210010A5100008840800FFFFFF00BDD6CE00EFF7EF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00FFFFFF00D6DED600BDDECE00BDD6C600EFF7F700FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00F7FFF700DEEFE700BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00319C31004AA54A0052A5 + 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A50039A5 + 390021A5210018A5180010841000FFFFFF00C6DECE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE00C6D6CE00FFFFFF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00429C420052A552004AA5 + 4A004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 + A500219C2100219C210018841800FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0042A5420052A5520052A5 + 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 + A500219C2100219C2100217B2100FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0052A552005AAD5A005AAD + 5A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A5003194 + 31002994290029942900217B2100FFFFFF00C6D6CE00FFFFFF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE00C6DECE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052AD5200FFFFFF00FFFFFF00FFFFFF00A5D6A500399C39003194 + 31002994290029942900217B2100FFFFFF00BDD6C600EFF7F700FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00F7FFF700DEEFE700BDD6CE00BDD6CE00EFF7EF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00FFFFFF00D6DED600BDDECE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A00FFFFFF00FFFFFF00A5D6A500429C4200429C4200399C + 39003194310031943100217B2100FFFFFF00BDD6CE00D6E7DE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00F7FFF700EFF7F700CEDED600BDD6CE00C6DED600D6DEDE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFF7EF00BDCEC600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B56300FFFFFF00A5D6A5005AAD5A0052A552004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF0000000000BDCEC600E7EFE700FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF + F700EFF7F700DEE7DE00BDCEC6000000000000000000BDD6C600DEE7E700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700C6D6CE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF000000000000000000BDCEC600E7EF + E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 + F700DEE7DE00BDD6C60000000000000000000000000000000000BDD6C600DEE7 + E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF + EF00C6D6CE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF00000000000000000000000000BDCE + C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE + D600BDCEC600000000000000000000000000000000000000000000000000BDD6 + CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 + C600000000000000000000000000000000000000000000000000000000000000 + 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000BDBDBD000000840000007300100000006363630000000000000000000000 + 000000000000000000000000000000000000FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF00FFFFFF0052ADFF0018529400185A + 9C00185A9C00185A9C00185AA500185AA500185A9C00185A9C00185294001852 + 940018528C00184A84004AADFF00FFFFFF00FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF000000000000000000BDBDBD003131 + 31000000AD000000FF000000DE00000042005252520000000000000000000000 + 000000000000000000000000000000000000FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF00FFFFFF00185AA500186BBD001873 + CE001873CE001873CE001873CE001873CE001873CE001873CE001873CE00186B + C600186BBD00185AA500104A7B00FFFFFF00FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF000000000000000000737373000000 + 42000000FF000000FF000000840000319C002121210000000000000000000000 + 000000000000000000000000000000000000FFFFFF00188C180029942900399C + 3900399C3900399C390039A53900A5D6A500FFFFFF0021AD210018AD180010B5 + 100008AD0800009C0000007B0000FFFFFF00FFFFFF001863AD001873CE00187B + DE00187BDE00187BE7001884E700188CF700188CF700188CF700188CF700187B + DE00186BC6001863AD0018528C00FFFFFF00FFFFFF00188C180029942900399C + 3900399C3900399C390039A539004AA54A00A5D6A500FFFFFF004AA54A0031A5 + 310018A51800009C0000007B0000FFFFFF00000000008C8C8C00BDBDBD000000 + 4200000084000000EF000000FF000000CE000000310073737300000000000000 + 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 + 42004AA54A0042A5420042A54200FFFFFF00FFFFFF00FFFFFF0021B5210018B5 + 180010AD100008A50800087B0800FFFFFF00FFFFFF00186BC600187BDE001884 + EF00FFFFFF0084C6FF00188CF700188CF700188CF700188CF70084C6FF00FFFF + FF001873CE00186BBD0018529400FFFFFF00FFFFFF0021942100399C390042A5 + 420042A5420042A542004AA54A00A5D6A500FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210008A50800087B0800FFFFFF000000000000000000001000000000 + AD000000FF000000FF000000FF000000DE001010100000002100525252007373 + 730031009C0000313100A5A5A50000000000FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A0042A5420042AD4200FFFFFF00FFFFFF00FFFFFF0018B5 + 180010AD100010A5100008840800FFFFFF00FFFFFF001873CE001884E700188C + F700188CFF00FFFFFF0084C6FF00188CF700188CF70084C6FF00FFFFFF001884 + E7001873D600186BC600185A9C00FFFFFF00FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210010A5100008840800FFFFFF0000000000BDBDBD00100000000000 + 84000000FF000000CE000000EF0000008400000084000000FF000000BD000000 + 840000006300737373000021000063636300FFFFFF00319C31004AA54A0052A5 + 520052A552004AA54A004AA54A0042A5420039AD3900FFFFFF00FFFFFF00FFFF + FF0018AD180018A5180010841000FFFFFF00FFFFFF00187BDE00188CF700188C + FF00188CF700188CF700FFFFFF0084C6FF0084C6FF00FFFFFF00188CF7001884 + E7001873D6001873CE00185AA500FFFFFF00FFFFFF00319C31004AA54A0052A5 + 52004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210018A5180010841000FFFFFF000000000021212100000021000000 + AD000000FF0000004200000084000000FF000000FF0000007300000042000000 + 420073737300313163000000AD0000006300FFFFFF00429C420052A55200FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00219C210018841800FFFFFF00FFFFFF001884E700188CFF00188C + F700188CF700188CF700188CF700FFFFFF0084C6FF00188CF7001884EF00187B + DE001873CE001873CE001863AD00FFFFFF00FFFFFF00429C420052A552004AA5 + 4A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042A5420031A5 + 3100219C2100219C210018841800FFFFFF00000000008C8C8C0000009C000000 + FF000000EF00000073000000EF000000FF000000EF0000003100100000005252 + 52000000EF000000FF000000DE0031316300FFFFFF0042A542005AAD5A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00219C2100217B2100FFFFFF00FFFFFF001884EF00188CFF00188C + FF00188CF700188CF70084C6FF00FFFFFF00FFFFFF0084C6FF001884E7001873 + D6001873CE001873CE001863AD00FFFFFF00FFFFFF0042A5420052A5520052A5 + 5200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C3900299C + 2900219C2100219C2100217B2100FFFFFF000000000010000000000042000031 + CE000000FF0000009C000000FF000000FF000000EF00000073000000AD000000 + CE000000FF000000FF000000AD0021212100FFFFFF0052A5520063AD630063AD + 63005AAD5A0052A552004AA54A00429C4200399C3900FFFFFF00FFFFFF00FFFF + FF00299C290029942900217B2100FFFFFF00FFFFFF00188CFF002194FF002194 + FF00188CFF0084C6FF00FFFFFF001884F7001884EF00FFFFFF0084C6FF001873 + CE001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552005AAD5A005AAD + 5A0052A55200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C39003194 + 31002994290029942900217B2100FFFFFF00000000008C8C8C00000000000000 + AD000000FF000000EF0000007300000052000031CE000000AD000000EF000000 + EF000000BD0000006300BDBDBD0000000000FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052A552004AA54A00429C4200FFFFFF00FFFFFF00FFFFFF002994 + 29002994290029942900217B2100FFFFFF00FFFFFF00188CFF0039A5FF0039A5 + FF0084C6FF00FFFFFF00188CFF00188CFF001884EF001884E700FFFFFF0084C6 + FF001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052AD5200A5D6A500FFFFFF00FFFFFF00FFFFFF00399C39003194 + 31002994290029942900217B2100FFFFFF000000000000000000000000000000 + 52000000FF000000BD000031CE000000AD00000073003100CE00525252002121 + 21000000AD00000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A0052A55200FFFFFF00FFFFFF00FFFFFF00319C3100319C + 31003194310031943100217B2100FFFFFF00FFFFFF002194FF0052ADFF004AAD + FF00FFFFFF002194FF002194FF001894FF00188CF7001884EF001884E700FFFF + FF001873CE001873CE001863AD00FFFFFF00FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A005AAD5A00A5D6A500FFFFFF00FFFFFF00429C4200399C + 39003194310031943100217B2100FFFFFF0000000000A5A5A500000000000000 + 52000000AD0000005200000073000031FF000000730000005200212121000000 + 100000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B5630063AD6300B5DEB500FFFFFF004AA54A004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF00FFFFFF0039A5FF006BBDFF0052AD + FF0039A5FF00319CFF00299CFF00299CFF002194FF00188CFF001884F7001884 + EF00187BDE001873CE001863AD00FFFFFF00FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B5630063AD630063AD6300A5D6A500FFFFFF004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF000000000000000000000000003131 + 3100000042000000CE000000AD000000DE00000063000000420000004200BDBD + BD0000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF00FFFFFF004AADFF0084C6FF006BBD + FF0052ADFF004AADFF0039A5FF00319CFF00299CFF002194FF001894FF00188C + F7001884EF001873CE00185A9C00FFFFFF00FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF000000000000000000000000000000 + 00008C8C8C002121210000004200313131008C8C8C00BDC6C600000000000000 + 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF00FFFFFF00ADDEFF004AADFF00319C + FF002194FF00188CFF00188CFF00188CF700188CF7001884EF001884E700187B + DE001873CE00186BBD0063B5FF00FFFFFF00FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000 + FFFFFFFF00000000F00FF03F00000000F7EFF7BF00000000F7EFF7BF00000000 + F7EFF78F00000000F7EFF02F00000000F7EFF02F00000000F00FFDEF00000000 + F00FFC0F00000000FFFFFC0F00000000FFFFFFFF00000000FFFFFFFF00000000 + FFFFFFFF00000000FFFFFFFF000000008001F01FF00FFFFF0000E00FE007FFFF + 0000C007C003FFFF000080038001FFFF000000010000F81F000000000000F81F + 000000000000FFFF000000000000FFFF000000000000FFFF000000000000FFFF + 000000000000FFFF000000000001FFFF000080018003FFFF0000C003C007FFFF + 0000E007E00FFFFF8001F00FF01FFFFFFFFF800180018001F07F000000000000 + C07F000000000000C07F000000000000003F0000000000008001000000000000 + 0000000000000000800000000000000000000000000000008000000000000000 + 00010000000000008007000000000000800F000000000000E00F000000000000 + F03F000000000000FFFF80018001800100000000000000000000000000000000 + 000000000000} + end + object ilEditorPages: TImageList + Height = 32 + Width = 32 + Left = 124 + Top = 116 + Bitmap = { + 494C010112004801040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 000000000000360000002800000080000000A000000001002000000000000040 + 0100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF000000000000000000000000000000000000000000000000000000 + 000000000000A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000186BBE003783CC003783CC003783 + CC003783CC003783CC003783CC001267BC003783CC003783CC003783CC003783 + CC003783CC003783CC003783CC003783CC003783CC003783CC003783CC003783 + CC003783CC003783CC003783CC003783CC002071C2003581CB003783CC003783 + CC003783CC003783CC003783CC001267BC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00000000000000000000000000000000000000000000000000000000000000 + 0000A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000156ABD00317EC900317EC900317E + C900317EC900317EC900317EC9001066BB00317EC900317EC900317EC900317E + C900317EC900317EC900317EC900317EC900317EC900317EC900317EC900317E + C900317EC900317EC900317EC900317EC9001C6FC000307DC800317EC900317E + C900317EC900317EC900317EC9001066BB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000003682CB007DB6EA007DB6EA007DB6 + EA007DB6EA007DB6EA007DB6EA002878C5007DB6EA007DB6EA007DB6EA007DB6 + EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6EA007DB6 + EA007DB6EA007DB6EA007DB6EA007DB6EA00488FD30079B3E8007DB6EA007DB6 + EA007DB6EA007DB6EA007DB6EA002878C5000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000003E88CF0091C5F20091C5F20091C5 + F20091C5F20091C5F20091C5F2002F7CC80091C5F20091C5F20091C5F20091C5 + F20091C5F20091C5F20091C5F20091C5F20091C5F20091C5F20091C5F20091C5 + F20091C5F20091C5F20091C5F20091C5F2005397D8008CC1F00091C5F20091C5 + F20091C5F20091C5F20091C5F2002F7CC8000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE0000000000A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CAFF00A8CA + FF00A8CAFF00A8CAFF00A8CAFF0000000000CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D6003883CC0082BAEC0082BAEC0082BA + EC0082BAEC0082BAEC0082BAEC002A79C60082BAEC0082BAEC0082BAEC0082BA + EC0082BAEC0082BAEC0082BAEC0082BAEC0082BAEC0082BAEC0082BAEC0082BA + EC0082BAEC0082BAEC0082BAEC0082BAEC004A91D4007EB7EA0082BAEC0082BA + EC0082BAEC0082BAEC0082BAEC002A79C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007394DE000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C60000000000A8CAFF00A8CA + FF00A8CAFF000000000000000000000000000000000000000000000000000000 + 0000A8CAFF00A8CAFF00A8CAFF00000000000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6007394DE003D87CE008DC2F1008DC2F1008DC2 + F1008DC2F1008DC2F1008DC2F1002D7CC7008DC2F1008DC2F1008DC2F1008DC2 + F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2F1008DC2 + F1008DC2F1008DC2F1008DC2F1008DC2F1005196D70088BFEE008DC2F1008DC2 + F1008DC2F1008DC2F1008DC2F1002D7CC7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF0000000000A8CAFF00A8CA + FF00000000007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C10000000000A8CAFF00A8CAFF0000000000FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF0000000000A8CAFF000000 + 00007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC10000000000A8CAFF0000000000FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A50000000000A8CAFF000000 + 00007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC10000000000A8CAFF0000000000A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF0000000000A8CAFF000000 + 00007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC10000000000A8CAFF0000000000A5A5A500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C600166ABD003380CA003380CA003380 + CA003380CA003380CA003380CA001066BB003380CA003380CA003380CA003380 + CA003380CA003380CA003380CA003380CA003380CA003380CA003380CA003380 + CA003380CA003380CA003380CA003380CA001D6FC000317EC9003380CA003380 + CA003380CA003380CA003380CA001066BB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A6A2A600000000007F9A + C1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC1007F9AC10000000000FFF0FF00A5A5A500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A79FA7000E0E0E007F9A + C1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC1007F9AC10000000000AD94AD00A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFF2FF00101010007F9A + C1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC1007F9AC1003A3A3A00A5A3A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFEEFF000A0A + 0A007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1007F9A + C1007F9AC10000000000FFF8FF00A8A8A800FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C600166ABE003480CA003480CA003480 + CA003480CA003480CA003480CA001166BB003480CA003480CA003480CA003480 + CA003480CA003480CA003480CA003480CA003480CA003480CA003480CA003480 + CA003480CA003480CA003480CA003480CA001E70C100327FCA003480CA003480 + CA003480CA003480CA003480CA001166BB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500ACAC + AC001D1D1D00000000007F9AC1007F9AC1007F9AC1007F9AC1007F9AC1000000 + 000000000000AD94AD00ADADAD00A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00AEAEAE001F1F1F0000000000000000000000000000000000AC96 + AC00FFF8FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5000042C600478ED300A6D4FB00A6D4FB00A6D4 + FB00A6D4FB00A6D4FB00A6D4FB003581CB00A6D4FB00A6D4FB00A6D4FB00A6D4 + FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB00A6D4 + FB00A6D4FB00A6D4FB00A6D4FB00A6D4FB005FA0DD00A0D0F900A6D4FB00A6D4 + FB00A6D4FB00A6D4FB00A6D4FB003581CB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00FFFFFF000042C6002D7BC70068A7E10068A7E10068A7 + E10068A7E10068A7E10068A7E1002273C20068A7E10068A7E10068A7E10068A7 + E10068A7E10068A7E10068A7E10068A7E10068A7E10068A7E10068A7E10068A7 + E10068A7E10068A7E10068A7E10068A7E1003C86CE0065A4DF0068A7E10068A7 + E10068A7E10068A7E10068A7E1002273C2000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00FFFFFF000042C6004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007394DE000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6007394DE004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004B91D400AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF00AFDBFF0064A4DF00A9D6FC00AFDBFF00AFDB + FF00AFDBFF00AFDBFF00AFDBFF003883CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002072C2004A91D4004A91D4004A91 + D4004A91D4004A91D4004A91D400186CBE004A91D4004A91D4004A91D4004A91 + D4004A91D4004A91D4004A91D4004A91D4004A91D4004A91D4004A91D4004A91 + D4004A91D4004A91D4004A91D4004A91D4002B79C600488FD3004A91D4004A91 + D4004A91D4004A91D4004A91D400186CBE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004242420042424200424242004242 + 4200424242004242420063636300848484004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600ADADAD00D6D6D600CECECE00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600ADADAD00D6D6D600CECECE00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D6D6 + D600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600A5A5A500D6D6D600C6C6C600C6C6C600C6C6C6008484 + 8400848484008484840084848400848484008484840084848400C6C6C600C6C6 + C600C6C6C600C6C6C6008484840084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D6D6D600D6D6 + D600848484006363630063636300424242004242420063636300636363008484 + 8400D6D6D600D6D6D60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600BDBDBD00B5B5B500B5B5 + B500B5B5B500B5B5B5009C9C9C00C6C6C600BDBDBD00B5B5B500B5B5B5008484 + 8400B5B5B500B5B5B500B5B5B500B5B5B500B5B5B50084848400B5B5B500B5B5 + B500B5B5B50084848400C6C6BD00BDBDBD008484840084848400C6C6C600CECE + CE00CECECE00CECECE0084848400848484000000000000000000000000000000 + 0000FFFFFF00FFFFFF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00F7F7F700FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000D6D6D600636363006363 + 6300A5A5A500C6C6C600D6D6D600D6D6D600D6D6D600D6D6D600C6C6C600A5A5 + A5006363630063636300D6D6D600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000315AC6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C600315AC600E7E7E700C6C6C600C6C6C60084848400CECE + CE00CECECE00CECECE00CECECE0084848400FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFEFEF00DEDEDE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600E7E7E700F7F7F700FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000D6D6D600CECECE0063636300C6C6C600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600C6C6C60063636300CECECE00D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600B5B5B500F7F7F700C6C6C60084848400CECE + CE00CECECE00CECECE00CECECE00CECECE00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00E7E7E700DEDEDE0000000000000000000000000000000000000000000000 + 0000D6D6D600E7E7E700F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C6C6C60042424200C6C6C600DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00637BD600DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00C6C6C60042424200C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E700F7F7F70084848400C6C6C600D6D6 + D600D6D6D600D6D6D60084848400D6D6D600DEDEDE00D6D6D600D6D6D600D6D6 + D600CECECE00CECECE00000000000031A5000031A5000031A5000031A5000031 + A50000000000D6D6D600E7E7E700E7E7E700EFEFEF00EFEFEF00F7F7F700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600637BD600E7E7E700E7E7 + E700E7E7E700DEDEDE00DEDEDE00C6C6C60063636300D6D6D600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 + 42004242420042424200424242004242420042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E700C6C6C60084848400D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600848484000000000000000000000000000000 + 00000000000000000000000000000031A5000031A5000031A5000031A5000031 + A5000031A50000000000CECECE00CECECE00D6D6D600D6D6D600E7E7E700E7E7 + E700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00F7F7F700FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00DEDEDE00E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600315AC600637BD600E7E7 + E700E7E7E700DEDEDE00DEDEDE00DEDEDE00C6C6C60063636300D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C6009C9C9C00A5A5A500C6C6C600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D60000000000E7E7E700D6D6D600C6C6 + C600B5B5B500A5A5A500000000000042C6000042C6000042C6000042C6000042 + C6000042C6000031A50000000000000000000000000000000000CECECE00CECE + CE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600E7E7E700EFEFEF00F7F7 + F700FFFFFF000000000000000000000000000000000000000000000000000000 + 000000000000D6D6D60063636300DEDEDE00DEDEDE00DEDEDE00637BD600315A + C600315AC600315AC600315AC600315AC600315AC6000042C600315AC600637B + D600E7E7E700DEDEDE00DEDEDE00DEDEDE00DEDEDE0063636300D6D6D6000000 + 000000000000000000000000000000000000000000000000000000000000CECE + CE0000000000000000000000000000000000000000000000000000000000CECE + CE000000000000000000000000000000000000000000CECECE00000000000000 + 00000000000000000000000000000000000000000000CECECE00000000000000 + 00000000000000000000CECECE00000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600C6C6C600D6D6D600DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 + 00000000000000000000000000000031A5000031A5000031A5000031A5000031 + A5000031A5000031A5000031A5000031A5000031A50000000000000000000000 + 00000000000000000000000000000000000000000000CECECE00D6D6D600E7E7 + E700F7F7F700FFFFFF0000000000000000000000000000000000000000000000 + 00000000000084848400A5A5A500E7E7E700E7E7E700E7E7E700315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C600315A + C600637BD600E7E7E700E7E7E700E7E7E700E7E7E700A5A5A500848484000000 + 00000000000000000000000000000000000000000000000000000042C600CECE + CE000000000000000000000000000000000000000000000000000042C600CECE + CE00000000000000000000000000000000000042C600CECECE00000000000000 + 0000000000000000000000000000B1C3ED000042C600B1C3ED00CECECE000000 + 0000000000000042C600CECECE00000000000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C600C6C6C600D6D6D600DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 + 00000000000000000000000000000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C60000000000E7E7E700DEDE + DE00DEDEDE00CECECE00CECECE00CECECE00C6C6C6000000000000000000D6D6 + D600E7E7E700F7F7F700FFFFFF00000000000000000000000000000000000000 + 00000000000063636300C6C6C600E7E7E700E7E7E700E7E7E700315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C600315AC600637BD600E7E7E700E7E7E700E7E7E700C6C6C600636363000000 + 00000000000000000000000000000000000000000000000000004576DB00B1C3 + ED00CECECE0000000000000000000000000000000000B1C3ED004576DB000000 + 00000000000000000000CECECE00CECECE000042C600CECECE00000000000000 + 0000CECECE0000000000000000000042C600CECECE000042C600000000000000 + 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C6004A4A4A004242420042424200424242004242 + 42004242420042424200424242004242420000000000D6D6D600D6D6D600CECE + CE00CECECE00CECECE00000000000031A5000031A5000031A5000031A5000042 + C6000042C600315AC600315AC600315AC600315AC60000000000FFFFFF00FFFF + FF00FFFFFF00F7F7F700F7F7F700EFEFEF00E7E7E700DEDEDE00CECECE000000 + 0000D6D6D600E7E7E700F7F7F700FFFFFF000000000000000000000000000000 + 00000000000063636300E7E7E700E7E7E700E7E7E700E7E7E700315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C600315AC600637BD600E7E7E700E7E7E700E7E7E700636363000000 + 0000000000000000000000000000000000000000000000000000B1C3ED000042 + C600CECECE00CECECE00CECECE00CECECE00CECECE000042C600B1C3ED000000 + 0000B1C3ED004576DB004576DB00B1C3ED000042C600CECECE00000000004576 + DB00CECECE0000000000000000000042C6000042C600B1C3ED00000000000000 + 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000315AC600315AC600315AC600315AC600315A + C6007394DE00EFEFEF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 00000000000000000000000000005A5A5A00FFFFFF00FFFFFF00EFEFEF00DEDE + DE0000000000D6D6D600E7E7E700F7F7F7000000000000000000000000000000 + 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C600315AC600637BD600EFEFEF00EFEFEF00424242000000 + 0000000000000000000000000000000000000000000000000000000000004576 + DB000042C6000042C6000042C6000042C6000042C6004576DB00000000000000 + 00004576DB00CECECE007394DE004576DB000042C600CECECE00B1C3ED004576 + DB000000000000000000000000000042C600CECECE0000000000000000000000 + 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 00000000000000000000000000000000000000000000E7E7E700D6D6D600C6C6 + C600B5B5B500A5A5A50000000000EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00EFEFEF007394DE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000DEDEDE00000000005A5A5A00FFFFFF00F7F7 + F700E7E7E70000000000D6D6D600EFEFEF000000000000000000000000000000 + 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C600315AC600637BD600EFEFEF00EFEFEF00424242000000 + 000000000000000000000000000000000000000000000000000000000000B1C3 + ED000042C600CECECE0000000000000000000042C600B1C3ED00000000000000 + 00000042C600CECECE0000000000000000000042C6000042C6004576DB00B1C3 + ED000000000000000000000000004576DB007394DE00CECECE00000000000000 + 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000007394DE007394DE007394DE007394DE007394 + DE00315AC6000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DEDEDE005A5A5A00FFFF + FF00FFFFFF00EFEFEF0000000000E7E7E7000000000000000000000000000000 + 00000000000063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C600315AC600637BD600EFEFEF00EFEFEF00EFEFEF00636363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00004576DB00B1C3ED0000000000B1C3ED004576DB0000000000000000000000 + 00004576DB00000000007394DE004576DB000042C600CECECE00000000000000 + 0000000000000000000000000000000000000042C6007394DE00000000000000 + 0000000000000042C600CECECE00000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000315AC600315AC600315AC600315AC600315A + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DEDEDE000000 + 0000FFFFFF00FFFFFF0000000000D6D6D6000000000000000000000000000000 + 00000000000063636300C6C6C600EFEFEF00EFEFEF00EFEFEF00315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C600315AC600637BD600EFEFEF00EFEFEF00EFEFEF00C6C6C600636363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000B1C3ED000042C600CECECE000042C600B1C3ED0000000000000000000000 + 0000B1C3ED004576DB004576DB00B1C3ED000042C600CECECE00000000000000 + 00000000000000000000000000000042C600B1C3ED00CECECE00000000000000 + 0000000000004576DB0000000000000000000042C600FFFFFF00FFFFFF004242 + 420042424200424242004242420042424200FFFFFF0042424200424242004242 + 4200424242004242420042424200FFFFFF004242420042424200424242004242 + 4200FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005A5A + 5A00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 00000000000084848400A5A5A500F7F7F700F7F7F700F7F7F700315AC6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C600315A + C600637BD600F7F7F700F7F7F700F7F7F700F7F7F700A5A5A500848484000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004576DB00000000004576DB000000000000000000000000000000 + 0000CECECE00CECECE00CECECE00CECECE000042C600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00B1C3ED000042C60000000000CECECE00CECE + CE004576DB00B1C3ED0000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DEDE + DE0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 + 000000000000D6D6D60063636300F7F7F700F7F7F700F7F7F700637BD600315A + C600315AC600315AC600315AC600315AC600315AC6000042C600315AC600637B + D600E7E7E700F7F7F700F7F7F700F7F7F700F7F7F70063636300D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000B1C3ED000042C600B1C3ED000000000000000000000000000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000000000000000000B1C3ED004576DB000042C6004576 + DB00B1C3ED000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005A5A5A00FFFFFF00FFFFFF00525252000000000000000000000000000000 + 0000000000000000000063636300D6D6D600F7F7F700F7F7F700F7F7F700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600315AC600637BD600E7E7 + E700E7E7E700F7F7F700F7F7F700F7F7F700D6D6D60063636300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 + 420042424200424242004242420042424200424242004242420042424200FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000084848400FFFFFF00FFFFFF00848484000000000000000000000000000000 + 000000000000000000000000000063636300D6D6D600FFFFFF00FFFFFF00E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700315AC600637BD600E7E7E700E7E7 + E700E7E7E700FFFFFF00FFFFFF00D6D6D6006363630000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000A5A5A500F7F7F700F7F7F700A5A5A5000000000000000000000000000000 + 00000000000000000000000000000000000042424200D6D6D600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00637BD600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00D6D6D600424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C6C6C600F7F7F700F7F7F700BDBDBD000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C60063636300D6D6D600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D6D6D60063636300C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 + 42004242420042424200424242004242420042424200FFFFFF00424242004242 + 4200424242004242420042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DEDEDE00FFFFFF00FFFFFF00DEDEDE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000636363006363 + 6300A5A5A500C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600A5A5 + A500636363006363630000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D6D6 + D600848484006363630063636300424242004242420063636300636363008484 + 8400D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF004242 + 4200424242004242420042424200424242004242420042424200FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600E7E7E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000315AC6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C600315AC600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D6D6 + D600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00D6D6D60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BDBDBD00B5B5B500C6C6 + C600D6D6D600DEDEDE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000637BD600315AC6000042C6000042 + C600315AC600637BD6008494C6008494C600ADADAD00BDBDBD00CECECE00D6D6 + D600DEDEDE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002963 + CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000315AC600EFDED600F7F7E700F7F7E700F7F7 + E700D6D6CE00CECEC600A5A59C00637BD600315AC6000042C6000042C600315A + C600637BD6008494C6009C9C9C00ADADAD00BDBDBD00D6D6D600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002963 + CE00FFFFFF00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C60084848400ADADAD00D6D6D600EFEFEF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFDED600F7F7E700F7F7E700F7F7 + E700F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00CECE + C600C6C6BD00637BD600315AC6000042C6000042C6008494C600DEDEDE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002963 + CE00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C60063636300636363007373730094949400B5B5B500D6D6 + D600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFDED600F7F7E7007B7B73006B6B + 63007B7B73007B7B73006B6B6B00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7F7 + F700F7FFF700FFFFF700FFFFF700FFFFF700FFFFF700315AC600D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002963 + CE00FFFFFF00FFFFFF000042C6000042C600FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C6006B6B6B006363630063636300636363006B6B6B007B7B + 7B0094949400C6C6C600EFEFEF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7D600F7F7E700F7F7E700F7F7 + EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7FF + F700FFFFF700FFFFF700FFFFF700FFFFF700FFFFFF000042C600D6D6D6000000 + 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002963 + CE00FFFFFF00FFFFFF000042C6000042C6000042C600FFFFFF000042C600FFFF + FF00FFFFFF000042C600CECECE00ADADAD00848484006B6B6B00636363006363 + 63006363630063636300737373009C9C9C00C6C6C600EFEFEF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7D600F7F7E7007B7B73007B7B + 73007B7B73006B6B6B009C9C9400F7F7EF00F7F7EF00F7F7F700F7FFF700F7FF + F700FFFFF700FFFFF700FFFFF700FFFFFF00FFFFFF000042C600D6D6D6000000 + 0000000000000000000000000000000000004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 420042424200424242004242420042424200D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000000000002963 + CE00FFFFFF00FFFFFF00FFFFFF000042C6000042C6000042C6000042C600FFFF + FF00FFFFFF000042C600E7E7E700E7E7E700D6D6D600BDBDBD009C9C9C008484 + 84006B6B6B006363630063636300636363006B6B6B0084848400ADADAD00DEDE + DE00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7D600F7F7EF00F7F7EF00F7F7 + EF00F7F7EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7FFF700F7FFF700FFFF + F700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00D6D6D600D6D6D600424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242000000000000000000000000002963 + CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C6000042C6000042C600FFFF + FF00FFFFFF000042C600E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE00CECE + CE00B5B5B500949494007B7B7B00636363006363630063636300636363008484 + 8400DEDEDE000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 + EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7F7F700F7FFF700FFFFF700FFFF + F700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400424242004242420042424200424242004242420042424200424242008484 + 8400CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6 + D600D6D6D600D6D6D600D6D6D60042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000002963 + CE00FFFFFF00FFFFFF00FFFFFF000042C6000042C6000042C6000042C600FFFF + FF00FFFFFF000042C600F7F7F700EFEFEF00E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700DEDEDE00C6C6C6009C9C9C006B6B6B0063636300636363006363 + 6300ADADAD000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 + EF00F7F7EF00F7F7EF00F7F7EF00F7F7F700F7FFF700FFFFF700FFFFF700FFFF + F700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200DEDEDE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600C6C6C6004242 + 4200CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D60042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000002963 + CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C600FFFFFF00FFFFFF00EFEFEF00E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700DEDEDE009494940063636300636363006363 + 6300949494000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00E7E7DE00B5BDB500D6D6 + CE00F7F7EF00F7F7EF00F7F7F700F7FFF700F7FFF700FFFFF700FFFFF700FFFF + F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600CECECE004242 + 4200DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE004242 + 4200CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600424242008484840084848400848484008484 + 84008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600849CCE001852 + D6004A73D6009CADD600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000002963 + CE002963CE002963CE002963CE002963CE002963CE002963CE002963CE002963 + CE002963CE000042C600FFFFFF00FFFFFF00FFFFFF00F7F7F700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700B5B5B50063636300636363006363 + 6300BDBDBD000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00E7E7DE00B5BDB5008C8C + 84007B7B7B006B6B6B007B7B7B007B7B7B006B6B6B007B7B7B009C9C9C00BDBD + BD00BDBDBD00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600CECECE00CECECE00CECECE008484 + 8400424242004242420042424200424242004242420042424200424242008484 + 8400CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D60042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C6001852E700294A + C6004263CE001039D6002152E7006B8CDE00ADBDD600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 000000000000BDBDBD008C8C8C0094949400D6D6D600F7F7F700CECECE00F7F7 + F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700ADADAD0063636300636363007373 + 7300DEDEDE000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 + EF00F7F7F700F7F7F700F7FFF700FFFFF700FFFFF700FFFFF700CECECE00BDBD + BD00ADADAD0084847B00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600424242008484840084848400CECECE00CECE + CE00CECECE0084848400CECECE00CECECE00CECECE009CB5D6001842D600E7EF + CE00FFF7CE00E7E7CE0094A5CE003152CE001042DE004273E7009CADCE00CECE + CE00CECECE00CECECE0042424200424242004242420042424200CECECE00CECE + CE00CECECE00CECECE00CECECE00424242000000000000000000000000000000 + 0000E7E7E700A5A5A5008C8C8C009C9C9C00EFEFEF00D6D6D6009C9C9C00EFEF + EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEF + EF00E7E7E700E7E7E700E7E7E700DEDEDE008C8C8C0063636300636363009494 + 9400000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7EF007B7B7B006B6B + 6B007B7B7B007B7B7B006B6B6B007B7B7B008C8C8C00BDBDBD00BDBDBD00EFEF + EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D60042424200CECECE00CECECE0084848400CECE + CE00CECECE0084848400CECECE00CECECE00CECECE00849CE7007394E700FFFF + FF00FFFFF700FFF7DE00FFEFCE00FFF7CE00BDC6CE000839C600316BDE00CECE + CE00CECECE00CECECE0042424200CECECE00CECECE00CECECE00CECECE004242 + 4200CECECE00CECECE0042424200CECECE000000000000000000000000000000 + 0000CECECE00949494008C8C8C00BDBDBD00F7F7F700B5B5B500ADADAD00F7F7 + F700FFFFFF00E7E7E700ADADAD00ADADAD00FFFFFF00FFFFFF00FFFFFF00F7F7 + F700E7E7E700E7E7E700E7E7E700CECECE0073737300636363006B6B6B00BDBD + BD00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7EF00F7F7EF00F7F7 + F700F7FFF700F7FFF700FFFFF700FFFFF700DEDEDE00BDBDBD00BDBDBD008484 + 7B008484840073737300DEDEDE00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C600D6D6D600D6D6D600D6D6D60042424200CECECE00CECECE00CECECE008484 + 8400CECECE0084848400CECECE00CECECE00CECECE00527BEF00BDCEF700DEDE + F700FFFFFF00FFFFFF00FFF7E700FFEFCE00FFF7CE00294AC6004A7BD600CECE + CE00CECECE00CECECE00CECECE0042424200CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE000000000000000000000000000000 + 0000B5B5B5008C8C8C008C8C8C00DEDEDE00EFEFEF0094949400ADADAD00EFEF + EF00CECECE009C9C9C00A5A5A500DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00EFEFEF00E7E7E700E7E7E700A5A5A500636363006363630084848400DEDE + DE00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7EF009C9C94007B7B + 7B006B6B6B007B7B7B007B7B7B00ADADAD00BDBDBD00BDBDBD00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200C6C6C600CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600DEDEDE00424242008484840084848400CECECE008484 + 8400CECECE0084848400CECECE00CECECE00B5C6DE004A73E700B5BDEF00BDC6 + EF00ADB5E700C6CEEF00FFFFFF00FFEFCE00D6DECE000031CE009CB5DE00CECE + CE00CECECE00CECECE00CECECE00CECECE0042424200CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE0042424200000000000000000000000000E7E7 + E7009C9C9C008C8C8C00A5A5A500F7F7F700D6D6D6008C8C8C008C8C8C00ADAD + AD009C9C9C00BDBDBD00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00EFEFEF00E7E7E700D6D6D6008C8C8C006363630063636300A5A5A5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7F700F7F7F700F7FF + F700FFFFF700FFFFF700FFFFF700BDBDBD00BDBDBD00ADADAD0084847B008484 + 8400737373009C9C9C00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600DEDEDE00DEDEDE004242420084848400D6D6D600D6D6D6008484 + 8400D6D6D60084848400D6D6D600D6D6D6007B94E700849CE700848CDE005273 + D600B5BDEF00FFFFFF00FFFFFF00FFF7DE007B8CC6001852E700CECED600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D60042424200D6D6D6004242 + 4200D6D6D600D6D6D600D6D6D600D6D6D600000000000000000000000000CECE + CE008C8C8C008C8C8C00C6C6C600F7F7F700B5B5B500ADADAD00ADADAD008C8C + 8C00DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700E7E7E700BDBDBD00737373006363630073737300C6C6C6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7F7F700F7FFF700FFFF + F700FFFFF700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200CECECE00CECECE00CECE + CE000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C600DEDEDE00DEDEDE00DEDEDE0042424200D6D6D600D6D6D60084848400D6D6 + D600D6D6D60084848400D6D6D600D6D6D6006B8CEF00B5C6F70094A5E7008CA5 + E700EFF7FF00FFFFFF00FFFFFF00F7FFE700294AC600638CDE00D6D6D600D6D6 + D600D6D6D600D6D6D60042424200D6D6D600D6D6D60042424200D6D6D600D6D6 + D600D6D6D600D6D6D60042424200D6D6D600000000000000000000000000ADAD + AD008C8C8C0094949400D6D6D600EFEFEF009C9C9C00CECECE00DEDEDE008C8C + 8C00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700E7E7E7009C9C9C00636363006363630084848400E7E7E7000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7FFF700F7FFF700FFFF + F700FFFFF700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00424242008484840084848400D6D6D600D6D6 + D600D6D6D60084848400D6D6D600D6D6D600B5BDDE0094ADF700D6E7FF00D6DE + F700D6DEF700FFFFFF00FFFFFF00CECEE7000031D600A5BDDE00D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D6004242420042424200D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D60042424200000000000000000000000000BDBD + BD008C8C8C0094949400CECECE00E7E7E700BDBDBD00EFEFEF00FFFFFF00ADAD + AD00B5B5B500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700CECECE00848484006363630063636300ADADAD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00F7FFF700BDBDB500BDBD + B500CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE0042424200D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D60084848400D6D6D600D6D6D600D6D6D600D6D6D600BDC6D600A5B5 + E700B5CEFF00E7EFFF00F7FFFF00637BD600215AE700D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600000000000000000000000000E7E7 + E700A5A5A5008C8C8C00ADADAD00EFEFEF00F7F7F700FFFFFF00FFFFFF00DEDE + DE009C9C9C00E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700B5B5B5006B6B6B00636363006B6B6B00DEDEDE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7DE00FFFFF700BDBDB500BDBD + BD009C9C9C007B7B7B007B847B00DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600D6D6D600D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00424242008484840084848400848484008484 + 84008484840084848400DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00D6D6D600ADBDDE008C9CE7002952DE008CA5DE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 + 0000E7E7E700C6C6C600A5A5A500B5B5B500D6D6D600EFEFEF00FFFFFF00FFFF + FF00D6D6D600EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00EFEFEF009494940063636300636363008484840000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600EFE7E700FFFFF700DEDED600FFFF + F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E752000042424200DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 + 0000000000000000000000000000D6D6D600BDBDBD00ADADAD00BDBDBD00DEDE + DE00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00E7E7E700737373006363630063636300B5B5B50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600F7E7E700FFFFF7008C8C8C007B7B + 7B007B7B7B0084847B008C8C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 00000000000000000000000000000000000042424200E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E752000042424200DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D6D6D600B5B5 + B500ADADAD00C6C6C600DEDEDE00EFEFEF00FFFFFF00FFFFFF00FFFFFF00F7F7 + F700ADADAD00636363006363630073737300E7E7E70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600F7E7E700FFFFF700FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 000000000000000000000000000000000000C6C6C60042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200C6C6C6004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000E7E7E700CECECE00BDBDBD00BDBDBD00CECECE00DEDEDE00DEDEDE00C6C6 + C6007B7B7B006363630063636300949494000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600F7E7E7008C8C8C00BDBDBD00FFFF + FF00D6D6D600C6C6C600FFF7F700FFF7F700EFD6D600FFFFFF00FFFFFF00F7EF + EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E7E7E700C6C6C600B5B5B500A5A5A5009494 + 94006B6B6B006363630073737300CECECE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C600E7CECE00636363006B6B6B00EFCE + CE00636363007B7B7B00B5ADB500EFDEDE006363630084848400FFFFFF007373 + 730073737300F7DEDE006363630084848400EFE7EF000042C600D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00DEDEDE00B5B5 + B5007B7B7B0084848400C6C6C600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000637BD600637BD600315AC60063636300315A + C600315AC6007B7B7B008494C600315AC600315AC6006B6B6B008494C6008494 + C600737373008494C6008494C600848484009C9C9C00637BD600EFEFEF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006B6B6B008C8C8C00848484008C8C + 8C008C8C8C007B7B7B0094949400848484008C8C8C007B7B7B00315AC600637B + D6006B6B6B00315AC600315AC6007B7B7B007B7B7B008494C600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CECECE00EFEFEF00F7F7 + F700B5B5B500C6C6C600F7F7F700A5A5A50094949400CECECE00BDBDBD007B7B + 7B009C9C9C00BDBDBD006B6B6B006B6B6B00D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000042 + C600D6D6D600D6D6D60000000000000000000000000000000000000000000042 + C600D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000E7E7E700DEDEDE00DEDEDE00DEDEDE00DEDEDE00E7E7E7000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000042 + C6000042C600CECECE00000000000000000000000000000000000042C6000042 + C600CECECE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000E7E7E700D6D6 + D600C6C6CE009CADCE006384CE004A73C600527BC6006B8CC60094A5CE00C6CE + CE00D6D6D600DEDEDE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DEDEDE00D6D6D6000042 + C6000042C600C6C6C600D6D6D6000000000000000000000000000042C6000042 + C600C6C6C600CECECE00D6D6D600DEDEDE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000E7E7E700CECECE008C9CCE00295A + C6000042C600104AC600295AC6002963CE00215AC600215AC600104AC6000042 + C6001852C6008494C600CECECE00DEDEDE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C6000042C6000042C6000042 + C6000042C6000042C600CECECE0000000000000000000042C6007394DE000042 + C6000042C6000042C6000042C600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D6D6D600CECE + CE00D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DEDEDE009CADC6001052C600084AC600527B + CE00CED6DE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700D6DE + E7006B8CD600084AC600084AC6007B94C600D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000042C6007394DE000042 + C6000042C6000042C600C6C6C600D6D6D600000000000042C6007394DE007394 + DE000042C6000042C60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000042C6002963CE00ADB5 + EF00CECECE000000000000000000000000000000000000000000000000000000 + 00000000000000000000DEDEDE005A7BC6000042C6004273CE00DEDEE700E7E7 + E700E7E7E700E7E7E700DEDEDE00D6D6D600E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E7006B8CD6000042C600396BC600CECED600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000042C6007394 + DE000042C6000042C6000042C600C6C6C6000042C6007394DE007394DE000042 + C6000042C600E7E7E70000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000042C6000042C6000042C6002963 + CE00D6D6D6000000000000000000000000000000000000000000000000000000 + 000000000000DEDEDE005A7BC600084AC600ADBDDE00E7E7E700E7E7E700E7E7 + E700E7E7E700BDBDBD006B6B6B0063636300A5A5A500E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700B5C6DE00104AC600295AC600CED6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE000042 + C6007394DE000042C6000042C600ADADAD000042C6007394DE000042C6000042 + C600C6C6C600CECECE00CECECE00D6D6D6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000042C6000042C6000042C600ADB5EF002963 + CE00000000000000000000000000000000000000000000000000000000000000 + 0000E7E7E7006B8CC6000842C600BDC6DE00E7E7E700E7E7E700E7E7E700E7E7 + E700DEDEDE006B6B6B00636363006363630063636300C6C6C600BDBDBD00DEDE + DE00E7E7E700E7E7E700E7E7E700E7E7E700CED6DE00104AC600396BC600DEDE + DE0000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D6008484840042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 42000042C6007394DE000042C6000042C6007394DE000042C6000042C6004A4A + 4A00424242004242420042424200848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000042C6000042C6000042C600ADB5EF002963CE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000ADB5CE000042C60094A5D600E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700C6C6C6006363630063636300636363006363630094949400ADADAD00B5B5 + B500E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700BDCEDE00084AC600849C + C600000000000000000000000000000000007394DE000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6007394DE0042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C6000042C6000042C6000042C6000042C600C6C6C600D6D6 + D600EFEFEF00FFFFFF00FFFFFF00424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000042C6000042C6000042C600ADB5EF002963CE00000000000000 + 000000000000000000000000000000000000000000000000000000000000E7E7 + E7002152C6004273CE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700B5B5B5006363630063636300636363006363630084848400D6D6D600B5B5 + B500E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E7007B94CE00084A + C600D6D6DE000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F7000042C6000042C6000042C6000042C6000042C6000042C600C6C6 + C600D6D6D600F7F7F700FFFFFF00424242000000000000000000000000000000 + 00000000000000000000000000000000000000000000D6D6D600CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600000000000000 + 00000042C6000042C6000042C600ADB5EF002963CE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009CAD + CE000042C600E7E7EF00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700A5A5A500636363006363630063636300636363007B7B7B00E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE001852 + C6006384C6000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C600CECECE00F7F7F700FFFFFF00424242000000000000000000000000000000 + 00000000000000000000E7E7E700CECECE00ADB5EF007394DE00315AC6000042 + C6000042C6000042C600315AC6007394DE00ADB5EF00BDBDBD00C6C6C6000042 + C6000042C6000042C600ADB5EF002963CE00E7E7E70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003163 + C6004273CE00FFFFFF00E7E7E700E7E7E700E7E7E700C6C6C6008C8C8C009494 + 94006B6B6B006363630063636300636363006363630063636300DEDEDE00E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700638C + CE001852C600E7E7E70000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000042C6007394DE000042C6000042C6000042C6000042C6000042C6000042 + C600CECECE00F7F7F700FFFFFF0042424200D6D6D600CECECE00CECECE00CECE + CE00CECECE00C6C6C600ADB5EF000042C600315AC600BDC6CE00F7EFCE00F7EF + CE0084848400F7EFCE00F7EFCE00BDC6CE00315AC6000042C600315AC600ADB5 + EF002963CE00ADB5EF002963CE00C6C6C600CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00D6D6D6000000000000000000E7E7E7000842 + C600A5BDDE00FFFFFF00F7F7F700E7E7E700ADADAD0063636300636363006363 + 630063636300636363006363630063636300636363006363630094949400E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700CED6 + D6000042C600ADBDD60000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000042C6007394DE000042C6000042C6000042C6000042C6000042C6000042 + C600D6D6D600F7F7F700FFFFFF0042424200A5A5A50042424200424242004242 + 420042424200848484000042C600BDC6CE00F7EFCE00F7EFCE00F7EFCE00F7EF + CE0084848400F7EFCE00F7EFCE00F7EFCE00F7EFCE00BDC6CE000042C6002963 + CE00ADB5EF002963CE004A4A4A00424242004242420042424200424242004242 + 4200424242004242420042424200A5A5A5000000000000000000ADBDD6000042 + C600F7F7F700FFFFFF00FFFFFF00C6C6C6006363630063636300636363006363 + 630063636300636363006363630063636300636363006363630063636300CECE + CE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDE + DE001852C6007394CE0000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000042C6007394DE007394DE000042C6000042C6000042C6000042C6000042 + C600EFEFEF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF009C9C + 9C00ADB5EF000042C60084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484000042 + C600315AC600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00424242000000000000000000849CCE001852 + C600F7F7F700FFFFFF00FFFFFF009C9C9C006363630063636300636363006363 + 630063636300636363006363630063636300636363006363630063636300A5A5 + A500E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDE + DE003163C6004A73C60000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000042C6007394DE007394DE007394DE000042C6000042C600EFEF + EF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF009C9C + 9C000042C600ADB5EF00FFFFFF00F7EFCE00F7EFCE0084848400F7EFCE00F7EF + CE00F7EFCE00F7EFCE00F7EFCE0084848400F7EFCE00F7EFCE00F7EFCE00BDC6 + CE000042C600C6C6C60094949400F7F7F700FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF004242420000000000000000006B8CCE001852 + C600F7F7F700FFFFFF00FFFFFF00A5A5A5006363630063636300636363006363 + 63006363630063636300636363006363630073737300CECECE00D6D6D600CECE + CE00E7E7E700E7E7E700E7E7E7008C8C8C00C6C6C600E7E7E700E7E7E700DEDE + DE00426BC6003163C60000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000042C6000042C6000042C6000042C600F7F7F700FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A5008484 + 8400315AC600FFFFFF00FFFFFF00F7EFCE00F7EFCE0084848400F7EFCE00F7EF + CE00F7EFCE00F7EFCE00F7EFCE0084848400F7EFCE00F7EFCE00F7EFCE00F7EF + CE00315AC600A5A5A500949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5004242420000000000000000006B8CCE002963 + C600F7F7F700FFFFFF00FFFFFF00B5B5B5007B7B7B0063636300636363006363 + 630063636300636363006363630063636300ADADAD00848484006B6B6B00ADAD + AD00E7E7E700E7E7E700C6C6C60063636300A5A5A500E7E7E700E7E7E700DEDE + DE004273C6004273C60000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF007394 + DE00ADB5EF0084848400C6C6C600FFFFFF00F7EFCE0084848400F7EFCE008484 + 8400C6C6C600F7EFCE00F7EFCE0084848400F7EFCE0084848400F7EFCE00F7EF + CE00BDC6CE007394DE00CECECE00F7F7F700A5A5A500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000849CD6001852 + C600EFEFEF00FFFFFF00FFFFFF00DEDEDE008C8C8C0073737300636363006363 + 6300636363006363630063636300636363007373730063636300636363006B6B + 6B00D6D6D600E7E7E7008C8C8C006363630094949400E7E7E700E7E7E700DEDE + DE003163BD004A73CE0000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF00315A + C600FFFFFF0084848400C6C6C600FFFFFF00F7EFCE0084848400F7EFCE00C6C6 + C60084848400F7EFCE00F7EFCE0084848400F7EFCE0084848400C6C6C600F7EF + CE00F7EFCE00315AC600CECECE00F7F7F700A5A5A500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000B5C6E7000842 + C600E7E7E700FFFFFF00FFFFFF00FFFFFF00ADADAD008C8C8C006B6B6B00BDBD + BD00D6D6D600BDBDBD00C6C6C600848484006363630063636300A5A5A500ADAD + AD00A5A5A500A5A5A50063636300636363006B6B6B00C6C6C600CECECE009494 + 9400104ABD007394D60000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A5000042 + C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400F7EFCE00F7EF + CE00F7EFCE00F7EFCE00F7EFCE0084848400F7EFCE00F7EFCE00F7EFCE00F7EF + CE00F7EFCE000042C600949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500424242000000000000000000EFEFF7000042 + C6009CADCE00F7F7F700FFFFFF00E7E7E700ADADAD00F7F7F700F7F7F700BDBD + BD00DEDEDE00C6C6C600949494006B6B6B006363630063636300636363006363 + 6300636363006363630063636300636363006363630063636300636363006B6B + 6B000042C600CED6EF0000000000000000000042C600FFFFFF00FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF000042 + C600848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484000042C600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000003163 + C600426BC600E7E7E700FFFFFF00DEDEDE00A5A5A500ADADAD00CECECE00ADAD + AD008C8C8C0073737300ADADAD00737373006363630063636300636363006363 + 630063636300636363006363630063636300636363006363630063636300425A + 9400104AC6000000000000000000000000000042C600A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A5000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF000042 + C600FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00F7EFCE00F7EF + CE0084848400F7EFCE00F7EFCE00F7EFCE00F7EFCE00F7EFCE0084848400F7EF + CE00F7EFCE000042C600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000009CB5 + DE000842C600C6C6D600F7F7F700FFFFFF00FFFFFF009C9C9C008C8C8C008C8C + 8C008C8C8C0073737300B5B5B500CECECE007B7B7B0063636300636363006363 + 63006363630063636300636363006363630063636300636363006B6B6B00084A + BD006B8CD6000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A500315A + C600FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EF + CE0084848400F7EFCE00F7EFCE00F7EFCE00F7EFCE00F7EFCE0084848400F7EF + CE00BDC6CE00315AC600949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500FFFFFF00FFFFFF00424242000000000000000000000000000000 + 0000215AC600426BC600DEDEDE00F7F7F700CECECE00D6D6D600C6C6C600C6C6 + C600B5B5B5008C8C8C00848484006B6B6B006363630063636300636363006363 + 630063636300636363006363630063636300636363006B6B6B00426394000842 + C600000000000000000000000000000000000042C600FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFF + FF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00FFFFFF000042C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF007394 + DE00ADB5EF00FFFFFF0084848400FFFFFF0084848400FFFFFF00FFFFFF00FFFF + FF0084848400F7EFCE0084848400C6C6C600F7EFCE00F7EFCE0084848400F7EF + CE00BDC6CE007394DE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00424242000000000000000000000000000000 + 0000C6CEEF000042C6009CADCE00D6D6D600ADADAD00E7E7E700FFFFFF00A5A5 + A500E7E7E7009C9C9C008C8C8C008C8C8C007B7B7B006B6B6B00636363006363 + 6300636363006363630063636300636363006B6B6B00636B7B000042C60084A5 + DE00000000000000000000000000000000007394DE000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6007394DE0042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF00ADB5 + EF00315AC600FFFFFF0084848400FFFFFF0084848400C6C6C600FFFFFF00FFFF + FF0084848400FFFFFF0084848400C6C6C600F7EFCE00F7EFCE0084848400F7EF + CE00315AC600CECECE009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFF + FF00A5A5A500FFFFFF00FFFFFF00424242000000000000000000000000000000 + 0000000000005A84D6000042C600ADB5CE00C6C6C600EFEFEF00FFFFFF00C6C6 + C600949494008C8C8C00949494008C8C8C008C8C8C008C8C8C00848484007373 + 73006363630063636300636363006B6B6B00636B7B00104ABD003163CE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200A5A5A500A5A5A500A5A5 + A5000042C600ADB5EF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFCE0084848400BDC6 + CE000042C600949494009C9C9C00A5A5A500A5A5A500A5A5A500A5A5A500A5A5 + A500A5A5A500A5A5A500A5A5A500424242000000000000000000000000000000 + 00000000000000000000527BD600084AC6009CADCE00D6D6D600EFEFEF00F7F7 + F700C6C6C600BDBDBD00F7F7F7009C9C9C008C8C8C008C8C8C008C8C8C008C8C + 8C008C8C8C00848484007B7B7B006B738400084AC6002963CE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200FFFFFF00FFFFFF00A5A5 + A500ADB5EF000042C60084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484000042 + C600ADB5EF009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000000000 + 00000000000000000000000000007394DE000042C600527BC600C6C6CE00DEDE + DE00E7E7E700EFEFEF00F7F7F700DEDEDE00949494008C8C8C008C8C8C008C8C + 8C008C8C8C00848484004A6BA5000042C600396BCE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 42004242420042424200424242008484840042424200FFFFFF00FFFFFF00A5A5 + A500FFFFFF00ADB5EF000042C600ADB5EF00FFFFFF0084848400FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084848400FFFFFF00ADB5EF000042C600ADB5 + EF00F7F7F7009C9C9C00FFFFFF00FFFFFF00A5A5A500FFFFFF00FFFFFF00A5A5 + A500FFFFFF00FFFFFF00FFFFFF00424242000000000000000000000000000000 + 000000000000000000000000000000000000CED6F700215ACE000042C6005A7B + C600A5ADC600CECECE00CECECE00D6D6D600C6C6C6008C8C8C0084848400737B + 8C004263AD00084AC600084AC6009CB5E7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000A5A5A50042424200424242004242 + 42004242420042424200636363000042C600315AC60084848400FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084848400315AC6000042C600636363004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200A5A5A5000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000ADC6EF002963 + CE000042C6000042C600215AC6002963C6002963C6001852C6000842C6000042 + C6001852C6006B94DE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ADB5EF007394DE00315AC6000042 + C6000042C6000042C600315AC6007394DE00ADB5EF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000B5CEEF006B94DE00638CDE00638CDE00739CDE00ADBDEF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DEDE + DE00DEDEDE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DEDEDE00CECE + CE00CECECE00DEDEDE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6 + D600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF0000000000C6C6 + C600CECECE00DEDEDE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF0000000000C6C6 + C600D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000D6D6D600CECECE0042424200DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF0000000000C6C6C600CECE + CE00DEDEDE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000D6D6D600CECECE00CECECE00D6D6D600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D6D6 + D600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200DEDEDE004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D6D6 + D600D6D6D600DEDEDE0000000000FFFFFF00FFFFFF0000000000BDBDBD00CECE + CE00DEDEDE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000002963CE004273D6004273D6002963CE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D6D6D600D6D6 + D600848484006363630063636300424242004242420063636300636363008484 + 8400D6D6D600D6D6D60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000D6D6D600CECECE0042424200DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE0042424200DEDEDE004242 + 420000000000000000000000000000000000D6D6D600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE000000000000000000C6C6C600B5B5 + B500ADADAD0000000000FFFFFF00FFFFFF0000000000ADADAD00ADADAD00B5B5 + B500C6C6C600CECECE00CECECE00D6D6D6000000000000000000000000000000 + 000000000000000000000000000000000000D6D6D600CECECE00D6D6D6000000 + 000000000000D6D6D6002963CE00CECECE00CECECE002963CE00D6D6D6000000 + 000000000000D6D6D600CECECE00D6D6D6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000D6D6D600636363006363 + 6300A5A5A500C6C6C600D6D6D600D6D6D600D6D6D600D6D6D600C6C6C600A5A5 + A5006363630063636300D6D6D600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000315AC6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C600315AC600DEDEDE0042424200E7E7E7004242 + 4200000000000000000000000000000000004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 42004242420042424200424242004242420000000000FFFFFF00000000005252 + 52005A5A5A0000000000FFFFFF00FFFFFF00000000005A5A5A005A5A5A004A4A + 4A00424242004242420042424200424242000000000000000000000000000000 + 0000000000000000000000000000D6D6D600A5BDF7002963CE00A5BDF700CECE + CE00CECECE00A5BDF7004273D600CECECE00CECECE004273D600A5BDF700CECE + CE00CECECE00A5BDF7002963CE00A5BDF700D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000D6D6D600CECECE0063636300C6C6C600D6D6 + D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6 + D600D6D6D600C6C6C60063636300CECECE00D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE000042C600DEDEDE0042424200E7E7E7004242 + 42000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 000000000000FFFFFF00FFFFFF0000000000A5A5A500A5A5A500A5A5A500ADAD + AD00B5B5B500B5B5B500BDBDBD00424242000000000000000000000000000000 + 0000000000000000000000000000A5BDF7000042C600CECECE000042C600A5BD + F7002963CE000042C600CECECE00CECECE00CECECE00CECECE000042C6002963 + CE00A5BDF7000042C600CECECE000042C600A5BDF70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C6C6C60042424200C6C6C600DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00C6C6C60042424200C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE000042C600E7E7E70042424200E7E7E7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF0000000000FFFFFF00FFFFFF0000000000BDBDBD00C6C6C600C6C6C600CECE + CE00D6D6D600DEDEDE00B5B5B500424242000000000000000000000000000000 + 00000000000000000000000000002963CE00CECECE00CECECE00CECECE000042 + C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE000042C600CECECE00CECECE00CECECE002963CE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00DEDE + DE00DEDEDE00315AC6000042C6000042C6000042C6000042C600315AC600DEDE + DE00DEDEDE00DEDEDE00DEDEDE00C6C6C60063636300D6D6D600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE000042C600E7E7E70042424200E7E7E7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000CECECE00DEDEDE00B5B5B500424242000000000000000000000000000000 + 0000000000000000000000000000A5BDF7000042C600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE000042C600A5BDF70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000D6D6D60063636300C6C6C600DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00315AC6000042C6000042C600315AC600DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00C6C6C60063636300D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E7000042C600E7E7E70042424200E7E7E7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECE + CE00D6D6D600EFEFEF00BDBDBD00424242000000000000000000000000000000 + 000000000000000000000000000000000000A5BDF7000042C600CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE000042C600A5BDF7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000D6D6D60063636300DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00315AC6000042C6000042C600315AC600DEDEDE00DEDE + DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE0063636300D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E7000042C600E7E7E70042424200EFEFEF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00D6D6 + D600EFEFEF00F7F7F700BDBDBD00424242000000000000000000000000000000 + 0000000000000000000000000000D6D6D6002963CE00CECECE00CECECE00CECE + CE00CECECE00CECECE000042C6000042C6000042C6000042C600CECECE00CECE + CE00CECECE00CECECE00CECECE002963CE00D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000084848400A5A5A500E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700315AC6000042C6000042C600315AC600E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700A5A5A500848484000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E7000042C600E7E7E70042424200EFEFEF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00D6D6D600EFEF + EF00F7F7F700FFFFFF00C6C6C600424242000000000000000000000000000000 + 000000000000D6D6D600CECECE00A5BDF7000042C600CECECE00CECECE00CECE + CE00CECECE000042C600000000000000000000000000000000000042C600CECE + CE00CECECE00CECECE00CECECE000042C600A5BDF700CECECE00D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000063636300C6C6C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700315AC6000042C6000042C600315AC600E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700C6C6C600636363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E7000042C600EFEFEF0042424200EFEFEF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00D6D6D600EFEFEF00F7F7 + F700FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000002963CE004273D6004273D600CECECE00CECECE00CECECE00CECE + CE000042C6000000000000000000000000000000000000000000000000000042 + C600CECECE00CECECE00CECECE00CECECE004273D6004273D6002963CE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000063636300E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700315AC6000042C6000042C600315AC600E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700636363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7 + E700E7E7E700E7E7E700E7E7E7000042C600EFEFEF0042424200EFEFEF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0000000000CECECE00D6D6D600EFEFEF00F7F7F700FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000004273D600CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE000042C6000000000000000000000000000000000000000000000000000042 + C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE004273D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00315AC6000042C6000042C600315AC600EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200EFEFEF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000000CECECE00D6D6D600EFEFEF00F7F7F700FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000004273D600CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE000042C6000000000000000000000000000000000000000000000000000042 + C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE004273D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00637BD6000042C6000042C6000042C600315AC600EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200EFEFEF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF0000000000CECECE00D6D6D600EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000004273D6004273D6004273D600CECECE00CECECE00CECECE00CECE + CE000042C600D6D6D60000000000000000000000000000000000D6D6D6000042 + C600CECECE00CECECE00CECECE00CECECE004273D6004273D6004273D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00636363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200F7F7F7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000 + 0000CECECE00D6D6D600EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000A5BDF7000042C600CECECE00CECECE00CECE + CE00CECECE000042C600CECECE00CECECE00CECECE00CECECE000042C600CECE + CE00CECECE00CECECE00CECECE000042C600A5BDF70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000063636300C6C6C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00C6C6C600636363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000042C600EFEFEF0042424200F7F7F7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000000000DEDE + DE00DEDEDE00EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000000000002963CE00CECECE00CECECE00CECE + CE00CECECE00CECECE000042C6000042C6000042C6000042C600CECECE00CECE + CE00CECECE00CECECE00CECECE002963CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000084848400A5A5A500F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700ADB5EF00315AC600315AC600ADB5EF00F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700A5A5A500848484000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000042C600F7F7F70042424200F7F7F7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000F7F7F700EFEF + EF00EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000D6D6D600A5BDF7000042C600CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE000042C600A5BDF700D6D6D60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000D6D6D60063636300F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F7000042C6000042C6000042C6000042C600F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F70063636300D6D6D6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000042C600F7F7F70042424200F7F7F7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00F7F7 + F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000A5BDF7000042C600CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE00CECECE00CECECE00CECECE000042C600A5BDF70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000063636300D6D6D600F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F7000042C6000042C6000042C6000042C600F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700D6D6D60063636300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F7000042C600F7F7F70042424200F7F7F7004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 00000000000000000000000000002963CE00CECECE00CECECE00CECECE000042 + C600CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE + CE000042C600CECECE00CECECE00CECECE002963CE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000063636300D6D6D600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00ADB5EF00315AC600315AC600ADB5EF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00D6D6D6006363630000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F7000042C600F7F7F70042424200FFFFFF004242 + 42000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000A5BDF7000042C600CECECE000042C600A5BD + F7002963CE000042C600CECECE00CECECE00CECECE00CECECE000042C6002963 + CE00A5BDF7000042C600CECECE000042C600A5BDF70000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000042424200D6D6D600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00D6D6D600424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F7000042C600F7F7F70042424200424242000000 + 00000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 000000000000000000000000000000000000A5BDF7002963CE00A5BDF7000000 + 000000000000A5BDF7004273D600CECECE00CECECE004273D600A5BDF7000000 + 000000000000A5BDF7002963CE00A5BDF7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C60063636300D6D6D600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D6D6D60063636300C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F7000042C600FFFFFF0042424200000000000000 + 00000000000000000000000000000000000042424200C6C6C600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000004273D600CECECE00CECECE004273D600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000636363006363 + 6300A5A5A500C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600A5A5 + A500636363006363630000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7 + F700F7F7F700F7F7F700F7F7F7000042C6004242420000000000000000000000 + 00000000000000000000000000000000000042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000004273D6004273D6004273D6004273D600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D6D6 + D600848484006363630063636300424242004242420063636300636363008484 + 8400D6D6D6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00315AC6000042 + C6000042C6000042C6000042C6000042C6000000000000000000000000000000 + 00000000000000000000000000000000000042424200E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600FFFF + FF00FFFFFF00FFFFFF000042C600000000000000000000000000000000000000 + 00000000000000000000000000000000000042424200E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000E7520000E7520000E7520000E7520000E752 + 0000E7520000E7520000E7520000424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600FFFF + FF00FFFFFF000042C60000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C60042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C600FFFF + FF000042C6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000042C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000042C6000042 + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000315AC6000042C6000042C6000042C6000042C6000042C6000042C6000042 + C6000042C6000042C6000042C6000042C6000042C6000042C6000042C6000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000A00000000100010000000000000A00000000000000000000 + 000000000000000000000000FFFFFF00FF8000FFFFFFFFFF0000000000000000 + FF8000FFFFFFFFFF0000000000000000FF8000FFFFFFFFFF0000000000000000 + FF8000FF000000000000000000000000FF8000FF000000000000000000000000 + FF8000FF000000000000000000000000FF8000FF000000000000000000000000 + FF8000FF000000000000000000000000FF8000FF000000000000000000000000 + FF8000FF000000000000000000000000FF8000FF000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF + 00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFE007FFFFFFFFFF + 00000000F807FFFFFFC003FFFFFFFFFF00000000F003FFFFFF8001FFFFFFFFFF + 000000000001FFFFFE00007FFFFFFFFF0000000000001FFFFE00007FFFFFFFFF + 000000000000003FFC00003FFFFFFFFF000000000000000FF800001FFFFFFFFF + 0000000000000007F800001FEFEFBFBD0000000000000003F800001FCFCF3E19 + 00000000FC000001F800001FC79C36390000000080000000F800001FC0102639 + 000000FF00000000F800001FE0300E79000000FF00003E00F800001FE3330E39 + 000000FF0003FF80F800001FF2743F39000000FFFC07FFC0F800001FF0703E3B + 000000FFFC0FFFE0F800001FFAF00043000000FFFFFFFFE0F800001FF8E00307 + 000000FFFFFFFFF0FC00003FFFFFFFFF000000FFFFFFFFF0FE00007FFFFFFFFF + 000000FFFFFFFFF0FF0000FFFFFFFFFF000000FFFFFFFFF0FF0000FFFFFFFFFF + 000000FFFFFFFFF0FFC003FFFFFFFFFF000000FFFFFFFFFFFFE007FFFFFFFFFF + 000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF + 000000FFFFFFFFFFFFFFFFFFFFFFFFFF000001FFFFFFFFFFFFFFFFFFFFFFFFFF + 000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + E003FFFFFF83FFFFFFFFFFFFFFFFFFFFE003FFFFFF0007FFFFFFFFFFFFFFFFFF + E003FFFFFE00003FFFFFFFFFFFFFFFFFE0003FFFFE00001FFFFFFFFFFFFFFFFF + E0000FFFFE00001FFFFFFFFFFFFFFFFFE00001FFFE00001F00000000FFFFFFFF + E000003FFE00001F0000000000000000E000000FFE00001F0000000000000000 + E0000007FE00001F0000000000000000E0000007FE00001F0000000000000000 + E0000007FE00001F0000000000000000E0000007FE00001F0000000000000000 + F8000007FE00001F0000000000000000F000000FFE00001F0000000000000000 + F000000FFE00001F0000000000000000F000000FFE00001F0000000000000000 + E000001FFE00001F0000000000000000E000001FFE00001F0000000000000000 + E000001FFE00001F0000000000000000E000003FFE00001F0000000000000000 + E000003FFE00001F0000000000000000F000007FFE00001F0000000000000000 + FE00007FFE00001F0000000000000000FFC0007FFE00001F0000000000000000 + FFF000FFFE00001FFFFFFFFFFFFFFFFFFFFE00FFFE00001FFFFFFFFFFFFFFFFF + FFFF81FFFE00001FFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFFFFFFFFFFFFFFFF + FFFFFFFFFF80007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E7FFFFFFFF + FFF81FFFFFFFFFFFFFFFE3C7FFFFFFFFFFC003FFFFFFFFFFFFFF81C0FFFFFFFF + FF0000FFFFFFFFFFFFFF0181FFFFFFC7FE00007FFFFFFFFFFFFF8083FFFFFF87 + FC00003FFFFFFFFFFFFFC003FFFFFF07F800001FFFFFFFFF00000000FFFFFE0F + F000000F0000000000000000FFFFFC1FF000000F0000000000000000FFFFF83F + E00000070000000000000000FF80307FE00000070000000000000000FC00007F + E0000003000000000000000000000000C0000003000000000000000000000000 + C0000003000000000000000000000000C0000003000000000000000000000000 + C0000003000000000000000000000000C0000003000000000000000000000000 + C0000003000000000000000000000000C0000003000000000000000000000000 + C0000003000000000000000000000000E0000007000000000000000000000000 + E0000007000000000000000000000000F000000F000000000000000000000000 + F000000F000000000000000000000000F800001FFFFFFFFF0000000000000000 + FC00003FFFFFFFFF0000000000000000FE00007FFFFFFFFF0000000000000000 + FF0000FFFFFFFFFFFFFFFFFF00000000FFC003FFFFFFFFFFFFFFFFFFFF007FFF + FFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF03FFFFFFFFFFFFFFFFFF00000FFFFFFE03FFFFFFFFFFFFFFFFFF00000F + FFFFFE07FFFFFFFFFFFFFFFFFC00000FFFFFFC07FFFC3FFFFFE007FFFC00000F + FFFF6007FFFC3FFFFFC003FFF000000F00000000FF1818FFFF8001FFF000000F + 00000000FE00007FFE00007FF000000F00000000FE00007FFE00007FF000000F + 00000000FE00007FFC00003FF000000F00000000FE00007FF800001FF000000F + 00000000FF0000FFF800001FF000000F00000000FE00007FF800001FF000000F + 00000000F803C01FF800001FF000000F00000000F807E01FF800001FF000000F + 00000000F807E01FF800001FF000000F00000000F807E01FF800001FF000000F + 00000000F803C01FF800001FF000000F00000000FE00007FF800001FF000000F + 00000000FF0000FFF800001FF000000F00000000FE00007FF800001FF000000F + 00000000FE00007FFC00003FF000000F00000000FE00007FFE00007FF000000F + 00000000FE00007FFF0000FFF000001F00000000FF1818FFFF0000FFF000003F + 00000000FFFC3FFFFFC003FFF000007F00000000FFFC3FFFFFE007FFF00000FF + 00000000FFFFFFFFFFFFFFFFF00001FF00000000FFFFFFFFFFFFFFFFF00003FF + 00000000FFFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF + FFFFFFFFFFFFFFFFFFFFFFFFF0001FFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/developer/src/tike/actions/dmActionsMain.pas b/developer/src/tike/actions/dmActionsMain.pas index 8bf5a3a299..c5338dfea4 100644 --- a/developer/src/tike/actions/dmActionsMain.pas +++ b/developer/src/tike/actions/dmActionsMain.pas @@ -78,9 +78,6 @@ type actFileSaveAs: TFileSaveAs; actFileSaveCopyAs: TAction; actFileRevert: TAction; - actFilePageSetup: TFilePageSetup; - actFilePrint: TAction; - actFilePrintPreview: TAction; actFileExit: TFileExit; actEditCut: TKMDEditCut; actEditCopy: TKMDEditCopy; @@ -144,15 +141,10 @@ type procedure actFileSaveExecute(Sender: TObject); procedure actFileSaveCopyAsExecute(Sender: TObject); procedure actFileRevertExecute(Sender: TObject); - procedure actFilePrintPreviewExecute(Sender: TObject); - procedure actFilePrintExecute(Sender: TObject); - procedure actFilePrintPreviewUpdate(Sender: TObject); - procedure actFilePrintUpdate(Sender: TObject); procedure actFileSaveAsAccept(Sender: TObject); procedure actFileSaveCopyAsUpdate(Sender: TObject); procedure actFileSaveAsUpdate(Sender: TObject); procedure actFileRevertUpdate(Sender: TObject); - procedure actFilePageSetupUpdate(Sender: TObject); procedure actFileSaveUpdate(Sender: TObject); procedure actFileSaveAsBeforeExecute(Sender: TObject); procedure actViewCharacterMapExecute(Sender: TObject); @@ -256,7 +248,6 @@ uses Graphics, Messages, Keyman.Developer.UI.TikeOnlineUpdateCheck, - Printers, Vcl.Clipbrd, Keyman.System.KeyboardUtils, Keyman.Developer.System.Project.Project, @@ -348,34 +339,6 @@ begin actFileOpen.Enabled := IsGlobalProjectUIReady; end; -procedure TmodActionsMain.actFilePageSetupUpdate(Sender: TObject); -begin - with frmKeymanDeveloper do - actFilePageSetup.Enabled := IsGlobalProjectUIReady and Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintActions) and (Printer.Printers.Count > 0); -end; - -procedure TmodActionsMain.actFilePrintExecute(Sender: TObject); -begin - (frmKeymanDeveloper.ActiveChild as IKMDPrintActions).PrintFile; -end; - -procedure TmodActionsMain.actFilePrintUpdate(Sender: TObject); -begin - with frmKeymanDeveloper do - actFilePrint.Enabled := IsGlobalProjectUIReady and Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintActions) and (Printer.Printers.Count > 0); -end; - -procedure TmodActionsMain.actFilePrintPreviewExecute(Sender: TObject); -begin - (frmKeymanDeveloper.ActiveChild as IKMDPrintPreviewActions).PrintPreview; -end; - -procedure TmodActionsMain.actFilePrintPreviewUpdate(Sender: TObject); -begin - with frmKeymanDeveloper do - actFilePrintPreview.Enabled := IsGlobalProjectUIReady and Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintPreviewActions) and (Printer.Printers.Count > 0); -end; - procedure TmodActionsMain.actFileRevertExecute(Sender: TObject); begin if MessageDlg('Are you sure you want to revert to the last saved version?', diff --git a/developer/src/tike/child/UfrmEditor.dfm b/developer/src/tike/child/UfrmEditor.dfm index 0af3d38484..3ab284045d 100644 --- a/developer/src/tike/child/UfrmEditor.dfm +++ b/developer/src/tike/child/UfrmEditor.dfm @@ -1,743 +1,735 @@ -inherited frmEditor: TfrmEditor - Left = 96 - Top = 288 - Caption = 'frmEditor' - ClientHeight = 228 - Icon.Data = { - 0000010004001010100000000000280100004600000010100000000000006803 - 00006E0100002020100000000000E8020000D60400002020000000000000A80C - 0000BE0700002800000010000000200000000100040000000000C00000000000 - 0000000000001000000000000000000000000000800000800000008080008000 - 00008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF00 - 0000FF00FF00FFFF0000FFFFFF00000000000000000000007000000000000000 - 7880000000000007788880000000000778777880000000778877777880000077 - 80777777F88007780780777FF78007780087777F78007780707777FF78007F87 - 807777F7800077FF77777FF780000077FF777F770000000077FFFF7800000000 - 0077F7800000000000007F800000FFFFFFFFF1FFFFFFF07FFFFFE01FFFFFE007 - FFFFC001FFFFC001FFFF8001FFFF8003FFFF0003FFFF0007FFFF0007FFFFC00F - FFFFF00FFFFFFC1FFFFFFF1FFFFF280000001000000020000000010018000000 - 0000400300000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008494A5636B7B515D690000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00008494A5636B7B637384637384515D69000000000000000000000000000000 - 0000000000000000000000000000008C9CAD8C9CAD6B7B8C7384946373846B73 - 846B7B8C515D6900000000000000000000000000000000000000000000000094 - A5B58C9CAD7384947B8C9C8494A594A5AD6B7B8C737B94738494515D69000000 - 0000000000000000000000009CADB594A5B56B7B9473849C8C94A58C9CAD9CAD - B5ADB5BDB5C6CE7384947384947B8C9C515D690000000000000000009CADB59C - ADB57384940000008C9CAD9CA5B5A5ADBDB5BDC6BDC6CEC6D6D6D6DEE77B8C9C - 6B7B8C000000000000ADB5BDA5B5BD6B84940000008C94A594A5AD000000ADBD - C6B5C6CEC6CED6D6DEDEDEE7E77B8C9C6B7B8C000000000000ADB5C6ADBDC673 - 849C000000000000737B94ADB5BDB5C6CEBDCED6CED6DEDEE7E78494A57B8C9C - 000000000000B5C6CEB5BDC67384940000008C9CAD000000A5B5BDB5BDC6BDC6 - CECED6DED6DEE7E7E7EF8C94A56B7B8C000000000000BDC6CEE7EFEF7B8C9C8C - 9CA594A5AD000000ADBDC6BDC6CEC6CED6D6DEDEDEE7E7949CAD8C9CAD000000 - 000000000000BDC6CEE7EFEFE7E7EFDEE7E79CADB5A5B5BDB5C6CEBDCED6D6DE - DEDEDEE7E7EFEF94A5AD6B7B8C000000000000000000000000000000BDC6CEDE - E7E7DEDEE7D6DEE7BDC6CECED6DED6DEE7E7E7EF9CADB59CA5B5000000000000 - 000000000000000000000000000000000000BDC6CED6DEE7D6DEE7D6DEDEE7E7 - EFEFEFEFA5B5BD6B7B8C00000000000000000000000000000000000000000000 - 0000000000000000BDC6CED6DEDED6DEDEADBDC6ADB5C6000000000000000000 - 000000000000000000000000000000000000000000000000000000000000BDC6 - CECED6DE6B7B8C000000000000000000000000000000FFFFFFFFF1FFFFFFF07F - FFFFE01FFFFFE007FFFFC001FFFFC001FFFF8001FFFF8003FFFF0003FFFF0007 - FFFF0007FFFFC00FFFFFF00FFFFFFC1FFFFFFF1FFFFF28000000200000004000 - 0000010004000000000080020000000000000000000000000000000000000000 - 0000000080000080000000808000800000008000800080800000C0C0C0008080 - 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000078800000000000000000000000000000778880000000000000000000000 - 0000777888880000000000000000000000007777888888000000000000000000 - 0007777887888888000000000000000000077788787788888800000000000000 - 0077778887787788888800000000000000777888777777778888880000000000 - 07777887878777777788888800000000077788787777777777F7888888800000 - 77778800787777777777F7888780000077788800777777777F7F7FF778000007 - 77788007870077777777FF77780000077788800700087777F77FFF7780000077 - 778800000877777777FFF77780000077788800008777777F7F7FF77800000777 - 788007807777777777FF77780000077788700770877777F77FFF77800000777F - F887787007777777FFF7778000007FFFFFF7777007777F7F7FF778000000077F - FFFFF77777777777FF777800000000077FFFFFF77777F77FFF77800000000000 - 077FFFFFF77777FFF77780000000000000077FFFFFF77F7FF778000000000000 - 0000077FFFFFF7FF7778000000000000000000077FFFFFFF7780000000000000 - 00000000077FFFF777800000000000000000000000077FFF7800000000000000 - 000000000000077FF8000000000000000000000000000007700000000000FFFF - FFFFFFCFFFFFFF83FFFFFF80FFFFFF003FFFFF000FFFFE0003FFFE0000FFFC00 - 003FFC00000FF8000003F8000001F0000001F0000003E0000003E0000007C000 - 0007C000000F8000000F8000001F0000001F0000003F8000003FE000007FF800 - 007FFE0000FFFF8000FFFFE001FFFFF801FFFFFE03FFFFFF83FFFFFFE7FF2800 - 000020000000400000000100180000000000800C000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000515D69515D6900000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 008494A55A6B7B636B7B515D69515D6900000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 008494A57B8C9C637384636B7B637384515D69515D6900000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008494 - A58494A58494A5636B7B637384637384637384637384515D69515D6900000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008C9C - A58494A58494A58494A56373846373846373846B73846373846B7B8C515D6951 - 5D69000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000008C9CAD8C9C - A58C9CAD8494A56B7B8C6B7B947384946B73846373846B7B8C6B73846B7B8C6B - 7B8C515D69515D69000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000008C9CAD94A5 - AD8C9CA56B7B8C6B7B9473849473849C7B8C9C8C94A56B7B8C6B7B8C6B7B8C6B - 7B8C6B7B8C6B7B8C515D69515D69000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000094A5AD94A5B58C9C - AD8C9CAD6B7B8C7384947384947B8C9C8494A58494A58C9CAD94A5AD6B7B8C6B - 7B8C6B7B8C737B946B7B8C738494515D69515D69000000000000000000000000 - 00000000000000000000000000000000000000000000000094A5B594A5AD94A5 - AD6B7B8C6B7B947384947B8C9C8494A58494A58C9CAD949CAD9CA5B59CADB5A5 - B5BD6B7B8C7384946B7B8C738494737B94738494515D69515D69000000000000 - 0000000000000000000000000000000000000000009CADB59CA5B594A5B594A5 - AD6B7B9473849473849C7B8C9C8C94A58C9CA58C9CAD94A5B59CADB5A5ADBDAD - B5BDADBDC6B5C6CE737B947384947384947384947384947B8C9C515D69515D69 - 0000000000000000000000000000000000000000009CADB59CA5B59CADB56B7B - 8C6B7B947B8C9C7B8C9C8494A58494A58C9CAD94A5AD9CA5B59CADBDA5B5BDAD - BDC6B5BDC6B5C6CEC6CED6C6CED67384947384947B8C9C7384947B8C9C73849C - 6B7B8C000000000000000000000000000000A5ADBD9CADB59CADB59CADB56B7B - 947384940000000000008494A58C9CAD94A5AD9CA5B59CADB5A5ADBDADB5C6B5 - BDC6B5C6CEBDC6CEC6CED6C6D6D6CED6DED6DEE77384947B8C9C7B8C9C6B7B8C - 6B7B8C000000000000000000000000000000A5B5BDA5ADBD9CADB5737B947384 - 947B8C9C0000000000008C9CA5949CAD94A5B59CADB5A5ADBDA5B5BDADBDC6B5 - C6CEBDC6CEBDCED6C6CED6D6DEDED6DEE7DEDEE7E7E7EF7384947384946B7B8C - 000000000000000000000000000000ADB5BDA5B5BDA5B5BDA5ADBD6B84947384 - 940000000000008C94A58C9CAD94A5AD000000000000A5B5BDADBDC6B5BDC6B5 - C6CEC6CED6C6CED6CED6DED6DEDED6DEE7DEE7E77B8C9C7B8C9C7384946B7B8C - 000000000000000000000000000000ADB5BDADB5C6A5B5BD6B84947384947B8C - 9C0000000000008C9CAD000000000000000000737B94ADB5C6B5BDC6B5C6CEBD - C6CEC6CED6CED6DECED6DED6DEE7DEE7E7E7E7EF7B8C9C7B8C9C6B7B8C000000 - 000000000000000000000000ADBDC6ADB5C6ADB5BDADBDC673849473849C0000 - 00000000000000000000000000737B94A5ADBDADB5BDADBDC6B5C6CEBDC6CEBD - CED6C6CED6CED6DED6DEE7DEE7E7E7E7EF8494A57B8C9C7B8C9C6B7B8C000000 - 000000000000000000000000B5BDC6ADBDC6ADBDC66B7B947384947B8C9C0000 - 00000000000000000000737B949CADBDA5B5BDADBDC6B5BDC6BDC6CEBDCED6C6 - CED6CED6DED6DEDEDEDEE7DEE7E7E7EFEF8494A58494A56B7B8C000000000000 - 000000000000000000B5C6CEB5BDC6B5BDC6ADBDC67384947B8C9C0000000000 - 008C9CAD737B940000009CADBDA5B5BDADB5C6B5BDC6B5C6CEBDC6CEC6CED6CE - D6DED6DEDED6DEE7DEE7E7E7E7EF8C9CA58C94A58494A56B7B8C000000000000 - 000000000000000000B5C6CEB5BDC6B5BDC67384947B8C9C7B8C9C0000000000 - 00949CAD94A5B5000000737B94ADB5BDADBDC6B5C6CEBDC6CEBDCED6C6CED6CE - D6DED6DEE7DEE7E7E7E7EFE7EFEF8C9CAD8C9CA56B7B8C000000000000000000 - 000000000000BDC6CEBDC6CEB5C6CEE7EFEFE7E7EF7B8C9C8494A58C9CA58C9C - AD94A5AD9CA5B5000000000000ADBDC6B5BDC6BDC6CEBDCED6C6CED6CED6DED6 - DEDEDEDEE7DEE7E7E7EFEF949CAD8C9CAD8C9CAD6B7B8C000000000000000000 - 000000000000BDC6CEE7EFEFE7EFEFE7E7EFE7E7EFDEE7E7E7E7EF8C9CA594A5 - B59CA5B59CADB5000000000000B5BDC6B5C6CEBDC6CEC6CED6CED6DED6DEDED6 - DEE7DEE7E7E7E7EFEFF7F7949CAD94A5AD6B7B8C000000000000000000000000 - 000000000000000000BDC6CEBDC6CEE7EFEFE7E7EFE7E7EFDEE7E7DEE7E7DEE7 - E79CADB5A5ADBDA5B5BDADBDC6B5C6CEBDC6CEBDCED6C6CED6D6DEDED6DEE7DE - DEE7E7E7EFE7EFEF9CA5B594A5AD94A5AD6B7B8C000000000000000000000000 - 000000000000000000000000000000BDC6CEBDC6CEDEE7E7E7E7EFDEE7E7DEE7 - E7DEDEE7DEDEE7ADBDC6B5BDC6BDC6CEBDCED6C6CED6CED6DED6DEDED6DEE7DE - E7E7E7EFEFEFEFF79CADB59CA5B56B7B8C000000000000000000000000000000 - 000000000000000000000000000000000000000000BDC6CEBDC6CEDEE7E7DEE7 - E7DEDEE7DEE7E7D6DEE7DEDEE7BDC6CEC6CED6CED6DED6DEDED6DEE7DEE7E7E7 - E7EFEFF7F79CADB5A5ADBD9CA5B56B7B8C000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000BDC6CEBDC6 - CEDEE7E7D6DEE7DEDEE7D6DEDED6DEE7D6DEDECED6DED6DEE7DEE7E7E7E7EFE7 - EFEFEFEFF7A5ADBD9CADB56B7B94000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00BDC6CEBDC6CED6DEE7D6DEDED6DEE7D6DEDED6DEDED6DEDEE7E7EFE7EFEFEF - EFEFA5B5BDA5B5BDA5ADBD6B7B8C000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000BDC6CEBDC6CED6DEDED6DEDED6DEDECED6DECED6DECED6DECE - D6DEADB5BDA5B5BD6B7B8C000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000BDC6CEBDC6CED6DEDECED6DED6DEDECED6DEAD - BDC6ADB5BDADB5C66B7B8C000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000BDC6CEBDC6CECED6DECED6DECE - D6DEADBDC66B7B8C000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000BDC6CEBDC6CECE - D6DEC6D6D66B7B8C000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000000BD - C6CEBDC6CE000000000000000000000000000000000000000000000000000000 - 000000000000FFFFFFFFFFCFFFFFFF83FFFFFF80FFFFFF003FFFFF000FFFFE00 - 03FFFE0000FFFC00003FFC00000FF8000003F8000001F0000001F0000003E000 - 0003E0000007C0000007C000000F8000000F8000001F0000001F0000003F8000 - 003FE000007FF800007FFE0000FFFF8000FFFFE001FFFFF801FFFFFE03FFFFFF - 83FFFFFFE7FF} - KeyPreview = True - ExplicitHeight = 228 - PixelsPerInch = 96 - TextHeight = 13 - object lstImages: TMenuImgList - BkColor = clSilver - DrawingStyle = dsTransparent - DisabledImages = lstImagesDisabled - Left = 394 - Top = 58 - Bitmap = { - 494C010106000900180010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000002000000001002000000000000020 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008400 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6000000000000000000FFFFFF00FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF - FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 00008400000084000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF000000 - 0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 - C6008400000084000000C6C6C600C6C6C6000000000000848400008484000000 - 0000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFF - FF0000000000FFFFFF0000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 0000FFFFFF000000000000848400008484000000000000000000FFFFFF000000 - 0000FFFFFF000000000000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008484 - 840084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 - 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 - 8400FFFFFF000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 - 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 - 8400FFFFFF00FFFFFF0000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 - 000084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C600C6C6C6008400000084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 - 0000840000008400000084000000C6C6C600C6C6C60000000000000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF008400000084000000840000008400 - 00008400000084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000FFFFFF000000000000000000000000000000 - 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600840000008400000084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF00840000008400000084000000FFFF - FF0084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 840084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000C6C6C600840000008400000084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000 - 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600840000008400 - 0000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600840000000000000084000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400 - 0000840000008400000084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000840000008400000084000000840000008400 - 00008400000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 - 0000FFFFFF0084000000C6C6C600C6C6C6000000000084848400008484008484 - 8400008484008484840000848400848484000084840084848400008484008484 - 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 0000C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 - 000084000000C6C6C600C6C6C600C6C6C6000000000000848400848484000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000C6C6C6000000000000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000FFFFFF000000000084000000840000008400000084000000840000008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000084848400848484000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484 - 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000840000008400 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400848484000084 - 84000000000000FFFF00000000000000000000FFFF0000000000848484000084 - 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600} - end - object dlgFonts: TFontDialog - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - Options = [] - Left = 450 - Top = 30 - end - object dlgPrint: TPrintDialog - Left = 450 - Top = 58 - end - object dlgPrintSetup: TPrinterSetupDialog - Left = 478 - Top = 30 - end - object dlgFind: TFindDialog - Left = 478 - Top = 58 - end - object dlgReplace: TReplaceDialog - Left = 506 - Top = 30 - end - object lstImagesDisabled: TImageList - Left = 506 - Top = 58 - Bitmap = { - 494C010106000900180010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000002000000001002000000000000020 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000084848400000000000000 - 0000FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840000000000000000008484 - 8400000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000084848400FFFFFF00FFFFFF00848484000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400848484000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000848484008484840084848400000000000000 - 0000FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000848484008484 - 8400000000000000000000000000000000000000000084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400848484000000000000000000000000008484 - 840000000000FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000084848400FFFF - FF00000000000000000000000000000000000000000000000000848484008484 - 84008484840084848400FFFFFF00000000000000000000000000FFFFFF00FFFF - FF00FFFFFF0084848400000000000000000000000000FFFFFF00848484000000 - 00008484840000000000FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000084848400FFFF - FF00000000000000000000000000000000000000000000000000000000008484 - 84008484840084848400FFFFFF00000000000000000084848400848484008484 - 8400848484000000000000000000FFFFFF008484840084848400000000008484 - 8400000000008484840000000000848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000084848400FFFF - FF00FFFFFF0000000000000000000000000000000000FFFFFF00848484000000 - 00008484840084848400FFFFFF00000000008484840084848400848484008484 - 8400FFFFFF00000000008484840084848400FFFFFF00FFFFFF00848484000000 - 0000848484000000000084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000848484008484 - 8400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084848400000000000000 - 00000000000084848400000000000000000084848400FFFFFF00000000008484 - 8400FFFFFF008484840084848400848484008484840084848400FFFFFF008484 - 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400848484008484840084848400848484000000000000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00000000008484 - 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 - 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840000000000FFFFFF008484 - 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 - 8400FFFFFF00FFFFFF0084848400000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000848484008484840000000000FFFFFF000000000000000000FFFFFF00FFFF - FF00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400FFFFFF000000000084848400FFFFFF000000000084848400848484000000 - 0000FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000084848400848484008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000084848400848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400FFFFFF000000000084848400FFFFFF0084848400FFFFFF00000000008484 - 8400FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF008484840084848400848484008484 - 8400848484008484840000000000848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 840000000000FFFFFF0084848400FFFFFF0084848400FFFFFF00000000008484 - 8400FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484000000000084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF0000000000FFFFFF00FFFFFF00848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000848484008484840084848400FFFFFF0084848400FFFFFF00FFFFFF008484 - 8400000000000000000000000000000000008484840084848400848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF008484840084848400848484000000 - 000084848400848484008484840084848400000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000008484 - 840084848400FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400FFFFFF008484840084848400848484000000 - 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484000000000084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000000000 - 000084848400FFFFFF0084848400000000000000000000000000848484008484 - 8400848484008484840084848400000000000000000000000000000000000000 - 00008484840084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400848484008484840000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF008484840084848400FFFFFF00000000000000000000000000848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000000000000000000000000 - 000000000000000000000000000084848400FFFFFF00FFFFFF00000000000000 - 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400000000008484 - 8400848484008484840084848400000000008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000848484008484 - 84008484840000000000FFFFFF00000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000000000000000000000000 - 00000000000000000000848484008484840084848400FFFFFF00000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000008484 - 8400FFFFFF008484840000000000000000008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000848484008484 - 8400000000008484840000000000FFFFFF00FFFFFF0000000000000000000000 - 00000000000084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400FFFFFF0084848400FFFFFF00FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF - FF00FFFFFF000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484 - 8400848484000000000000000000000000008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000848484000000 - 00000000000000000000848484008484840000000000FFFFFF00FFFFFF00FFFF - FF00848484008484840000000000000000000000000000000000000000000000 - 0000000000008484840084848400000000008484840084848400FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400000000008484840084848400848484008484840084848400848484008484 - 8400000000000000000000000000000000008484840084848400848484008484 - 8400FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF0000000000848484008484 - 84008484840084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840084848400848484008484 - 8400848484000000000000000000000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF00000000000000 - 00000000000084848400FFFFFF00848484000000000000000000000000000000 - 0000000000000000000000000000000000008484840084848400848484008484 - 840084848400FFFFFF0084848400848484000000000084848400848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF - FF00FFFFFF008484840084848400000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000084848400848484008484 - 84008484840084848400FFFFFF00FFFFFF008484840084848400848484008484 - 8400848484000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008484840000000000000000000000000084848400000000000000 - 0000000000000000000000000000000000008484840084848400848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008484840084848400848484008484840000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000200000000100010000000000000100000000000000000000 - 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFDF00000000 - FFFFFFB700000000FFFFFF6F00000000F3FFFE1F00000000E7C1FE3700000000 - CF81FCEB00000000CFC1C39500000000CFE1862A00000000C791041400000000 - C03B200000000000E0FF000000000000FFFF200000000000FFFF000000000000 - FFFF400100000000FFFF800300000000F9FFFFFFFE00FFFFF2CFFE00C000FFFF - E497FC008080FFFFE427FC800002FFFFE82780040088FFF3F00F00800010E0E1 - FC1F200400F1C1F1FC7F00900001C3F9FE3F20210001C5F9FC3F00E30001CA79 - FC1F24070001DC83F91F080F0241FF07F99F38FF0083FFFFF99F01FF8007FFFF - FBBF03FFF87FFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 - 000000000000} - end -end +inherited frmEditor: TfrmEditor + Left = 96 + Top = 288 + Caption = 'frmEditor' + ClientHeight = 228 + Icon.Data = { + 0000010004001010100000000000280100004600000010100000000000006803 + 00006E0100002020100000000000E8020000D60400002020000000000000A80C + 0000BE0700002800000010000000200000000100040000000000C00000000000 + 0000000000001000000000000000000000000000800000800000008080008000 + 00008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF00 + 0000FF00FF00FFFF0000FFFFFF00000000000000000000007000000000000000 + 7880000000000007788880000000000778777880000000778877777880000077 + 80777777F88007780780777FF78007780087777F78007780707777FF78007F87 + 807777F7800077FF77777FF780000077FF777F770000000077FFFF7800000000 + 0077F7800000000000007F800000FFFFFFFFF1FFFFFFF07FFFFFE01FFFFFE007 + FFFFC001FFFFC001FFFF8001FFFF8003FFFF0003FFFF0007FFFF0007FFFFC00F + FFFFF00FFFFFFC1FFFFFFF1FFFFF280000001000000020000000010018000000 + 0000400300000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008494A5636B7B515D690000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008494A5636B7B637384637384515D69000000000000000000000000000000 + 0000000000000000000000000000008C9CAD8C9CAD6B7B8C7384946373846B73 + 846B7B8C515D6900000000000000000000000000000000000000000000000094 + A5B58C9CAD7384947B8C9C8494A594A5AD6B7B8C737B94738494515D69000000 + 0000000000000000000000009CADB594A5B56B7B9473849C8C94A58C9CAD9CAD + B5ADB5BDB5C6CE7384947384947B8C9C515D690000000000000000009CADB59C + ADB57384940000008C9CAD9CA5B5A5ADBDB5BDC6BDC6CEC6D6D6D6DEE77B8C9C + 6B7B8C000000000000ADB5BDA5B5BD6B84940000008C94A594A5AD000000ADBD + C6B5C6CEC6CED6D6DEDEDEE7E77B8C9C6B7B8C000000000000ADB5C6ADBDC673 + 849C000000000000737B94ADB5BDB5C6CEBDCED6CED6DEDEE7E78494A57B8C9C + 000000000000B5C6CEB5BDC67384940000008C9CAD000000A5B5BDB5BDC6BDC6 + CECED6DED6DEE7E7E7EF8C94A56B7B8C000000000000BDC6CEE7EFEF7B8C9C8C + 9CA594A5AD000000ADBDC6BDC6CEC6CED6D6DEDEDEE7E7949CAD8C9CAD000000 + 000000000000BDC6CEE7EFEFE7E7EFDEE7E79CADB5A5B5BDB5C6CEBDCED6D6DE + DEDEDEE7E7EFEF94A5AD6B7B8C000000000000000000000000000000BDC6CEDE + E7E7DEDEE7D6DEE7BDC6CECED6DED6DEE7E7E7EF9CADB59CA5B5000000000000 + 000000000000000000000000000000000000BDC6CED6DEE7D6DEE7D6DEDEE7E7 + EFEFEFEFA5B5BD6B7B8C00000000000000000000000000000000000000000000 + 0000000000000000BDC6CED6DEDED6DEDEADBDC6ADB5C6000000000000000000 + 000000000000000000000000000000000000000000000000000000000000BDC6 + CECED6DE6B7B8C000000000000000000000000000000FFFFFFFFF1FFFFFFF07F + FFFFE01FFFFFE007FFFFC001FFFFC001FFFF8001FFFF8003FFFF0003FFFF0007 + FFFF0007FFFFC00FFFFFF00FFFFFFC1FFFFFFF1FFFFF28000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000078800000000000000000000000000000778880000000000000000000000 + 0000777888880000000000000000000000007777888888000000000000000000 + 0007777887888888000000000000000000077788787788888800000000000000 + 0077778887787788888800000000000000777888777777778888880000000000 + 07777887878777777788888800000000077788787777777777F7888888800000 + 77778800787777777777F7888780000077788800777777777F7F7FF778000007 + 77788007870077777777FF77780000077788800700087777F77FFF7780000077 + 778800000877777777FFF77780000077788800008777777F7F7FF77800000777 + 788007807777777777FF77780000077788700770877777F77FFF77800000777F + F887787007777777FFF7778000007FFFFFF7777007777F7F7FF778000000077F + FFFFF77777777777FF777800000000077FFFFFF77777F77FFF77800000000000 + 077FFFFFF77777FFF77780000000000000077FFFFFF77F7FF778000000000000 + 0000077FFFFFF7FF7778000000000000000000077FFFFFFF7780000000000000 + 00000000077FFFF777800000000000000000000000077FFF7800000000000000 + 000000000000077FF8000000000000000000000000000007700000000000FFFF + FFFFFFCFFFFFFF83FFFFFF80FFFFFF003FFFFF000FFFFE0003FFFE0000FFFC00 + 003FFC00000FF8000003F8000001F0000001F0000003E0000003E0000007C000 + 0007C000000F8000000F8000001F0000001F0000003F8000003FE000007FF800 + 007FFE0000FFFF8000FFFFE001FFFFF801FFFFFE03FFFFFF83FFFFFFE7FF2800 + 000020000000400000000100180000000000800C000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000515D69515D6900000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 008494A55A6B7B636B7B515D69515D6900000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 008494A57B8C9C637384636B7B637384515D69515D6900000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008494 + A58494A58494A5636B7B637384637384637384637384515D69515D6900000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008C9C + A58494A58494A58494A56373846373846373846B73846373846B7B8C515D6951 + 5D69000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008C9CAD8C9C + A58C9CAD8494A56B7B8C6B7B947384946B73846373846B7B8C6B73846B7B8C6B + 7B8C515D69515D69000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008C9CAD94A5 + AD8C9CA56B7B8C6B7B9473849473849C7B8C9C8C94A56B7B8C6B7B8C6B7B8C6B + 7B8C6B7B8C6B7B8C515D69515D69000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000094A5AD94A5B58C9C + AD8C9CAD6B7B8C7384947384947B8C9C8494A58494A58C9CAD94A5AD6B7B8C6B + 7B8C6B7B8C737B946B7B8C738494515D69515D69000000000000000000000000 + 00000000000000000000000000000000000000000000000094A5B594A5AD94A5 + AD6B7B8C6B7B947384947B8C9C8494A58494A58C9CAD949CAD9CA5B59CADB5A5 + B5BD6B7B8C7384946B7B8C738494737B94738494515D69515D69000000000000 + 0000000000000000000000000000000000000000009CADB59CA5B594A5B594A5 + AD6B7B9473849473849C7B8C9C8C94A58C9CA58C9CAD94A5B59CADB5A5ADBDAD + B5BDADBDC6B5C6CE737B947384947384947384947384947B8C9C515D69515D69 + 0000000000000000000000000000000000000000009CADB59CA5B59CADB56B7B + 8C6B7B947B8C9C7B8C9C8494A58494A58C9CAD94A5AD9CA5B59CADBDA5B5BDAD + BDC6B5BDC6B5C6CEC6CED6C6CED67384947384947B8C9C7384947B8C9C73849C + 6B7B8C000000000000000000000000000000A5ADBD9CADB59CADB59CADB56B7B + 947384940000000000008494A58C9CAD94A5AD9CA5B59CADB5A5ADBDADB5C6B5 + BDC6B5C6CEBDC6CEC6CED6C6D6D6CED6DED6DEE77384947B8C9C7B8C9C6B7B8C + 6B7B8C000000000000000000000000000000A5B5BDA5ADBD9CADB5737B947384 + 947B8C9C0000000000008C9CA5949CAD94A5B59CADB5A5ADBDA5B5BDADBDC6B5 + C6CEBDC6CEBDCED6C6CED6D6DEDED6DEE7DEDEE7E7E7EF7384947384946B7B8C + 000000000000000000000000000000ADB5BDA5B5BDA5B5BDA5ADBD6B84947384 + 940000000000008C94A58C9CAD94A5AD000000000000A5B5BDADBDC6B5BDC6B5 + C6CEC6CED6C6CED6CED6DED6DEDED6DEE7DEE7E77B8C9C7B8C9C7384946B7B8C + 000000000000000000000000000000ADB5BDADB5C6A5B5BD6B84947384947B8C + 9C0000000000008C9CAD000000000000000000737B94ADB5C6B5BDC6B5C6CEBD + C6CEC6CED6CED6DECED6DED6DEE7DEE7E7E7E7EF7B8C9C7B8C9C6B7B8C000000 + 000000000000000000000000ADBDC6ADB5C6ADB5BDADBDC673849473849C0000 + 00000000000000000000000000737B94A5ADBDADB5BDADBDC6B5C6CEBDC6CEBD + CED6C6CED6CED6DED6DEE7DEE7E7E7E7EF8494A57B8C9C7B8C9C6B7B8C000000 + 000000000000000000000000B5BDC6ADBDC6ADBDC66B7B947384947B8C9C0000 + 00000000000000000000737B949CADBDA5B5BDADBDC6B5BDC6BDC6CEBDCED6C6 + CED6CED6DED6DEDEDEDEE7DEE7E7E7EFEF8494A58494A56B7B8C000000000000 + 000000000000000000B5C6CEB5BDC6B5BDC6ADBDC67384947B8C9C0000000000 + 008C9CAD737B940000009CADBDA5B5BDADB5C6B5BDC6B5C6CEBDC6CEC6CED6CE + D6DED6DEDED6DEE7DEE7E7E7E7EF8C9CA58C94A58494A56B7B8C000000000000 + 000000000000000000B5C6CEB5BDC6B5BDC67384947B8C9C7B8C9C0000000000 + 00949CAD94A5B5000000737B94ADB5BDADBDC6B5C6CEBDC6CEBDCED6C6CED6CE + D6DED6DEE7DEE7E7E7E7EFE7EFEF8C9CAD8C9CA56B7B8C000000000000000000 + 000000000000BDC6CEBDC6CEB5C6CEE7EFEFE7E7EF7B8C9C8494A58C9CA58C9C + AD94A5AD9CA5B5000000000000ADBDC6B5BDC6BDC6CEBDCED6C6CED6CED6DED6 + DEDEDEDEE7DEE7E7E7EFEF949CAD8C9CAD8C9CAD6B7B8C000000000000000000 + 000000000000BDC6CEE7EFEFE7EFEFE7E7EFE7E7EFDEE7E7E7E7EF8C9CA594A5 + B59CA5B59CADB5000000000000B5BDC6B5C6CEBDC6CEC6CED6CED6DED6DEDED6 + DEE7DEE7E7E7E7EFEFF7F7949CAD94A5AD6B7B8C000000000000000000000000 + 000000000000000000BDC6CEBDC6CEE7EFEFE7E7EFE7E7EFDEE7E7DEE7E7DEE7 + E79CADB5A5ADBDA5B5BDADBDC6B5C6CEBDC6CEBDCED6C6CED6D6DEDED6DEE7DE + DEE7E7E7EFE7EFEF9CA5B594A5AD94A5AD6B7B8C000000000000000000000000 + 000000000000000000000000000000BDC6CEBDC6CEDEE7E7E7E7EFDEE7E7DEE7 + E7DEDEE7DEDEE7ADBDC6B5BDC6BDC6CEBDCED6C6CED6CED6DED6DEDED6DEE7DE + E7E7E7EFEFEFEFF79CADB59CA5B56B7B8C000000000000000000000000000000 + 000000000000000000000000000000000000000000BDC6CEBDC6CEDEE7E7DEE7 + E7DEDEE7DEE7E7D6DEE7DEDEE7BDC6CEC6CED6CED6DED6DEDED6DEE7DEE7E7E7 + E7EFEFF7F79CADB5A5ADBD9CA5B56B7B8C000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000BDC6CEBDC6 + CEDEE7E7D6DEE7DEDEE7D6DEDED6DEE7D6DEDECED6DED6DEE7DEE7E7E7E7EFE7 + EFEFEFEFF7A5ADBD9CADB56B7B94000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00BDC6CEBDC6CED6DEE7D6DEDED6DEE7D6DEDED6DEDED6DEDEE7E7EFE7EFEFEF + EFEFA5B5BDA5B5BDA5ADBD6B7B8C000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000BDC6CEBDC6CED6DEDED6DEDED6DEDECED6DECED6DECED6DECE + D6DEADB5BDA5B5BD6B7B8C000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000BDC6CEBDC6CED6DEDECED6DED6DEDECED6DEAD + BDC6ADB5BDADB5C66B7B8C000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000BDC6CEBDC6CECED6DECED6DECE + D6DEADBDC66B7B8C000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000BDC6CEBDC6CECE + D6DEC6D6D66B7B8C000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000BD + C6CEBDC6CE000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFFFFFFCFFFFFFF83FFFFFF80FFFFFF003FFFFF000FFFFE00 + 03FFFE0000FFFC00003FFC00000FF8000003F8000001F0000001F0000003E000 + 0003E0000007C0000007C000000F8000000F8000001F0000001F0000003F8000 + 003FE000007FF800007FFE0000FFFF8000FFFFE001FFFFF801FFFFFE03FFFFFF + 83FFFFFFE7FF} + KeyPreview = True + ExplicitHeight = 228 + PixelsPerInch = 96 + TextHeight = 13 + object lstImages: TMenuImgList + BkColor = clSilver + DrawingStyle = dsTransparent + DisabledImages = lstImagesDisabled + Left = 394 + Top = 58 + Bitmap = { + 494C010106000900180010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008400 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6000000000000000000FFFFFF00FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF + FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 00008400000084000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF000000 + 0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 + C6008400000084000000C6C6C600C6C6C6000000000000848400008484000000 + 0000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFF + FF0000000000FFFFFF0000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 0000FFFFFF000000000000848400008484000000000000000000FFFFFF000000 + 0000FFFFFF000000000000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008484 + 840084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 + 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 + 8400FFFFFF000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 + 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 + 8400FFFFFF00FFFFFF0000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 + 000084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C600C6C6C6008400000084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 + 0000840000008400000084000000C6C6C600C6C6C60000000000000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF008400000084000000840000008400 + 00008400000084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000FFFFFF000000000000000000000000000000 + 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600840000008400000084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF00840000008400000084000000FFFF + FF0084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 840084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000C6C6C600840000008400000084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000 + 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600840000008400 + 0000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600840000000000000084000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400 + 0000840000008400000084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000840000008400000084000000840000008400 + 00008400000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 + 0000FFFFFF0084000000C6C6C600C6C6C6000000000084848400008484008484 + 8400008484008484840000848400848484000084840084848400008484008484 + 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 0000C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 + 000084000000C6C6C600C6C6C600C6C6C6000000000000848400848484000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000C6C6C6000000000000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000FFFFFF000000000084000000840000008400000084000000840000008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000084848400848484000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484 + 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000840000008400 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400848484000084 + 84000000000000FFFF00000000000000000000FFFF0000000000848484000084 + 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600} + end + object dlgFonts: TFontDialog + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Options = [] + Left = 450 + Top = 30 + end + object dlgFind: TFindDialog + Left = 478 + Top = 58 + end + object dlgReplace: TReplaceDialog + Left = 506 + Top = 30 + end + object lstImagesDisabled: TImageList + Left = 506 + Top = 58 + Bitmap = { + 494C010106000900180010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084848400000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840000000000000000008484 + 8400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000084848400FFFFFF00FFFFFF00848484000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400848484000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000848484008484840084848400000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000848484008484 + 8400000000000000000000000000000000000000000084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400848484000000000000000000000000008484 + 840000000000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000084848400FFFF + FF00000000000000000000000000000000000000000000000000848484008484 + 84008484840084848400FFFFFF00000000000000000000000000FFFFFF00FFFF + FF00FFFFFF0084848400000000000000000000000000FFFFFF00848484000000 + 00008484840000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000084848400FFFF + FF00000000000000000000000000000000000000000000000000000000008484 + 84008484840084848400FFFFFF00000000000000000084848400848484008484 + 8400848484000000000000000000FFFFFF008484840084848400000000008484 + 8400000000008484840000000000848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000084848400FFFF + FF00FFFFFF0000000000000000000000000000000000FFFFFF00848484000000 + 00008484840084848400FFFFFF00000000008484840084848400848484008484 + 8400FFFFFF00000000008484840084848400FFFFFF00FFFFFF00848484000000 + 0000848484000000000084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000848484008484 + 8400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084848400000000000000 + 00000000000084848400000000000000000084848400FFFFFF00000000008484 + 8400FFFFFF008484840084848400848484008484840084848400FFFFFF008484 + 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400848484008484840084848400848484000000000000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00000000008484 + 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 + 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840000000000FFFFFF008484 + 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 + 8400FFFFFF00FFFFFF0084848400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000848484008484840000000000FFFFFF000000000000000000FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400FFFFFF000000000084848400FFFFFF000000000084848400848484000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000084848400848484008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000084848400848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400FFFFFF000000000084848400FFFFFF0084848400FFFFFF00000000008484 + 8400FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF008484840084848400848484008484 + 8400848484008484840000000000848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 840000000000FFFFFF0084848400FFFFFF0084848400FFFFFF00000000008484 + 8400FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484000000000084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF0000000000FFFFFF00FFFFFF00848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000848484008484840084848400FFFFFF0084848400FFFFFF00FFFFFF008484 + 8400000000000000000000000000000000008484840084848400848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF008484840084848400848484000000 + 000084848400848484008484840084848400000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000008484 + 840084848400FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400FFFFFF008484840084848400848484000000 + 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484000000000084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000000000 + 000084848400FFFFFF0084848400000000000000000000000000848484008484 + 8400848484008484840084848400000000000000000000000000000000000000 + 00008484840084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400848484008484840000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF008484840084848400FFFFFF00000000000000000000000000848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000000000000000000000000 + 000000000000000000000000000084848400FFFFFF00FFFFFF00000000000000 + 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400000000008484 + 8400848484008484840084848400000000008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000848484008484 + 84008484840000000000FFFFFF00000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000000000000000000000000 + 00000000000000000000848484008484840084848400FFFFFF00000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000008484 + 8400FFFFFF008484840000000000000000008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000848484008484 + 8400000000008484840000000000FFFFFF00FFFFFF0000000000000000000000 + 00000000000084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400FFFFFF0084848400FFFFFF00FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF + FF00FFFFFF000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484 + 8400848484000000000000000000000000008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000848484000000 + 00000000000000000000848484008484840000000000FFFFFF00FFFFFF00FFFF + FF00848484008484840000000000000000000000000000000000000000000000 + 0000000000008484840084848400000000008484840084848400FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400000000008484840084848400848484008484840084848400848484008484 + 8400000000000000000000000000000000008484840084848400848484008484 + 8400FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF0000000000848484008484 + 84008484840084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840084848400848484008484 + 8400848484000000000000000000000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF00000000000000 + 00000000000084848400FFFFFF00848484000000000000000000000000000000 + 0000000000000000000000000000000000008484840084848400848484008484 + 840084848400FFFFFF0084848400848484000000000084848400848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF + FF00FFFFFF008484840084848400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084848400848484008484 + 84008484840084848400FFFFFF00FFFFFF008484840084848400848484008484 + 8400848484000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008484840000000000000000000000000084848400000000000000 + 0000000000000000000000000000000000008484840084848400848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008484840084848400848484008484840000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000200000000100010000000000000100000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFDF00000000 + FFFFFFB700000000FFFFFF6F00000000F3FFFE1F00000000E7C1FE3700000000 + CF81FCEB00000000CFC1C39500000000CFE1862A00000000C791041400000000 + C03B200000000000E0FF000000000000FFFF200000000000FFFF000000000000 + FFFF400100000000FFFF800300000000F9FFFFFFFE00FFFFF2CFFE00C000FFFF + E497FC008080FFFFE427FC800002FFFFE82780040088FFF3F00F00800010E0E1 + FC1F200400F1C1F1FC7F00900001C3F9FE3F20210001C5F9FC3F00E30001CA79 + FC1F24070001DC83F91F080F0241FF07F99F38FF0083FFFFF99F01FF8007FFFF + FBBF03FFF87FFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/developer/src/tike/child/UfrmEditor.pas b/developer/src/tike/child/UfrmEditor.pas index 0bf0f96c61..255a61c210 100644 --- a/developer/src/tike/child/UfrmEditor.pas +++ b/developer/src/tike/child/UfrmEditor.pas @@ -41,7 +41,7 @@ uses System.UITypes, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, ToolWin, ComCtrls, ImgList, ErrorControlledRegistry, - RegistryKeys, UfrmMDIChild, MenuImgList, Printers, + RegistryKeys, UfrmMDIChild, MenuImgList, UfrmKeyTest, Keyman.Developer.System.Project.ProjectFile, UfrmMDIEditor, @@ -54,11 +54,9 @@ type TUPCOptions = set of (upcSetError, upcClearError, upcSetBreakPoint, upcClearBreakPoint, upcSetExecutionPoint, upcClearExecutionPoint); - TfrmEditor = class(TfrmTikeEditor, IKMDPrintActions {TODO:, IKMDPrintPreviewActions}) + TfrmEditor = class(TfrmTikeEditor) lstImages: TMenuImgList; dlgFonts: TFontDialog; - dlgPrint: TPrintDialog; - dlgPrintSetup: TPrinterSetupDialog; dlgFind: TFindDialog; dlgReplace: TReplaceDialog; lstImagesDisabled: TImageList; @@ -73,10 +71,6 @@ type procedure SetTextFileFormat(const Value: TTextFileFormat); procedure UpdateEditorFormat; - { IKMDPrintActions } - function PrintFile: Boolean; - { IKMDPrintPreviewActions } - //TODO: function PrintPreview: Boolean; procedure EditorChanged(Sender: TObject); function GetEditorFormat: TEditorFormat; function GetTextFileFormat: TTextFileFormat; @@ -300,11 +294,6 @@ begin Modified := False; end; -function TfrmEditor.PrintFile: Boolean; -begin - Result := FEditorFrame.PrintFile(FileName); -end; - {------------------------------------------------------------------------------- - Interface functions - -------------------------------------------------------------------------------} diff --git a/developer/src/tike/child/UfrmKeymanWizard.pas b/developer/src/tike/child/UfrmKeymanWizard.pas index b88f014810..81b1bb7c6a 100644 --- a/developer/src/tike/child/UfrmKeymanWizard.pas +++ b/developer/src/tike/child/UfrmKeymanWizard.pas @@ -159,7 +159,7 @@ type Filename: string; end; - TfrmKeymanWizard = class(TfrmTikeEditor, IKMDPrintActions {TODO:, IKMDPrintPreviewActions}) + TfrmKeymanWizard = class(TfrmTikeEditor) dlgBrowseBitmap: TOpenPictureDialog; dlgSaveExport: TSaveDialog; dlgSaveBitmap: TSavePictureDialog; @@ -524,11 +524,6 @@ type function CanChangeView(FView: TCodeDesignView): Boolean; override; // I4678 procedure ChangeView(FView: TCodeDesignView); override; // I4678 - { IKMDPrintActions } - function PrintFile: Boolean; - { IKMDPrintPreviewActions } - //TODO: function PrintPreview: Boolean; - function CanReloadAsTextFileFormatClick: Boolean; override; // I3637 procedure ReloadAsTextFileFormatClick(TextFileFormat: TTextFileFormat); // I3637 override; @@ -1508,16 +1503,6 @@ begin Result := True; end; -function TfrmKeymanWizard.PrintFile: Boolean; -begin - Result := frameSource.PrintFile(FileName); -end; - -{TODO: function TfrmKeymanWizard.PrintPreview: Boolean; -begin - Result := frameSource.PrintPreview(FileName); -end;} - function TfrmKeymanWizard.GetCurrentRule: TKeyboardParser_LayoutRule; var i: Integer; diff --git a/developer/src/tike/main/UframeTextEditor.dfm b/developer/src/tike/main/UframeTextEditor.dfm index d1e8e0f657..eb31914912 100644 --- a/developer/src/tike/main/UframeTextEditor.dfm +++ b/developer/src/tike/main/UframeTextEditor.dfm @@ -1,569 +1,565 @@ -inherited frameTextEditor: TframeTextEditor - BorderIcons = [] - BorderStyle = bsNone - ClientHeight = 610 - ClientWidth = 751 - KeyPreview = True - OnDestroy = TntFormDestroy - OnKeyDown = FormKeyDown - ExplicitWidth = 751 - ExplicitHeight = 610 - PixelsPerInch = 96 - TextHeight = 13 - object lstImages: TMenuImgList - BkColor = clSilver - DrawingStyle = dsTransparent - DisabledImages = lstImagesDisabled - Left = 394 - Top = 58 - Bitmap = { - 494C010106000900900010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000002000000001002000000000000020 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008400 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6000000000000000000FFFFFF00FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF - FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 00008400000084000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF000000 - 0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 - C6008400000084000000C6C6C600C6C6C6000000000000848400008484000000 - 0000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFF - FF0000000000FFFFFF0000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 0000FFFFFF000000000000848400008484000000000000000000FFFFFF000000 - 0000FFFFFF000000000000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008484 - 840084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 - 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 - 8400FFFFFF000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 - 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 - 8400FFFFFF00FFFFFF0000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 - 000084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C600C6C6C6008400000084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 - 0000840000008400000084000000C6C6C600C6C6C60000000000000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF008400000084000000840000008400 - 00008400000084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000FFFFFF000000000000000000000000000000 - 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600840000008400000084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF00840000008400000084000000FFFF - FF0084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 840084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000C6C6C600840000008400000084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000 - 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600840000008400 - 0000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600840000000000000084000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400 - 0000840000008400000084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000840000008400000084000000840000008400 - 00008400000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 - 0000FFFFFF0084000000C6C6C600C6C6C6000000000084848400008484008484 - 8400008484008484840000848400848484000084840084848400008484008484 - 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 0000C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 - 000084000000C6C6C600C6C6C600C6C6C6000000000000848400848484000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000C6C6C6000000000000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000FFFFFF000000000084000000840000008400000084000000840000008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000084848400848484000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484 - 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000840000008400 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400848484000084 - 84000000000000FFFF00000000000000000000FFFF0000000000848484000084 - 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600} - end - object dlgFonts: TFontDialog - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - Options = [] - Left = 450 - Top = 30 - end - object dlgPrintSetup: TPrinterSetupDialog - Left = 526 - Top = 30 - end - object lstImagesDisabled: TImageList - Left = 618 - Top = 26 - Bitmap = { - 494C010106000900900010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000002000000001002000000000000020 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000084848400000000000000 - 0000FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840000000000000000008484 - 8400000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000084848400FFFFFF00FFFFFF00848484000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400848484000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000848484008484840084848400000000000000 - 0000FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000848484008484 - 8400000000000000000000000000000000000000000084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400848484000000000000000000000000008484 - 840000000000FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000084848400FFFF - FF00000000000000000000000000000000000000000000000000848484008484 - 84008484840084848400FFFFFF00000000000000000000000000FFFFFF00FFFF - FF00FFFFFF0084848400000000000000000000000000FFFFFF00848484000000 - 00008484840000000000FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000084848400FFFF - FF00000000000000000000000000000000000000000000000000000000008484 - 84008484840084848400FFFFFF00000000000000000084848400848484008484 - 8400848484000000000000000000FFFFFF008484840084848400000000008484 - 8400000000008484840000000000848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000084848400FFFF - FF00FFFFFF0000000000000000000000000000000000FFFFFF00848484000000 - 00008484840084848400FFFFFF00000000008484840084848400848484008484 - 8400FFFFFF00000000008484840084848400FFFFFF00FFFFFF00848484000000 - 0000848484000000000084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000848484008484 - 8400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084848400000000000000 - 00000000000084848400000000000000000084848400FFFFFF00000000008484 - 8400FFFFFF008484840084848400848484008484840084848400FFFFFF008484 - 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400848484008484840084848400848484000000000000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00000000008484 - 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 - 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840000000000FFFFFF008484 - 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 - 8400FFFFFF00FFFFFF0084848400000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000848484008484840000000000FFFFFF000000000000000000FFFFFF00FFFF - FF00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400848484008484840084848400848484008484 - 8400848484008484840084848400848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400FFFFFF000000000084848400FFFFFF000000000084848400848484000000 - 0000FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000084848400848484008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000084848400848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 8400FFFFFF000000000084848400FFFFFF0084848400FFFFFF00000000008484 - 8400FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF008484840084848400848484008484 - 8400848484008484840000000000848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 840000000000FFFFFF0084848400FFFFFF0084848400FFFFFF00000000008484 - 8400FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484000000000084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF0000000000FFFFFF00FFFFFF00848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000848484008484840084848400FFFFFF0084848400FFFFFF00FFFFFF008484 - 8400000000000000000000000000000000008484840084848400848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF008484840084848400848484000000 - 000084848400848484008484840084848400000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000008484 - 840084848400FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400FFFFFF008484840084848400848484000000 - 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484000000000084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000000000 - 000084848400FFFFFF0084848400000000000000000000000000848484008484 - 8400848484008484840084848400000000000000000000000000000000000000 - 00008484840084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400848484008484840000000000000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 - 8400848484008484840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF008484840084848400FFFFFF00000000000000000000000000848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000000000000000000000000 - 000000000000000000000000000084848400FFFFFF00FFFFFF00000000000000 - 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400000000008484 - 8400848484008484840084848400000000008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000848484008484 - 84008484840000000000FFFFFF00000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000000000000000000000000 - 00000000000000000000848484008484840084848400FFFFFF00000000000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400848484008484840084848400FFFFFF000000000000000000000000008484 - 8400FFFFFF008484840000000000000000008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000848484008484 - 8400000000008484840000000000FFFFFF00FFFFFF0000000000000000000000 - 00000000000084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000084848400FFFFFF0084848400FFFFFF00FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF - FF00FFFFFF000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484 - 8400848484000000000000000000000000008484840084848400848484008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400FFFFFF00000000000000000000000000848484000000 - 00000000000000000000848484008484840000000000FFFFFF00FFFFFF00FFFF - FF00848484008484840000000000000000000000000000000000000000000000 - 0000000000008484840084848400000000008484840084848400FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF00848484008484 - 8400000000008484840084848400848484008484840084848400848484008484 - 8400000000000000000000000000000000008484840084848400848484008484 - 8400FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF0000000000848484008484 - 84008484840084848400FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000008484840084848400848484008484 - 8400848484000000000000000000000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF00000000000000 - 00000000000084848400FFFFFF00848484000000000000000000000000000000 - 0000000000000000000000000000000000008484840084848400848484008484 - 840084848400FFFFFF0084848400848484000000000084848400848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 - 00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF - FF00FFFFFF008484840084848400000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000084848400848484008484 - 84008484840084848400FFFFFF00FFFFFF008484840084848400848484008484 - 8400848484000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008484840000000000000000000000000084848400000000000000 - 0000000000000000000000000000000000008484840084848400848484008484 - 8400848484008484840000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008484840084848400848484008484840000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000200000000100010000000000000100000000000000000000 - 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFDF00000000 - FFFFFFB700000000FFFFFF6F00000000F3FFFE1F00000000E7C1FE3700000000 - CF81FCEB00000000CFC1C39500000000CFE1862A00000000C791041400000000 - C03B200000000000E0FF000000000000FFFF200000000000FFFF000000000000 - FFFF400100000000FFFF800300000000F9FFFFFFFE00FFFFF2CFFE00C000FFFF - E497FC008080FFFFE427FC800002FFFFE82780040088FFF3F00F00800010E0E1 - FC1F200400F1C1F1FC7F00900001C3F9FE3F20210001C5F9FC3F00E30001CA79 - FC1F24070001DC83F91F080F0241FF07F99F38FF0083FFFFF99F01FF8007FFFF - FBBF03FFF87FFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 - 000000000000} - end -end +inherited frameTextEditor: TframeTextEditor + BorderIcons = [] + BorderStyle = bsNone + ClientHeight = 610 + ClientWidth = 751 + KeyPreview = True + OnDestroy = TntFormDestroy + OnKeyDown = FormKeyDown + ExplicitWidth = 751 + ExplicitHeight = 610 + PixelsPerInch = 96 + TextHeight = 13 + object lstImages: TMenuImgList + BkColor = clSilver + DrawingStyle = dsTransparent + DisabledImages = lstImagesDisabled + Left = 394 + Top = 58 + Bitmap = { + 494C010106000900900010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008400 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6000000000000000000FFFFFF00FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF + FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 00008400000084000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF000000 + 0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 + C6008400000084000000C6C6C600C6C6C6000000000000848400008484000000 + 0000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFF + FF0000000000FFFFFF0000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600848484008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 0000FFFFFF000000000000848400008484000000000000000000FFFFFF000000 + 0000FFFFFF000000000000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C6008484 + 840084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 + 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 + 8400FFFFFF000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 + 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 + 8400FFFFFF00FFFFFF0000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 + 000084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C600C6C6C6008400000084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 + 0000840000008400000084000000C6C6C600C6C6C60000000000000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF008400000084000000840000008400 + 00008400000084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000FFFFFF000000000000000000000000000000 + 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600840000008400000084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF00840000008400000084000000FFFF + FF0084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 840084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000C6C6C600840000008400000084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000 + 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600840000008400 + 0000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600840000000000000084000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400 + 0000840000008400000084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000840000008400000084000000840000008400 + 00008400000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 + 0000FFFFFF0084000000C6C6C600C6C6C6000000000084848400008484008484 + 8400008484008484840000848400848484000084840084848400008484008484 + 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 0000C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 + 000084000000C6C6C600C6C6C600C6C6C6000000000000848400848484000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000C6C6C6000000000000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000FFFFFF000000000084000000840000008400000084000000840000008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000084848400848484000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484 + 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000840000008400 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400848484000084 + 84000000000000FFFF00000000000000000000FFFF0000000000848484000084 + 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600} + end + object dlgFonts: TFontDialog + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Options = [] + Left = 450 + Top = 30 + end + object lstImagesDisabled: TImageList + Left = 618 + Top = 26 + Bitmap = { + 494C010106000900900010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084848400000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840000000000000000008484 + 8400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000084848400FFFFFF00FFFFFF00848484000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400848484000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000848484008484840084848400000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000848484008484 + 8400000000000000000000000000000000000000000084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400848484000000000000000000000000008484 + 840000000000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000084848400FFFF + FF00000000000000000000000000000000000000000000000000848484008484 + 84008484840084848400FFFFFF00000000000000000000000000FFFFFF00FFFF + FF00FFFFFF0084848400000000000000000000000000FFFFFF00848484000000 + 00008484840000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000084848400FFFF + FF00000000000000000000000000000000000000000000000000000000008484 + 84008484840084848400FFFFFF00000000000000000084848400848484008484 + 8400848484000000000000000000FFFFFF008484840084848400000000008484 + 8400000000008484840000000000848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000084848400FFFF + FF00FFFFFF0000000000000000000000000000000000FFFFFF00848484000000 + 00008484840084848400FFFFFF00000000008484840084848400848484008484 + 8400FFFFFF00000000008484840084848400FFFFFF00FFFFFF00848484000000 + 0000848484000000000084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000848484008484 + 8400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084848400000000000000 + 00000000000084848400000000000000000084848400FFFFFF00000000008484 + 8400FFFFFF008484840084848400848484008484840084848400FFFFFF008484 + 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400848484008484840084848400848484000000000000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00000000008484 + 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 + 8400FFFFFF008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840000000000FFFFFF008484 + 8400FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400FFFFFF008484 + 8400FFFFFF00FFFFFF0084848400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000848484008484840000000000FFFFFF000000000000000000FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400FFFFFF000000000084848400FFFFFF000000000084848400848484000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000084848400848484008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000084848400848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400FFFFFF000000000084848400FFFFFF0084848400FFFFFF00000000008484 + 8400FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF008484840084848400848484008484 + 8400848484008484840000000000848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 840000000000FFFFFF0084848400FFFFFF0084848400FFFFFF00000000008484 + 8400FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484000000000084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF0000000000FFFFFF00FFFFFF00848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000848484008484840084848400FFFFFF0084848400FFFFFF00FFFFFF008484 + 8400000000000000000000000000000000008484840084848400848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF008484840084848400848484000000 + 000084848400848484008484840084848400000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000008484 + 840084848400FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400FFFFFF008484840084848400848484000000 + 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484000000000084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000000000 + 000084848400FFFFFF0084848400000000000000000000000000848484008484 + 8400848484008484840084848400000000000000000000000000000000000000 + 00008484840084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400848484008484840000000000000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400FFFFFF0000000000FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF0084848400FFFFFF008484840084848400848484008484 + 8400848484008484840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF008484840084848400FFFFFF00000000000000000000000000848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000000000000000000000000 + 000000000000000000000000000084848400FFFFFF00FFFFFF00000000000000 + 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF0084848400FFFFFF008484840084848400000000008484 + 8400848484008484840084848400000000008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000848484008484 + 84008484840000000000FFFFFF00000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000000000000000000000000 + 00000000000000000000848484008484840084848400FFFFFF00000000000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400848484008484840084848400FFFFFF000000000000000000000000008484 + 8400FFFFFF008484840000000000000000008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000848484008484 + 8400000000008484840000000000FFFFFF00FFFFFF0000000000000000000000 + 00000000000084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000084848400FFFFFF0084848400FFFFFF00FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF0000000000FFFF + FF00FFFFFF000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484 + 8400848484000000000000000000000000008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400FFFFFF00000000000000000000000000848484000000 + 00000000000000000000848484008484840000000000FFFFFF00FFFFFF00FFFF + FF00848484008484840000000000000000000000000000000000000000000000 + 0000000000008484840084848400000000008484840084848400FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF00848484008484 + 8400000000008484840084848400848484008484840084848400848484008484 + 8400000000000000000000000000000000008484840084848400848484008484 + 8400FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF0000000000848484008484 + 84008484840084848400FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000008484840084848400848484008484 + 8400848484000000000000000000000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF00000000000000 + 00000000000084848400FFFFFF00848484000000000000000000000000000000 + 0000000000000000000000000000000000008484840084848400848484008484 + 840084848400FFFFFF0084848400848484000000000084848400848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000084848400FFFFFF00000000000000000084848400FFFFFF000000 + 00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF + FF00FFFFFF008484840084848400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084848400848484008484 + 84008484840084848400FFFFFF00FFFFFF008484840084848400848484008484 + 8400848484000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008484840000000000000000000000000084848400000000000000 + 0000000000000000000000000000000000008484840084848400848484008484 + 8400848484008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008484840084848400848484008484840000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000200000000100010000000000000100000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFDF00000000 + FFFFFFB700000000FFFFFF6F00000000F3FFFE1F00000000E7C1FE3700000000 + CF81FCEB00000000CFC1C39500000000CFE1862A00000000C791041400000000 + C03B200000000000E0FF000000000000FFFF200000000000FFFF000000000000 + FFFF400100000000FFFF800300000000F9FFFFFFFE00FFFFF2CFFE00C000FFFF + E497FC008080FFFFE427FC800002FFFFE82780040088FFF3F00F00800010E0E1 + FC1F200400F1C1F1FC7F00900001C3F9FE3F20210001C5F9FC3F00E30001CA79 + FC1F24070001DC83F91F080F0241FF07F99F38FF0083FFFFF99F01FF8007FFFF + FBBF03FFF87FFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/developer/src/tike/main/UframeTextEditor.pas b/developer/src/tike/main/UframeTextEditor.pas index b9f5f8ce22..50d0dbbedf 100644 --- a/developer/src/tike/main/UframeTextEditor.pas +++ b/developer/src/tike/main/UframeTextEditor.pas @@ -37,7 +37,6 @@ type TframeTextEditor = class(TTIKEForm, IKMDEditActions, IKMDSearchActions, IKMDTextEditorActions) lstImages: TMenuImgList; dlgFonts: TFontDialog; - dlgPrintSetup: TPrinterSetupDialog; lstImagesDisabled: TImageList; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); @@ -162,9 +161,6 @@ type procedure SyntaxColourChange; - function PrintFile(Header: WideString = ''): Boolean; - function PrintPreview(Header: WideString = ''): Boolean; - procedure LoadFromFile(AFileName: WideString); overload; // I4034 procedure LoadFromStream(AStream: TStream); overload; // I2964 procedure SaveToFile(AFileName: WideString); @@ -658,18 +654,6 @@ begin frmKeymanDeveloper.barStatus.Panels[1].Text := AMode; end; -function TframeTextEditor.PrintFile(Header: WideString): Boolean; -begin - ExecuteCommand('print'); - Result := True; -end; - -function TframeTextEditor.PrintPreview(Header: WideString): Boolean; -begin - // TODO: print preview - Result := True; -end; - procedure TframeTextEditor.SetCharFont(const Value: TFont); begin FCharFont.Assign(Value); diff --git a/developer/src/tike/main/UfrmMain.dfm b/developer/src/tike/main/UfrmMain.dfm index 5f3c017127..862c455d02 100644 --- a/developer/src/tike/main/UfrmMain.dfm +++ b/developer/src/tike/main/UfrmMain.dfm @@ -1,3169 +1,3144 @@ -inherited frmKeymanDeveloper: TfrmKeymanDeveloper - Left = 484 - Top = 327 - Caption = 'Keyman Developer' - ClientHeight = 760 - ClientWidth = 1087 - DoubleBuffered = True - Font.Name = 'MS Sans Serif' - KeyPreview = True - Menu = MainMenu1 - Position = poDefault - WindowState = wsMaximized - OnClose = FormClose - OnCloseQuery = FormCloseQuery - OnDestroy = FormDestroy - ExplicitWidth = 1103 - ExplicitHeight = 819 - PixelsPerInch = 96 - TextHeight = 13 - object barStatus: TStatusBar - Left = 0 - Top = 741 - Width = 1087 - Height = 19 - Constraints.MaxHeight = 19 - Constraints.MinHeight = 19 - Panels = < - item - Alignment = taCenter - Text = 'Line 1, Col 1' - Width = 100 - end - item - Alignment = taCenter - Text = 'Insert' - Width = 120 - end - item - Width = 50 - end> - end - object pages: TCloseButtonPageControl - Left = 0 - Top = 24 - Width = 1087 - Height = 717 - Align = alClient - OwnerDraw = True - TabOrder = 1 - OnChange = pagesChange - OnCloseTab = pagesCloseTab - end - object barTools: TControlBar - Left = 0 - Top = 0 - Width = 1087 - Height = 24 - Align = alTop - AutoDock = False - AutoDrag = False - BevelInner = bvNone - BevelOuter = bvNone - DockSite = False - TabOrder = 2 - object panDebugToolbar: TPanel - Left = 481 - Top = 2 - Width = 512 - Height = 23 - AutoSize = True - BevelOuter = bvNone - TabOrder = 0 - object SpeedButton1: TSpeedButton - Left = 0 - Top = 0 - Width = 82 - Height = 22 - Action = modActionsDebugger.actDebugTestMode - AllowAllUp = True - GroupIndex = 1 - end - object SpeedButton2: TSpeedButton - Left = 83 - Top = 0 - Width = 98 - Height = 22 - Action = modActionsDebugger.actDebugDebuggerMode - AllowAllUp = True - GroupIndex = 2 - end - object cbDebugSystemKeyboard: TComboBox - Left = 367 - Top = 1 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 0 - Visible = False - OnClick = cbDebugSystemKeyboardItemClick - OnDropDown = cbDebugSystemKeyboard_DropDown - end - object ToolBar2: TToolBar - Left = 187 - Top = 1 - Width = 174 - Height = 22 - Align = alNone - ButtonHeight = 23 - Caption = 'ToolBar2' - Images = lstImages - TabOrder = 1 - object ToolButton20: TToolButton - Left = 0 - Top = 0 - Width = 8 - Caption = 'ToolButton20' - ImageIndex = 0 - Style = tbsSeparator - end - object ToolButton21: TToolButton - Left = 8 - Top = 0 - Action = modActionsDebugger.actDebugStopDebugger - end - object ToolButton23: TToolButton - Left = 31 - Top = 0 - Width = 8 - Caption = 'ToolButton23' - ImageIndex = 47 - Style = tbsSeparator - end - object ToolButton22: TToolButton - Left = 39 - Top = 0 - Action = modActionsDebugger.actDebugSingleStepMode - end - object ToolButton24: TToolButton - Left = 62 - Top = 0 - Width = 8 - Caption = 'ToolButton24' - ImageIndex = 47 - Style = tbsSeparator - end - object ToolButton25: TToolButton - Left = 70 - Top = 0 - Action = modActionsDebugger.actDebugStepForward - end - object ToolButton26: TToolButton - Left = 93 - Top = 0 - Action = modActionsDebugger.actDebugRun - end - object ToolButton27: TToolButton - Left = 116 - Top = 0 - Action = modActionsDebugger.actDebugPause - end - object ToolButton28: TToolButton - Left = 139 - Top = 0 - Width = 8 - Caption = 'ToolButton28' - ImageIndex = 58 - Style = tbsSeparator - end - object ToolButton29: TToolButton - Left = 147 - Top = 0 - Action = modActionsDebugger.actDebugSetClearBreakpoint - end - end - end - object panToolbar: TPanel - Left = 11 - Top = 2 - Width = 448 - Height = 23 - AutoSize = True - BevelOuter = bvNone - TabOrder = 1 - object ToolBar1: TToolBar - Left = 0 - Top = 0 - Width = 301 - Height = 23 - Align = alNone - AutoSize = True - ButtonHeight = 23 - Caption = 'ToolBar1' - Images = lstImages - TabOrder = 0 - Wrapable = False - object ToolButton1: TToolButton - Left = 0 - Top = 0 - Action = modActionsMain.actFileNew - end - object ToolButton2: TToolButton - Left = 23 - Top = 0 - Action = modActionsMain.actFileOpen - end - object ToolButton3: TToolButton - Left = 46 - Top = 0 - Action = modActionsMain.actFileSave - end - object ToolButton4: TToolButton - Left = 69 - Top = 0 - Width = 8 - Caption = 'ToolButton4' - ImageIndex = 3 - Style = tbsSeparator - end - object ToolButton5: TToolButton - Left = 77 - Top = 0 - Action = modActionsMain.actFilePrint - end - object ToolButton6: TToolButton - Left = 100 - Top = 0 - Width = 8 - Caption = 'ToolButton6' - ImageIndex = 4 - Style = tbsSeparator - end - object ToolButton7: TToolButton - Left = 108 - Top = 0 - Action = modActionsMain.actEditCut - end - object ToolButton8: TToolButton - Left = 131 - Top = 0 - Action = modActionsMain.actEditCopy - end - object ToolButton9: TToolButton - Left = 154 - Top = 0 - Action = modActionsMain.actEditPaste - end - object ToolButton10: TToolButton - Left = 177 - Top = 0 - Width = 8 - Caption = 'ToolButton10' - ImageIndex = 7 - Style = tbsSeparator - end - object ToolButton11: TToolButton - Left = 185 - Top = 0 - Action = modActionsMain.actEditUndo - end - object ToolButton12: TToolButton - Left = 208 - Top = 0 - Action = modActionsMain.actEditRedo - end - object ToolButton19: TToolButton - Left = 231 - Top = 0 - Width = 8 - Caption = 'ToolButton19' - ImageIndex = 57 - Style = tbsSeparator - end - object ToolButton14: TToolButton - Left = 239 - Top = 0 - Action = modActionsMain.actViewExpandEditor - end - object ToolButton15: TToolButton - Left = 262 - Top = 0 - Width = 8 - Caption = 'ToolButton15' - ImageIndex = 56 - Style = tbsSeparator - end - object ToolButton16: TToolButton - Left = 270 - Top = 0 - Action = modActionsKeyboardEditor.actKeyboardCompile - end - object ToolButton13: TToolButton - Left = 293 - Top = 0 - Width = 8 - Caption = 'ToolButton13' - ImageIndex = 57 - Style = tbsSeparator - end - end - object cbTextFileFormat: TComboBox - Left = 303 - Top = 1 - Width = 145 - Height = 21 - Style = csDropDownList - TabOrder = 1 - OnClick = cbTextFileFormatItemClick - Items.Strings = ( - 'ANSI' - 'UTF-8' - 'UTF-16') - end - end - end - object ilPages: TImageList - Left = 304 - Top = 236 - Bitmap = { - 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000003000000001002000000000000030 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 - C600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF00000000000000000000000000BDD6 - CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE - C60000000000000000000000000000000000000000000000000000000000BDCE - C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE - D600BDCEC6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF000000000000000000BDD6C600DEE7 - E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF - EF00C6D6CE000000000000000000000000000000000000000000BDCEC600E7EF - E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 - F700DEE7DE00BDD6C60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00188C180029942900399C - 3900399C3900399C3900FFFFFF00A5D6A5004AA54A004AA54A004AA54A0029A5 - 290018A51800009C0000007B0000FFFFFF0000000000BDD6C600DEE7E700FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700C6D6CE00000000000000000000000000BDCEC600E7EFE700FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF - F700EFF7F700DEE7DE00BDCEC600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 - 420042A5420042A54200FFFFFF00FFFFFF00A5D6A5004AA54A004AA54A0039A5 - 390021A5210008A50800087B0800FFFFFF00C6DED600D6DEDE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00EFF7EF00BDCEC60000000000BDD6CE00D6E7DE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00F7FFF700EFF7F700CEDED600BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00A5D6A5004AA54A0039A5 - 390021A5210010A5100008840800FFFFFF00BDD6CE00EFF7EF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00FFFFFF00D6DED600BDDECE00BDD6C600EFF7F700FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00F7FFF700DEEFE700BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00319C31004AA54A0052A5 - 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A50039A5 - 390021A5210018A5180010841000FFFFFF00C6DECE00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE00C6D6CE00FFFFFF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00429C420052A552004AA5 - 4A004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 - A500219C2100219C210018841800FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0042A5420052A5520052A5 - 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 - A500219C2100219C2100217B2100FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0052A552005AAD5A005AAD - 5A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A5003194 - 31002994290029942900217B2100FFFFFF00C6D6CE00FFFFFF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE00C6DECE00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052AD5200FFFFFF00FFFFFF00FFFFFF00A5D6A500399C39003194 - 31002994290029942900217B2100FFFFFF00BDD6C600EFF7F700FFFFFF00FFFF - FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF - FF00FFFFFF00F7FFF700DEEFE700BDD6CE00BDD6CE00EFF7EF00FFFFFF00FFFF - FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF - FF00FFFFFF00FFFFFF00D6DED600BDDECE000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A00FFFFFF00FFFFFF00A5D6A500429C4200429C4200399C - 39003194310031943100217B2100FFFFFF00BDD6CE00D6E7DE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF - FF00F7FFF700EFF7F700CEDED600BDD6CE00C6DED600D6DEDE00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00EFF7EF00BDCEC600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B56300FFFFFF00A5D6A5005AAD5A0052A552004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF0000000000BDCEC600E7EFE700FFFF - FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF - F700EFF7F700DEE7DE00BDCEC6000000000000000000BDD6C600DEE7E700FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7F7F700C6D6CE0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF000000000000000000BDCEC600E7EF - E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 - F700DEE7DE00BDD6C60000000000000000000000000000000000BDD6C600DEE7 - E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF - EF00C6D6CE000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF00000000000000000000000000BDCE - C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE - D600BDCEC600000000000000000000000000000000000000000000000000BDD6 - CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE - C600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 - C600000000000000000000000000000000000000000000000000000000000000 - 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000BDBDBD000000840000007300100000006363630000000000000000000000 - 000000000000000000000000000000000000FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF00FFFFFF0052ADFF0018529400185A - 9C00185A9C00185A9C00185AA500185AA500185A9C00185A9C00185294001852 - 940018528C00184A84004AADFF00FFFFFF00FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF000000000000000000BDBDBD003131 - 31000000AD000000FF000000DE00000042005252520000000000000000000000 - 000000000000000000000000000000000000FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF00FFFFFF00185AA500186BBD001873 - CE001873CE001873CE001873CE001873CE001873CE001873CE001873CE00186B - C600186BBD00185AA500104A7B00FFFFFF00FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF000000000000000000737373000000 - 42000000FF000000FF000000840000319C002121210000000000000000000000 - 000000000000000000000000000000000000FFFFFF00188C180029942900399C - 3900399C3900399C390039A53900A5D6A500FFFFFF0021AD210018AD180010B5 - 100008AD0800009C0000007B0000FFFFFF00FFFFFF001863AD001873CE00187B - DE00187BDE00187BE7001884E700188CF700188CF700188CF700188CF700187B - DE00186BC6001863AD0018528C00FFFFFF00FFFFFF00188C180029942900399C - 3900399C3900399C390039A539004AA54A00A5D6A500FFFFFF004AA54A0031A5 - 310018A51800009C0000007B0000FFFFFF00000000008C8C8C00BDBDBD000000 - 4200000084000000EF000000FF000000CE000000310073737300000000000000 - 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 - 42004AA54A0042A5420042A54200FFFFFF00FFFFFF00FFFFFF0021B5210018B5 - 180010AD100008A50800087B0800FFFFFF00FFFFFF00186BC600187BDE001884 - EF00FFFFFF0084C6FF00188CF700188CF700188CF700188CF70084C6FF00FFFF - FF001873CE00186BBD0018529400FFFFFF00FFFFFF0021942100399C390042A5 - 420042A5420042A542004AA54A00A5D6A500FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210008A50800087B0800FFFFFF000000000000000000001000000000 - AD000000FF000000FF000000FF000000DE001010100000002100525252007373 - 730031009C0000313100A5A5A50000000000FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A0042A5420042AD4200FFFFFF00FFFFFF00FFFFFF0018B5 - 180010AD100010A5100008840800FFFFFF00FFFFFF001873CE001884E700188C - F700188CFF00FFFFFF0084C6FF00188CF700188CF70084C6FF00FFFFFF001884 - E7001873D600186BC600185A9C00FFFFFF00FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210010A5100008840800FFFFFF0000000000BDBDBD00100000000000 - 84000000FF000000CE000000EF0000008400000084000000FF000000BD000000 - 840000006300737373000021000063636300FFFFFF00319C31004AA54A0052A5 - 520052A552004AA54A004AA54A0042A5420039AD3900FFFFFF00FFFFFF00FFFF - FF0018AD180018A5180010841000FFFFFF00FFFFFF00187BDE00188CF700188C - FF00188CF700188CF700FFFFFF0084C6FF0084C6FF00FFFFFF00188CF7001884 - E7001873D6001873CE00185AA500FFFFFF00FFFFFF00319C31004AA54A0052A5 - 52004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210018A5180010841000FFFFFF000000000021212100000021000000 - AD000000FF0000004200000084000000FF000000FF0000007300000042000000 - 420073737300313163000000AD0000006300FFFFFF00429C420052A55200FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00219C210018841800FFFFFF00FFFFFF001884E700188CFF00188C - F700188CF700188CF700188CF700FFFFFF0084C6FF00188CF7001884EF00187B - DE001873CE001873CE001863AD00FFFFFF00FFFFFF00429C420052A552004AA5 - 4A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042A5420031A5 - 3100219C2100219C210018841800FFFFFF00000000008C8C8C0000009C000000 - FF000000EF00000073000000EF000000FF000000EF0000003100100000005252 - 52000000EF000000FF000000DE0031316300FFFFFF0042A542005AAD5A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00219C2100217B2100FFFFFF00FFFFFF001884EF00188CFF00188C - FF00188CF700188CF70084C6FF00FFFFFF00FFFFFF0084C6FF001884E7001873 - D6001873CE001873CE001863AD00FFFFFF00FFFFFF0042A5420052A5520052A5 - 5200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C3900299C - 2900219C2100219C2100217B2100FFFFFF000000000010000000000042000031 - CE000000FF0000009C000000FF000000FF000000EF00000073000000AD000000 - CE000000FF000000FF000000AD0021212100FFFFFF0052A5520063AD630063AD - 63005AAD5A0052A552004AA54A00429C4200399C3900FFFFFF00FFFFFF00FFFF - FF00299C290029942900217B2100FFFFFF00FFFFFF00188CFF002194FF002194 - FF00188CFF0084C6FF00FFFFFF001884F7001884EF00FFFFFF0084C6FF001873 - CE001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552005AAD5A005AAD - 5A0052A55200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C39003194 - 31002994290029942900217B2100FFFFFF00000000008C8C8C00000000000000 - AD000000FF000000EF0000007300000052000031CE000000AD000000EF000000 - EF000000BD0000006300BDBDBD0000000000FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052A552004AA54A00429C4200FFFFFF00FFFFFF00FFFFFF002994 - 29002994290029942900217B2100FFFFFF00FFFFFF00188CFF0039A5FF0039A5 - FF0084C6FF00FFFFFF00188CFF00188CFF001884EF001884E700FFFFFF0084C6 - FF001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052AD5200A5D6A500FFFFFF00FFFFFF00FFFFFF00399C39003194 - 31002994290029942900217B2100FFFFFF000000000000000000000000000000 - 52000000FF000000BD000031CE000000AD00000073003100CE00525252002121 - 21000000AD00000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A0052A55200FFFFFF00FFFFFF00FFFFFF00319C3100319C - 31003194310031943100217B2100FFFFFF00FFFFFF002194FF0052ADFF004AAD - FF00FFFFFF002194FF002194FF001894FF00188CF7001884EF001884E700FFFF - FF001873CE001873CE001863AD00FFFFFF00FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A005AAD5A00A5D6A500FFFFFF00FFFFFF00429C4200399C - 39003194310031943100217B2100FFFFFF0000000000A5A5A500000000000000 - 52000000AD0000005200000073000031FF000000730000005200212121000000 - 100000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B5630063AD6300B5DEB500FFFFFF004AA54A004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF00FFFFFF0039A5FF006BBDFF0052AD - FF0039A5FF00319CFF00299CFF00299CFF002194FF00188CFF001884F7001884 - EF00187BDE001873CE001863AD00FFFFFF00FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B5630063AD630063AD6300A5D6A500FFFFFF004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF000000000000000000000000003131 - 3100000042000000CE000000AD000000DE00000063000000420000004200BDBD - BD0000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF00FFFFFF004AADFF0084C6FF006BBD - FF0052ADFF004AADFF0039A5FF00319CFF00299CFF002194FF001894FF00188C - F7001884EF001873CE00185A9C00FFFFFF00FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF000000000000000000000000000000 - 00008C8C8C002121210000004200313131008C8C8C00BDC6C600000000000000 - 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF00FFFFFF00ADDEFF004AADFF00319C - FF002194FF00188CFF00188CFF00188CF700188CF7001884EF001884E700187B - DE001873CE00186BBD0063B5FF00FFFFFF00FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0000000000424D3E000000000000003E000000 - 2800000040000000300000000100010000000000800100000000000000000000 - 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000 - FFFFFFFF00000000F00FF03F00000000F7EFF7BF00000000F7EFF7BF00000000 - F7EFF78F00000000F7EFF02F00000000F7EFF02F00000000F00FFDEF00000000 - F00FFC0F00000000FFFFFC0F00000000FFFFFFFF00000000FFFFFFFF00000000 - FFFFFFFF00000000FFFFFFFF000000008001F01FF00FFFFF0000E00FE007FFFF - 0000C007C003FFFF000080038001FFFF000000010000F81F000000000000F81F - 000000000000FFFF000000000000FFFF000000000000FFFF000000000000FFFF - 000000000000FFFF000000000001FFFF000080018003FFFF0000C003C007FFFF - 0000E007E00FFFFF8001F00FF01FFFFFFFFF800180018001F07F000000000000 - C07F000000000000C07F000000000000003F0000000000008001000000000000 - 0000000000000000800000000000000000000000000000008000000000000000 - 00010000000000008007000000000000800F000000000000E00F000000000000 - F03F000000000000FFFF80018001800100000000000000000000000000000000 - 000000000000} - end - object lstImages: TMenuImgList - BkColor = clSilver - DrawingStyle = dsTransparent - Left = 236 - Top = 236 - Bitmap = { - 494C01013B004000040010001000C0C0C000FF10FFFFFFFFFFFFFFFF424D3600 - 000000000000360000002800000040000000F0000000010020000000000000F0 - 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C6C6C600F7730000CE5A0000CE5A0000F7730000C6C6C600C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C6C6 - C600CE5A0000F7730000F7C69400F7C69400F7C69400F7A55A00F7730000CE5A - 0000C6C6C600C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700637B - D6000042C6000042C6000042C600637BD600BDC6F700C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C0C0C000C6C6C600CE5A - 0000F7A55A00FFE7CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFE7CE00F7A5 - 5A00CE5A0000C6C6C600C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700637BD6000042C600ADBD - E700A5B5DE009CADD6009CA5CE00949CC6000042C600637BD600BDC6F700C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C6C6C600CE5A0000F7A5 - 5A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7A55A00CE5A0000C6C6C600C0C0C000C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600637BD600BDCEFF00B5C6F700B5BD - EF00A5B5DE00A5ADD6009CA5CE00949CC600949CC600949CC600637BD600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000CE5A0000F7A55A00FFFF - FF00FFFFFF00F7A55A00F7A55A00F7730000F7730000F7A55A00F7A55A00FFFF - FF00FFFFFF00F7A55A00CE5A0000C0C0C000C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000042C600C6D6FF00BDCEFF00B5C6 - F700ADBDEF00A5B5DE009CADD6009CA5CE00949CC600949CC6000042C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600F7730000FFE7CE00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFE7CE00F7730000C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000042C600CEDEFF00C6D6FF00BDCE - FF00B5C6F700ADBDE700A5B5DE009CADD60094A5CE0094A5CE000042C6004242 - 42004242420084848400C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000C6C6C600C6C6C600C6C6C6006363 - 6300FFBD730000630000006300000063000000630000E7A56B00006300000063 - 00000063000000630000C6C6C600C6C6C600BDC6F7000042C600CEDEFF00C6D6 - FF00BDCEFF00B5C6F700ADBDE700A5ADDE009CADD6000042C60084848400B5B5 - B500B5B5B500ADADAD0084848400848484000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000CE5A0000F7C69400FFFFFF00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00F7C69400CE5A0000C6C6C60063636300424242006363 - 6300FFC67B0000630000008400000084000000630000EFAD6B00006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600BDC6F7000042C600CEDE - FF00637BD6000042C600637BD600ADB5E7000042C60042424200BDBDBD00BDBD - BD00B5B5B500ADADAD00ADADAD00424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000CE5A0000F7C69400FFFFFF00FFFF - FF00FFFFFF00F7A55A00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00F7C69400CE5A000084848400C6C6C600C6C6C6006363 - 6300FFC67B000063000000840000008400000063000042424200006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700315A - C600CEDEFF00C6D6FF00BDC6F700315AC600BDC6F70042424200C6C6C600BDBD - BD00BDBDBD00B5B5B500ADADAD00424242000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000C6C6C600C6C6C60042424200D694 - 4A008484840000630000008400000084000000630000C6C6C600006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600637BD600D6E7 - FF00D6DEFF00CED6FF00BDCEFF00B5C6F700637BD600C6C6C60084848400C6C6 - C600BDBDBD00BDBDBD0084848400C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600F7730000FFE7CE00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00FFE7CE00F7730000C6C6C600848484006363630063636300D6AD - 6B00D6944A000063000000840000008400000063000063636300006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6000042C600DEEF - FF00D6E7FF00CEDEFF00C6D6FF00BDCEFF000042C600C6C6C600C6C6C6006363 - 63004242420063636300C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000CE5A0000F7A55A00FFFF - FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF - FF00FFFFFF00F7A55A00CE5A0000C0C0C000C6C6C600C6C6C600C6C6C6006363 - 63004242420000630000008400000084000000630000C6C6C600006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600637BD600DEEF - FF00D6E7FF00CEDEFF00CED6FF00C6CEFF00637BD600C6C6C60063636300CECE - CE00CECECE00C6C6C60063636300C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C6C6C600CE5A0000F7A5 - 5A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7A55A00CE5A0000C6C6C600C0C0C000C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60000630000008400000084000000630000C6C6C600006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700315A - C600D6E7FF00D6DEFF00CEDEFF00315AC600BDC6F700C6C6C60042424200D6D6 - D600CECECE00C6C6C60042424200C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C0C0C000C6C6C600CE5A - 0000F7A55A00FFE7CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFE7CE00F7A5 - 5A00CE5A0000C6C6C600C0C0C000C0C0C000C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60000630000008400000084000000630000C6C6C600006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600BDC6 - F700637BD6000042C600637BD600BDC6F700C6C6C600C6C6C60084848400D6D6 - D600CECECE00CECECE0084848400C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C6C6 - C600CE5A0000F7730000F7A55A00F7C69400F7C69400F7A55A00F7730000CE5A - 0000C6C6C600C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000630000008400000084000000630000C6C6C600006300000084 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 84004242420084848400C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C6C6C600F7730000CE5A0000CE5A0000F7730000C6C6C600C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000630000006300000063000000630000C6C6C600006300000063 - 00000063000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEEFEF0000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF00000000009CA59C009CA5 - 9C009CA59C009CA59C009CA59C009CA59C00C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0000000000E7EFEF00FFFF - FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000000FF0063636300C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 - C600C6C6C60084848400C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0000000000E7EFEF00FFFF - FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B008484FF008484FF000000 - FF0063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B00EFAD6B00636363004242 - 420063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00BD8C94000000FF00CE948C00EFAD6B00EFAD6B0052527B000000 - FF004A4A8400C6C6C600C6C6C600C6C6C6000000000084848400848484008484 - 8400848484008484840084848400848484008484840000000000E7EFEF00FFFF - FF00FFFFFF00E7EFEF00FFFFFF009CA59C0084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B573000000FF0042424200C6C6C600C6C6 - C600C6C6FF000000FF00C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD73005A42CE00F7B57300424242000000FF00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B001810EF00946BAD00F7B57300424242007373DE001818 - FF00C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000 - 0000000000000000000000000000000000000000000084848400E7EFEF00FFFF - FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD73008484FF00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6FF000000FF00C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C6000000FF00C6C6 - C600C6C6C600525AFF00B5BDF700C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00634AC6000000FF000000FF000000FF000000FF005A63 - FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00E7EF - EF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EF - EF00E7EFEF00E7EFEF00FFFFFF009CA59C00848484006363630063636300D6AD - 6B00D6944A0063636300636363000000FF004242420063636300C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6FF00C6C6C600848484006363630063636300D6AD - 6B00D6944A006363630039399C000000F7000000FF002121C6000000FF00C6C6 - C600C6C6C600737BF7003131FF00C6C6C600848484006363630063636300D6AD - 6B00D6944A006363630042428C000000F70042424200636363000808FF00A5AD - F700C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00E7EF - EF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EF - EF00E7EFEF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6FF00C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C6000000F7009C9CCE00D6E7EF00737BF7000000FF00C6C6 - C600C6C6C600DEEFEF000000FF00C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C600393942000808FF00B5C6F700B5BDF7000808F700DEEF - EF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00E7EF - EF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EF - EF00E7EFEF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C6000000FF00C6C6FF00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C6000000F700B5BDF700D6E7EF00C6C6C6000000FF00ADBD - F700C6C6C6008494F7002121FF00C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300DEEFEF00DEEFEF00636363005252FF007B84F700737BF7005252FF00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C600C6C6C6000000FF00C6C6FF00C6C6C600C6C6 - C600C6C6C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C600848484009CA5F7001818FF000000FF00C6C6C6000000FF002121 - FF000000FF002129FF00ADB5F700C6C6C600C6C6C600C6C6C600424AFF008484 - 8400424AFF0084848400C6C6C6009CA5F7003942FF003942FF009CA5F700C6C6 - C600C6C6C600424AFF00C6C6C600424AFF00C6C6C600C6C6C6009CA59C008484 - 8400848484008484840084848400848484008484840084848400848484008484 - 84008484840084848400848484009CA59C00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000FF00C6C6 - FF00C6C6FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000FF00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6003139FF00C6C6 - C6003139FF00C6C6C600C6C6C600D6E7EF001010FF001010FF00D6E7EF00C6C6 - C600C6C6C6003139FF00C6C6C6003139FF00C6C6C600C6C6C600C6C6C6009CA5 - 9C009CA59C009CA59C009CA59C009CA59C009CA59C009CA59C009CA59C009CA5 - 9C009CA59C009CA59C009CA59C00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C6000000FF00C6C6 - C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000FF00C6C6C6000000FF00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60063636300636363005A5A5A005A5A - 5A005A5A5A0052525200525252004A4A4A004A4A4A004A4A4A00424242004242 - 420039393900393939003939390031313100C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6006B6B6B00FFFFFF00FFFFFF005A5A - 5A00FFFFFF0052525200FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF0042424200FFFFFF00FFFFFF0039393900C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C6000000 - FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6006B6B6B0063636300636363005A5A - 5A005A5A5A005A5A5A005252520052525200525252004A4A4A004A4A4A004A4A - 4A0042424200424242004242420039393900C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C6000000 - FF00FFFFFF00FFFFFF00FFFFFF000000FF00C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60073737300FFFFFF00FFFFFF00FFFF - FF005A5A5A00FFFFFF005A5A5A00FFFFFF0052525200FFFFFF004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0039393900C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C6000000 - FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600737373006B6B6B00636363006363 - 6300636363005A5A5A005A5A5A005A5A5A005252520052525200525252004A4A - 4A004A4A4A004A4A4A004242420042424200C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60073737300FFFFFF00FFFFFF006363 - 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 - 5200FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B000000FF000000FF000000FF000000FF000000 - FF00C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000063000000630000C6C6 - C600C6C6C60084848400C6C6C600C6C6C6007B7B7B006B6B6B006B6B6B006B6B - 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 - 5200525252004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B573000000FF00FFFFFF00FFFFFF00FFFFFF000000 - FF000000C6000000C6000000C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0000630000008400000063 - 000063636300C6C6C600C6C6C600C6C6C6007B7B7B00FFFFFF006B6B6B00FFFF - FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF - FF0052525200FFFFFF00FFFFFF004A4A4A00C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD9463000000E7000000DE000000DE000000D6000000 - D6000000CE000000CE000000C6000000C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD9463000000FF000000FF000000FF000000FF000000 - FF0063636300C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730000630000008400000084 - 000000630000C6C6C600C6C6C600C6C6C600848484007B7B7B007B7B7B007373 - 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A - 5A005A5A5A0052525200525252004A4A4A0084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD73000000E700FFFFFF000000DE00FFFFFF000000 - D600FFFFFF000000CE00FFFFFF000000C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B573000000C60042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD73004242420000630000008400000084 - 00000084000000630000C6C6C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B00EFAD6B00636363004242 - 420063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B000000E7000000E7000000E7000000DE000000 - DE000000D6000000D6000000CE000000CE00C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD73000000C600C6C6C600C6C6C6000000 - FF000000FF000000FF000000FF000000FF00848484006363630063636300D6AD - 6B00D6944A006363630063636300636363004242420000630000008400000084 - 0000008400000084000000630000C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600848484006363630063636300D6AD - 6B00D6944A0063636300636363000000EF00FFFFFF000000E700FFFFFF000000 - DE00FFFFFF000000D600FFFFFF000000CE00848484006363630063636300D6AD - 6B00D6944A006363630063636300636363000000C6000000C6000000C6000000 - FF00FFFFFF00FFFFFF00FFFFFF000000FF00C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6C600C6C6C60000630000008400000084 - 0000008400000084000000630000C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C600424242000000EF000000EF000000E7000000E7000000 - E7000000DE000000DE000000D6000000D600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C600848484000000 - FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300C6C6C600C6C6C60000630000008400000084 - 00000084000000630000C6C6C600C6C6C600848484006363630063636300D6AD - 6B00D6944A006363630063636300636363004242420063636300C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C600636363000000F700FFFFFF000000EF00FFFFFF000000 - E700FFFFFF000000DE00FFFFFF000000D600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C600C6C6C600C6C6C60000630000008400000084 - 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C6000000F7000000F7000000EF000000EF000000 - E7000000E7000000E7000000DE000000DE00C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C6000000FF000000FF000000FF000000FF000000 - FF00C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000630000008400000063 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000000FF00FFFFFF000000F700FFFFFF000000 - EF00FFFFFF000000E700FFFFFF000000DE00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000000FF00FFFFFF00FFFFFF00FFFFFF000000 - FF000000C6000000C6000000C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000063000000630000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000000FF000000FF000000F7000000F7000000 - EF000000EF000000E7000000E7000000E700C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000000FF000000FF000000FF000000FF000000 - FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000000000000000000C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD73000084000000630000A57B5200EFAD6B000084000000630000C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000084000000630000C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0000000000424242000000 - 000063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C60063636300424242006363 - 6300FFC67B00636363000084000000630000EFAD6B0063636300008400000063 - 000063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0063636300008400000063 - 000063636300C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730000000000424242004242 - 420000000000C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300000000004242420042424200424242004242 - 42004242420042424200424242000000000084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B0000630000008400000063000042424200006300000084 - 000000630000C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730042424200006300000084 - 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD73004242420000000000424242004242 - 42004242420000000000C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00000000004242420042424200424242004242 - 420042424200424242004242420000000000C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00006300000084000000630000C6C6C6000063 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C600C6C6C6000063 - 00000084000000630000C6C6C600C6C6C600848484006363630063636300D6AD - 6B00D6944A006363630063636300636363004242420000000000424242004242 - 4200424242004242420000000000C6C6C600848484006363630063636300D6AD - 6B00D6944A006363630063636300000000004242420042424200424242004242 - 420042424200424242004242420000000000848484006363630063636300D6AD - 6B00D6944A00636363006363630063636300006300000084000000630000C6C6 - C600006300000084000000630000C6C6C600848484006363630063636300D6AD - 6B00D6944A006363630063636300636363004242420063636300C6C6C600C6C6 - C600006300000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6C600C6C6C60000000000424242004242 - 4200424242004242420000000000C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200000000004242420042424200424242004242 - 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6C600006300000084000000630000C6C6 - C600006300000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C60084848400C6C6 - C600006300000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300C6C6C600C6C6C60000000000424242004242 - 42004242420000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300000000004242420042424200424242004242 - 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300006300000084000000630000C6C6C6000063 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C6000063 - 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C600C6C6C600C6C6C60000000000424242004242 - 420000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C600000000004242420042424200424242004242 - 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400006300000084000000630000C6C6C600006300000084 - 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600006300000084 - 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000424242000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600000000004242420042424200424242004242 - 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600848484000084000000630000C6C6C60084848400008400000063 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400008400000063 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000084000000630000C6C6C600C6C6C6000084000000630000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000084000000630000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600ADC6FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600B5BDF7004A73DE000042C6000042C6004A73 - DE00B5BDF700C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600B5BDF7000042C6000042C6000042C6000042 - C6000042C600B5BDF700C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600ADC6 - FF000042DE004A73E7005273E7004A73E7007394FF00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6004A73DE004A73DE00B5BDF700FFFFFF00FFFFFF00B5BD - F7004A73DE004A73DE00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700B5BDF700B5BDF7008C9C - EF008C9CEF000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000852 - E7000039C6005273DE005273DE005273DE004A6BDE005273E7005273EF0084A5 - FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004A73DE00B5BDF700F7CEAD00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00CED6FF00B5BDF7004A73DE00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700FFFFFF008C9CEF00FFFF - FF004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6007B9CFF005273 - DE00295ACE005273DE005273DE005273DE005273DE005273DE004A73DE004A6B - DE005273E700638CFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600B5BDF7004A73DE00F7CEAD00FFFFFF00F7CEAD00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00CED6FF004A73DE00B5BDF700C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700FFFFFF008C9CEF00FFFF - FF004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 - C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600527BEF005273 - DE002152D600215AC6000039C600184AD600426BDE005273DE005273DE005273 - DE004A6BDE006B8CFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6004A73DE00B5BDF700F7CEAD00F7CEAD00FFFFFF000042C6000042C600FFFF - FF00FFFFFF00FFFFFF00B5BDF7004A73DE00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700FFFFFF008C9CEF00FFFF - FF004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600ADC6FF004A73E7005273 - DE000039C600FFFFCE00FFF7CE00ADB5CE004273C6000039C6000842CE003163 - D6005273DE007B9CFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6000042C600FFFFFF00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF000042 - C600FFFFFF00FFFFFF00FFFFFF000042C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000042C6008C9CEF008C9CEF004A73DE004A73 - DE004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600638CFF005273DE003963 - D600ADB5CE00FFF7CE00FFEFCE00FFF7CE00FFFFCE00FFFFCE00C6D6E700638C - DE00084AC6004A7BEF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6000042C600FFFFFF00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF000042 - C600FFFFFF00FFFFFF00FFFFFF000042C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6000031A5000031A5000031A5000031A5000031A5000031 - A5000031A5000031A5000031A500C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 - C600C6C6C60084848400C6C6C600C6C6C600C6C6C6005273E7005273DE000042 - CE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFC600FFFFFF00FFFF - FF0094B5E7002152D600ADC6FF00C6C6C60063636300636363005A5A5A005A5A - 5A004A73DE00B5BDF700FFFFFF00FFFFFF00FFFFFF000042C6000042C600FFFF - FF00F7CEAD00F7CEAD00B5BDF7004A73DE0063636300636363005A5A5A005A5A - 5A005A5A5A00525252000042C600B5BDF700FFFFFF00FFFFFF00B5BDF7008C9C - EF00B5BDF7004A73DE000042C60031313100C6C6C60063636300424242006363 - 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0084848400000084000000 - 8400000084008484FF00C6C6C600C6C6C6004A73E7004A73E7005273DE001852 - C600FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFF7D600FFFFFF00FFFF - FF000042C6005273DE005273EF00C6C6C6006B6B6B00FFFFFF00FFFFFF005A5A - 5A00B5BDF7004A73DE00CED6FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7CE - AD00FFFFFF00F7CEAD004A73DE00393939006B6B6B00FFFFFF00FFFFFF005A5A - 5A00FFFFFF0052525200B5BDF7000042C6000042C6000042C600B5BDF7000042 - C6000042C6000042C600B5BDF7003939390084848400C6C6C600C6C6C6006363 - 6300FFC67B00FFC67B00FFBD7300F7B5730063636300000084000000FF000000 - FF000000FF00000084000000C600C6C6C600ADC6FF00527BEF00315AD6009CAD - C600FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFF7E700FFFFFF00D6DE - F7000042C6005273DE005273EF00C6C6C6006B6B6B0063636300636363005A5A - 5A005A5A5A004A73DE00B5BDF700CED6FF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00F7CEAD00B5BDF7004A73DE00393939006B6B6B0063636300636363005A5A - 5A005A5A5A005A5A5A005252520052525200525252000042C6000042C6000042 - C60042424200424242004242420039393900C6C6C600C6C6C60042424200D694 - 4A0084848400FFC67B00FFC67B0084848400000084000000FF000000FF000000 - FF000000FF000000FF00000084008484FF00C6C6C600ADC6FF00215ADE00396B - C600ADB5CE00FFEFCE00FFEFCE00FFF7CE00FFEFCE00FFEFD600FFFFFF00527B - D6003963D6004A6BDE00ADC6FF00C6C6C60073737300FFFFFF00FFFFFF00FFFF - FF005A5A5A00FFFFFF004A73DE004A73DE00B5BDF700FFFFFF00FFFFFF00B5BD - F7004A73DE004A73DE00FFFFFF003939390073737300FFFFFF00FFFFFF00FFFF - FF005A5A5A00FFFFFF005A5A5A00FFFFFF0052525200FFFFFF004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0039393900848484006363630063636300D6AD - 6B00D6944A006363630063636300000084000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF0000008400C6C6C600C6C6C600ADC6FF003963 - D600104ACE000031C600396BC600A5ADCE00FFF7CE00FFFFCE00FFFFFF000039 - C6005273DE005273E700C6C6C600C6C6C600737373006B6B6B00636363006363 - 6300636363005A5A5A005A5A5A005A5A5A004A73DE000042C6000042C6004A73 - DE004A4A4A004A4A4A004242420042424200737373006B6B6B00636363006363 - 6300636363005A5A5A005A5A5A005A5A5A005252520052525200525252004A4A - 4A004A4A4A004A4A4A004242420042424200C6C6C600C6C6C600C6C6C6006363 - 630042424200C6C6C60042424200000084000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF0000008400C6C6C600C6C6C6007B9CFF004A73 - E7005273DE005A73DE004263D600104ACE000031C6002963C6005A84CE00215A - D6005273DE006B8CFF00C6C6C600C6C6C60073737300FFFFFF00FFFFFF006363 - 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 - 5200FFFFFF00FFFFFF00FFFFFF004242420073737300FFFFFF00FFFFFF006363 - 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 - 5200FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300000084000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF0000008400C6C6C600C6C6C600C6C6C600ADC6 - FF006B8CFF004A73E7005273E7005273DE005A73DE004263D6002963DE006384 - F7004A6BDE00ADC6FF00C6C6C600C6C6C6007B7B7B006B6B6B006B6B6B006B6B - 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 - 5200525252004A4A4A004A4A4A004A4A4A007B7B7B006B6B6B006B6B6B006B6B - 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 - 5200525252004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C60084848400C6C6C6008484FF00000084000000FF000000FF000000 - FF000000FF000000FF00000084008484FF00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6007B9CFF00638CFF004A73E7005273E700C6C6C600C6C6 - C600ADC6FF00C6C6C600C6C6C600C6C6C6007B7B7B00FFFFFF006B6B6B00FFFF - FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF - FF0052525200FFFFFF00FFFFFF004A4A4A007B7B7B00FFFFFF006B6B6B00FFFF - FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF - FF0052525200FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000C600000084000000FF000000 - FF000000FF00000084000000C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600ADC6FF00ADC6FF00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600848484007B7B7B007B7B7B007373 - 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A - 5A005A5A5A0052525200525252004A4A4A00848484007B7B7B007B7B7B007373 - 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A - 5A005A5A5A0052525200525252004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484FF00000084000000 - 8400000084008484FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200000000000000000042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6005A5A5A005A5A5A00525252005252 - 5200525252004A4A4A004A4A4A004A4A4A004242420042424200424242003939 - 390039393900393939003131310031313100C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6008CDE8C0029B52900089400000894000029B5 - 29008CDE8C00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000424242005252A5007373C6007373BD005252A500424242000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C6005A5A5A00FFFFFF00FFFFFF005252 - 5200FFFFFF0052525200FFFFFF00FFFFFF00FFFFFF00FFFFFF0042424200FFFF - FF0039393900FFFFFF00FFFFFF0031313100C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60029B5290008940000FFFFFF0008940000089400000894 - 00000894000029B52900C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00005252A5007B7BD6007B7BCE0042424200000000006B6BB5006B6BB5005252 - A50000000000C6C6C600C6C6C600C6C6C6005A5A5A005A5A5A005A5A5A005A5A - 5A005252520052525200525252004A4A4A004A4A4A004A4A4A00424242004242 - 420042424200393939003939390039393900C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60029B529008CDE8C00FFFFFF008CDE8C0008940000089400000894 - 00008CDE8C008CDE8C0029B52900C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000006B6B - B5008484DE007B7BD60000000000FFFFFF00FFFFFF00424242006B6BB5006B6B - B5005252A50000000000C6C6C600C6C6C60063636300FFFFFF00FFFFFF00FFFF - FF005A5A5A00FFFFFF0052525200FFFFFF004A4A4A00FFFFFF004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0039393900C6C6C600C6C6C600C6C6C600C6C6 - C6008CDE8C0008940000FFFFFF00089400000894000008940000089400000894 - 000008940000FFFFFF00089400008CDE8C00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484D6008C8C - EF008484E7008484DE0042424200FFFFFF00FFFFFF00000000006B6BB5006B6B - B5006B6BB5005252A50000000000C6C6C60063636300636363005A5A5A005A5A - 5A005A5A5A005A5A5A005252520052525200525252004A4A4A004A4A4A004A4A - 4A0042424200424242004242420039393900C6C6C600C6C6C600C6C6C600C6C6 - C60029B52900FFFFFF00FFFFFF00089400000894000008940000089400000894 - 000008940000FFFFFF00FFFFFF0029B52900C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C600C6C6C600C6C6C60063636300636363006363630042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600424242009494F7008C8C - EF008C8CEF008484E7008484DE0000000000424242007373C6006B6BBD006B6B - B5006B6BB5006B6BB50042424200C6C6C60063636300FFFFFF00FFFFFF005A5A - 5A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60052525200FFFFFF004A4A - 4A00FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C600C6C6 - C60008940000FFFFFF00FFFFFF00FFFFFF000894000008940000089400000894 - 00008CDE8C00089400008CDE8C0008940000C6C6C600C6C6C600C6C6C600C6C6 - C60063636300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B52004242 - 4200C6C6C600C6C6C600C6C6C600C6C6C600424242008484D6009494FF009494 - F7009494F7008C8CEF0000000000FFFFFF00FFFFFF00000000007373C6007373 - BD006B6BB5006B6BB5005252A500424242006B6B6B0063636300636363006363 - 6300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60052525200525252004A4A - 4A004A4A4A004A4A4A004242420042424200C6C6C600C6C6C600C6C6C600C6C6 - C60008940000FFFFFF008CDE8C008CDE8C008CDE8C00FFFFFF00FFFFFF00FFFF - FF0008940000089400000894000008940000C6C6C600C6C6C600C6C6C600C6C6 - C6004242420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B006363 - 6300C6C6C600C6C6C600C6C6C600C6C6C600000000009C9CFF009C9CFF009C9C - FF009494FF009494F70042424200FFFFFF00FFFFFF00000000007373C6007373 - C6007373BD007373BD007373BD0000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6005A5A5A005A5A5A0052525200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60063636300636363005A5A5A005A5A - 5A0029B52900FFFFFF00FFFFFF000894000008940000FFFFFF00089400008CDE - 8C0008940000089400000894000029B52900C6C6C600C6C6C600C6C6C600C6C6 - C60063636300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B006363 - 6300C6C6C600C6C6C60084848400C6C6C600000000009C9CFF009C9CFF009C9C - FF009C9CFF009C9CFF009494F70000000000FFFFFF00FFFFFF00000000007B7B - CE007373C6007373C6007373C60000000000C6C6C600C6C6C600C6C6C6006363 - 63006363630063636300C6C6C6005A5A5A00FFFFFF005A5A5A00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6006B6B6B00FFFFFF00FFFFFF005A5A - 5A008CDE8C0008940000FFFFFF00FFFFFF000894000008940000089400000894 - 00000894000008940000089400008CDE8C00C6C6C600C6C6C600636363004242 - 420063636300FFC67B00FFBD7300BD946300F7B57300EFAD6B00EFAD6B006363 - 63004242420063636300C6C6C600C6C6C600424242008484D600A5A5FF00A5A5 - FF00A5A5FF0000000000424242009494F70042424200FFFFFF00FFFFFF004242 - 42007B7BCE007B7BCE005252A50042424200C6C6C600C6C6C600C6C6C6006B6B - 6B00FFFFFF0063636300C6C6C6005A5A5A005A5A5A005A5A5A00C6C6C600C6C6 - C60052525200525252004A4A4A004A4A4A006B6B6B0063636300636363005A5A - 5A005A5A5A0029B529008CDE8C0008940000FFFFFF0008940000089400000894 - 0000089400000894000029B5290039393900C6C6C60084848400C6C6C600C6C6 - C60063636300FFC67B00FFC67B00FFBD7300F7B57300F7B5730042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200A5A5FF00A5A5 - FF0000000000FFFFFF00FFFFFF008484840042424200FFFFFF00FFFFFF000000 - 00007B7BD6007B7BD60042424200C6C6C60073737300737373006B6B6B006B6B - 6B006B6B6B0063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60052525200FFFFFF00FFFFFF004A4A4A0073737300FFFFFF00FFFFFF00FFFF - FF005A5A5A00FFFFFF0029B5290008940000FFFFFF00FFFFFF008CDE8C000894 - 00000894000029B52900FFFFFF0039393900C6C6C600C6C6C600C6C6C6004242 - 4200D6944A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484D600A5A5 - FF0042424200FFFFFF00FFFFFF008484840084848400FFFFFF00FFFFFF004242 - 42008484DE005252A50000000000C6C6C60073737300FFFFFF0073737300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600636363005A5A5A005A5A5A00C6C6 - C6005A5A5A00525252005252520052525200737373006B6B6B00636363006363 - 6300636363005A5A5A005A5A5A008CDE8C0029B52900089400000894000029B5 - 29008CDE8C004A4A4A004242420042424200C6C6C60084848400636363006363 - 6300D6AD6B00D6944A006363630063636300636363004242420063636300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484 - D600A5A5FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008C8C - EF006B6BB50000000000C6C6C600C6C6C6007B7B7B007373730073737300C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60063636300FFFFFF005A5A5A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60073737300FFFFFF00FFFFFF006363 - 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 - 5200FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C600C6C6 - C6006363630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C6008484 - 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00008484D600A5A5FF00424242000000000000000000424242009494F7008484 - D60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600737373006B6B6B006B6B6B00C6C6C600636363006363630063636300C6C6 - C6005A5A5A005A5A5A005A5A5A00C6C6C6007B7B7B006B6B6B006B6B6B006B6B - 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 - 5200525252004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C60063636300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000424242008484D6009C9CFF009C9CFF008484D600424242000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60073737300FFFFFF006B6B6B00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6005A5A5A00FFFFFF005A5A5A00C6C6C6007B7B7B00FFFFFF006B6B6B00FFFF - FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF - FF0052525200FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C60084848400C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200000000000000000042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600737373007373730073737300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600636363005A5A5A005A5A5A00C6C6C600848484007B7B7B007B7B7B007373 - 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A - 5A005A5A5A0052525200525252004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600848484004242420021212100212121002121 - 210021212100212121002121210042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C0000000000000000000C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600086B7B0008E7FF0008DEFF0008D6FF0008CE - EF0008BDE70008B5D60008ADCE0021212100C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300A59484009C94840063636300C6C6C600C6C6 - C60063636300A5A5A500C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C00000000000C6C6C60000000000C0C0C000C0C0C000000000000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600086B7B0008E7FF0008DEFF0008D6FF0008CE - EF0008BDE70008B5D60008ADCE0021212100C6C6C600C6C6C600424242009C8C - 7B002121210000000000A59C8C00A59C8C00A59484009C948400000000002121 - 21009C8C7B0042424200A5A5A500C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600000000008400840000000000848484000000000000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C0000000000031B5D600C6C6C60000000000C0C0C00000000000FFFFFF000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600086B7B0008E7FF0008DEFF0008D6FF0008CE - EF0008BDE70008B5D60008ADCE0021212100C6C6C600636363009C8C7B00ADA5 - 9400ADA59400AD9C8C00A59C8C00A59C8C00A59C8C00A59484009C9484009C94 - 84009C9484009C8C7B0063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000840084008400840000000000FFFFFF00C6C6C600FFFFFF000000 - 000000000000C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C00000000000C6C6C600000000000000000084848400FFFFFF000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600F7D6 - 9400D6941000A56B0800A56B0800086B7B0008E7FF0008DEFF0008D6FF0008CE - EF0008BDE70008B5D60008ADCE0021212100C6C6C600C6C6C60021212100B5A5 - 9400ADA59400ADA5940042424200424242004242420042424200A59484009C94 - 84009C94840021212100C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00008400840084008400840084000000000084848400FFFFFF00C6C6C600FFFF - FF00C6C6C6000000000000000000C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C0000000000031B5D600C6C6C60000000000C0C0C00000000000FFFFFF000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600D6941000A56B - 0800FFFFFF00D6941000A56B0800086B7B0008E7FF0008DEFF0008D6FF0008CE - EF0008BDE70008B5D60008ADCE0042424200C6C6C600C6C6C60000000000B5AD - 9C00B5A5940021212100C6C6C600C6C6C600C6C6C600C6C6C60021212100A594 - 84009C94840000000000C6C6C600C6C6C600C6C6C600C6C6C600000000008400 - 8400840084008400840084008400C6C6C600000000000000000084848400C6C6 - C600FFFFFF00C6C6C6000000000000000000C0C0C000C0C0C000C0C0C000C0C0 - C0000000000021EFFF00C6C6C600000000000000000084848400FFFFFF000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600D6941000F7D69400FFFF - FF00F7D69400D6941000A56B0800086B7B00086B7B00086B7B00086B7B00086B - 7B00086B7B00086B7B00086B7B00086B7B004242420063636300B5AD9C00B5AD - 9C0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200A59484009C9484006363630042424200C6C6C60000000000840084008400 - 84008400840084008400C6C6C600840084008400840084008400000000000000 - 000084848400FFFFFF0084848400FFFFFF00C0C0C000C0C0C000C0C0C0000000 - 000031B5D60021EFFF00C6C6C6000000000000000000C6C6C600FFFFFF000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000F7D69400A56B0800FFFFFF00D694 - 1000D6941000A56B0800A56B0800A56B080042424200CECECE0042424200F7D6 - 940042424200B5B5B50042424200C6C6C60063636300BDB5A500BDAD9C00B5AD - 9C0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200A59C8C00A59484009C948400636363000000000084008400840084008400 - 840084008400C6C6C60084008400840084008400840084008400840084008400 - 8400000000000000000084848400FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 - C00000000000C6C6C60021EFFF000000000084848400C6C6C600FFFFFF000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000D6941000FFFFFF00FFFFFF00A56B - 0800A56B0800A56B0800A56B0800A56B080042424200CECECE0042424200D694 - 100042424200B5B5B50042424200C6C6C60063636300BDB5A500BDB5A500BDAD - 9C0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200A59C8C00A59C8C00A5948400636363000000000084008400840084008400 - 8400C6C6C60084008400840084008400840084008400FF42FF00FFFFFF008400 - 840084008400840084000000000000000000C0C0C000C0C0C000C0C0C0000000 - 0000C6C6C60021EFFF0021EFFF00C6C6C60000000000FFFFFF00C6C6C6000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000A56B0800FFFFFF00FFFFFF00FFFF - FF00A56B0800A56B0800A56B0800A56B080042424200CECECE0042424200A56B - 080042424200B5B5B50042424200C6C6C6004242420063636300BDB5A500BDB5 - A50042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200A59C8C00A59C8C006363630042424200000000008400840084008400C6C6 - C60084008400840084008400840084008400FFFFFF0084008400840084008400 - 8400840084008400840000000000C6C6C600C0C0C000C0C0C0000000000021EF - FF0021EFFF0021EFFF0021EFFF0021EFFF00C6C6C60000000000C6C6C600FFFF - FF0000000000C0C0C000C0C0C000C0C0C000A56B0800FFFFFF00F7D69400F7D6 - 9400F7D69400FFFFFF00F7D69400FFFFFF0084848400C6C6C600848484004242 - 420084848400B5B5B50084848400C6C6C600C6C6C600C6C6C60000000000BDB5 - A500BDB5A50021212100C6C6C600C6C6C600C6C6C600C6C6C60021212100ADA5 - 9400AD9C8C0000000000C6C6C600C6C6C6000000000084008400C6C6C6008400 - 840084008400840084008400840084008400FFFFFF0084008400840084008400 - 84008400840000000000C6C6C600C6C6C600C0C0C000C0C0C0000000000021EF - FF0021EFFF0021EFFF0021EFFF0021EFFF00C6C6C60000000000C6C6C600C6C6 - C600FFFFFF0000000000C0C0C000C0C0C000D6941000FFFFFF00FFFFFF00A56B - 0800A56B0800F7D69400A56B0800F7D69400A56B080084848400BDBDBD00BDBD - BD00B5B5B50042424200C6C6C600C6C6C600C6C6C600C6C6C60021212100BDB5 - A500BDB5A500BDB5A50042424200424242004242420042424200B5A59400ADA5 - 9400ADA5940021212100C6C6C600C6C6C60000000000C6C6C600840084008400 - 840084008400FFFFFF008400840084008400FFFFFF0084008400840084008400 - 840000000000C6C6C600C6C6C600C6C6C600C0C0C000C0C0C0000000000021EF - FF00C6C6C600000000000000000021EFFF00C6C6C60000000000C6C6C600C6C6 - C600FFFFFF0000000000C0C0C000C0C0C000F7D69400A56B0800FFFFFF00FFFF - FF00A56B0800A56B0800A56B0800A56B0800A56B0800A56B0800424242004242 - 420042424200C6C6C600C6C6C600C6C6C600C6C6C600636363009C8C7B00C6B5 - A500BDB5A500BDB5A500BDB5A500BDAD9C00B5AD9C00B5AD9C00B5AD9C00B5A5 - 9400ADA594009C8C7B0063636300C6C6C600C6C6C60000000000000000008400 - 84008400840084008400FFFFFF00FFFFFF008400840084008400840084000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C0000000000021EF - FF00C6C6C60031B5D60031B5D60021EFFF00C6C6C6000000000000000000C6C6 - C600FFFFFF0000000000C0C0C000C0C0C000C6C6C600D6941000F7D69400A56B - 0800FFFFFF00A56B0800A56B0800A56B0800A56B0800A56B0800D6941000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600424242009C8C - 7B002121210000000000BDB5A500BDB5A500BDAD9C00B5AD9C00000000002121 - 21009C8C7B0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 000000000000840084008400840084008400840084008400840000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C0000000 - 000021EFFF0021EFFF0021EFFF0021EFFF00000000008484840084848400C6C6 - C600FFFFFF0000000000C0C0C000C0C0C000C6C6C600C6C6C600D6941000A56B - 0800FFFFFF00FFFFFF00F7D69400A56B0800A56B0800D6941000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 - 6300C6C6C600C6C6C60063636300BDB5A500BDB5A50063636300C6C6C600C6C6 - C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000840084008400840000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C00000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C60000000000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600F7D6 - 9400D6941000A56B0800A56B0800D6941000F7D69400C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200636363006363630042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C0000000000000000000000000000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C6004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A00FFFFFF004A4A4A00C6C6C6004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004AADAD004AAD - AD004AADAD004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A0000848400008484000084 - 8400008484004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004A4A4A004A4A - 4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF004A4A4A004AAD - AD004AADAD004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A004A4A4A00C6C6C6004A4A4A0000848400008484004A4A - 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A004A4A4A00C6C6C6004A4A4A00FFFFFF00FFFFFF004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004A4A4A00FFFF - FF00FFFFFF00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004AFFFF004A4A - 4A004AADAD004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF - EF00DEEFEF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF00FFFFFF004AFF - FF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A004AADAD004A4A4A00C6C6C6004A4A4A00008484004A4A4A00DEEF - EF00DEEFEF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004AFFFF00FFFF - FF004AFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00008484004A4A4A00DEEF - EF00DEEFEF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A00008484004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A00C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A00C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF00FFFFFF004AFF - FF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF - EF00DEEFEF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A00008484004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004AFFFF00FFFF - FF004AFFFF00FFFFFF004AFFFF00FFFFFF004AFFFF00FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004A4A - 4A00008484004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF00FFFFFF004AFF - FF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004A4A - 4A00DEEFEF004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A - 4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000C6C6C600C6C6C600C6C6C600FFA5A500FF636300C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000C6C6C600C6C6C600FFD6D600FF424200FFFFFF00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF0000840000FFFFFF0000840000FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000C6C6C600FFF7F700FF393900FFE7E700C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004242420042424200C6C6C6004242420042424200CECECE00C6C6 - C60073737300424242004A4A4A008C8C8C004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000FFEFEF00FF5A5A00FFC6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200C6C6 - C600C6C6C600C6C6C60042424200C6C6C600ADADAD009C9C9C00C6C6C6007373 - 7300ADADAD00C6C6C600FFFFFF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000FF636300FF9C9C00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200C6C6 - C600C6C6C600C6C6C60042424200A5A5A5007B7B7B00C6C6C600C6C6C6004242 - 4200424242004242420042424200424242004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000FFF7F700FFADAD00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004242420042424200424242004242 - 420042424200C6C6C60042424200C6C6C600CECECE00A5A5A500E7E7E7006363 - 6300BDBDBD00C6C6C600BDBDBD007B7B7B004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF0000840000FFFFFF0000840000FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600FF525200C6C6C600FF525200C6C6 - C600FF000000C6C6C600FFEFEF00FF949400C6C6C600C6C6C600C6C6C600C6C6 - C600FF525200C6C6C600FF525200C6C6C600C6C6C600C6C6C60042424200C6C6 - C600C6C6C600C6C6C60042424200C6C6C600424242004242420042424200E7E7 - E70063636300424242006B6B6B00EFEFEF004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A4A4A00C6C6C600C6C6C600C6C6C600FF424200C6C6C600FF424200C6C6 - C600FF000000C6C6C600C6C6C600FFE7E700FF8C8C00C6C6C600C6C6C600C6C6 - C600FF424200C6C6C600FF424200C6C6C600C6C6C600C6C6C60042424200C6C6 - C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A - 4A004A4A4A00C6C6C600C6C6C600C6C6C600FF313100C6C6C600FF313100C6C6 - C600FF000000C6C6C600C6C6C600C6C6C600FFD6D600FF848400C6C6C600C6C6 - C600FF313100C6C6C600FF313100C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A - 4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A - 4A00C6C6C600C6C6C600C6C6C600C6C6C600FF000000C6C6C600FF000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600FF000000C6C6C600FF000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200424242004242420042424200424242004242 - 420042424200424242004242420042424200C6C6C600C6C6C600424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0042424200C6C6C60042424200DEEFEF00DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004242 - 4200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60042424200FFFFFF004242420042424200424242004242 - 42004242420042424200FFFFFF00424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 420042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600000000000000 - 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000FFFFFF00C6C6C600C6C6C60000000000DEEFEF00000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF - EF00000000000000000000000000C6C6C6000000000000000000000000000000 - 000000000000C6C6C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004242420042424200DEEFEF00DEEFEF00DEEF - EF00DEEFEF00DEEFEF00DEEFEF0000FFFF0000FFFF0000FFFF00DEEFEF00DEEF - EF00424242004242420042424200C6C6C600C6C6C600C6C6C600000000000000 - 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000FFFFFF00C6C6C600C6C6C600C6C6C60000000000DEEFEF00000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF - EF00000000000000000000000000C6C6C60000000000DEEFEF00000000000000 - 000000000000C6C6C60042424200FFFFFF004242420042424200424242004242 - 42004242420042424200FFFFFF004242420042424200DEEFEF00DEEFEF00DEEF - EF00DEEFEF00DEEFEF00DEEFEF009CADAD009CADAD009CADAD00DEEFEF00DEEF - EF0042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000FFFFFF00C6C6C600C6C6C600C6C6C600000000000000 - 0000FFFFFF00C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000C6C6C60000000000DEEFEF00000000000000 - 000000000000C6C6C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 420042424200DEEFEF00DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6 - C600000000000000000000000000FFFFFF00C6C6C6000000000000000000FFFF - FF00C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000DEEFEF000000 - 00000000000000000000000000000000000000000000DEEFEF00000000000000 - 0000000000000000000000000000C6C6C6000000000000000000000000000000 - 0000000000000000000042424200FFFFFF004242420042424200424242004242 - 42004242420042424200FFFFFF004242420042424200DEEFEF00DEEFEF00DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004242 - 4200DEEFEF0042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000000000000000000000000000FFFFFF00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000DEEFEF000000 - 00000000000000000000DEEFEF000000000000000000DEEFEF00000000000000 - 0000000000000000000000000000C6C6C6000000000000000000DEEFEF000000 - 0000000000000000000042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0042424200C6C6C60042424200424242004242 - 420042424200424242004242420042424200424242004242420042424200DEEF - EF0042424200DEEFEF004242420042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600000000000000000000000000FFFFFF00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000DEEFEF000000 - 00000000000000000000DEEFEF000000000000000000DEEFEF00000000000000 - 0000000000000000000000000000C6C6C6000000000000000000DEEFEF000000 - 0000000000000000000042424200FFFFFF00424242004242420042424200FFFF - FF0042424200424242004242420042424200C6C6C600C6C6C60042424200FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 - 4200DEEFEF0042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000000000000000000000000000FFFFFF00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C6000000000000000000DEEFEF000000 - 0000000000000000000042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0042424200FFFFFF0042424200C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200FFFFFF004242420042424200424242004242420042424200FFFFFF004242 - 4200424242004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000000000000000000FFFFFF00C6C6C60000000000FFFFFF00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF - EF00000000000000000000000000C6C6C60000000000DEEFEF00000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 - 42004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 - 4200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 00000000000000000000FFFFFF00C6C6C600C6C6C600C6C6C600000000000000 - 0000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000C6C6C6000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF - EF00000000000000000042424200424242004242420042424200424242004242 - 420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60042424200FFFFFF004242420042424200424242004242420042424200FFFF - FF0042424200C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000C6C6C6000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0042424200C6C6C600C6C6C600C6C6C6000000000000000000FFFF - FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6000000000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000DEEFEF0000000000C6C6C600C6C6C600C6C6C60000000000DEEFEF000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6004242420042424200424242004242420042424200424242004242 - 42004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000DEEFEF0000000000C6C6C600C6C6C600C6C6C60000000000DEEFEF000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004242420042424200424242004242 - 4200424242004242420042424200424242004242420042424200424242004242 - 4200C6C6C600C6C6C6004242420042424200FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF00C6C6C60000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 - 4200C6C6C600424242004242420042424200FFFFFF00188C180029942900399C - 3900399C3900399C3900FFFFFF00A5D6A5004AA54A004AA54A004AA54A0029A5 - 290018A51800009C0000007B0000FFFFFF000000000000848400008484000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200424242004242 - 4200424242004242420042424200C6C6C600FFFFFF0021942100399C390042A5 - 420042A5420042A54200FFFFFF00FFFFFF00A5D6A5004AA54A004AA54A0039A5 - 390021A5210008A50800087B0800FFFFFF000000000000848400008484000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C60000000000C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242009CADAD00DEEFEF00DEEFEF009CAD - AD004242420042424200C6C6C600C6C6C600FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00A5D6A5004AA54A0039A5 - 390021A5210010A5100008840800FFFFFF000000000000848400008484000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF - FF000000000000000000000000000000000000000000FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C60000000000C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00424242009CADAD00DEEFEF00DEEFEF00FFFF00009CAD - AD00FFFFFF0042424200C6C6C600C6C6C600FFFFFF00319C31004AA54A0052A5 - 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A50039A5 - 390021A5210018A5180010841000FFFFFF000000000000848400008484000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF - FF0000000000000000000000000000000000FFFFFF00FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C6000000000042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0042424200DEEFEF00DEEFEF00DEEFEF00DEEFEF009CAD - AD00DEEFEF0042424200C6C6C600C6C6C600FFFFFF00429C420052A552004AA5 - 4A004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 - A500219C2100219C210018841800FFFFFF000000000000848400008484000084 - 8400008484000084840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C6000000000042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0042424200DEEFEF00FFFF0000DEEFEF00DEEFEF009CAD - AD00DEEFEF0042424200C6C6C600C6C6C600FFFFFF0042A5420052A5520052A5 - 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 - A500219C2100219C2100217B2100FFFFFF000000000000848400008484000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000004A4A4A00FFFFFF00FFFFFF00FFFF - FF000000000000000000FFFFFF0000000000FFFFFF00FFFFFF004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C6000000000042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00424242009CADAD00FFFF0000FFFF0000DEEFEF009CAD - AD00FFFFFF0042424200C6C6C600C6C6C600FFFFFF0052A552005AAD5A005AAD - 5A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A5003194 - 31002994290029942900217B2100FFFFFF00000000000084840000000000DEEF - EF00DEEFEF00DEEFEF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000FFFFFF0000000000C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000000000004A4A4A00C6C6 - C600C6C6C600C6C6C60000000000C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00424242009CADAD00DEEFEF00DEEFEF009CAD - AD0042424200C6C6C600C6C6C600C6C6C600FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052AD5200FFFFFF00FFFFFF00FFFFFF00A5D6A500399C39003194 - 31002994290029942900217B2100FFFFFF00000000000084840000000000DEEF - EF00DEEFEF00DEEFEF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000000000000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 - 00000000000000000000C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200424242004242 - 4200C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A00FFFFFF00FFFFFF00A5D6A500429C4200429C4200399C - 39003194310031943100217B2100FFFFFF00000000000084840000000000DEEF - EF00DEEFEF00DEEFEF0000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 - 4200C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B56300FFFFFF00A5D6A5005AAD5A0052A552004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF00000000000084840000000000DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF000000 - 00000084840000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200424242004242 - 4200C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF00000000000084840000000000DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF000000 - 00000084840000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042424200DEEFEF0042424200C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF00000000000084840000000000DEEF - EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF000000 - 0000DEEFEF0000000000C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A - 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6004242420042424200424242004242 - 42004242420042424200424242004242420042424200C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000000000000000000000000000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF0052ADFF0018529400185A - 9C00185A9C00185A9C00185AA500185AA500185A9C00185A9C00185294001852 - 940018528C00184A84004AADFF00FFFFFF00FFFFFF0084B58400107310001873 - 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B - 0800007B0000007300007BB57B00FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000000000000000000084008400840084008484840000000000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00185AA500186BBD001873 - CE001873CE001873CE001873CE001873CE001873CE001873CE001873CE00186B - C600186BBD00185AA500104A7B00FFFFFF00FFFFFF0010841000218C21002994 - 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 - 100008A5080000940000006B0000FFFFFF00C0C0C000C0C0C000C0C0C0000000 - 0000000000008400840084008400FFFFFF00FFFFFF00C6C6C600848484000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 000084000000C6C6C600C6C6C600C6C6C600FFFFFF001863AD001873CE00187B - DE00187BDE00187BE7001884E700188CF700188CF700188CF700188CF700187B - DE00186BC6001863AD0018528C00FFFFFF00FFFFFF00188C180029942900399C - 3900399C3900399C390039A539004AA54A00A5D6A500FFFFFF004AA54A0031A5 - 310018A51800009C0000007B0000FFFFFF00C0C0C00000000000000000008400 - 840084008400FFFFFF00FFFFFF000000000000000000C6C6C600C6C6C6008484 - 840000000000C0C0C000C0C0C000C0C0C00000000000C6C6C600C6C6C600C6C6 - C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 000084000000C6C6C600C6C6C600C6C6C600FFFFFF00186BC600187BDE001884 - EF00FFFFFF0084C6FF00188CF700188CF700188CF700188CF70084C6FF00FFFF - FF001873CE00186BBD0018529400FFFFFF00FFFFFF0021942100399C390042A5 - 420042A5420042A542004AA54A00A5D6A500FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210008A50800087B0800FFFFFF00000000008400840084008400FFFF - FF00FFFFFF000000000000000000840084008400840000000000C6C6C600C6C6 - C6008484840000000000C0C0C000C0C0C0000000000000000000C6C6C6000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF001873CE001884E700188C - F700188CFF00FFFFFF0084C6FF00188CF700188CF70084C6FF00FFFFFF001884 - E7001873D600186BC600185A9C00FFFFFF00FFFFFF0029942900429C42004AA5 - 4A0052A552004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210010A5100008840800FFFFFF000000000084008400FFFFFF000000 - 000000000000840084008400840084008400840084008400840000000000C6C6 - C600C6C6C6008484840000000000C0C0C0000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 000084848400C6C6C600C6C6C600C6C6C600FFFFFF00187BDE00188CF700188C - FF00188CF700188CF700FFFFFF0084C6FF0084C6FF00FFFFFF00188CF7001884 - E7001873D6001873CE00185AA500FFFFFF00FFFFFF00319C31004AA54A0052A5 - 52004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 - 390021A5210018A5180010841000FFFFFF000000000000000000000000008400 - 840084008400840084000084840000FFFF008400840084008400840084000000 - 0000C6C6C600C6C6C60084848400000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C600C6C6C600840000008400 - 000084848400C6C6C600C6C6C600C6C6C600FFFFFF001884E700188CFF00188C - F700188CF700188CF700188CF700FFFFFF0084C6FF00188CF7001884EF00187B - DE001873CE001873CE001863AD00FFFFFF00FFFFFF00429C420052A552004AA5 - 4A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042A5420031A5 - 3100219C2100219C210018841800FFFFFF000000000084008400840084008400 - 8400840084008400840084008400008484008400840084008400840084008400 - 840000000000C6C6C60000000000C0C0C0000000000000000000000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C6008400 - 000084000000C6C6C600C6C6C600C6C6C600FFFFFF001884EF00188CFF00188C - FF00188CF700188CF70084C6FF00FFFFFF00FFFFFF0084C6FF001884E7001873 - D6001873CE001873CE001863AD00FFFFFF00FFFFFF0042A5420052A5520052A5 - 5200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C3900299C - 2900219C2100219C2100217B2100FFFFFF00C0C0C00084008400FFFFFF008400 - 84008400840084008400840084008400840000FFFF0000FFFF00840084008400 - 8400840084000000000000000000C0C0C0000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600840000008400000084848400C6C6C600FFFFFF00188CFF002194FF002194 - FF00188CFF0084C6FF00FFFFFF001884F7001884EF00FFFFFF0084C6FF001873 - CE001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552005AAD5A005AAD - 5A0052A55200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C39003194 - 31002994290029942900217B2100FFFFFF00C0C0C000C0C0C00084008400FFFF - FF0084008400840084008400840084008400840084000084840000FFFF0000FF - FF00840084008400840000000000C0C0C0000000000000000000000000000000 - 000000000000C6C6C600C6C6C600848484008400000084000000C6C6C600C6C6 - C60084848400840000008400000084848400FFFFFF00188CFF0039A5FF0039A5 - FF0084C6FF00FFFFFF00188CFF00188CFF001884EF001884E700FFFFFF0084C6 - FF001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552006BB56B006BB5 - 6B005AAD5A0052AD5200A5D6A500FFFFFF00FFFFFF00FFFFFF00399C39003194 - 31002994290029942900217B2100FFFFFF00C0C0C000C0C0C000C0C0C0008400 - 8400FFFFFF00840084008400840084008400008484008400840000FFFF0000FF - FF00840084008400840084008400000000000000000000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600840000008400000084848400C6C6C600C6C6 - C600C6C6C600840000008400000084000000FFFFFF002194FF0052ADFF004AAD - FF00FFFFFF002194FF002194FF001894FF00188CF7001884EF001884E700FFFF - FF001873CE001873CE001863AD00FFFFFF00FFFFFF005AAD5A007BBD7B0073BD - 730063AD63005AAD5A005AAD5A00A5D6A500FFFFFF00FFFFFF00429C4200399C - 39003194310031943100217B2100FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 - C00084008400FFFFFF00840084008400840000FFFF0000FFFF0000FFFF008400 - 840084008400840084000000000000000000000000000000000000000000C6C6 - C600C6C6C600C6C6C600C6C6C600840000008400000084848400C6C6C600C6C6 - C600C6C6C600840000008400000084000000FFFFFF0039A5FF006BBDFF0052AD - FF0039A5FF00319CFF00299CFF00299CFF002194FF00188CFF001884F7001884 - EF00187BDE001873CE001863AD00FFFFFF00FFFFFF006BB56B008CC68C007BBD - 7B006BB56B0063B5630063AD630063AD6300A5D6A500FFFFFF004AA54A0042A5 - 4200399C390031943100217B2100FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C00084008400FFFFFF00840084008400840084008400840084008400 - 84000000000000000000C0C0C000C0C0C0000000000000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 - C60084848400840000008400000084848400FFFFFF004AADFF0084C6FF006BBD - FF0052ADFF004AADFF0039A5FF00319CFF00299CFF002194FF001894FF00188C - F7001884EF001873CE00185A9C00FFFFFF00FFFFFF0073BD73009CCE9C008CC6 - 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 - 4A0042A542003194310018731800FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C00084008400FFFFFF008400840084008400000000000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C00000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 - 0000840000008400000084848400C6C6C600FFFFFF00ADDEFF004AADFF00319C - FF002194FF00188CFF00188CFF00188CF700188CF7001884EF001884E700187B - DE001873CE00186BBD0063B5FF00FFFFFF00FFFFFF00B5DEB50073BD730063B5 - 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C - 390031943100218C21008CBD8C00FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000840084008400840000000000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 - C600848484008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6 - C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF - FF00000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000C6C6C60000000000C6C6C600000000000000000000000000C6C6 - C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF - FF00000000000000000000000000C6C6C600C6C6C600C6C6C60000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6 - C600848484008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C6008400 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 - C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600848484008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 - 00008400000084000000C6C6C600C6C6C6000000000000000000FFFFFF000000 - 00000000000000000000000000000000000000000000FFFFFF00000000000000 - 0000000000000000000000000000C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C6000000000000000000C6C6C600FFFFFF00FFFFFF000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 00008400000084000000C6C6C600C6C6C6000000000000000000FFFFFF000000 - 00000000000000000000C6C6C6000000000000000000FFFFFF00000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6 - C600848484008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600FFFFFF00FFFFFF00FFFFFF0000000000FFFF - FF0000000000FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 00008400000084000000C6C6C600C6C6C6000000000000000000FFFFFF000000 - 00000000000000000000C6C6C6000000000000000000FFFFFF00000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C60000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF000000 - 0000FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 - C6008400000084000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400008484000000 - 0000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFF - FF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600848484008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF - FF00000000000000000000000000C6C6C60000000000FFFFFF00000000000000 - 000000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 - C60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 - 0000FFFFFF000000000000848400008484000000000000000000FFFFFF000000 - 0000FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C6008484 - 840084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000C6C6C6000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 - C60000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 - 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 - 8400FFFFFF000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000FFFFFF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C6000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6 - C60000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400000000008484 - 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 000000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 - 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 - 8400FFFFFF00C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 - 000084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C600C6C6C6008400000084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 - 0000840000008400000084000000C6C6C600C6C6C60000000000000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF008400000084000000840000008400 - 00008400000084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000FFFFFF000000000000000000000000000000 - 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600840000008400000084000000C6C6C60084000000C6C6C600C6C6C6008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF00840000008400000084000000FFFF - FF0084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 - 840084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60084000000C6C6C600840000008400000084000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000 - 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600840000008400 - 0000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600840000000000000084000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 - 8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400 - 0000840000008400000084000000C6C6C6000000000000848400848484000084 - 8400848484000084840084000000840000008400000084000000840000008400 - 00008400000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 - 0000FFFFFF0084000000C6C6C600C6C6C6000000000084848400008484008484 - 8400008484008484840000848400848484000084840084848400008484008484 - 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 - 0000C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 - 000084000000C6C6C600C6C6C600C6C6C6000000000000848400848484000000 - 0000000000000000000000000000000000000000000000000000000000008484 - 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 - C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6 - C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000C6C6C6000000000000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 - 0000FFFFFF000000000084000000840000008400000084000000840000008400 - 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000084848400848484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484 - 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000840000008400 - 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400848484000084 - 84000000000000FFFF00000000000000000000FFFF0000000000848484000084 - 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C6000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000084 - 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 - C600000000000084840000000000C6C6C600C6C6C60000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C6000000000000000000008484000084 - 8400008484000084840000848400008484000084840000848400008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000084 - 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 - C600000000000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00000000000084 - 8400008484000084840000848400008484000084840000848400008484000084 - 840000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000084 - 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 - C600000000000084840000000000C6C6C60000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C60000FFFF0000FFFF0000FFFF00C6C6C600C6C6 - C600000000000000000000000000C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF0000FFFF000000 - 0000008484000084840000848400008484000084840000848400008484000084 - 84000084840000000000C6C6C600C6C6C600C6C6C60000000000008484000084 - 8400000000000000000000000000000000000000000000000000000000000000 - 0000000000000084840000000000C6C6C60000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600848484008484840084848400C6C6C600C6C6 - C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00FFFFFF0000FF - FF00000000000084840000848400008484000084840000848400008484000084 - 8400008484000084840000000000C6C6C600C6C6C60000000000008484000084 - 8400008484000084840000848400008484000084840000848400008484000084 - 8400008484000084840000000000C6C6C6000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C6C6C600C6C6C60000000000C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF0000FFFF00FFFF - FF0000FFFF000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000C6C6C60000000000008484000084 - 8400000000000000000000000000000000000000000000000000000000000000 - 0000008484000084840000000000C6C6C60000000000C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00FFFFFF0000FF - FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000084840000000000C6C6C600C6C6C60000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000C6C6 - C60000000000C6C6C6000000000000000000C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF0000FFFF00FFFF - FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000084840000000000C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00FFFFFF0000FF - FF0000000000000000000000000000000000000000000000000000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 - 000000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000000000000000000C6C6C600C6C6C60000000000008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C6000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000C6C6C600C6C6C60000000000008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000FFFFFF000000000000000000000000000000000000000000FFFF - FF0000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 - C60000000000C6C6C60000000000C6C6C600C6C6C60000000000008484000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6C600000000000000 - 0000000000000000000000000000000000000000000000000000C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C6000000000000000000000000000000000000000000000000000000 - 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 - C600C6C6C600C6C6C600C6C6C600C6C6C600424D3E000000000000003E000000 - 2800000040000000F00000000100010000000000800700000000000000000000 - 000000000000000000000000FFFFFF00F81FFEFFFFFF0000E007FDFFC07F0000 - C003FCFF001F00008001D81F001F00008001E01F001F00000000E01F00000000 - 0000C00300000000000080038000000000004003C00000000000C003C0000000 - 00000003C04100008001C043C04100008001E843C0410000C003E843E0C10000 - E007F843FFC10000F81FF843FFFF0000FEFFFEFFFEFFFFFFFDFFFDFFFDFF003F - FCFFFCFFFCFF003FD81FD81FD81F003FE01FE01FE01F0000E01FE01FE01F0000 - C00BC00BC00B000080078007800700004013401F400F0000C03CC019C00FC000 - 003D0019000FC000C0DDC019C00FC000ECFBEC49E01FC000EB3BE841C21AC000 - FFC7FFDFD61AC000FFF7FC00D7FAFFFFFEFF0000FEFFFEFFFDFF0000FDFFFDE0 - FCFF0000FCFFFCE0D81F0000D81FD800E01F0000E01FE01DE01F0000E01FE00D - C00B0000C00BC0018007000080008007400700004000401FC0038007C000C020 - 0001401F00000000C081C03FC000C0C0ED83003FEC00EDFDEB87C0DFEA00EA0D - FF8FEDFFFE00FE01FF9FEBFFFE00FE0FFEFFFEFFFEFFFEFFFDFFFDFFFDFFFDFF - FCFFFCFFFCFFFCFFD81FD81FD81FD81FE01FE01FE01FE01FE01FE01FE01FE01F - C00BC00BC00BC00B80078000800780074007400040074007C003C000C023C023 - 0001000000110031C081C000C011C0D1ED83EC00EC23EDE3EB87EA00E847EBC7 - FF8FFE00F88FFF8FFF9FFE00F99FFF9FFDFFFE07FE03FEFFE07FFC03FE03FDFF - E00FF801FE03FCFFC003F000FE03D81FC003F000FE03E01F8003F000FE03E01F - 8003F000FC01C00B80010000000080030001000000004001000100000000C000 - 8001000000000000C00300000000C000C00300000000EC00E00300000000EA00 - FC3700000000FF01FF3F00000000FF83F81F0000FE07FFFFE0070000FC03FF7F - C0030000F801FEFF80010000F000FE7F80010000F000EC0F00000F80F000F00F - 00000F80F000F00F0000FE3F0000E0050000E23F0000C0030000E2300000A00F - 000003F00000E01F80011F100000801F80011F1F0000E06FC003F1110000F6FF - E007F1F10000F5FFF81FF1F10000FFFFFE00FC3FFFFFFCFFFE00C003FC7FF8CF - FE008001F81FF08FFE008001F007F80FE0008001E001F08FC00083C1C000F00F - 800007E08000E00F000107E00000F00F000107E00000E00F000107E00001C007 - 000183C10003C003000180010007C00300038001800FC003801F8001E01FE003 - C03FC003F83FF007E07FFC3FFE7FFF0FFE00FE00FFFFFFFFFE00FE00C007C007 - F8008000C007C007F800000000070007F800000000070007F800000000070007 - 0000000000070007000000000007000700010001000700070003000300070007 - 000100030007000700000003000F000F001F0003001F001F001F0003003F003F - 001F0003007F007F8FFF000300FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC007 - C007FFFFFFFFC007C007F73FFFFF0007C007F63FFFFF0007C007F47FF9100007 - C007F0FFDD240007C007F1FFDC600007C007F1FF05040007C00754F5DD000007 - C0075675DDFF0007C0075735F9FF000FC00F5FF5FFFF001FC01FFFFFFFFF003F - C03FFFFFFFFF007FFFFFFFFFFFFF00FFFFFFFFFFFFFFFC00C007FFF9FFFFFC00 - 8003E7FF07C1FC000001C3F307C104000001C3E707C104000001E1C701010400 - 0000F08F000100000000F81F000100008000FC3F00010000C000F81F80030001 - E001F09FC1078003E007C1C7C107C007F00783E3E38FC107F0038FF1E38FE38F - F803FFFFE38FE38FFFFFFFFFFFFFE38F8001FC00FFFFFFFF0000FC00FFFF000C - 00008000001F000800000000001F000100000000001D000300000000001D0003 - 00000000001E000300000000001E000300000000001E000300000001001D0007 - 000000030003000F00000003001F000F00000003003F000F00000003007F001F - 0000000300FF003F80010003FFFF007FFFFFFFFF80018001FE3FF9FF00000000 - F81FF9FF00000000E00FF3C700000000800773C700000000000327FF00000000 - 000107C700000000000000C700000000000101E700000000800103F100000000 - C001063000000000E0000E3800000000F0001E3800000000F8033F3000000000 - FC0F7F8100000000FE3FFFFF80018001FFFFFFFFFFFFFFFFFFFFFFFFFF71FFFF - FFFF07C1FF36FF81FFFF07C1F516FF00FFFF07C1DF31FE00E7FF0101FF76FE00 - CF830001BFF6FC00DFC30001FFD1F800DFE30001DFFF8000DFD38003FFBF0001 - CF3BC10777FF0001E0FFC10777BF0001FFFFE38F07FF0001FFFFE38FAFD70001 - FFFFE38F8FE70001FFFFFFFFDFC78003FFFFFFFFFFFFFFFFF3FFFFFFFC00FFFF - ED9FFC018000FFFFED6FFC010000FFFFED6FFC010000FFFFF16F00010000FFE7 - FD1F00010001C1F3FC7F00010003C3FBFEFF00010003C7FBFC7F00030003CBFB - FD7F00070003DCF3F93F000F0003FF07FBBF00FF0003FFFFFBBF01FF8007FFFF - FBBF03FFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC001C007 - C007001F80018003C007000F80010001C007000780010001C007000380010001 - C007000180010000C007000080010000C007001F80018000C007001F8001C000 - C007001F8001E001C0078FF18001E007C00FFFF98001F007C01FFF758001F003 - C03FFF8F8001F803FFFFFFFFFFFFFFFF00000000000000000000000000000000 - 000000000000} - end - object ApplicationEvents1: TApplicationEvents - OnHelp = ApplicationEvents1Help - OnMessage = ApplicationEvents1Message - Left = 484 - Top = 176 - end - object dockServer: TJvDockServer - LeftSplitterStyle.Cursor = crHSplit - LeftSplitterStyle.ParentColor = False - RightSplitterStyle.Cursor = crHSplit - RightSplitterStyle.ParentColor = False - TopSplitterStyle.Cursor = crVSplit - TopSplitterStyle.ParentColor = False - BottomSplitterStyle.Cursor = crVSplit - BottomSplitterStyle.ParentColor = False - DockStyle = JvDockVSNetStyle1 - Left = 616 - Top = 304 - end - object JvDockVSNetStyle1: TJvDockVSNetStyle - AlwaysShowGrabber = False - TabServerOption.ActiveFont.Charset = DEFAULT_CHARSET - TabServerOption.ActiveFont.Color = clWindowText - TabServerOption.ActiveFont.Height = -11 - TabServerOption.ActiveFont.Name = 'Tahoma' - TabServerOption.ActiveFont.Style = [] - TabServerOption.InactiveFont.Charset = DEFAULT_CHARSET - TabServerOption.InactiveFont.Color = 5395794 - TabServerOption.InactiveFont.Height = -11 - TabServerOption.InactiveFont.Name = 'Tahoma' - TabServerOption.InactiveFont.Style = [] - TabServerOption.ShowCloseButtonOnTabs = False - Left = 528 - Top = 312 - end - object mnuReloadAsFormat: TPopupMenu - Left = 296 - Top = 80 - object ANSI1: TMenuItem - Caption = 'ANSI' - end - object UTF81: TMenuItem - Caption = 'UTF-8' - end - object UTF161: TMenuItem - Caption = 'UTF-16' - end - end - object MainMenu1: TMainMenu - Images = lstImages - Left = 448 - Top = 376 - object File1: TMenuItem - Caption = '&File' - OnClick = mnuFileClick - object New1: TMenuItem - Action = modActionsMain.actFileNew - end - object Open1: TMenuItem - Action = modActionsMain.actFileOpen - end - object Save1: TMenuItem - Action = modActionsMain.actFileSave - end - object SaveAs1: TMenuItem - Action = modActionsMain.actFileSaveAs - end - object Savecopyas1: TMenuItem - Action = modActionsMain.actFileSaveCopyAs - end - object Revert1: TMenuItem - Action = modActionsMain.actFileRevert - end - object N5: TMenuItem - Caption = '-' - end - object Close1: TMenuItem - Action = modActionsMain.actWindowClose - end - object N6: TMenuItem - Caption = '-' - end - object PageSetup1: TMenuItem - Action = modActionsMain.actFilePageSetup - end - object PrintPreview1: TMenuItem - Action = modActionsMain.actFilePrintPreview - end - object Print1: TMenuItem - Action = modActionsMain.actFilePrint - end - object N9: TMenuItem - Caption = '-' - end - object mnuFileRecent: TMenuItem - Caption = 'Recent &Files' - object TMenuItem - end - end - object N8: TMenuItem - Caption = '-' - end - object Exit1: TMenuItem - Action = modActionsMain.actFileExit - end - end - object Edit1: TMenuItem - Caption = '&Edit' - object Undo1: TMenuItem - Action = modActionsMain.actEditUndo - end - object Redo1: TMenuItem - Action = modActionsMain.actEditRedo - end - object N10: TMenuItem - Caption = '-' - end - object Cut1: TMenuItem - Action = modActionsMain.actEditCut - end - object Copy1: TMenuItem - Action = modActionsMain.actEditCopy - end - object Paste1: TMenuItem - Action = modActionsMain.actEditPaste - end - object N18: TMenuItem - Caption = '-' - end - object Delete1: TMenuItem - Action = modActionsMain.actEditDelete - end - object N19: TMenuItem - Caption = '-' - end - object SelectAll1: TMenuItem - Action = modActionsMain.actEditSelectAll - end - object N20: TMenuItem - Caption = '-' - end - object Find1: TMenuItem - Action = modActionsMain.actSearchFind - end - object FindNext1: TMenuItem - Action = modActionsMain.actSearchFindNext - end - object Replace1: TMenuItem - Action = modActionsMain.actSearchReplace - end - object N21: TMenuItem - Caption = '-' - end - object ReformatXMLDocument1: TMenuItem - Action = modActionsTextEditor.actTextEditor_ReformatXML - end - object N1: TMenuItem - Caption = '-' - end - object Reloadwithencoding1: TMenuItem - Caption = 'Reload with &encoding' - object ReloadasANSI1: TMenuItem - Action = modActionsMain.actToolsReloadANSI - end - object ReloadasUTF81: TMenuItem - Action = modActionsMain.actToolsReloadUTF8 - end - object ReloadasUTF161: TMenuItem - Action = modActionsMain.actToolsReloadUTF16 - end - end - end - object View1: TMenuItem - Caption = '&View' - object Project2: TMenuItem - Action = modActionsMain.actViewProject - end - object N22: TMenuItem - Caption = '-' - end - object CharacterIdentifier1: TMenuItem - Action = modActionsMain.actViewCharacterIdentifier - end - object CharacterMap1: TMenuItem - Action = modActionsMain.actViewCharacterMap - end - object Messages1: TMenuItem - Action = modActionsMain.actViewMessages - end - object ContextHelp1: TMenuItem - Action = modActionsMain.actViewHelp - end - object oolbar1: TMenuItem - Action = modActionsMain.actViewToolbar - end - object StatusBar1: TMenuItem - Action = modActionsMain.actViewStatusBar - end - object N23: TMenuItem - Caption = '-' - end - object ExpandEditor1: TMenuItem - Action = modActionsMain.actViewExpandEditor - end - object N24: TMenuItem - Caption = '-' - end - object CharacterFont1: TMenuItem - Action = modActionsMain.actViewCharFont - end - object CodeFont1: TMenuItem - Action = modActionsMain.actViewCodeFont - end - end - object Project1: TMenuItem - Caption = '&Project' - OnClick = mnuProjectClick - object NewProject1: TMenuItem - Action = modActionsMain.actProjectNew - end - object OpenProject1: TMenuItem - Action = modActionsMain.actProjectOpen - end - object CloseProject1: TMenuItem - Action = modActionsMain.actProjectClose - end - object N25: TMenuItem - Caption = '-' - end - object mnuProjectsRecent: TMenuItem - Caption = '&Recent Projects' - end - object N26: TMenuItem - Caption = '-' - end - object mnuProjectAddToProject: TMenuItem - Caption = 'A&dd to project' - object CurrentEditorFile1: TMenuItem - Action = modActionsMain.actProjectAddCurrentEditorFile - end - object OtherFiles1: TMenuItem - Action = modActionsMain.actProjectAddFiles - end - end - object N27: TMenuItem - Caption = '-' - end - object ProjectSettings1: TMenuItem - Action = modActionsMain.actProjectSettings - end - end - object mnuModel: TMenuItem - Caption = '&Model' - object CompileModel1: TMenuItem - Action = modActionsModelEditor.actModelCompile - end - object N2: TMenuItem - Caption = '-' - end - object estLexicalModel1: TMenuItem - Action = modActionsModelEditor.actModelTest - end - end - object mnuKeyboard: TMenuItem - Caption = '&Keyboard' - object CompileKeyboard1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardCompile - end - object N28: TMenuItem - Caption = '-' - end - object IncludeDebugInformation1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardIncludeDebugInformation - end - object estKeyboard1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardTest - end - object N29: TMenuItem - Caption = '-' - end - object Install1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardInstall - end - object Uninstall1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardUninstall - end - object N31: TMenuItem - Caption = '-' - end - object Fonts1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardFonts - end - object FontHelper1: TMenuItem - Action = modActionsKeyboardEditor.actKeyboardFontHelper - end - end - object mnuDebug: TMenuItem - Caption = '&Debug' - object SetBreakpoint1: TMenuItem - Action = modActionsDebugger.actDebugSetClearBreakpoint - end - object N32: TMenuItem - Caption = '-' - end - object StartDebugging1: TMenuItem - Action = modActionsDebugger.actDebugStartDebugger - end - object StopDebugger1: TMenuItem - Action = modActionsDebugger.actDebugStopDebugger - end - object N33: TMenuItem - Caption = '-' - end - object ANSITestMode1: TMenuItem - Action = modActionsDebugger.actDebugANSITestMode - end - object N34: TMenuItem - Caption = '-' - end - object SingleStepMode1: TMenuItem - Action = modActionsDebugger.actDebugSingleStepMode - end - object N35: TMenuItem - Caption = '-' - end - object StepForward1: TMenuItem - Action = modActionsDebugger.actDebugStepForward - end - object Run1: TMenuItem - Action = modActionsDebugger.actDebugRun - end - object Pause1: TMenuItem - Action = modActionsDebugger.actDebugPause - end - object N36: TMenuItem - Caption = '-' - end - object View2: TMenuItem - Caption = '&View' - object State1: TMenuItem - Action = modActionsDebugger.actDebugViewState - end - object Elements1: TMenuItem - Action = modActionsDebugger.actDebugViewElements - end - object CallStack1: TMenuItem - Action = modActionsDebugger.actDebugViewCallStack - end - object Deadkeys1: TMenuItem - Action = modActionsDebugger.actDebugViewDeadkeys - end - object RegressionTesting1: TMenuItem - Action = modActionsDebugger.actDebugViewRegressionTesting - end - object N38: TMenuItem - Caption = '-' - end - object Font1: TMenuItem - Action = modActionsDebugger.actDebugViewFont - end - object UseEditorCharacterFont1: TMenuItem - Action = modActionsDebugger.actDebugViewDefaultFont - end - end - object N37: TMenuItem - Caption = '-' - end - object SelectSystemKeyboard1: TMenuItem - Action = modActionsDebugger.actDebugSelectSystemKeyboard - end - end - object mnuTools: TMenuItem - Caption = '&Tools' - OnClick = mnuToolsClick - object VirtualKeyIdentifier1: TMenuItem - Action = modActionsMain.actToolsVirtualKeyIdentifier - end - object N39: TMenuItem - Caption = '-' - end - object mnuToolsWebDebugger: TMenuItem - Caption = '&Server' - object mnuToolsWebDebuggerOpenInBrowser: TMenuItem - Action = modActionsMain.actToolsWebOpenPublicUrl - end - object mnuToolsWebDebuggerCopyToClipboard: TMenuItem - Action = modActionsMain.actToolsWebCopyPublicUrl - end - object N11: TMenuItem - Caption = '-' - end - object Startserver1: TMenuItem - Action = modActionsMain.actToolsWebStartServer - end - object Stopserver1: TMenuItem - Action = modActionsMain.actToolsWebStopServer - end - object N7: TMenuItem - Caption = '-' - end - object mnuToolsWebDebuggerConfigure: TMenuItem - Action = modActionsMain.actToolsWebConfigure - end - end - object N4: TMenuItem - Caption = '-' - end - object Options1: TMenuItem - Action = modActionsMain.actToolsOptions - end - object mnuToolsDebugTests: TMenuItem - Caption = 'Debug Tests' - object mnuToolsDebugTestsShowDebuggerEventsPanel: TMenuItem - Caption = 'Show Debugger Events panel' - OnClick = mnuToolsDebugTestsShowDebuggerEventsPanelClick - end - object N3: TMenuItem - Caption = '-' - end - object mnuToolsDebugTestsExceptionTest: TMenuItem - Caption = '&Exception Test' - OnClick = mnuToolsDebugTestsExceptionTestClick - end - end - end - object mnuWindow: TMenuItem - Caption = '&Window' - OnClick = mnuWindowClick - object Newwindow1: TMenuItem - Action = modActionsMain.actWindowNew - end - object N12: TMenuItem - Caption = '-' - end - end - object Help1: TMenuItem - Caption = '&Help' - object Contents1: TMenuItem - Action = modActionsMain.actHelpContents - end - object N40: TMenuItem - Caption = '-' - end - object CheckforUpdates1: TMenuItem - Action = modActionsMain.actHelpCheckForUpdates - end - object N41: TMenuItem - Caption = '-' - end - object About1: TMenuItem - Action = modActionsMain.actHelpAbout - end - end - end -end +inherited frmKeymanDeveloper: TfrmKeymanDeveloper + Left = 484 + Top = 327 + Caption = 'Keyman Developer' + ClientHeight = 760 + ClientWidth = 1087 + DoubleBuffered = True + Font.Name = 'MS Sans Serif' + KeyPreview = True + Menu = MainMenu1 + Position = poDefault + WindowState = wsMaximized + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnDestroy = FormDestroy + ExplicitWidth = 1103 + ExplicitHeight = 819 + PixelsPerInch = 96 + TextHeight = 13 + object barStatus: TStatusBar + Left = 0 + Top = 741 + Width = 1087 + Height = 19 + Constraints.MaxHeight = 19 + Constraints.MinHeight = 19 + Panels = < + item + Alignment = taCenter + Text = 'Line 1, Col 1' + Width = 100 + end + item + Alignment = taCenter + Text = 'Insert' + Width = 120 + end + item + Width = 50 + end> + end + object pages: TCloseButtonPageControl + Left = 0 + Top = 24 + Width = 1087 + Height = 717 + Align = alClient + OwnerDraw = True + TabOrder = 1 + OnChange = pagesChange + OnCloseTab = pagesCloseTab + end + object barTools: TControlBar + Left = 0 + Top = 0 + Width = 1087 + Height = 24 + Align = alTop + AutoDock = False + AutoDrag = False + BevelInner = bvNone + BevelOuter = bvNone + DockSite = False + TabOrder = 2 + object panDebugToolbar: TPanel + Left = 481 + Top = 2 + Width = 512 + Height = 23 + AutoSize = True + BevelOuter = bvNone + TabOrder = 0 + object SpeedButton1: TSpeedButton + Left = 0 + Top = 0 + Width = 82 + Height = 22 + Action = modActionsDebugger.actDebugTestMode + AllowAllUp = True + GroupIndex = 1 + end + object SpeedButton2: TSpeedButton + Left = 83 + Top = 0 + Width = 98 + Height = 22 + Action = modActionsDebugger.actDebugDebuggerMode + AllowAllUp = True + GroupIndex = 2 + end + object cbDebugSystemKeyboard: TComboBox + Left = 367 + Top = 1 + Width = 145 + Height = 21 + Style = csDropDownList + TabOrder = 0 + Visible = False + OnClick = cbDebugSystemKeyboardItemClick + OnDropDown = cbDebugSystemKeyboard_DropDown + end + object ToolBar2: TToolBar + Left = 187 + Top = 1 + Width = 174 + Height = 22 + Align = alNone + ButtonHeight = 23 + Caption = 'ToolBar2' + Images = lstImages + TabOrder = 1 + object ToolButton20: TToolButton + Left = 0 + Top = 0 + Width = 8 + Caption = 'ToolButton20' + ImageIndex = 0 + Style = tbsSeparator + end + object ToolButton21: TToolButton + Left = 8 + Top = 0 + Action = modActionsDebugger.actDebugStopDebugger + end + object ToolButton23: TToolButton + Left = 31 + Top = 0 + Width = 8 + Caption = 'ToolButton23' + ImageIndex = 47 + Style = tbsSeparator + end + object ToolButton22: TToolButton + Left = 39 + Top = 0 + Action = modActionsDebugger.actDebugSingleStepMode + end + object ToolButton24: TToolButton + Left = 62 + Top = 0 + Width = 8 + Caption = 'ToolButton24' + ImageIndex = 47 + Style = tbsSeparator + end + object ToolButton25: TToolButton + Left = 70 + Top = 0 + Action = modActionsDebugger.actDebugStepForward + end + object ToolButton26: TToolButton + Left = 93 + Top = 0 + Action = modActionsDebugger.actDebugRun + end + object ToolButton27: TToolButton + Left = 116 + Top = 0 + Action = modActionsDebugger.actDebugPause + end + object ToolButton28: TToolButton + Left = 139 + Top = 0 + Width = 8 + Caption = 'ToolButton28' + ImageIndex = 58 + Style = tbsSeparator + end + object ToolButton29: TToolButton + Left = 147 + Top = 0 + Action = modActionsDebugger.actDebugSetClearBreakpoint + end + end + end + object panToolbar: TPanel + Left = 11 + Top = 2 + Width = 448 + Height = 23 + AutoSize = True + BevelOuter = bvNone + TabOrder = 1 + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 270 + Height = 23 + Align = alNone + AutoSize = True + ButtonHeight = 23 + Caption = 'ToolBar1' + Images = lstImages + TabOrder = 0 + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = modActionsMain.actFileNew + end + object ToolButton2: TToolButton + Left = 23 + Top = 0 + Action = modActionsMain.actFileOpen + end + object ToolButton3: TToolButton + Left = 46 + Top = 0 + Action = modActionsMain.actFileSave + end + object ToolButton4: TToolButton + Left = 69 + Top = 0 + Width = 8 + Caption = 'ToolButton4' + ImageIndex = 3 + Style = tbsSeparator + end + object ToolButton7: TToolButton + Left = 77 + Top = 0 + Action = modActionsMain.actEditCut + end + object ToolButton8: TToolButton + Left = 100 + Top = 0 + Action = modActionsMain.actEditCopy + end + object ToolButton9: TToolButton + Left = 123 + Top = 0 + Action = modActionsMain.actEditPaste + end + object ToolButton10: TToolButton + Left = 146 + Top = 0 + Width = 8 + Caption = 'ToolButton10' + ImageIndex = 7 + Style = tbsSeparator + end + object ToolButton11: TToolButton + Left = 154 + Top = 0 + Action = modActionsMain.actEditUndo + end + object ToolButton12: TToolButton + Left = 177 + Top = 0 + Action = modActionsMain.actEditRedo + end + object ToolButton19: TToolButton + Left = 200 + Top = 0 + Width = 8 + Caption = 'ToolButton19' + ImageIndex = 57 + Style = tbsSeparator + end + object ToolButton14: TToolButton + Left = 208 + Top = 0 + Action = modActionsMain.actViewExpandEditor + end + object ToolButton15: TToolButton + Left = 231 + Top = 0 + Width = 8 + Caption = 'ToolButton15' + ImageIndex = 56 + Style = tbsSeparator + end + object ToolButton16: TToolButton + Left = 239 + Top = 0 + Action = modActionsKeyboardEditor.actKeyboardCompile + end + object ToolButton13: TToolButton + Left = 262 + Top = 0 + Width = 8 + Caption = 'ToolButton13' + ImageIndex = 57 + Style = tbsSeparator + end + end + object cbTextFileFormat: TComboBox + Left = 303 + Top = 1 + Width = 145 + Height = 21 + Style = csDropDownList + TabOrder = 1 + OnClick = cbTextFileFormatItemClick + Items.Strings = ( + 'ANSI' + 'UTF-8' + 'UTF-16') + end + end + end + object ilPages: TImageList + Left = 304 + Top = 236 + Bitmap = { + 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF00000000000000000000000000BDD6 + CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE + C60000000000000000000000000000000000000000000000000000000000BDCE + C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE + D600BDCEC6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF000000000000000000BDD6C600DEE7 + E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF + EF00C6D6CE000000000000000000000000000000000000000000BDCEC600E7EF + E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 + F700DEE7DE00BDD6C60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00188C180029942900399C + 3900399C3900399C3900FFFFFF00A5D6A5004AA54A004AA54A004AA54A0029A5 + 290018A51800009C0000007B0000FFFFFF0000000000BDD6C600DEE7E700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700C6D6CE00000000000000000000000000BDCEC600E7EFE700FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF + F700EFF7F700DEE7DE00BDCEC600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 + 420042A5420042A54200FFFFFF00FFFFFF00A5D6A5004AA54A004AA54A0039A5 + 390021A5210008A50800087B0800FFFFFF00C6DED600D6DEDE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFF7EF00BDCEC60000000000BDD6CE00D6E7DE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00F7FFF700EFF7F700CEDED600BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00A5D6A5004AA54A0039A5 + 390021A5210010A5100008840800FFFFFF00BDD6CE00EFF7EF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00FFFFFF00D6DED600BDDECE00BDD6C600EFF7F700FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00F7FFF700DEEFE700BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00319C31004AA54A0052A5 + 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A50039A5 + 390021A5210018A5180010841000FFFFFF00C6DECE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE00C6D6CE00FFFFFF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00429C420052A552004AA5 + 4A004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 + A500219C2100219C210018841800FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0042A5420052A5520052A5 + 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 + A500219C2100219C2100217B2100FFFFFF00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE00CEDED600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFF7EF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0052A552005AAD5A005AAD + 5A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A5003194 + 31002994290029942900217B2100FFFFFF00C6D6CE00FFFFFF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00F7FFFF00E7EFEF00BDD6CE00C6DECE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E7EFEF00BDD6CE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052AD5200FFFFFF00FFFFFF00FFFFFF00A5D6A500399C39003194 + 31002994290029942900217B2100FFFFFF00BDD6C600EFF7F700FFFFFF00FFFF + FF00FFFFFF0018634A0018634A00FFFFFF0018634A0018634A00FFFFFF00FFFF + FF00FFFFFF00F7FFF700DEEFE700BDD6CE00BDD6CE00EFF7EF00FFFFFF00FFFF + FF0018634A0018634A00FFFFFF00FFFFFF00FFFFFF0018634A0018634A00FFFF + FF00FFFFFF00FFFFFF00D6DED600BDDECE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A00FFFFFF00FFFFFF00A5D6A500429C4200429C4200399C + 39003194310031943100217B2100FFFFFF00BDD6CE00D6E7DE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0018634A0018634A0018634A00FFFFFF00FFFFFF00FFFF + FF00F7FFF700EFF7F700CEDED600BDD6CE00C6DED600D6DEDE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFF7EF00BDCEC600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B56300FFFFFF00A5D6A5005AAD5A0052A552004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF0000000000BDCEC600E7EFE700FFFF + FF00FFFFFF00FFFFFF00FFFFFF0018634A00FFFFFF00FFFFFF00FFFFFF00F7FF + F700EFF7F700DEE7DE00BDCEC6000000000000000000BDD6C600DEE7E700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7F7F700C6D6CE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF000000000000000000BDCEC600E7EF + E700F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00F7FFF700F7F7F700EFF7 + F700DEE7DE00BDD6C60000000000000000000000000000000000BDD6C600DEE7 + E700F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF + EF00C6D6CE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF00000000000000000000000000BDCE + C600D6E7DE00EFF7EF00F7F7F700F7F7F700EFF7F700EFF7F700E7EFEF00D6DE + D600BDCEC600000000000000000000000000000000000000000000000000BDD6 + CE00CEDECE00DEE7E700E7EFEF00EFF7F700EFF7EF00E7EFE700CEDED600B5CE + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000B5CEC600BDD6C600C6DECE00CEDED600CEDED600C6DECE00BDD6C600BDD6 + C600000000000000000000000000000000000000000000000000000000000000 + 0000B5CEC600C6DED600C6DED600C6DED600C6DED600C6DED600C6E7DE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000BDBDBD000000840000007300100000006363630000000000000000000000 + 000000000000000000000000000000000000FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF00FFFFFF0052ADFF0018529400185A + 9C00185A9C00185A9C00185AA500185AA500185A9C00185A9C00185294001852 + 940018528C00184A84004AADFF00FFFFFF00FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF000000000000000000BDBDBD003131 + 31000000AD000000FF000000DE00000042005252520000000000000000000000 + 000000000000000000000000000000000000FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF00FFFFFF00185AA500186BBD001873 + CE001873CE001873CE001873CE001873CE001873CE001873CE001873CE00186B + C600186BBD00185AA500104A7B00FFFFFF00FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF000000000000000000737373000000 + 42000000FF000000FF000000840000319C002121210000000000000000000000 + 000000000000000000000000000000000000FFFFFF00188C180029942900399C + 3900399C3900399C390039A53900A5D6A500FFFFFF0021AD210018AD180010B5 + 100008AD0800009C0000007B0000FFFFFF00FFFFFF001863AD001873CE00187B + DE00187BDE00187BE7001884E700188CF700188CF700188CF700188CF700187B + DE00186BC6001863AD0018528C00FFFFFF00FFFFFF00188C180029942900399C + 3900399C3900399C390039A539004AA54A00A5D6A500FFFFFF004AA54A0031A5 + 310018A51800009C0000007B0000FFFFFF00000000008C8C8C00BDBDBD000000 + 4200000084000000EF000000FF000000CE000000310073737300000000000000 + 000000000000000000000000000000000000FFFFFF0021942100399C390042A5 + 42004AA54A0042A5420042A54200FFFFFF00FFFFFF00FFFFFF0021B5210018B5 + 180010AD100008A50800087B0800FFFFFF00FFFFFF00186BC600187BDE001884 + EF00FFFFFF0084C6FF00188CF700188CF700188CF700188CF70084C6FF00FFFF + FF001873CE00186BBD0018529400FFFFFF00FFFFFF0021942100399C390042A5 + 420042A5420042A542004AA54A00A5D6A500FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210008A50800087B0800FFFFFF000000000000000000001000000000 + AD000000FF000000FF000000FF000000DE001010100000002100525252007373 + 730031009C0000313100A5A5A50000000000FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A0042A5420042AD4200FFFFFF00FFFFFF00FFFFFF0018B5 + 180010AD100010A5100008840800FFFFFF00FFFFFF001873CE001884E700188C + F700188CFF00FFFFFF0084C6FF00188CF700188CF70084C6FF00FFFFFF001884 + E7001873D600186BC600185A9C00FFFFFF00FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210010A5100008840800FFFFFF0000000000BDBDBD00100000000000 + 84000000FF000000CE000000EF0000008400000084000000FF000000BD000000 + 840000006300737373000021000063636300FFFFFF00319C31004AA54A0052A5 + 520052A552004AA54A004AA54A0042A5420039AD3900FFFFFF00FFFFFF00FFFF + FF0018AD180018A5180010841000FFFFFF00FFFFFF00187BDE00188CF700188C + FF00188CF700188CF700FFFFFF0084C6FF0084C6FF00FFFFFF00188CF7001884 + E7001873D6001873CE00185AA500FFFFFF00FFFFFF00319C31004AA54A0052A5 + 52004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210018A5180010841000FFFFFF000000000021212100000021000000 + AD000000FF0000004200000084000000FF000000FF0000007300000042000000 + 420073737300313163000000AD0000006300FFFFFF00429C420052A55200FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00219C210018841800FFFFFF00FFFFFF001884E700188CFF00188C + F700188CF700188CF700188CF700FFFFFF0084C6FF00188CF7001884EF00187B + DE001873CE001873CE001863AD00FFFFFF00FFFFFF00429C420052A552004AA5 + 4A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042A5420031A5 + 3100219C2100219C210018841800FFFFFF00000000008C8C8C0000009C000000 + FF000000EF00000073000000EF000000FF000000EF0000003100100000005252 + 52000000EF000000FF000000DE0031316300FFFFFF0042A542005AAD5A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00219C2100217B2100FFFFFF00FFFFFF001884EF00188CFF00188C + FF00188CF700188CF70084C6FF00FFFFFF00FFFFFF0084C6FF001884E7001873 + D6001873CE001873CE001863AD00FFFFFF00FFFFFF0042A5420052A5520052A5 + 5200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C3900299C + 2900219C2100219C2100217B2100FFFFFF000000000010000000000042000031 + CE000000FF0000009C000000FF000000FF000000EF00000073000000AD000000 + CE000000FF000000FF000000AD0021212100FFFFFF0052A5520063AD630063AD + 63005AAD5A0052A552004AA54A00429C4200399C3900FFFFFF00FFFFFF00FFFF + FF00299C290029942900217B2100FFFFFF00FFFFFF00188CFF002194FF002194 + FF00188CFF0084C6FF00FFFFFF001884F7001884EF00FFFFFF0084C6FF001873 + CE001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552005AAD5A005AAD + 5A0052A55200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C39003194 + 31002994290029942900217B2100FFFFFF00000000008C8C8C00000000000000 + AD000000FF000000EF0000007300000052000031CE000000AD000000EF000000 + EF000000BD0000006300BDBDBD0000000000FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052A552004AA54A00429C4200FFFFFF00FFFFFF00FFFFFF002994 + 29002994290029942900217B2100FFFFFF00FFFFFF00188CFF0039A5FF0039A5 + FF0084C6FF00FFFFFF00188CFF00188CFF001884EF001884E700FFFFFF0084C6 + FF001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052AD5200A5D6A500FFFFFF00FFFFFF00FFFFFF00399C39003194 + 31002994290029942900217B2100FFFFFF000000000000000000000000000000 + 52000000FF000000BD000031CE000000AD00000073003100CE00525252002121 + 21000000AD00000000000000000000000000FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A0052A55200FFFFFF00FFFFFF00FFFFFF00319C3100319C + 31003194310031943100217B2100FFFFFF00FFFFFF002194FF0052ADFF004AAD + FF00FFFFFF002194FF002194FF001894FF00188CF7001884EF001884E700FFFF + FF001873CE001873CE001863AD00FFFFFF00FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A005AAD5A00A5D6A500FFFFFF00FFFFFF00429C4200399C + 39003194310031943100217B2100FFFFFF0000000000A5A5A500000000000000 + 52000000AD0000005200000073000031FF000000730000005200212121000000 + 100000000000000000000000000000000000FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B5630063AD6300B5DEB500FFFFFF004AA54A004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF00FFFFFF0039A5FF006BBDFF0052AD + FF0039A5FF00319CFF00299CFF00299CFF002194FF00188CFF001884F7001884 + EF00187BDE001873CE001863AD00FFFFFF00FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B5630063AD630063AD6300A5D6A500FFFFFF004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF000000000000000000000000003131 + 3100000042000000CE000000AD000000DE00000063000000420000004200BDBD + BD0000000000000000000000000000000000FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF00FFFFFF004AADFF0084C6FF006BBD + FF0052ADFF004AADFF0039A5FF00319CFF00299CFF002194FF001894FF00188C + F7001884EF001873CE00185A9C00FFFFFF00FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF000000000000000000000000000000 + 00008C8C8C002121210000004200313131008C8C8C00BDC6C600000000000000 + 000000000000000000000000000000000000FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF00FFFFFF00ADDEFF004AADFF00319C + FF002194FF00188CFF00188CFF00188CF700188CF7001884EF001884E700187B + DE001873CE00186BBD0063B5FF00FFFFFF00FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000 + FFFFFFFF00000000F00FF03F00000000F7EFF7BF00000000F7EFF7BF00000000 + F7EFF78F00000000F7EFF02F00000000F7EFF02F00000000F00FFDEF00000000 + F00FFC0F00000000FFFFFC0F00000000FFFFFFFF00000000FFFFFFFF00000000 + FFFFFFFF00000000FFFFFFFF000000008001F01FF00FFFFF0000E00FE007FFFF + 0000C007C003FFFF000080038001FFFF000000010000F81F000000000000F81F + 000000000000FFFF000000000000FFFF000000000000FFFF000000000000FFFF + 000000000000FFFF000000000001FFFF000080018003FFFF0000C003C007FFFF + 0000E007E00FFFFF8001F00FF01FFFFFFFFF800180018001F07F000000000000 + C07F000000000000C07F000000000000003F0000000000008001000000000000 + 0000000000000000800000000000000000000000000000008000000000000000 + 00010000000000008007000000000000800F000000000000E00F000000000000 + F03F000000000000FFFF80018001800100000000000000000000000000000000 + 000000000000} + end + object lstImages: TMenuImgList + BkColor = clSilver + DrawingStyle = dsTransparent + Left = 236 + Top = 236 + Bitmap = { + 494C01013B004000040010001000C0C0C000FF10FFFFFFFFFFFFFFFF424D3600 + 000000000000360000002800000040000000F0000000010020000000000000F0 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C6C6C600F7730000CE5A0000CE5A0000F7730000C6C6C600C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C6C6 + C600CE5A0000F7730000F7C69400F7C69400F7C69400F7A55A00F7730000CE5A + 0000C6C6C600C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700637B + D6000042C6000042C6000042C600637BD600BDC6F700C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C6C6C600CE5A + 0000F7A55A00FFE7CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFE7CE00F7A5 + 5A00CE5A0000C6C6C600C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700637BD6000042C600ADBD + E700A5B5DE009CADD6009CA5CE00949CC6000042C600637BD600BDC6F700C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C6C6C600CE5A0000F7A5 + 5A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7A55A00CE5A0000C6C6C600C0C0C000C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600637BD600BDCEFF00B5C6F700B5BD + EF00A5B5DE00A5ADD6009CA5CE00949CC600949CC600949CC600637BD600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000CE5A0000F7A55A00FFFF + FF00FFFFFF00F7A55A00F7A55A00F7730000F7730000F7A55A00F7A55A00FFFF + FF00FFFFFF00F7A55A00CE5A0000C0C0C000C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000042C600C6D6FF00BDCEFF00B5C6 + F700ADBDEF00A5B5DE009CADD6009CA5CE00949CC600949CC6000042C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600F7730000FFE7CE00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFE7CE00F7730000C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000042C600CEDEFF00C6D6FF00BDCE + FF00B5C6F700ADBDE700A5B5DE009CADD60094A5CE0094A5CE000042C6004242 + 42004242420084848400C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000C6C6C600C6C6C600C6C6C6006363 + 6300FFBD730000630000006300000063000000630000E7A56B00006300000063 + 00000063000000630000C6C6C600C6C6C600BDC6F7000042C600CEDEFF00C6D6 + FF00BDCEFF00B5C6F700ADBDE700A5ADDE009CADD6000042C60084848400B5B5 + B500B5B5B500ADADAD0084848400848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE5A0000F7C69400FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F7C69400CE5A0000C6C6C60063636300424242006363 + 6300FFC67B0000630000008400000084000000630000EFAD6B00006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600BDC6F7000042C600CEDE + FF00637BD6000042C600637BD600ADB5E7000042C60042424200BDBDBD00BDBD + BD00B5B5B500ADADAD00ADADAD00424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE5A0000F7C69400FFFFFF00FFFF + FF00FFFFFF00F7A55A00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F7C69400CE5A000084848400C6C6C600C6C6C6006363 + 6300FFC67B000063000000840000008400000063000042424200006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700315A + C600CEDEFF00C6D6FF00BDC6F700315AC600BDC6F70042424200C6C6C600BDBD + BD00BDBDBD00B5B5B500ADADAD00424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000C6C6C600C6C6C60042424200D694 + 4A008484840000630000008400000084000000630000C6C6C600006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600637BD600D6E7 + FF00D6DEFF00CED6FF00BDCEFF00B5C6F700637BD600C6C6C60084848400C6C6 + C600BDBDBD00BDBDBD0084848400C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600F7730000FFE7CE00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00FFE7CE00F7730000C6C6C600848484006363630063636300D6AD + 6B00D6944A000063000000840000008400000063000063636300006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6000042C600DEEF + FF00D6E7FF00CEDEFF00C6D6FF00BDCEFF000042C600C6C6C600C6C6C6006363 + 63004242420063636300C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000CE5A0000F7A55A00FFFF + FF00FFFFFF00FFFFFF00F7A55A00F7730000F7730000F7A55A00FFFFFF00FFFF + FF00FFFFFF00F7A55A00CE5A0000C0C0C000C6C6C600C6C6C600C6C6C6006363 + 63004242420000630000008400000084000000630000C6C6C600006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600637BD600DEEF + FF00D6E7FF00CEDEFF00CED6FF00C6CEFF00637BD600C6C6C60063636300CECE + CE00CECECE00C6C6C60063636300C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C6C6C600CE5A0000F7A5 + 5A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7A55A00CE5A0000C6C6C600C0C0C000C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60000630000008400000084000000630000C6C6C600006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600BDC6F700315A + C600D6E7FF00D6DEFF00CEDEFF00315AC600BDC6F700C6C6C60042424200D6D6 + D600CECECE00C6C6C60042424200C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C6C6C600CE5A + 0000F7A55A00FFE7CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFE7CE00F7A5 + 5A00CE5A0000C6C6C600C0C0C000C0C0C000C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60000630000008400000084000000630000C6C6C600006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600BDC6 + F700637BD6000042C600637BD600BDC6F700C6C6C600C6C6C60084848400D6D6 + D600CECECE00CECECE0084848400C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C6C6 + C600CE5A0000F7730000F7A55A00F7C69400F7C69400F7A55A00F7730000CE5A + 0000C6C6C600C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000630000008400000084000000630000C6C6C600006300000084 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 84004242420084848400C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C6C6C600F7730000CE5A0000CE5A0000F7730000C6C6C600C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000630000006300000063000000630000C6C6C600006300000063 + 00000063000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEEFEF0000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF00000000009CA59C009CA5 + 9C009CA59C009CA59C009CA59C009CA59C00C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0000000000E7EFEF00FFFF + FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000000FF0063636300C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 + C600C6C6C60084848400C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0000000000E7EFEF00FFFF + FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B008484FF008484FF000000 + FF0063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B00EFAD6B00636363004242 + 420063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00BD8C94000000FF00CE948C00EFAD6B00EFAD6B0052527B000000 + FF004A4A8400C6C6C600C6C6C600C6C6C6000000000084848400848484008484 + 8400848484008484840084848400848484008484840000000000E7EFEF00FFFF + FF00FFFFFF00E7EFEF00FFFFFF009CA59C0084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B573000000FF0042424200C6C6C600C6C6 + C600C6C6FF000000FF00C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD73005A42CE00F7B57300424242000000FF00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B001810EF00946BAD00F7B57300424242007373DE001818 + FF00C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000 + 0000000000000000000000000000000000000000000084848400E7EFEF00FFFF + FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD73008484FF00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6FF000000FF00C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C6000000FF00C6C6 + C600C6C6C600525AFF00B5BDF700C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00634AC6000000FF000000FF000000FF000000FF005A63 + FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00E7EF + EF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EF + EF00E7EFEF00E7EFEF00FFFFFF009CA59C00848484006363630063636300D6AD + 6B00D6944A0063636300636363000000FF004242420063636300C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6FF00C6C6C600848484006363630063636300D6AD + 6B00D6944A006363630039399C000000F7000000FF002121C6000000FF00C6C6 + C600C6C6C600737BF7003131FF00C6C6C600848484006363630063636300D6AD + 6B00D6944A006363630042428C000000F70042424200636363000808FF00A5AD + F700C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00E7EF + EF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EF + EF00E7EFEF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6FF00C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C6000000F7009C9CCE00D6E7EF00737BF7000000FF00C6C6 + C600C6C6C600DEEFEF000000FF00C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C600393942000808FF00B5C6F700B5BDF7000808F700DEEF + EF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00E7EF + EF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EFEF00E7EF + EF00E7EFEF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C6000000FF00C6C6FF00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C6000000F700B5BDF700D6E7EF00C6C6C6000000FF00ADBD + F700C6C6C6008494F7002121FF00C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300DEEFEF00DEEFEF00636363005252FF007B84F700737BF7005252FF00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6009CA59C00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00E7EFEF00FFFFFF009CA59C00C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C600C6C6C6000000FF00C6C6FF00C6C6C600C6C6 + C600C6C6C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C600848484009CA5F7001818FF000000FF00C6C6C6000000FF002121 + FF000000FF002129FF00ADB5F700C6C6C600C6C6C600C6C6C600424AFF008484 + 8400424AFF0084848400C6C6C6009CA5F7003942FF003942FF009CA5F700C6C6 + C600C6C6C600424AFF00C6C6C600424AFF00C6C6C600C6C6C6009CA59C008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 84008484840084848400848484009CA59C00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000FF00C6C6 + FF00C6C6FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000FF00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6003139FF00C6C6 + C6003139FF00C6C6C600C6C6C600D6E7EF001010FF001010FF00D6E7EF00C6C6 + C600C6C6C6003139FF00C6C6C6003139FF00C6C6C600C6C6C600C6C6C6009CA5 + 9C009CA59C009CA59C009CA59C009CA59C009CA59C009CA59C009CA59C009CA5 + 9C009CA59C009CA59C009CA59C00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6000000FF000000FF000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C6000000FF00C6C6 + C6000000FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000FF00C6C6C6000000FF00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60063636300636363005A5A5A005A5A + 5A005A5A5A0052525200525252004A4A4A004A4A4A004A4A4A00424242004242 + 420039393900393939003939390031313100C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6006B6B6B00FFFFFF00FFFFFF005A5A + 5A00FFFFFF0052525200FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF0042424200FFFFFF00FFFFFF0039393900C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C6000000 + FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6006B6B6B0063636300636363005A5A + 5A005A5A5A005A5A5A005252520052525200525252004A4A4A004A4A4A004A4A + 4A0042424200424242004242420039393900C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C6000000 + FF00FFFFFF00FFFFFF00FFFFFF000000FF00C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60073737300FFFFFF00FFFFFF00FFFF + FF005A5A5A00FFFFFF005A5A5A00FFFFFF0052525200FFFFFF004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0039393900C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C6000000 + FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600737373006B6B6B00636363006363 + 6300636363005A5A5A005A5A5A005A5A5A005252520052525200525252004A4A + 4A004A4A4A004A4A4A004242420042424200C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60073737300FFFFFF00FFFFFF006363 + 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 + 5200FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B000000FF000000FF000000FF000000FF000000 + FF00C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000063000000630000C6C6 + C600C6C6C60084848400C6C6C600C6C6C6007B7B7B006B6B6B006B6B6B006B6B + 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 + 5200525252004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B573000000FF00FFFFFF00FFFFFF00FFFFFF000000 + FF000000C6000000C6000000C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0000630000008400000063 + 000063636300C6C6C600C6C6C600C6C6C6007B7B7B00FFFFFF006B6B6B00FFFF + FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF + FF0052525200FFFFFF00FFFFFF004A4A4A00C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD9463000000E7000000DE000000DE000000D6000000 + D6000000CE000000CE000000C6000000C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD9463000000FF000000FF000000FF000000FF000000 + FF0063636300C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730000630000008400000084 + 000000630000C6C6C600C6C6C600C6C6C600848484007B7B7B007B7B7B007373 + 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A + 5A005A5A5A0052525200525252004A4A4A0084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD73000000E700FFFFFF000000DE00FFFFFF000000 + D600FFFFFF000000CE00FFFFFF000000C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B573000000C60042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD73004242420000630000008400000084 + 00000084000000630000C6C6C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B00EFAD6B00636363004242 + 420063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B000000E7000000E7000000E7000000DE000000 + DE000000D6000000D6000000CE000000CE00C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD73000000C600C6C6C600C6C6C6000000 + FF000000FF000000FF000000FF000000FF00848484006363630063636300D6AD + 6B00D6944A006363630063636300636363004242420000630000008400000084 + 0000008400000084000000630000C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600848484006363630063636300D6AD + 6B00D6944A0063636300636363000000EF00FFFFFF000000E700FFFFFF000000 + DE00FFFFFF000000D600FFFFFF000000CE00848484006363630063636300D6AD + 6B00D6944A006363630063636300636363000000C6000000C6000000C6000000 + FF00FFFFFF00FFFFFF00FFFFFF000000FF00C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6C600C6C6C60000630000008400000084 + 0000008400000084000000630000C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C600424242000000EF000000EF000000E7000000E7000000 + E7000000DE000000DE000000D6000000D600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C600848484000000 + FF000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300C6C6C600C6C6C60000630000008400000084 + 00000084000000630000C6C6C600C6C6C600848484006363630063636300D6AD + 6B00D6944A006363630063636300636363004242420063636300C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C600636363000000F700FFFFFF000000EF00FFFFFF000000 + E700FFFFFF000000DE00FFFFFF000000D600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C600C6C6C600C6C6C60000630000008400000084 + 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C6000000F7000000F7000000EF000000EF000000 + E7000000E7000000E7000000DE000000DE00C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C6000000FF000000FF000000FF000000FF000000 + FF00C6C6C600C6C6C6000000C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000630000008400000063 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000000FF00FFFFFF000000F700FFFFFF000000 + EF00FFFFFF000000E700FFFFFF000000DE00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000000FF00FFFFFF00FFFFFF00FFFFFF000000 + FF000000C6000000C6000000C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000063000000630000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000000FF000000FF000000F7000000F7000000 + EF000000EF000000E7000000E7000000E700C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000000FF000000FF000000FF000000FF000000 + FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000000000000000000C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD73000084000000630000A57B5200EFAD6B000084000000630000C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B000084000000630000C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0000000000424242000000 + 000063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C60063636300424242006363 + 6300FFC67B00636363000084000000630000EFAD6B0063636300008400000063 + 000063636300C6C6C600C6C6C600C6C6C600C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0063636300008400000063 + 000063636300C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730000000000424242004242 + 420000000000C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300000000004242420042424200424242004242 + 42004242420042424200424242000000000084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B0000630000008400000063000042424200006300000084 + 000000630000C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B57300F7B5730042424200006300000084 + 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD73004242420000000000424242004242 + 42004242420000000000C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00000000004242420042424200424242004242 + 420042424200424242004242420000000000C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00006300000084000000630000C6C6C6000063 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C600C6C6C6000063 + 00000084000000630000C6C6C600C6C6C600848484006363630063636300D6AD + 6B00D6944A006363630063636300636363004242420000000000424242004242 + 4200424242004242420000000000C6C6C600848484006363630063636300D6AD + 6B00D6944A006363630063636300000000004242420042424200424242004242 + 420042424200424242004242420000000000848484006363630063636300D6AD + 6B00D6944A00636363006363630063636300006300000084000000630000C6C6 + C600006300000084000000630000C6C6C600848484006363630063636300D6AD + 6B00D6944A006363630063636300636363004242420063636300C6C6C600C6C6 + C600006300000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6C600C6C6C60000000000424242004242 + 4200424242004242420000000000C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200000000004242420042424200424242004242 + 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6C600006300000084000000630000C6C6 + C600006300000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C60084848400C6C6 + C600006300000084000000630000C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300C6C6C600C6C6C60000000000424242004242 + 42004242420000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300000000004242420042424200424242004242 + 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300006300000084000000630000C6C6C6000063 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C6000063 + 00000084000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C600C6C6C600C6C6C60000000000424242004242 + 420000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C600000000004242420042424200424242004242 + 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400006300000084000000630000C6C6C600006300000084 + 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600006300000084 + 000000630000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000424242000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600000000004242420042424200424242004242 + 420042424200424242004242420000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600848484000084000000630000C6C6C60084848400008400000063 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400008400000063 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000084000000630000C6C6C600C6C6C6000084000000630000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000084000000630000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600ADC6FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600B5BDF7004A73DE000042C6000042C6004A73 + DE00B5BDF700C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600B5BDF7000042C6000042C6000042C6000042 + C6000042C600B5BDF700C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600ADC6 + FF000042DE004A73E7005273E7004A73E7007394FF00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6004A73DE004A73DE00B5BDF700FFFFFF00FFFFFF00B5BD + F7004A73DE004A73DE00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700B5BDF700B5BDF7008C9C + EF008C9CEF000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000852 + E7000039C6005273DE005273DE005273DE004A6BDE005273E7005273EF0084A5 + FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004A73DE00B5BDF700F7CEAD00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00CED6FF00B5BDF7004A73DE00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700FFFFFF008C9CEF00FFFF + FF004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6007B9CFF005273 + DE00295ACE005273DE005273DE005273DE005273DE005273DE004A73DE004A6B + DE005273E700638CFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600B5BDF7004A73DE00F7CEAD00FFFFFF00F7CEAD00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00CED6FF004A73DE00B5BDF700C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700FFFFFF008C9CEF00FFFF + FF004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6 + C600C6C6C600C6C6C60063636300636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600527BEF005273 + DE002152D600215AC6000039C600184AD600426BDE005273DE005273DE005273 + DE004A6BDE006B8CFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6004A73DE00B5BDF700F7CEAD00F7CEAD00FFFFFF000042C6000042C600FFFF + FF00FFFFFF00FFFFFF00B5BDF7004A73DE00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000042C600B5BDF700FFFFFF008C9CEF00FFFF + FF004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B520042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600ADC6FF004A73E7005273 + DE000039C600FFFFCE00FFF7CE00ADB5CE004273C6000039C6000842CE003163 + D6005273DE007B9CFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6000042C600FFFFFF00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF000042 + C600FFFFFF00FFFFFF00FFFFFF000042C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000042C6008C9CEF008C9CEF004A73DE004A73 + DE004A73DE000042C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B0063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600638CFF005273DE003963 + D600ADB5CE00FFF7CE00FFEFCE00FFF7CE00FFFFCE00FFFFCE00C6D6E700638C + DE00084AC6004A7BEF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6000042C600FFFFFF00FFFFFF00FFFFFF000042C600FFFFFF00FFFFFF000042 + C600FFFFFF00FFFFFF00FFFFFF000042C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6000031A5000031A5000031A5000031A5000031A5000031 + A5000031A5000031A5000031A500C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B0063636300C6C6 + C600C6C6C60084848400C6C6C600C6C6C600C6C6C6005273E7005273DE000042 + CE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFC600FFFFFF00FFFF + FF0094B5E7002152D600ADC6FF00C6C6C60063636300636363005A5A5A005A5A + 5A004A73DE00B5BDF700FFFFFF00FFFFFF00FFFFFF000042C6000042C600FFFF + FF00F7CEAD00F7CEAD00B5BDF7004A73DE0063636300636363005A5A5A005A5A + 5A005A5A5A00525252000042C600B5BDF700FFFFFF00FFFFFF00B5BDF7008C9C + EF00B5BDF7004A73DE000042C60031313100C6C6C60063636300424242006363 + 6300FFC67B00FFBD7300BD946300F7B57300EFAD6B0084848400000084000000 + 8400000084008484FF00C6C6C600C6C6C6004A73E7004A73E7005273DE001852 + C600FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFF7D600FFFFFF00FFFF + FF000042C6005273DE005273EF00C6C6C6006B6B6B00FFFFFF00FFFFFF005A5A + 5A00B5BDF7004A73DE00CED6FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7CE + AD00FFFFFF00F7CEAD004A73DE00393939006B6B6B00FFFFFF00FFFFFF005A5A + 5A00FFFFFF0052525200B5BDF7000042C6000042C6000042C600B5BDF7000042 + C6000042C6000042C600B5BDF7003939390084848400C6C6C600C6C6C6006363 + 6300FFC67B00FFC67B00FFBD7300F7B5730063636300000084000000FF000000 + FF000000FF00000084000000C600C6C6C600ADC6FF00527BEF00315AD6009CAD + C600FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFF7E700FFFFFF00D6DE + F7000042C6005273DE005273EF00C6C6C6006B6B6B0063636300636363005A5A + 5A005A5A5A004A73DE00B5BDF700CED6FF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F7CEAD00B5BDF7004A73DE00393939006B6B6B0063636300636363005A5A + 5A005A5A5A005A5A5A005252520052525200525252000042C6000042C6000042 + C60042424200424242004242420039393900C6C6C600C6C6C60042424200D694 + 4A0084848400FFC67B00FFC67B0084848400000084000000FF000000FF000000 + FF000000FF000000FF00000084008484FF00C6C6C600ADC6FF00215ADE00396B + C600ADB5CE00FFEFCE00FFEFCE00FFF7CE00FFEFCE00FFEFD600FFFFFF00527B + D6003963D6004A6BDE00ADC6FF00C6C6C60073737300FFFFFF00FFFFFF00FFFF + FF005A5A5A00FFFFFF004A73DE004A73DE00B5BDF700FFFFFF00FFFFFF00B5BD + F7004A73DE004A73DE00FFFFFF003939390073737300FFFFFF00FFFFFF00FFFF + FF005A5A5A00FFFFFF005A5A5A00FFFFFF0052525200FFFFFF004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0039393900848484006363630063636300D6AD + 6B00D6944A006363630063636300000084000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF0000008400C6C6C600C6C6C600ADC6FF003963 + D600104ACE000031C600396BC600A5ADCE00FFF7CE00FFFFCE00FFFFFF000039 + C6005273DE005273E700C6C6C600C6C6C600737373006B6B6B00636363006363 + 6300636363005A5A5A005A5A5A005A5A5A004A73DE000042C6000042C6004A73 + DE004A4A4A004A4A4A004242420042424200737373006B6B6B00636363006363 + 6300636363005A5A5A005A5A5A005A5A5A005252520052525200525252004A4A + 4A004A4A4A004A4A4A004242420042424200C6C6C600C6C6C600C6C6C6006363 + 630042424200C6C6C60042424200000084000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF0000008400C6C6C600C6C6C6007B9CFF004A73 + E7005273DE005A73DE004263D600104ACE000031C6002963C6005A84CE00215A + D6005273DE006B8CFF00C6C6C600C6C6C60073737300FFFFFF00FFFFFF006363 + 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 + 5200FFFFFF00FFFFFF00FFFFFF004242420073737300FFFFFF00FFFFFF006363 + 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 + 5200FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300000084000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF0000008400C6C6C600C6C6C600C6C6C600ADC6 + FF006B8CFF004A73E7005273E7005273DE005A73DE004263D6002963DE006384 + F7004A6BDE00ADC6FF00C6C6C600C6C6C6007B7B7B006B6B6B006B6B6B006B6B + 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 + 5200525252004A4A4A004A4A4A004A4A4A007B7B7B006B6B6B006B6B6B006B6B + 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 + 5200525252004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C60084848400C6C6C6008484FF00000084000000FF000000FF000000 + FF000000FF000000FF00000084008484FF00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6007B9CFF00638CFF004A73E7005273E700C6C6C600C6C6 + C600ADC6FF00C6C6C600C6C6C600C6C6C6007B7B7B00FFFFFF006B6B6B00FFFF + FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF + FF0052525200FFFFFF00FFFFFF004A4A4A007B7B7B00FFFFFF006B6B6B00FFFF + FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF + FF0052525200FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000C600000084000000FF000000 + FF000000FF00000084000000C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600ADC6FF00ADC6FF00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600848484007B7B7B007B7B7B007373 + 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A + 5A005A5A5A0052525200525252004A4A4A00848484007B7B7B007B7B7B007373 + 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A + 5A005A5A5A0052525200525252004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484FF00000084000000 + 8400000084008484FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200000000000000000042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6005A5A5A005A5A5A00525252005252 + 5200525252004A4A4A004A4A4A004A4A4A004242420042424200424242003939 + 390039393900393939003131310031313100C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6008CDE8C0029B52900089400000894000029B5 + 29008CDE8C00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000424242005252A5007373C6007373BD005252A500424242000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C6005A5A5A00FFFFFF00FFFFFF005252 + 5200FFFFFF0052525200FFFFFF00FFFFFF00FFFFFF00FFFFFF0042424200FFFF + FF0039393900FFFFFF00FFFFFF0031313100C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60029B5290008940000FFFFFF0008940000089400000894 + 00000894000029B52900C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00005252A5007B7BD6007B7BCE0042424200000000006B6BB5006B6BB5005252 + A50000000000C6C6C600C6C6C600C6C6C6005A5A5A005A5A5A005A5A5A005A5A + 5A005252520052525200525252004A4A4A004A4A4A004A4A4A00424242004242 + 420042424200393939003939390039393900C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60029B529008CDE8C00FFFFFF008CDE8C0008940000089400000894 + 00008CDE8C008CDE8C0029B52900C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000006B6B + B5008484DE007B7BD60000000000FFFFFF00FFFFFF00424242006B6BB5006B6B + B5005252A50000000000C6C6C600C6C6C60063636300FFFFFF00FFFFFF00FFFF + FF005A5A5A00FFFFFF0052525200FFFFFF004A4A4A00FFFFFF004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0039393900C6C6C600C6C6C600C6C6C600C6C6 + C6008CDE8C0008940000FFFFFF00089400000894000008940000089400000894 + 000008940000FFFFFF00089400008CDE8C00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484D6008C8C + EF008484E7008484DE0042424200FFFFFF00FFFFFF00000000006B6BB5006B6B + B5006B6BB5005252A50000000000C6C6C60063636300636363005A5A5A005A5A + 5A005A5A5A005A5A5A005252520052525200525252004A4A4A004A4A4A004A4A + 4A0042424200424242004242420039393900C6C6C600C6C6C600C6C6C600C6C6 + C60029B52900FFFFFF00FFFFFF00089400000894000008940000089400000894 + 000008940000FFFFFF00FFFFFF0029B52900C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C600C6C6C600C6C6C60063636300636363006363630042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600424242009494F7008C8C + EF008C8CEF008484E7008484DE0000000000424242007373C6006B6BBD006B6B + B5006B6BB5006B6BB50042424200C6C6C60063636300FFFFFF00FFFFFF005A5A + 5A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60052525200FFFFFF004A4A + 4A00FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C600C6C6 + C60008940000FFFFFF00FFFFFF00FFFFFF000894000008940000089400000894 + 00008CDE8C00089400008CDE8C0008940000C6C6C600C6C6C600C6C6C600C6C6 + C60063636300C6C6C60042424200EFAD6B00E7A56B00E79C6B00846B52004242 + 4200C6C6C600C6C6C600C6C6C600C6C6C600424242008484D6009494FF009494 + F7009494F7008C8CEF0000000000FFFFFF00FFFFFF00000000007373C6007373 + BD006B6BB5006B6BB5005252A500424242006B6B6B0063636300636363006363 + 6300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60052525200525252004A4A + 4A004A4A4A004A4A4A004242420042424200C6C6C600C6C6C600C6C6C600C6C6 + C60008940000FFFFFF008CDE8C008CDE8C008CDE8C00FFFFFF00FFFFFF00FFFF + FF0008940000089400000894000008940000C6C6C600C6C6C600C6C6C600C6C6 + C6004242420042424200F7B57300EFAD6B00EFAD6B00A57B5200E79C6B006363 + 6300C6C6C600C6C6C600C6C6C600C6C6C600000000009C9CFF009C9CFF009C9C + FF009494FF009494F70042424200FFFFFF00FFFFFF00000000007373C6007373 + C6007373BD007373BD007373BD0000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6005A5A5A005A5A5A0052525200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60063636300636363005A5A5A005A5A + 5A0029B52900FFFFFF00FFFFFF000894000008940000FFFFFF00089400008CDE + 8C0008940000089400000894000029B52900C6C6C600C6C6C600C6C6C600C6C6 + C60063636300FFBD7300F7B57300F7B57300A57B5200EFAD6B00E7A56B006363 + 6300C6C6C600C6C6C60084848400C6C6C600000000009C9CFF009C9CFF009C9C + FF009C9CFF009C9CFF009494F70000000000FFFFFF00FFFFFF00000000007B7B + CE007373C6007373C6007373C60000000000C6C6C600C6C6C600C6C6C6006363 + 63006363630063636300C6C6C6005A5A5A00FFFFFF005A5A5A00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6006B6B6B00FFFFFF00FFFFFF005A5A + 5A008CDE8C0008940000FFFFFF00FFFFFF000894000008940000089400000894 + 00000894000008940000089400008CDE8C00C6C6C600C6C6C600636363004242 + 420063636300FFC67B00FFBD7300BD946300F7B57300EFAD6B00EFAD6B006363 + 63004242420063636300C6C6C600C6C6C600424242008484D600A5A5FF00A5A5 + FF00A5A5FF0000000000424242009494F70042424200FFFFFF00FFFFFF004242 + 42007B7BCE007B7BCE005252A50042424200C6C6C600C6C6C600C6C6C6006B6B + 6B00FFFFFF0063636300C6C6C6005A5A5A005A5A5A005A5A5A00C6C6C600C6C6 + C60052525200525252004A4A4A004A4A4A006B6B6B0063636300636363005A5A + 5A005A5A5A0029B529008CDE8C0008940000FFFFFF0008940000089400000894 + 0000089400000894000029B5290039393900C6C6C60084848400C6C6C600C6C6 + C60063636300FFC67B00FFC67B00FFBD7300F7B57300F7B5730042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200A5A5FF00A5A5 + FF0000000000FFFFFF00FFFFFF008484840042424200FFFFFF00FFFFFF000000 + 00007B7BD6007B7BD60042424200C6C6C60073737300737373006B6B6B006B6B + 6B006B6B6B0063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60052525200FFFFFF00FFFFFF004A4A4A0073737300FFFFFF00FFFFFF00FFFF + FF005A5A5A00FFFFFF0029B5290008940000FFFFFF00FFFFFF008CDE8C000894 + 00000894000029B52900FFFFFF0039393900C6C6C600C6C6C600C6C6C6004242 + 4200D6944A0084848400FFC67B00FFC67B00FFBD730042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484D600A5A5 + FF0042424200FFFFFF00FFFFFF008484840084848400FFFFFF00FFFFFF004242 + 42008484DE005252A50000000000C6C6C60073737300FFFFFF0073737300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600636363005A5A5A005A5A5A00C6C6 + C6005A5A5A00525252005252520052525200737373006B6B6B00636363006363 + 6300636363005A5A5A005A5A5A008CDE8C0029B52900089400000894000029B5 + 29008CDE8C004A4A4A004242420042424200C6C6C60084848400636363006363 + 6300D6AD6B00D6944A006363630063636300636363004242420063636300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484 + D600A5A5FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008C8C + EF006B6BB50000000000C6C6C600C6C6C6007B7B7B007373730073737300C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60063636300FFFFFF005A5A5A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60073737300FFFFFF00FFFFFF006363 + 6300FFFFFF0063636300FFFFFF005A5A5A00FFFFFF0052525200FFFFFF005252 + 5200FFFFFF00FFFFFF00FFFFFF0042424200C6C6C600C6C6C600C6C6C600C6C6 + C6006363630042424200C6C6C60042424200C6C6C600C6C6C600C6C6C6008484 + 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00008484D600A5A5FF00424242000000000000000000424242009494F7008484 + D60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600737373006B6B6B006B6B6B00C6C6C600636363006363630063636300C6C6 + C6005A5A5A005A5A5A005A5A5A00C6C6C6007B7B7B006B6B6B006B6B6B006B6B + 6B006363630063636300636363005A5A5A005A5A5A005A5A5A00525252005252 + 5200525252004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C60063636300C6C6C600C6C6C60063636300C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000424242008484D6009C9CFF009C9CFF008484D600424242000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60073737300FFFFFF006B6B6B00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6005A5A5A00FFFFFF005A5A5A00C6C6C6007B7B7B00FFFFFF006B6B6B00FFFF + FF006B6B6B00FFFFFF0063636300FFFFFF005A5A5A00FFFFFF005A5A5A00FFFF + FF0052525200FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C60084848400C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200000000000000000042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600737373007373730073737300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600636363005A5A5A005A5A5A00C6C6C600848484007B7B7B007B7B7B007373 + 730073737300737373006B6B6B006B6B6B0063636300636363005A5A5A005A5A + 5A005A5A5A0052525200525252004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600848484004242420021212100212121002121 + 210021212100212121002121210042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C0000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600086B7B0008E7FF0008DEFF0008D6FF0008CE + EF0008BDE70008B5D60008ADCE0021212100C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300A59484009C94840063636300C6C6C600C6C6 + C60063636300A5A5A500C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C00000000000C6C6C60000000000C0C0C000C0C0C000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600086B7B0008E7FF0008DEFF0008D6FF0008CE + EF0008BDE70008B5D60008ADCE0021212100C6C6C600C6C6C600424242009C8C + 7B002121210000000000A59C8C00A59C8C00A59484009C948400000000002121 + 21009C8C7B0042424200A5A5A500C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600000000008400840000000000848484000000000000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C0000000000031B5D600C6C6C60000000000C0C0C00000000000FFFFFF000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600086B7B0008E7FF0008DEFF0008D6FF0008CE + EF0008BDE70008B5D60008ADCE0021212100C6C6C600636363009C8C7B00ADA5 + 9400ADA59400AD9C8C00A59C8C00A59C8C00A59C8C00A59484009C9484009C94 + 84009C9484009C8C7B0063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000840084008400840000000000FFFFFF00C6C6C600FFFFFF000000 + 000000000000C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C00000000000C6C6C600000000000000000084848400FFFFFF000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600F7D6 + 9400D6941000A56B0800A56B0800086B7B0008E7FF0008DEFF0008D6FF0008CE + EF0008BDE70008B5D60008ADCE0021212100C6C6C600C6C6C60021212100B5A5 + 9400ADA59400ADA5940042424200424242004242420042424200A59484009C94 + 84009C94840021212100C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00008400840084008400840084000000000084848400FFFFFF00C6C6C600FFFF + FF00C6C6C6000000000000000000C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C0000000000031B5D600C6C6C60000000000C0C0C00000000000FFFFFF000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600D6941000A56B + 0800FFFFFF00D6941000A56B0800086B7B0008E7FF0008DEFF0008D6FF0008CE + EF0008BDE70008B5D60008ADCE0042424200C6C6C600C6C6C60000000000B5AD + 9C00B5A5940021212100C6C6C600C6C6C600C6C6C600C6C6C60021212100A594 + 84009C94840000000000C6C6C600C6C6C600C6C6C600C6C6C600000000008400 + 8400840084008400840084008400C6C6C600000000000000000084848400C6C6 + C600FFFFFF00C6C6C6000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C0000000000021EFFF00C6C6C600000000000000000084848400FFFFFF000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600D6941000F7D69400FFFF + FF00F7D69400D6941000A56B0800086B7B00086B7B00086B7B00086B7B00086B + 7B00086B7B00086B7B00086B7B00086B7B004242420063636300B5AD9C00B5AD + 9C0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200A59484009C9484006363630042424200C6C6C60000000000840084008400 + 84008400840084008400C6C6C600840084008400840084008400000000000000 + 000084848400FFFFFF0084848400FFFFFF00C0C0C000C0C0C000C0C0C0000000 + 000031B5D60021EFFF00C6C6C6000000000000000000C6C6C600FFFFFF000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000F7D69400A56B0800FFFFFF00D694 + 1000D6941000A56B0800A56B0800A56B080042424200CECECE0042424200F7D6 + 940042424200B5B5B50042424200C6C6C60063636300BDB5A500BDAD9C00B5AD + 9C0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200A59C8C00A59484009C948400636363000000000084008400840084008400 + 840084008400C6C6C60084008400840084008400840084008400840084008400 + 8400000000000000000084848400FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 + C00000000000C6C6C60021EFFF000000000084848400C6C6C600FFFFFF000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000D6941000FFFFFF00FFFFFF00A56B + 0800A56B0800A56B0800A56B0800A56B080042424200CECECE0042424200D694 + 100042424200B5B5B50042424200C6C6C60063636300BDB5A500BDB5A500BDAD + 9C0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200A59C8C00A59C8C00A5948400636363000000000084008400840084008400 + 8400C6C6C60084008400840084008400840084008400FF42FF00FFFFFF008400 + 840084008400840084000000000000000000C0C0C000C0C0C000C0C0C0000000 + 0000C6C6C60021EFFF0021EFFF00C6C6C60000000000FFFFFF00C6C6C6000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000A56B0800FFFFFF00FFFFFF00FFFF + FF00A56B0800A56B0800A56B0800A56B080042424200CECECE0042424200A56B + 080042424200B5B5B50042424200C6C6C6004242420063636300BDB5A500BDB5 + A50042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200A59C8C00A59C8C006363630042424200000000008400840084008400C6C6 + C60084008400840084008400840084008400FFFFFF0084008400840084008400 + 8400840084008400840000000000C6C6C600C0C0C000C0C0C0000000000021EF + FF0021EFFF0021EFFF0021EFFF0021EFFF00C6C6C60000000000C6C6C600FFFF + FF0000000000C0C0C000C0C0C000C0C0C000A56B0800FFFFFF00F7D69400F7D6 + 9400F7D69400FFFFFF00F7D69400FFFFFF0084848400C6C6C600848484004242 + 420084848400B5B5B50084848400C6C6C600C6C6C600C6C6C60000000000BDB5 + A500BDB5A50021212100C6C6C600C6C6C600C6C6C600C6C6C60021212100ADA5 + 9400AD9C8C0000000000C6C6C600C6C6C6000000000084008400C6C6C6008400 + 840084008400840084008400840084008400FFFFFF0084008400840084008400 + 84008400840000000000C6C6C600C6C6C600C0C0C000C0C0C0000000000021EF + FF0021EFFF0021EFFF0021EFFF0021EFFF00C6C6C60000000000C6C6C600C6C6 + C600FFFFFF0000000000C0C0C000C0C0C000D6941000FFFFFF00FFFFFF00A56B + 0800A56B0800F7D69400A56B0800F7D69400A56B080084848400BDBDBD00BDBD + BD00B5B5B50042424200C6C6C600C6C6C600C6C6C600C6C6C60021212100BDB5 + A500BDB5A500BDB5A50042424200424242004242420042424200B5A59400ADA5 + 9400ADA5940021212100C6C6C600C6C6C60000000000C6C6C600840084008400 + 840084008400FFFFFF008400840084008400FFFFFF0084008400840084008400 + 840000000000C6C6C600C6C6C600C6C6C600C0C0C000C0C0C0000000000021EF + FF00C6C6C600000000000000000021EFFF00C6C6C60000000000C6C6C600C6C6 + C600FFFFFF0000000000C0C0C000C0C0C000F7D69400A56B0800FFFFFF00FFFF + FF00A56B0800A56B0800A56B0800A56B0800A56B0800A56B0800424242004242 + 420042424200C6C6C600C6C6C600C6C6C600C6C6C600636363009C8C7B00C6B5 + A500BDB5A500BDB5A500BDB5A500BDAD9C00B5AD9C00B5AD9C00B5AD9C00B5A5 + 9400ADA594009C8C7B0063636300C6C6C600C6C6C60000000000000000008400 + 84008400840084008400FFFFFF00FFFFFF008400840084008400840084000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C0000000000021EF + FF00C6C6C60031B5D60031B5D60021EFFF00C6C6C6000000000000000000C6C6 + C600FFFFFF0000000000C0C0C000C0C0C000C6C6C600D6941000F7D69400A56B + 0800FFFFFF00A56B0800A56B0800A56B0800A56B0800A56B0800D6941000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600424242009C8C + 7B002121210000000000BDB5A500BDB5A500BDAD9C00B5AD9C00000000002121 + 21009C8C7B0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 000000000000840084008400840084008400840084008400840000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C0000000 + 000021EFFF0021EFFF0021EFFF0021EFFF00000000008484840084848400C6C6 + C600FFFFFF0000000000C0C0C000C0C0C000C6C6C600C6C6C600D6941000A56B + 0800FFFFFF00FFFFFF00F7D69400A56B0800A56B0800D6941000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6006363 + 6300C6C6C600C6C6C60063636300BDB5A500BDB5A50063636300C6C6C600C6C6 + C60063636300C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000840084008400840000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C00000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C60000000000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600F7D6 + 9400D6941000A56B0800A56B0800D6941000F7D69400C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200636363006363630042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C0000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6C600C6C6C6004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A00FFFFFF004A4A4A00C6C6C6004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A0000848400008484004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004AADAD004AAD + AD004AADAD004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A0000848400008484000084 + 8400008484004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004A4A4A004A4A + 4A00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF004A4A4A004AAD + AD004AADAD004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A004A4A4A00C6C6C6004A4A4A0000848400008484004A4A + 4A004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A004A4A4A00C6C6C6004A4A4A00FFFFFF00FFFFFF004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004A4A4A00FFFF + FF00FFFFFF00FFFFFF004A4A4A004A4A4A00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004AFFFF004A4A + 4A004AADAD004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF + EF00DEEFEF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF00FFFFFF004AFF + FF004A4A4A004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A004AADAD004A4A4A00C6C6C6004A4A4A00008484004A4A4A00DEEF + EF00DEEFEF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004AFFFF00FFFF + FF004AFFFF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00008484004A4A4A00DEEF + EF00DEEFEF004A4A4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A00008484004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A00C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A00C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF00FFFFFF004AFF + FF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF + EF00DEEFEF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A00008484004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF004AFFFF00FFFF + FF004AFFFF00FFFFFF004AFFFF00FFFFFF004AFFFF00FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004A4A + 4A00008484004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004AFFFF00FFFFFF004AFF + FF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00008484004A4A4A00DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004A4A + 4A00DEEFEF004A4A4A00C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A + 4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A00C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000C6C6C600C6C6C600C6C6C600FFA5A500FF636300C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000C6C6C600C6C6C600FFD6D600FF424200FFFFFF00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF0000840000FFFFFF0000840000FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000C6C6C600FFF7F700FF393900FFE7E700C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004242420042424200C6C6C6004242420042424200CECECE00C6C6 + C60073737300424242004A4A4A008C8C8C004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000FFEFEF00FF5A5A00FFC6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200C6C6 + C600C6C6C600C6C6C60042424200C6C6C600ADADAD009C9C9C00C6C6C6007373 + 7300ADADAD00C6C6C600FFFFFF00FFFFFF004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000FF636300FF9C9C00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60042424200C6C6 + C600C6C6C600C6C6C60042424200A5A5A5007B7B7B00C6C6C600C6C6C6004242 + 4200424242004242420042424200424242004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000FFF7F700FFADAD00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004242420042424200424242004242 + 420042424200C6C6C60042424200C6C6C600CECECE00A5A5A500E7E7E7006363 + 6300BDBDBD00C6C6C600BDBDBD007B7B7B004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF0000840000FFFFFF0000840000FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600FF525200C6C6C600FF525200C6C6 + C600FF000000C6C6C600FFEFEF00FF949400C6C6C600C6C6C600C6C6C600C6C6 + C600FF525200C6C6C600FF525200C6C6C600C6C6C600C6C6C60042424200C6C6 + C600C6C6C600C6C6C60042424200C6C6C600424242004242420042424200E7E7 + E70063636300424242006B6B6B00EFEFEF004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004A4A4A00C6C6C600C6C6C600C6C6C600FF424200C6C6C600FF424200C6C6 + C600FF000000C6C6C600C6C6C600FFE7E700FF8C8C00C6C6C600C6C6C600C6C6 + C600FF424200C6C6C600FF424200C6C6C600C6C6C600C6C6C60042424200C6C6 + C600C6C6C600C6C6C60042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A + 4A004A4A4A00C6C6C600C6C6C600C6C6C600FF313100C6C6C600FF313100C6C6 + C600FF000000C6C6C600C6C6C600C6C6C600FFD6D600FF848400C6C6C600C6C6 + C600FF313100C6C6C600FF313100C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A + 4A00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A + 4A00C6C6C600C6C6C600C6C6C600C6C6C600FF000000C6C6C600FF000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600FF000000C6C6C600FF000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200424242004242420042424200424242004242 + 420042424200424242004242420042424200C6C6C600C6C6C600424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0042424200C6C6C60042424200DEEFEF00DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004242 + 4200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60042424200FFFFFF004242420042424200424242004242 + 42004242420042424200FFFFFF00424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 420042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600000000000000 + 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000FFFFFF00C6C6C600C6C6C60000000000DEEFEF00000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF + EF00000000000000000000000000C6C6C6000000000000000000000000000000 + 000000000000C6C6C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004242420042424200DEEFEF00DEEFEF00DEEF + EF00DEEFEF00DEEFEF00DEEFEF0000FFFF0000FFFF0000FFFF00DEEFEF00DEEF + EF00424242004242420042424200C6C6C600C6C6C600C6C6C600000000000000 + 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000FFFFFF00C6C6C600C6C6C600C6C6C60000000000DEEFEF00000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF + EF00000000000000000000000000C6C6C60000000000DEEFEF00000000000000 + 000000000000C6C6C60042424200FFFFFF004242420042424200424242004242 + 42004242420042424200FFFFFF004242420042424200DEEFEF00DEEFEF00DEEF + EF00DEEFEF00DEEFEF00DEEFEF009CADAD009CADAD009CADAD00DEEFEF00DEEF + EF0042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000FFFFFF00C6C6C600C6C6C600C6C6C600000000000000 + 0000FFFFFF00C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000C6C6C60000000000DEEFEF00000000000000 + 000000000000C6C6C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 420042424200DEEFEF00DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6 + C600000000000000000000000000FFFFFF00C6C6C6000000000000000000FFFF + FF00C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000DEEFEF000000 + 00000000000000000000000000000000000000000000DEEFEF00000000000000 + 0000000000000000000000000000C6C6C6000000000000000000000000000000 + 0000000000000000000042424200FFFFFF004242420042424200424242004242 + 42004242420042424200FFFFFF004242420042424200DEEFEF00DEEFEF00DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF004242 + 4200DEEFEF0042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000000000000000000000000000FFFFFF00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000DEEFEF000000 + 00000000000000000000DEEFEF000000000000000000DEEFEF00000000000000 + 0000000000000000000000000000C6C6C6000000000000000000DEEFEF000000 + 0000000000000000000042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0042424200C6C6C60042424200424242004242 + 420042424200424242004242420042424200424242004242420042424200DEEF + EF0042424200DEEFEF004242420042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600000000000000000000000000FFFFFF00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000DEEFEF000000 + 00000000000000000000DEEFEF000000000000000000DEEFEF00000000000000 + 0000000000000000000000000000C6C6C6000000000000000000DEEFEF000000 + 0000000000000000000042424200FFFFFF00424242004242420042424200FFFF + FF0042424200424242004242420042424200C6C6C600C6C6C60042424200FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 + 4200DEEFEF0042424200DEEFEF0042424200C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000000000000000000000000000FFFFFF00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C6000000000000000000DEEFEF000000 + 0000000000000000000042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0042424200FFFFFF0042424200C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200FFFFFF004242420042424200424242004242420042424200FFFFFF004242 + 4200424242004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000000000000000000FFFFFF00C6C6C60000000000FFFFFF00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF + EF00000000000000000000000000C6C6C60000000000DEEFEF00000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 + 42004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6004242 + 4200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 00000000000000000000FFFFFF00C6C6C600C6C6C600C6C6C600000000000000 + 0000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000C6C6C6000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000DEEF + EF00000000000000000042424200424242004242420042424200424242004242 + 420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60042424200FFFFFF004242420042424200424242004242420042424200FFFF + FF0042424200C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000C6C6C6000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60042424200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0042424200C6C6C600C6C6C600C6C6C6000000000000000000FFFF + FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6000000000000000000FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000DEEFEF0000000000C6C6C600C6C6C600C6C6C60000000000DEEFEF000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6004242420042424200424242004242420042424200424242004242 + 42004242420042424200C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000DEEFEF0000000000C6C6C600C6C6C600C6C6C60000000000DEEFEF000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004242420042424200424242004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200C6C6C600C6C6C6004242420042424200FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF00C6C6C60000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 + 4200C6C6C600424242004242420042424200FFFFFF00188C180029942900399C + 3900399C3900399C3900FFFFFF00A5D6A5004AA54A004AA54A004AA54A0029A5 + 290018A51800009C0000007B0000FFFFFF000000000000848400008484000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200424242004242 + 4200424242004242420042424200C6C6C600FFFFFF0021942100399C390042A5 + 420042A5420042A54200FFFFFF00FFFFFF00A5D6A5004AA54A004AA54A0039A5 + 390021A5210008A50800087B0800FFFFFF000000000000848400008484000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C60000000000C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242009CADAD00DEEFEF00DEEFEF009CAD + AD004242420042424200C6C6C600C6C6C600FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00A5D6A5004AA54A0039A5 + 390021A5210010A5100008840800FFFFFF000000000000848400008484000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF + FF000000000000000000000000000000000000000000FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C60000000000C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00424242009CADAD00DEEFEF00DEEFEF00FFFF00009CAD + AD00FFFFFF0042424200C6C6C600C6C6C600FFFFFF00319C31004AA54A0052A5 + 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A50039A5 + 390021A5210018A5180010841000FFFFFF000000000000848400008484000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000000000000FFFFFF00FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C6000000000042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0042424200DEEFEF00DEEFEF00DEEFEF00DEEFEF009CAD + AD00DEEFEF0042424200C6C6C600C6C6C600FFFFFF00429C420052A552004AA5 + 4A004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 + A500219C2100219C210018841800FFFFFF000000000000848400008484000084 + 8400008484000084840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000004A4A4A00FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C6000000000042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0042424200DEEFEF00FFFF0000DEEFEF00DEEFEF009CAD + AD00DEEFEF0042424200C6C6C600C6C6C600FFFFFF0042A5420052A5520052A5 + 52004AA54A004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6 + A500219C2100219C2100217B2100FFFFFF000000000000848400008484000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000004A4A4A00FFFFFF00FFFFFF00FFFF + FF000000000000000000FFFFFF0000000000FFFFFF00FFFFFF004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C6000000000042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00424242009CADAD00FFFF0000FFFF0000DEEFEF009CAD + AD00FFFFFF0042424200C6C6C600C6C6C600FFFFFF0052A552005AAD5A005AAD + 5A0052A552004AA54A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D6A5003194 + 31002994290029942900217B2100FFFFFF00000000000084840000000000DEEF + EF00DEEFEF00DEEFEF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000FFFFFF0000000000C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000000000004A4A4A00C6C6 + C600C6C6C600C6C6C60000000000C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00424242009CADAD00DEEFEF00DEEFEF009CAD + AD0042424200C6C6C600C6C6C600C6C6C600FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052AD5200FFFFFF00FFFFFF00FFFFFF00A5D6A500399C39003194 + 31002994290029942900217B2100FFFFFF00000000000084840000000000DEEF + EF00DEEFEF00DEEFEF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 00000000000000000000C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200424242004242 + 4200C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A00FFFFFF00FFFFFF00A5D6A500429C4200429C4200399C + 39003194310031943100217B2100FFFFFF00000000000084840000000000DEEF + EF00DEEFEF00DEEFEF0000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A00C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242 + 4200C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B56300FFFFFF00A5D6A5005AAD5A0052A552004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF00000000000084840000000000DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF000000 + 00000084840000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A00FFFFFF004A4A4A00C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200424242004242 + 4200C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF00000000000084840000000000DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF000000 + 00000084840000000000C6C6C600C6C6C6004A4A4A00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF004A4A4A004A4A4A00C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042424200DEEFEF0042424200C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF00000000000084840000000000DEEF + EF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF00DEEFEF000000 + 0000DEEFEF0000000000C6C6C600C6C6C6004A4A4A004A4A4A004A4A4A004A4A + 4A004A4A4A004A4A4A004A4A4A004A4A4A00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60042424200FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004242420042424200C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6004242420042424200424242004242 + 42004242420042424200424242004242420042424200C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000000000000000000000000000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF0052ADFF0018529400185A + 9C00185A9C00185A9C00185AA500185AA500185A9C00185A9C00185294001852 + 940018528C00184A84004AADFF00FFFFFF00FFFFFF0084B58400107310001873 + 18001873180018731800187B1800187B1800107B1000107B1000087B0800087B + 0800007B0000007300007BB57B00FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000000000000000000084008400840084008484840000000000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00185AA500186BBD001873 + CE001873CE001873CE001873CE001873CE001873CE001873CE001873CE00186B + C600186BBD00185AA500104A7B00FFFFFF00FFFFFF0010841000218C21002994 + 2900319431003194310029942900299C2900219C210018A5180018A5180010A5 + 100008A5080000940000006B0000FFFFFF00C0C0C000C0C0C000C0C0C0000000 + 0000000000008400840084008400FFFFFF00FFFFFF00C6C6C600848484000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 000084000000C6C6C600C6C6C600C6C6C600FFFFFF001863AD001873CE00187B + DE00187BDE00187BE7001884E700188CF700188CF700188CF700188CF700187B + DE00186BC6001863AD0018528C00FFFFFF00FFFFFF00188C180029942900399C + 3900399C3900399C390039A539004AA54A00A5D6A500FFFFFF004AA54A0031A5 + 310018A51800009C0000007B0000FFFFFF00C0C0C00000000000000000008400 + 840084008400FFFFFF00FFFFFF000000000000000000C6C6C600C6C6C6008484 + 840000000000C0C0C000C0C0C000C0C0C00000000000C6C6C600C6C6C600C6C6 + C6000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 000084000000C6C6C600C6C6C600C6C6C600FFFFFF00186BC600187BDE001884 + EF00FFFFFF0084C6FF00188CF700188CF700188CF700188CF70084C6FF00FFFF + FF001873CE00186BBD0018529400FFFFFF00FFFFFF0021942100399C390042A5 + 420042A5420042A542004AA54A00A5D6A500FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210008A50800087B0800FFFFFF00000000008400840084008400FFFF + FF00FFFFFF000000000000000000840084008400840000000000C6C6C600C6C6 + C6008484840000000000C0C0C000C0C0C0000000000000000000C6C6C6000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF001873CE001884E700188C + F700188CFF00FFFFFF0084C6FF00188CF700188CF70084C6FF00FFFFFF001884 + E7001873D600186BC600185A9C00FFFFFF00FFFFFF0029942900429C42004AA5 + 4A0052A552004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210010A5100008840800FFFFFF000000000084008400FFFFFF000000 + 000000000000840084008400840084008400840084008400840000000000C6C6 + C600C6C6C6008484840000000000C0C0C0000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 000084848400C6C6C600C6C6C600C6C6C600FFFFFF00187BDE00188CF700188C + FF00188CF700188CF700FFFFFF0084C6FF0084C6FF00FFFFFF00188CF7001884 + E7001873D6001873CE00185AA500FFFFFF00FFFFFF00319C31004AA54A0052A5 + 52004AA54A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF004AA54A0039A5 + 390021A5210018A5180010841000FFFFFF000000000000000000000000008400 + 840084008400840084000084840000FFFF008400840084008400840084000000 + 0000C6C6C600C6C6C60084848400000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C600C6C6C600840000008400 + 000084848400C6C6C600C6C6C600C6C6C600FFFFFF001884E700188CFF00188C + F700188CF700188CF700188CF700FFFFFF0084C6FF00188CF7001884EF00187B + DE001873CE001873CE001863AD00FFFFFF00FFFFFF00429C420052A552004AA5 + 4A00A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0042A5420031A5 + 3100219C2100219C210018841800FFFFFF000000000084008400840084008400 + 8400840084008400840084008400008484008400840084008400840084008400 + 840000000000C6C6C60000000000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C6008400 + 000084000000C6C6C600C6C6C600C6C6C600FFFFFF001884EF00188CFF00188C + FF00188CF700188CF70084C6FF00FFFFFF00FFFFFF0084C6FF001884E7001873 + D6001873CE001873CE001863AD00FFFFFF00FFFFFF0042A5420052A5520052A5 + 5200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C3900299C + 2900219C2100219C2100217B2100FFFFFF00C0C0C00084008400FFFFFF008400 + 84008400840084008400840084008400840000FFFF0000FFFF00840084008400 + 8400840084000000000000000000C0C0C0000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600840000008400000084848400C6C6C600FFFFFF00188CFF002194FF002194 + FF00188CFF0084C6FF00FFFFFF001884F7001884EF00FFFFFF0084C6FF001873 + CE001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552005AAD5A005AAD + 5A0052A55200A5D6A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00399C39003194 + 31002994290029942900217B2100FFFFFF00C0C0C000C0C0C00084008400FFFF + FF0084008400840084008400840084008400840084000084840000FFFF0000FF + FF00840084008400840000000000C0C0C0000000000000000000000000000000 + 000000000000C6C6C600C6C6C600848484008400000084000000C6C6C600C6C6 + C60084848400840000008400000084848400FFFFFF00188CFF0039A5FF0039A5 + FF0084C6FF00FFFFFF00188CFF00188CFF001884EF001884E700FFFFFF0084C6 + FF001873CE001873CE001863AD00FFFFFF00FFFFFF0052A552006BB56B006BB5 + 6B005AAD5A0052AD5200A5D6A500FFFFFF00FFFFFF00FFFFFF00399C39003194 + 31002994290029942900217B2100FFFFFF00C0C0C000C0C0C000C0C0C0008400 + 8400FFFFFF00840084008400840084008400008484008400840000FFFF0000FF + FF00840084008400840084008400000000000000000000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600840000008400000084848400C6C6C600C6C6 + C600C6C6C600840000008400000084000000FFFFFF002194FF0052ADFF004AAD + FF00FFFFFF002194FF002194FF001894FF00188CF7001884EF001884E700FFFF + FF001873CE001873CE001863AD00FFFFFF00FFFFFF005AAD5A007BBD7B0073BD + 730063AD63005AAD5A005AAD5A00A5D6A500FFFFFF00FFFFFF00429C4200399C + 39003194310031943100217B2100FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 + C00084008400FFFFFF00840084008400840000FFFF0000FFFF0000FFFF008400 + 840084008400840084000000000000000000000000000000000000000000C6C6 + C600C6C6C600C6C6C600C6C6C600840000008400000084848400C6C6C600C6C6 + C600C6C6C600840000008400000084000000FFFFFF0039A5FF006BBDFF0052AD + FF0039A5FF00319CFF00299CFF00299CFF002194FF00188CFF001884F7001884 + EF00187BDE001873CE001863AD00FFFFFF00FFFFFF006BB56B008CC68C007BBD + 7B006BB56B0063B5630063AD630063AD6300A5D6A500FFFFFF004AA54A0042A5 + 4200399C390031943100217B2100FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C00084008400FFFFFF00840084008400840084008400840084008400 + 84000000000000000000C0C0C000C0C0C0000000000000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 + C60084848400840000008400000084848400FFFFFF004AADFF0084C6FF006BBD + FF0052ADFF004AADFF0039A5FF00319CFF00299CFF002194FF001894FF00188C + F7001884EF001873CE00185A9C00FFFFFF00FFFFFF0073BD73009CCE9C008CC6 + 8C007BBD7B0073BD73006BB56B0063B5630063AD63005AAD5A0052AD52004AA5 + 4A0042A542003194310018731800FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C00084008400FFFFFF008400840084008400000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C00000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 + 0000840000008400000084848400C6C6C600FFFFFF00ADDEFF004AADFF00319C + FF002194FF00188CFF00188CFF00188CF700188CF7001884EF001884E700187B + DE001873CE00186BBD0063B5FF00FFFFFF00FFFFFF00B5DEB50073BD730063B5 + 63005AAD5A0052A5520052A552004AA54A004AA54A0042A54200429C4200399C + 390031943100218C21008CBD8C00FFFFFF00C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000840084008400840000000000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 + C600848484008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6 + C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF + FF00000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000C6C6C60000000000C6C6C600000000000000000000000000C6C6 + C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF + FF00000000000000000000000000C6C6C600C6C6C600C6C6C60000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6 + C600848484008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600C6C6C6008400 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 + C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C600848484008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000840000008400 + 00008400000084000000C6C6C600C6C6C6000000000000000000FFFFFF000000 + 00000000000000000000000000000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60084848400C6C6C600C6C6C60084848400C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C6000000000000000000C6C6C600FFFFFF00FFFFFF000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 00008400000084000000C6C6C600C6C6C6000000000000000000FFFFFF000000 + 00000000000000000000C6C6C6000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6 + C600848484008484840084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600FFFFFF00FFFFFF00FFFFFF0000000000FFFF + FF0000000000FFFFFF00FFFFFF00FFFFFF00C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 00008400000084000000C6C6C600C6C6C6000000000000000000FFFFFF000000 + 00000000000000000000C6C6C6000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C60000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF000000 + 0000FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 + C6008400000084000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400008484000000 + 0000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFF + FF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600848484008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF + FF00000000000000000000000000C6C6C60000000000FFFFFF00000000000000 + 000000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 + C60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000 + 0000FFFFFF000000000000848400008484000000000000000000FFFFFF000000 + 0000FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C6008484 + 840084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000C6C6C6000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 + C60000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 + 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 + 8400FFFFFF000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000FFFFFF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C6000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6 + C60000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60084848400000000008484 + 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 000000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000084 + 8400FFFFFF0000848400FFFFFF0000848400FFFFFF0000848400FFFFFF000084 + 8400FFFFFF00C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 + 000084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C600C6C6C6008400000084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000008400000084000000840000008400 + 0000840000008400000084000000C6C6C600C6C6C60000000000000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF008400000084000000840000008400 + 00008400000084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C60084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000FFFFFF000000000000000000000000000000 + 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600840000008400000084000000C6C6C60084000000C6C6C600C6C6C6008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF00840000008400000084000000FFFF + FF0084000000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6008484 + 840084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000C6C6C600840000008400000084000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000 + 000000000000FFFFFF0084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0084000000FFFFFF0084000000C6C6C600C6C6C600C6C6C600840000008400 + 0000840000008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600840000000000000084000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000C6C6C6000000000084848400008484008484 + 8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 00008400000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400 + 0000840000008400000084000000C6C6C6000000000000848400848484000084 + 8400848484000084840084000000840000008400000084000000840000008400 + 00008400000000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 + 0000FFFFFF0084000000C6C6C600C6C6C6000000000084848400008484008484 + 8400008484008484840000848400848484000084840084848400008484008484 + 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600840000008400 + 0000C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400 + 000084000000C6C6C600C6C6C600C6C6C6000000000000848400848484000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C60084000000C6C6 + C600C6C6C600C6C6C6008400000084000000C6C6C600C6C6C600C6C6C600C6C6 + C6008400000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000C6C6C6000000000000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00000000000000 + 0000FFFFFF000000000084000000840000008400000084000000840000008400 + 0000C6C6C600C6C6C600C6C6C600C6C6C6000000000084848400848484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000008484 + 84000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6008400000084000000840000008400 + 000084848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000000FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000848400848484000084 + 84000000000000FFFF00000000000000000000FFFF0000000000848484000084 + 84008484840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C6000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000084 + 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600000000000084840000000000C6C6C600C6C6C60000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C6000000000000000000008484000084 + 8400008484000084840000848400008484000084840000848400008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000084 + 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600000000000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00000000000084 + 8400008484000084840000848400008484000084840000848400008484000084 + 840000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000084 + 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600000000000084840000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C60000FFFF0000FFFF0000FFFF00C6C6C600C6C6 + C600000000000000000000000000C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF0000FFFF000000 + 0000008484000084840000848400008484000084840000848400008484000084 + 84000084840000000000C6C6C600C6C6C600C6C6C60000000000008484000084 + 8400000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600848484008484840084848400C6C6C600C6C6 + C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00FFFFFF0000FF + FF00000000000084840000848400008484000084840000848400008484000084 + 8400008484000084840000000000C6C6C600C6C6C60000000000008484000084 + 8400008484000084840000848400008484000084840000848400008484000084 + 8400008484000084840000000000C6C6C6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C6C6C600C6C6C60000000000C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF0000FFFF00FFFF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C6C6C60000000000008484000084 + 8400000000000000000000000000000000000000000000000000000000000000 + 0000008484000084840000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00FFFFFF0000FF + FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000C6C6C600C6C6C60000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C6C6 + C60000000000C6C6C6000000000000000000C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C60000000000FFFFFF0000FFFF00FFFF + FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C6000000000000FFFF00FFFFFF0000FF + FF0000000000000000000000000000000000000000000000000000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 000000000000C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000000000000000000C6C6C600C6C6C60000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6C6000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000C6C6C600C6C6C60000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000FFFFFF000000000000000000000000000000000000000000FFFF + FF0000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6 + C60000000000C6C6C60000000000C6C6C600C6C6C60000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000000C6C6C600C6C6C600C6C6C600C6C6C600000000000000 + 0000000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C600C6C6C600C6C6C600424D3E000000000000003E000000 + 2800000040000000F00000000100010000000000800700000000000000000000 + 000000000000000000000000FFFFFF00F81FFEFFFFFF0000E007FDFFC07F0000 + C003FCFF001F00008001D81F001F00008001E01F001F00000000E01F00000000 + 0000C00300000000000080038000000000004003C00000000000C003C0000000 + 00000003C04100008001C043C04100008001E843C0410000C003E843E0C10000 + E007F843FFC10000F81FF843FFFF0000FEFFFEFFFEFFFFFFFDFFFDFFFDFF003F + FCFFFCFFFCFF003FD81FD81FD81F003FE01FE01FE01F0000E01FE01FE01F0000 + C00BC00BC00B000080078007800700004013401F400F0000C03CC019C00FC000 + 003D0019000FC000C0DDC019C00FC000ECFBEC49E01FC000EB3BE841C21AC000 + FFC7FFDFD61AC000FFF7FC00D7FAFFFFFEFF0000FEFFFEFFFDFF0000FDFFFDE0 + FCFF0000FCFFFCE0D81F0000D81FD800E01F0000E01FE01DE01F0000E01FE00D + C00B0000C00BC0018007000080008007400700004000401FC0038007C000C020 + 0001401F00000000C081C03FC000C0C0ED83003FEC00EDFDEB87C0DFEA00EA0D + FF8FEDFFFE00FE01FF9FEBFFFE00FE0FFEFFFEFFFEFFFEFFFDFFFDFFFDFFFDFF + FCFFFCFFFCFFFCFFD81FD81FD81FD81FE01FE01FE01FE01FE01FE01FE01FE01F + C00BC00BC00BC00B80078000800780074007400040074007C003C000C023C023 + 0001000000110031C081C000C011C0D1ED83EC00EC23EDE3EB87EA00E847EBC7 + FF8FFE00F88FFF8FFF9FFE00F99FFF9FFDFFFE07FE03FEFFE07FFC03FE03FDFF + E00FF801FE03FCFFC003F000FE03D81FC003F000FE03E01F8003F000FE03E01F + 8003F000FC01C00B80010000000080030001000000004001000100000000C000 + 8001000000000000C00300000000C000C00300000000EC00E00300000000EA00 + FC3700000000FF01FF3F00000000FF83F81F0000FE07FFFFE0070000FC03FF7F + C0030000F801FEFF80010000F000FE7F80010000F000EC0F00000F80F000F00F + 00000F80F000F00F0000FE3F0000E0050000E23F0000C0030000E2300000A00F + 000003F00000E01F80011F100000801F80011F1F0000E06FC003F1110000F6FF + E007F1F10000F5FFF81FF1F10000FFFFFE00FC3FFFFFFCFFFE00C003FC7FF8CF + FE008001F81FF08FFE008001F007F80FE0008001E001F08FC00083C1C000F00F + 800007E08000E00F000107E00000F00F000107E00000E00F000107E00001C007 + 000183C10003C003000180010007C00300038001800FC003801F8001E01FE003 + C03FC003F83FF007E07FFC3FFE7FFF0FFE00FE00FFFFFFFFFE00FE00C007C007 + F8008000C007C007F800000000070007F800000000070007F800000000070007 + 0000000000070007000000000007000700010001000700070003000300070007 + 000100030007000700000003000F000F001F0003001F001F001F0003003F003F + 001F0003007F007F8FFF000300FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC007 + C007FFFFFFFFC007C007F73FFFFF0007C007F63FFFFF0007C007F47FF9100007 + C007F0FFDD240007C007F1FFDC600007C007F1FF05040007C00754F5DD000007 + C0075675DDFF0007C0075735F9FF000FC00F5FF5FFFF001FC01FFFFFFFFF003F + C03FFFFFFFFF007FFFFFFFFFFFFF00FFFFFFFFFFFFFFFC00C007FFF9FFFFFC00 + 8003E7FF07C1FC000001C3F307C104000001C3E707C104000001E1C701010400 + 0000F08F000100000000F81F000100008000FC3F00010000C000F81F80030001 + E001F09FC1078003E007C1C7C107C007F00783E3E38FC107F0038FF1E38FE38F + F803FFFFE38FE38FFFFFFFFFFFFFE38F8001FC00FFFFFFFF0000FC00FFFF000C + 00008000001F000800000000001F000100000000001D000300000000001D0003 + 00000000001E000300000000001E000300000000001E000300000001001D0007 + 000000030003000F00000003001F000F00000003003F000F00000003007F001F + 0000000300FF003F80010003FFFF007FFFFFFFFF80018001FE3FF9FF00000000 + F81FF9FF00000000E00FF3C700000000800773C700000000000327FF00000000 + 000107C700000000000000C700000000000101E700000000800103F100000000 + C001063000000000E0000E3800000000F0001E3800000000F8033F3000000000 + FC0F7F8100000000FE3FFFFF80018001FFFFFFFFFFFFFFFFFFFFFFFFFF71FFFF + FFFF07C1FF36FF81FFFF07C1F516FF00FFFF07C1DF31FE00E7FF0101FF76FE00 + CF830001BFF6FC00DFC30001FFD1F800DFE30001DFFF8000DFD38003FFBF0001 + CF3BC10777FF0001E0FFC10777BF0001FFFFE38F07FF0001FFFFE38FAFD70001 + FFFFE38F8FE70001FFFFFFFFDFC78003FFFFFFFFFFFFFFFFF3FFFFFFFC00FFFF + ED9FFC018000FFFFED6FFC010000FFFFED6FFC010000FFFFF16F00010000FFE7 + FD1F00010001C1F3FC7F00010003C3FBFEFF00010003C7FBFC7F00030003CBFB + FD7F00070003DCF3F93F000F0003FF07FBBF00FF0003FFFFFBBF01FF8007FFFF + FBBF03FFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC001C007 + C007001F80018003C007000F80010001C007000780010001C007000380010001 + C007000180010000C007000080010000C007001F80018000C007001F8001C000 + C007001F8001E001C0078FF18001E007C00FFFF98001F007C01FFF758001F003 + C03FFF8F8001F803FFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ApplicationEvents1: TApplicationEvents + OnHelp = ApplicationEvents1Help + OnMessage = ApplicationEvents1Message + Left = 484 + Top = 176 + end + object dockServer: TJvDockServer + LeftSplitterStyle.Cursor = crHSplit + LeftSplitterStyle.ParentColor = False + RightSplitterStyle.Cursor = crHSplit + RightSplitterStyle.ParentColor = False + TopSplitterStyle.Cursor = crVSplit + TopSplitterStyle.ParentColor = False + BottomSplitterStyle.Cursor = crVSplit + BottomSplitterStyle.ParentColor = False + DockStyle = JvDockVSNetStyle1 + Left = 616 + Top = 304 + end + object JvDockVSNetStyle1: TJvDockVSNetStyle + AlwaysShowGrabber = False + TabServerOption.ActiveFont.Charset = DEFAULT_CHARSET + TabServerOption.ActiveFont.Color = clWindowText + TabServerOption.ActiveFont.Height = -11 + TabServerOption.ActiveFont.Name = 'Tahoma' + TabServerOption.ActiveFont.Style = [] + TabServerOption.InactiveFont.Charset = DEFAULT_CHARSET + TabServerOption.InactiveFont.Color = 5395794 + TabServerOption.InactiveFont.Height = -11 + TabServerOption.InactiveFont.Name = 'Tahoma' + TabServerOption.InactiveFont.Style = [] + TabServerOption.ShowCloseButtonOnTabs = False + Left = 528 + Top = 312 + end + object mnuReloadAsFormat: TPopupMenu + Left = 296 + Top = 80 + object ANSI1: TMenuItem + Caption = 'ANSI' + end + object UTF81: TMenuItem + Caption = 'UTF-8' + end + object UTF161: TMenuItem + Caption = 'UTF-16' + end + end + object MainMenu1: TMainMenu + Images = lstImages + Left = 448 + Top = 376 + object File1: TMenuItem + Caption = '&File' + OnClick = mnuFileClick + object New1: TMenuItem + Action = modActionsMain.actFileNew + end + object Open1: TMenuItem + Action = modActionsMain.actFileOpen + end + object Save1: TMenuItem + Action = modActionsMain.actFileSave + end + object SaveAs1: TMenuItem + Action = modActionsMain.actFileSaveAs + end + object Savecopyas1: TMenuItem + Action = modActionsMain.actFileSaveCopyAs + end + object Revert1: TMenuItem + Action = modActionsMain.actFileRevert + end + object N5: TMenuItem + Caption = '-' + end + object Close1: TMenuItem + Action = modActionsMain.actWindowClose + end + object N6: TMenuItem + Caption = '-' + end + object mnuFileRecent: TMenuItem + Caption = 'Recent &Files' + object TMenuItem + end + end + object N8: TMenuItem + Caption = '-' + end + object Exit1: TMenuItem + Action = modActionsMain.actFileExit + end + end + object Edit1: TMenuItem + Caption = '&Edit' + object Undo1: TMenuItem + Action = modActionsMain.actEditUndo + end + object Redo1: TMenuItem + Action = modActionsMain.actEditRedo + end + object N10: TMenuItem + Caption = '-' + end + object Cut1: TMenuItem + Action = modActionsMain.actEditCut + end + object Copy1: TMenuItem + Action = modActionsMain.actEditCopy + end + object Paste1: TMenuItem + Action = modActionsMain.actEditPaste + end + object N18: TMenuItem + Caption = '-' + end + object Delete1: TMenuItem + Action = modActionsMain.actEditDelete + end + object N19: TMenuItem + Caption = '-' + end + object SelectAll1: TMenuItem + Action = modActionsMain.actEditSelectAll + end + object N20: TMenuItem + Caption = '-' + end + object Find1: TMenuItem + Action = modActionsMain.actSearchFind + end + object FindNext1: TMenuItem + Action = modActionsMain.actSearchFindNext + end + object Replace1: TMenuItem + Action = modActionsMain.actSearchReplace + end + object N21: TMenuItem + Caption = '-' + end + object ReformatXMLDocument1: TMenuItem + Action = modActionsTextEditor.actTextEditor_ReformatXML + end + object N1: TMenuItem + Caption = '-' + end + object Reloadwithencoding1: TMenuItem + Caption = 'Reload with &encoding' + object ReloadasANSI1: TMenuItem + Action = modActionsMain.actToolsReloadANSI + end + object ReloadasUTF81: TMenuItem + Action = modActionsMain.actToolsReloadUTF8 + end + object ReloadasUTF161: TMenuItem + Action = modActionsMain.actToolsReloadUTF16 + end + end + end + object View1: TMenuItem + Caption = '&View' + object Project2: TMenuItem + Action = modActionsMain.actViewProject + end + object N22: TMenuItem + Caption = '-' + end + object CharacterIdentifier1: TMenuItem + Action = modActionsMain.actViewCharacterIdentifier + end + object CharacterMap1: TMenuItem + Action = modActionsMain.actViewCharacterMap + end + object Messages1: TMenuItem + Action = modActionsMain.actViewMessages + end + object ContextHelp1: TMenuItem + Action = modActionsMain.actViewHelp + end + object oolbar1: TMenuItem + Action = modActionsMain.actViewToolbar + end + object StatusBar1: TMenuItem + Action = modActionsMain.actViewStatusBar + end + object N23: TMenuItem + Caption = '-' + end + object ExpandEditor1: TMenuItem + Action = modActionsMain.actViewExpandEditor + end + object N24: TMenuItem + Caption = '-' + end + object CharacterFont1: TMenuItem + Action = modActionsMain.actViewCharFont + end + object CodeFont1: TMenuItem + Action = modActionsMain.actViewCodeFont + end + end + object Project1: TMenuItem + Caption = '&Project' + OnClick = mnuProjectClick + object NewProject1: TMenuItem + Action = modActionsMain.actProjectNew + end + object OpenProject1: TMenuItem + Action = modActionsMain.actProjectOpen + end + object CloseProject1: TMenuItem + Action = modActionsMain.actProjectClose + end + object N25: TMenuItem + Caption = '-' + end + object mnuProjectsRecent: TMenuItem + Caption = '&Recent Projects' + end + object N26: TMenuItem + Caption = '-' + end + object mnuProjectAddToProject: TMenuItem + Caption = 'A&dd to project' + object CurrentEditorFile1: TMenuItem + Action = modActionsMain.actProjectAddCurrentEditorFile + end + object OtherFiles1: TMenuItem + Action = modActionsMain.actProjectAddFiles + end + end + object N27: TMenuItem + Caption = '-' + end + object ProjectSettings1: TMenuItem + Action = modActionsMain.actProjectSettings + end + end + object mnuModel: TMenuItem + Caption = '&Model' + object CompileModel1: TMenuItem + Action = modActionsModelEditor.actModelCompile + end + object N2: TMenuItem + Caption = '-' + end + object estLexicalModel1: TMenuItem + Action = modActionsModelEditor.actModelTest + end + end + object mnuKeyboard: TMenuItem + Caption = '&Keyboard' + object CompileKeyboard1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardCompile + end + object N28: TMenuItem + Caption = '-' + end + object IncludeDebugInformation1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardIncludeDebugInformation + end + object estKeyboard1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardTest + end + object N29: TMenuItem + Caption = '-' + end + object Install1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardInstall + end + object Uninstall1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardUninstall + end + object N31: TMenuItem + Caption = '-' + end + object Fonts1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardFonts + end + object FontHelper1: TMenuItem + Action = modActionsKeyboardEditor.actKeyboardFontHelper + end + end + object mnuDebug: TMenuItem + Caption = '&Debug' + object SetBreakpoint1: TMenuItem + Action = modActionsDebugger.actDebugSetClearBreakpoint + end + object N32: TMenuItem + Caption = '-' + end + object StartDebugging1: TMenuItem + Action = modActionsDebugger.actDebugStartDebugger + end + object StopDebugger1: TMenuItem + Action = modActionsDebugger.actDebugStopDebugger + end + object N33: TMenuItem + Caption = '-' + end + object ANSITestMode1: TMenuItem + Action = modActionsDebugger.actDebugANSITestMode + end + object N34: TMenuItem + Caption = '-' + end + object SingleStepMode1: TMenuItem + Action = modActionsDebugger.actDebugSingleStepMode + end + object N35: TMenuItem + Caption = '-' + end + object StepForward1: TMenuItem + Action = modActionsDebugger.actDebugStepForward + end + object Run1: TMenuItem + Action = modActionsDebugger.actDebugRun + end + object Pause1: TMenuItem + Action = modActionsDebugger.actDebugPause + end + object N36: TMenuItem + Caption = '-' + end + object View2: TMenuItem + Caption = '&View' + object State1: TMenuItem + Action = modActionsDebugger.actDebugViewState + end + object Elements1: TMenuItem + Action = modActionsDebugger.actDebugViewElements + end + object CallStack1: TMenuItem + Action = modActionsDebugger.actDebugViewCallStack + end + object Deadkeys1: TMenuItem + Action = modActionsDebugger.actDebugViewDeadkeys + end + object RegressionTesting1: TMenuItem + Action = modActionsDebugger.actDebugViewRegressionTesting + end + object N38: TMenuItem + Caption = '-' + end + object Font1: TMenuItem + Action = modActionsDebugger.actDebugViewFont + end + object UseEditorCharacterFont1: TMenuItem + Action = modActionsDebugger.actDebugViewDefaultFont + end + end + object N37: TMenuItem + Caption = '-' + end + object SelectSystemKeyboard1: TMenuItem + Action = modActionsDebugger.actDebugSelectSystemKeyboard + end + end + object mnuTools: TMenuItem + Caption = '&Tools' + OnClick = mnuToolsClick + object VirtualKeyIdentifier1: TMenuItem + Action = modActionsMain.actToolsVirtualKeyIdentifier + end + object N39: TMenuItem + Caption = '-' + end + object mnuToolsWebDebugger: TMenuItem + Caption = '&Server' + object mnuToolsWebDebuggerOpenInBrowser: TMenuItem + Action = modActionsMain.actToolsWebOpenPublicUrl + end + object mnuToolsWebDebuggerCopyToClipboard: TMenuItem + Action = modActionsMain.actToolsWebCopyPublicUrl + end + object N11: TMenuItem + Caption = '-' + end + object Startserver1: TMenuItem + Action = modActionsMain.actToolsWebStartServer + end + object Stopserver1: TMenuItem + Action = modActionsMain.actToolsWebStopServer + end + object N7: TMenuItem + Caption = '-' + end + object mnuToolsWebDebuggerConfigure: TMenuItem + Action = modActionsMain.actToolsWebConfigure + end + end + object N4: TMenuItem + Caption = '-' + end + object Options1: TMenuItem + Action = modActionsMain.actToolsOptions + end + object mnuToolsDebugTests: TMenuItem + Caption = 'Debug Tests' + object mnuToolsDebugTestsShowDebuggerEventsPanel: TMenuItem + Caption = 'Show Debugger Events panel' + OnClick = mnuToolsDebugTestsShowDebuggerEventsPanelClick + end + object N3: TMenuItem + Caption = '-' + end + object mnuToolsDebugTestsExceptionTest: TMenuItem + Caption = '&Exception Test' + OnClick = mnuToolsDebugTestsExceptionTestClick + end + end + end + object mnuWindow: TMenuItem + Caption = '&Window' + OnClick = mnuWindowClick + object Newwindow1: TMenuItem + Action = modActionsMain.actWindowNew + end + object N12: TMenuItem + Caption = '-' + end + end + object Help1: TMenuItem + Caption = '&Help' + object Contents1: TMenuItem + Action = modActionsMain.actHelpContents + end + object N40: TMenuItem + Caption = '-' + end + object CheckforUpdates1: TMenuItem + Action = modActionsMain.actHelpCheckForUpdates + end + object N41: TMenuItem + Caption = '-' + end + object About1: TMenuItem + Action = modActionsMain.actHelpAbout + end + end + end +end diff --git a/developer/src/tike/main/UfrmMain.pas b/developer/src/tike/main/UfrmMain.pas index 20990fb02f..22d6803f97 100644 --- a/developer/src/tike/main/UfrmMain.pas +++ b/developer/src/tike/main/UfrmMain.pas @@ -171,8 +171,6 @@ type ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; - ToolButton5: TToolButton; - ToolButton6: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; ToolButton9: TToolButton; @@ -202,12 +200,8 @@ type N5: TMenuItem; Close1: TMenuItem; N6: TMenuItem; - PageSetup1: TMenuItem; - PrintPreview1: TMenuItem; - Print1: TMenuItem; N8: TMenuItem; Exit1: TMenuItem; - N9: TMenuItem; mnuFileRecent: TMenuItem; Undo1: TMenuItem; Redo1: TMenuItem; From da8d7eff4fbff69424a10deb51ea21b505763d54 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 13:34:35 +0200 Subject: [PATCH 30/84] fix(developer): open context help when F1 pressed in Project window Fixes: #11052 Test-bot: skip --- .../project/Keyman.Developer.UI.Project.UfrmProject.pas | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas b/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas index aad4e9e57b..f609001c21 100644 --- a/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas +++ b/developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas @@ -76,6 +76,7 @@ type procedure cefBeforeBrowse(Sender: TObject; const Url: string; isPopup, wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; isPopup: Boolean; out Handled: Boolean); procedure cefCommand(Sender: TObject; const command: string; params: TStringList); + procedure cefHelpTopic(Sender: TObject); procedure ProjectRefresh(Sender: TObject); procedure ProjectRefreshCaption(Sender: TObject); @@ -189,6 +190,7 @@ begin cef.OnBeforeBrowseSync := cefBeforeBrowseSync; cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; + cef.OnHelpTopic := cefHelpTopic; RefreshHTML; end; @@ -288,6 +290,11 @@ begin WebCommand(LowerCase(command), params); end; +procedure TfrmProject.cefHelpTopic(Sender: TObject); +begin + frmKeymanDeveloper.HelpTopic(Self); +end; + procedure TfrmProject.CompileAll; var i: Integer; From d1558946dd462189934231ac42b9289cf08132f5 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 14:38:29 +0200 Subject: [PATCH 31/84] fix(developer): make tool windows non-topmost when TIKE is deactivated When TIKE deactivates, any undocked tool windows retain their WS_EX_TOPMOST exstyle, which means they stay on top of other applications. To be polite, remove the topmost style when Keyman Developer is deactivated - and set it on again when Keyman Developer is reactivated, so that the windows continue to behave as expected otherwise. Fixes: #10562 Test-bot: skip --- developer/src/tike/main/UfrmMain.pas | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/developer/src/tike/main/UfrmMain.pas b/developer/src/tike/main/UfrmMain.pas index 20990fb02f..abaf04dd22 100644 --- a/developer/src/tike/main/UfrmMain.pas +++ b/developer/src/tike/main/UfrmMain.pas @@ -406,6 +406,8 @@ type procedure RefreshProjectMRU; procedure mnuWindowSelectClick(Sender: TObject); + procedure MakeToolWindowsTopMost(TopMost: Boolean); + function ActivateHook(var Message: TMessage): Boolean; protected procedure WndProc(var Message: TMessage); override; @@ -546,12 +548,26 @@ begin end; +function TfrmKeymanDeveloper.ActivateHook(var Message: TMessage): Boolean; +begin + // We process WM_ACTIVATEAPP here because App.OnActivate is posted after the + // activation has happened, whereas here we can capture it in the activation/ + // deactivation process. + if Message.Msg = WM_ACTIVATEAPP then + begin + MakeToolWindowsTopMost(Message.wParam <> 0); + end; + Result := False; +end; + procedure TfrmKeymanDeveloper.FormCreate(Sender: TObject); var newProject: TProjectUI; begin inherited; + Application.HookMainWindow(ActivateHook); + FFilesToOpen := TStringList.Create; try @@ -755,6 +771,7 @@ begin FreeAndNil(FCharMapSettings); Application.OnActivate := nil; + Application.UnhookMainWindow(ActivateHook); FreeGlobalProjectUI; FreeAndNil(FChildWindows); @@ -937,6 +954,27 @@ begin end; end; +procedure TfrmKeymanDeveloper.MakeToolWindowsTopMost(TopMost: Boolean); +var + hwTarget: THandle; + + procedure MakeTopmost(Form: TForm); + begin + // If exists and is not docked + if Assigned(Form) and ((GetWindowLong(Form.Handle, GWL_STYLE) and WS_CHILD) = 0) then + SetWindowPos(Form.Handle, hwTarget, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOREDRAW or SWP_NOACTIVATE or SWP_NOSENDCHANGING) + end; +begin + if TopMost + then hwTarget := HWND_TOPMOST + else hwTarget := Application.Handle; + + MakeTopmost(frmMessages); + MakeTopmost(frmCharacterMapDock); + MakeTopmost(frmCharacterIdentifier); + MakeTopmost(frmHelp); +end; + procedure TfrmKeymanDeveloper.AppOnActivate(Sender: TObject); var i: Integer; From 0f3e84bcc727481fda9fab30d8584a264c9e8f9f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 31 Aug 2026 14:56:12 +0200 Subject: [PATCH 32/84] fix(windows): call 'Show Console' twice to make the console actually show on first use The underlying issue may be in the node-hide-console-window component. This fix is adequate in my view, for a low-use code path. Fixes: #9694 Test-bot: skip --- developer/src/server/src/win32-tray.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/developer/src/server/src/win32-tray.ts b/developer/src/server/src/win32-tray.ts index a71771f3de..a248f9b669 100644 --- a/developer/src/server/src/win32-tray.ts +++ b/developer/src/server/src/win32-tray.ts @@ -71,6 +71,11 @@ export class Win32Tray { open(ngrokAddress); break; case 'item-id-show-console': + // #9694 - the first time, this has to be called twice for the console + // window to appear. This could probably be fixed in the source + // node-hide-console-window component, but this works well enough and + // has little in the way of side-effects. + WindowsConsole.showConsole(); WindowsConsole.showConsole(); break; case 'item-id-hide-console': From 7a0fa55a75c49a2c6265a3a6cc48bc18ce7f2d0b Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Mon, 31 Aug 2026 19:02:05 +0200 Subject: [PATCH 33/84] chore(web): address code review comments Co-authored-by: Marc Durdin --- resources/build/ci/sentry-control.inc.sh | 30 ++++++++++++++--------- resources/teamcity/ios/ios-actions.inc.sh | 7 ++---- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/resources/build/ci/sentry-control.inc.sh b/resources/build/ci/sentry-control.inc.sh index a01a0f730d..aae674f8c9 100644 --- a/resources/build/ci/sentry-control.inc.sh +++ b/resources/build/ci/sentry-control.inc.sh @@ -12,7 +12,7 @@ function isSentryConfigured() { if [ -z "${SENTRY_AUTH_TOKEN-}" ] || [ -z "${SENTRY_ORG-}" ] || [ -z "${SENTRY_URL-}" ]; then - echo "WARNING: Sentry environment variables SENTRY_AUTH_TOKEN, SENTRY_ORG and SENTRY_URL must be configured." + builder_warn "WARNING: Sentry environment variables SENTRY_AUTH_TOKEN, SENTRY_ORG and SENTRY_URL must be configured." return 1 fi return 0 @@ -20,7 +20,7 @@ function isSentryConfigured() { function isSentryCliAvailable() { which sentry-cli > /dev/null && return 0 - echo "WARNING: sentry-cli could not be found. Skipping all sentry integration." + builder_warn "WARNING: sentry-cli could not be found. Skipping all sentry integration." return 1 } @@ -28,29 +28,35 @@ function makeSentryRelease() { if isSentryConfigured; then if isSentryCliAvailable; then # This version tag matches the repository version tag release@x.y.z - echo "Making a Sentry release for tag $KEYMAN_VERSION_GIT_TAG" + builder_echo "Making a Sentry release for tag $KEYMAN_VERSION_GIT_TAG" sentry-cli releases new -p keyman-android -p keyman-developer -p keyman-ios -p keyman-linux -p keyman-mac -p keyman-web -p keyman-windows $KEYMAN_VERSION_GIT_TAG - echo "Setting commits for release tag $KEYMAN_VERSION_GIT_TAG" + builder_echo "Setting commits for release tag $KEYMAN_VERSION_GIT_TAG" sentry-cli releases set-commits --auto $KEYMAN_VERSION_GIT_TAG - echo "Finalizing release tag $KEYMAN_VERSION_GIT_TAG" + builder_echo "Finalizing release tag $KEYMAN_VERSION_GIT_TAG" sentry-cli releases finalize "$KEYMAN_VERSION_GIT_TAG" fi fi } +# +# Upload sourcemaps to Sentry +# +# Parameters: +# 1: Directory containing sourcemaps to upload +# function sentry_upload_web () { + local SOURCEMAP_DIR="$1" if ! isSentryConfigured; then - echo "Skipping Sentry upload: SENTRY_ORG and/or SENTRY_PROJECT are unset." + builder_warn "Skipping Sentry upload: SENTRY_ORG and/or SENTRY_PROJECT are unset." return fi - echo "Uploading $1 to Sentry..." + builder_echo "Uploading ${SOURCEMAP_DIR} to Sentry..." - # --strip-common-prefix does not take an argument, unlike --strip-prefix. It auto-detects - # the most common prefix instead. - sentry-cli releases files "${KEYMAN_VERSION_GIT_TAG}" upload-sourcemaps --strip-common-prefix "$1" \ - --rewrite --ext js --ext map --ext ts - echo "Upload successful." + sentry-cli releases files "${KEYMAN_VERSION_GIT_TAG}" upload-sourcemaps --strip-common-prefix \ + "${SOURCEMAP_DIR}" --rewrite --ext js --ext map --ext ts + + builder_echo "Upload successful." } diff --git a/resources/teamcity/ios/ios-actions.inc.sh b/resources/teamcity/ios/ios-actions.inc.sh index 765e3542ab..fb803aae89 100755 --- a/resources/teamcity/ios/ios-actions.inc.sh +++ b/resources/teamcity/ios/ios-actions.inc.sh @@ -3,21 +3,18 @@ ios_build() { builder_echo start "build" "Building KeymanEngine + Keyman for iOS" - # shellcheck disable=SC2154 - "${KEYMAN_ROOT}/ios/ci.sh" build + builder_launch /ios/ci.sh build builder_echo end "build" success "Finished building KeymanEngine + Keyman for iOS" } ios_capture_build_artifacts() { builder_echo start "prep-release" "Using prep-release script to capture build artifacts" - "${KEYMAN_ROOT}/ios/tools/prepRelease.sh" + builder_launch /ios/tools/prepRelease.sh builder_echo end "prep-release" success "Finished capturing build artifacts" } ios_publish_symbols() { builder_echo start "publish to Sentry" "Publishing source map to Sentry" - builder_launch /ios/build.sh "publish-symbols" - builder_echo end "publish to Sentry" success "Finished publishing source map to Sentry" } From 750ad89611b5d0b2629876184af9e7cf2293d7f0 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 1 Sep 2026 07:42:50 +0200 Subject: [PATCH 34/84] fix(developer): use KmcmpLibMessageParameters pattern for deprecation error message --- developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts b/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts index 13ff75c82c..88a2a9dbd1 100644 --- a/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts +++ b/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts @@ -826,9 +826,9 @@ export class KmnCompilerMessages { ); static WARN_DeprecatedStatement = SevWarn | 0x0BB; - static Warn_DeprecatedStatement = (o:{statement:string, version: string}) => m( + static Warn_DeprecatedStatement = (o: KmcmpLibMessageParameters) => m( this.WARN_DeprecatedStatement, - `The statement'${def(o.statement)}' has been deprecated in Keyman ${def(o.version)}`, + `The statement '${def(o.p?.[0])}' has been deprecated in Keyman ${def(o.p?.[1])}`, ); static FATAL_BufferOverflow = SevFatal | 0x0C0; From f438a519e16cdd9fae6507fee8e5e8ee06c91b0d Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 1 Sep 2026 10:14:11 +0200 Subject: [PATCH 35/84] fix(developer): add missing message parameters and cleanup kmc-kmn messages further * kmcmplib messages need to use a standard pattern for parameters, which cannot be named. Several of the messages had the wrong pattern * Tidy up the kmn-compiler-messages module and make it more consistent to reduce risk of this happening in the future * Add a unit test to further verify the structure of the module as far as possible Fixes: #16492 Test-bot: skip --- .../web/utils/src/compiler-interfaces.ts | 2 +- .../src/compiler/kmn-compiler-messages.ts | 543 ++++++++++-------- .../test/kmn-compiler-messages.tests.ts | 64 ++- 3 files changed, 382 insertions(+), 227 deletions(-) diff --git a/developer/src/common/web/utils/src/compiler-interfaces.ts b/developer/src/common/web/utils/src/compiler-interfaces.ts index d7081b815a..c79862842a 100644 --- a/developer/src/common/web/utils/src/compiler-interfaces.ts +++ b/developer/src/common/web/utils/src/compiler-interfaces.ts @@ -59,7 +59,7 @@ export enum CompilerErrorMask { Severity = 0x00F00000, // includes reserved bits, 16 possible severity levels Error = 0x000FFFFF, // error | namespace Namespace = 0x000FF000, // 256 possible namespaces - BaseError = 0x00000FFF, // error code, 2,048 possible error codes per namespace + BaseError = 0x00000FFF, // error code, 4,096 possible error codes per namespace Reserved = 0xFF000000, // do not use these error values at this time }; diff --git a/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts b/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts index 88a2a9dbd1..c90c80c4a6 100644 --- a/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts +++ b/developer/src/kmc-kmn/src/compiler/kmn-compiler-messages.ts @@ -1,6 +1,6 @@ import { KeyAddress } from "../kmw-compiler/compile-layout-file.js"; import { kmnfile } from "../kmw-compiler/compiler-globals.js"; -import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerEvent, CompilerMessageSpec as m, CompilerMessageObjectSpec as mx, CompilerMessageDef as def, CompilerMessageSpecWithException, KeymanUrls } from "@keymanapp/developer-utils"; +import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerEvent, CompilerMessageSpec, CompilerMessageObjectSpec, CompilerMessageDef as def, CompilerMessageSpecWithException, KeymanUrls } from "@keymanapp/developer-utils"; import { ObjectWithCompileContext } from "@keymanapp/common-types"; const Namespace = CompilerErrorNamespace.KmnCompiler; const SevInfo = CompilerErrorSeverity.Info | Namespace; @@ -9,18 +9,58 @@ const SevWarn = CompilerErrorSeverity.Warn | Namespace; const SevError = CompilerErrorSeverity.Error | Namespace; const SevFatal = CompilerErrorSeverity.Fatal | Namespace; +// Because we have several overlapping components generating messages here, we +// wrap the message generation functions with a source property, in order to +// verify that we use the correct pattern as far as possible + // For messages from the KeymanWeb compiler, we need to construct our messages // slightly differently. This could be refactored in the future, as it is not // obvious which messages should use which function. // Specifically, this could perhaps use CompilerFileCallbacks which provides a // default filename. // Then, there could be a CompilerMessageSpecWithLine -const mw = (code: number, message: string, o?: {filename?: string, line?: number}) : CompilerEvent => ({ - ...m(code, message), + +// messages from kmw compiler component (mw) + +export type KmcKmnMessageSource = 'kmw-compiler' | 'kmcmplib' | 'kmc-kmn'; + +export interface KmcKmnCompilerEvent extends CompilerEvent { + kmcKmnSource: KmcKmnMessageSource; +} + +const mw = (code: number, message: string, o?: {filename?: string, line?: number}) : KmcKmnCompilerEvent => ({ + ...CompilerMessageSpec(code, message), filename: o?.filename ?? kmnfile, line: o?.line, + kmcKmnSource: "kmw-compiler", }); +// messages from kmcmplib component (mc) + +const mc = (code: number, message: string, detail?: string) : KmcKmnCompilerEvent => ({ + ...CompilerMessageSpec(code, message, detail), + kmcKmnSource: "kmcmplib", +}); + +// messages from kmc-kmn component (m, mx) + +const m = (code: number, message: string, detail?: string) : KmcKmnCompilerEvent => ({ + ...CompilerMessageSpec(code, message, detail), + kmcKmnSource: "kmc-kmn", +}); + +const mx = (code: number, context: ObjectWithCompileContext, message: string, detail?: string) : KmcKmnCompilerEvent => ({ + ...CompilerMessageObjectSpec(code, context, message, detail), + kmcKmnSource: "kmc-kmn", +}); + +const kmcKmnCompilerMessageSpecWithException = (code: number, message: string, exceptionVar: any, detail?: string): KmcKmnCompilerEvent => ({ + ...CompilerMessageSpecWithException(code, message, exceptionVar, detail), + kmcKmnSource: "kmc-kmn", +}); + +// + export const enum KmnCompilerMessageRanges { RANGE_KMN_COMPILER_MIN = 0x001, // from kmn_compiler_errors.h RANGE_KMN_COMPILER_MAX = 0x7FF, // from kmn_compiler_errors.h @@ -41,7 +81,7 @@ export function keyAddress(address: KeyAddress): string { ''))); } -type KmcmpLibMessageParameters = {p:string[]}; +export type KmcmpLibMessageParameters = {p:string[]}; /** * @internal @@ -49,31 +89,33 @@ type KmcmpLibMessageParameters = {p:string[]}; * Error messages reported by the .kmn compiler. The error codes in this class * share an address space with messages from kmn_compiler_errors.h, which are * generated by kmcmplib, so codes below 0x900 are reserved for kmcmplib - * messages. + * messages. These messages should use `m()`, `mx()`, or + * `kmcKmnCompilerMessageSpecWithException()` calls. * - * The second half of this class defines the messages from kmcmplib. These - * messages should correspond to codes in kmn_compiler_errors.h, exclusive - * severity bits. Message text is defined by kmcmplib and passed through a - * callback at this time. The message text presented here is currently unused - * during the compilation process, but is used in the `kmc messages` tool and - * for documentation. + * The second half of this class defines messages from kmcmplib or the kmw + * compiler. For historical reasons, these messages are not in separate numeric + * ranges. These messages should correspond to codes in kmn_compiler_errors.h, + * exclusive severity bits. For messages generated by kmcmplib, any parameters + * must use the KmcmpLibMessageParameters type, not named parameters. kmcmplib + * messages must use `mc()` and kmw compiler messages must use `mw()` calls. * * `CERR_` messages that are actually fatals have been renamed to `FATAL_`. * * @example * - * ``` - * kmcmplib.CERR_BadCallParams = CERR_FATAL | 0x002 = 0x8002 - * ERROR_BadCallParams = SevError | 0x0002 = 0x300000 | 0x2000 | 0x002 = 0x302002 - * ``` + *``` + * kmcmplib.CERR_BadCallParams = CERR_FATAL | 0x002 = 0x8002 + * ERROR_BadCallParams = SevError | 0x0002 = 0x300000 | 0x2000 | 0x002 = 0x302002 + *``` */ export class KmnCompilerMessages { - // TODO: v18.0 we should consider moving error message generation in kmcmplib to - // kmc-kmn, which would avoid a number of legacy issues. Questions about - // parameterisation. + + // ------------------------------------------------------------------------------------------------ + // kmc-kmn compiler messages - 0x900-0xFFF (RANGE_CompilerMessage_Min..RANGE_CompilerMessage_Max) + // ------------------------------------------------------------------------------------------------ static FATAL_UnexpectedException = SevFatal | 0x900; - static Fatal_UnexpectedException = (o:{e: any}) => CompilerMessageSpecWithException( + static Fatal_UnexpectedException = (o:{e: any}) => kmcKmnCompilerMessageSpecWithException( this.FATAL_UnexpectedException, null, o.e ?? 'unknown error', @@ -83,7 +125,7 @@ export class KmnCompilerMessages { ); static FATAL_MissingWasmModule = SevFatal | 0x901; - static Fatal_MissingWasmModule = (o:{e?: any}) => CompilerMessageSpecWithException( + static Fatal_MissingWasmModule = (o:{e?: any}) => kmcKmnCompilerMessageSpecWithException( this.FATAL_MissingWasmModule, `Could not instantiate WASM compiler module or initialization failed`, o.e ?? 'unknown error', @@ -97,7 +139,7 @@ export class KmnCompilerMessages { // static Fatal_UnableToSetCompilerOptions = () => m(this.FATAL_UnableToSetCompilerOptions, null, `Unable to set compiler options`); static FATAL_CallbacksNotSet = SevFatal | 0x903; - static Fatal_CallbacksNotSet = () => CompilerMessageSpecWithException( + static Fatal_CallbacksNotSet = () => kmcKmnCompilerMessageSpecWithException( this.FATAL_CallbacksNotSet, null, `Callbacks were not set with init`, @@ -202,560 +244,607 @@ export class KmnCompilerMessages { to the file.` ); + // + // ------------------------------------------------------------------------------------------------ + // kmcmplib messages - 0x000-0x8FF + // + // All parameters must be KmcmpLibMessageParameters type + // ------------------------------------------------------------------------------------------------ + // + // static STATUS_None = 0x000; // This is not a real error // static STATUS_EndOfFile = 0x001; // This is not a real error static FATAL_BadCallParams = SevFatal | 0x002; - static Fatal_BadCallParams = () => m(this.FATAL_BadCallParams, `CompileKeyboardFile was called with bad parameters`); + static Fatal_BadCallParams = () => mc(this.FATAL_BadCallParams, `CompileKeyboardFile was called with bad parameters`); static FATAL_CannotAllocateMemory = SevFatal | 0x004; - static Fatal_CannotAllocateMemory = () => m(this.FATAL_CannotAllocateMemory, `Out of memory`); + static Fatal_CannotAllocateMemory = () => mc(this.FATAL_CannotAllocateMemory, `Out of memory`); static ERROR_InfileNotExist = SevError | 0x005; // #10678: reduced from fatal to error in 17.0 - static Error_InfileNotExist = () => m(this.ERROR_InfileNotExist, `Cannot find the input file`); + static Error_InfileNotExist = () => mc(this.ERROR_InfileNotExist, `Cannot find the input file`); // static ERROR_CannotCreateOutfile = SevError | 0x006; // #10678: reduced from fatal to error in 17.0, but unused - // static Error_CannotCreateOutfile = () => m(this.ERROR_CannotCreateOutfile, `Cannot open output file for writing`); unused + // static Error_CannotCreateOutfile = () => mc(this.ERROR_CannotCreateOutfile, `Cannot open output file for writing`); unused // static FATAL_UnableToWriteFully = SevFatal | 0x007; - // static Fatal_UnableToWriteFully = () => m(this.FATAL_UnableToWriteFully, `Unable to write the file completely`); + // static Fatal_UnableToWriteFully = () => mc(this.FATAL_UnableToWriteFully, `Unable to write the file completely`); static ERROR_CannotReadInfile = SevError | 0x008; // #10678: reduced from fatal to error in 17.0 - static Error_CannotReadInfile = () => m(this.ERROR_CannotReadInfile, `Cannot read the input file`); + static Error_CannotReadInfile = () => mc(this.ERROR_CannotReadInfile, `Cannot read the input file`); static FATAL_SomewhereIGotItWrong = SevFatal | 0x009; - static Fatal_SomewhereIGotItWrong = () => m(this.FATAL_SomewhereIGotItWrong, `Internal error: contact Keyman`); + static Fatal_SomewhereIGotItWrong = () => mc(this.FATAL_SomewhereIGotItWrong, `Internal error: contact Keyman`); static ERROR_InvalidToken = SevError | 0x00A; - static Error_InvalidToken = () => m(this.ERROR_InvalidToken, `Invalid token found`); + static Error_InvalidToken = () => mc(this.ERROR_InvalidToken, `Invalid token found`); - // kmcmplib: static Error_InvalidBegin = () => m(this.ERROR_InvalidBegin, `Invalid 'begin' statement`); static ERROR_InvalidBegin = SevError | 0x00B; - static Error_InvalidBegin = () => mw(this.ERROR_InvalidBegin, - `A "begin unicode" statement is required to compile a KeymanWeb keyboard`); + static Error_InvalidBegin = () => mc( + this.ERROR_InvalidBegin, + `A "begin unicode" statement is required to compile a KeymanWeb keyboard`, + ); static ERROR_InvalidName = SevError | 0x00C; - static Error_InvalidName = () => m(this.ERROR_InvalidName, `Invalid 'name' statement`); + static Error_InvalidName = () => mc(this.ERROR_InvalidName, `Invalid 'name' statement`); static ERROR_InvalidVersion = SevError | 0x00D; - static Error_InvalidVersion = () => m(this.ERROR_InvalidVersion, `Invalid 'version' statement`); + static Error_InvalidVersion = () => mc(this.ERROR_InvalidVersion, `Invalid 'version' statement`); static ERROR_InvalidLanguageLine = SevError | 0x00E; - static Error_InvalidLanguageLine = () => m(this.ERROR_InvalidLanguageLine, `Invalid 'language' statement`); + static Error_InvalidLanguageLine = () => mc(this.ERROR_InvalidLanguageLine, `Invalid 'language' statement`); static ERROR_LayoutButNoLanguage = SevError | 0x00F; - static Error_LayoutButNoLanguage = () => m(this.ERROR_LayoutButNoLanguage, `Layout statement found but no language statement`); + static Error_LayoutButNoLanguage = () => mc(this.ERROR_LayoutButNoLanguage, `Layout statement found but no language statement`); static ERROR_InvalidLayoutLine = SevError | 0x010; - static Error_InvalidLayoutLine = () => m(this.ERROR_InvalidLayoutLine, `Invalid 'layout' statement`); + static Error_InvalidLayoutLine = () => mc(this.ERROR_InvalidLayoutLine, `Invalid 'layout' statement`); static ERROR_NoVersionLine = SevError | 0x011; - static Error_NoVersionLine = () => m(this.ERROR_NoVersionLine, `No version line found for file`); + static Error_NoVersionLine = () => mc(this.ERROR_NoVersionLine, `No version line found for file`); static ERROR_InvalidGroupLine = SevError | 0x012; - static Error_InvalidGroupLine = () => m(this.ERROR_InvalidGroupLine, `Invalid 'group' statement`); + static Error_InvalidGroupLine = () => mc(this.ERROR_InvalidGroupLine, `Invalid 'group' statement`); static ERROR_InvalidStoreLine = SevError | 0x013; - static Error_InvalidStoreLine = () => m(this.ERROR_InvalidStoreLine, `Invalid 'store' statement`); + static Error_InvalidStoreLine = () => mc(this.ERROR_InvalidStoreLine, `Invalid 'store' statement`); static ERROR_InvalidCodeInKeyPartOfRule = SevError | 0x014; - static Error_InvalidCodeInKeyPartOfRule = () => m(this.ERROR_InvalidCodeInKeyPartOfRule, `Invalid statement or code found in key part of rule`); + static Error_InvalidCodeInKeyPartOfRule = () => mc(this.ERROR_InvalidCodeInKeyPartOfRule, `Invalid statement or code found in key part of rule`); static ERROR_InvalidDeadkey = SevError | 0x015; - static Error_InvalidDeadkey = () => m(this.ERROR_InvalidDeadkey, `Invalid 'deadkey' or 'dk' statement`); + static Error_InvalidDeadkey = () => mc(this.ERROR_InvalidDeadkey, `Invalid 'deadkey' or 'dk' statement`); static ERROR_InvalidValue = SevError | 0x016; - static Error_InvalidValue = () => m(this.ERROR_InvalidValue, `Invalid value in extended string`); + static Error_InvalidValue = () => mc(this.ERROR_InvalidValue, `Invalid value in extended string`); static ERROR_ZeroLengthString = SevError | 0x017; - static Error_ZeroLengthString = () => m(this.ERROR_ZeroLengthString, `A string of zero characters was found`); + static Error_ZeroLengthString = () => mc(this.ERROR_ZeroLengthString, `A string of zero characters was found`); static ERROR_TooManyIndexToKeyRefs = SevError | 0x018; - static Error_TooManyIndexToKeyRefs = () => m(this.ERROR_TooManyIndexToKeyRefs, `Too many index statements refering to key string`); + static Error_TooManyIndexToKeyRefs = () => mc(this.ERROR_TooManyIndexToKeyRefs, `Too many index statements refering to key string`); static ERROR_UnterminatedString = SevError | 0x019; - static Error_UnterminatedString = () => m(this.ERROR_UnterminatedString, `Unterminated string in line`); + static Error_UnterminatedString = () => mc(this.ERROR_UnterminatedString, `Unterminated string in line`); // static ERROR_StringInVirtualKeySection = SevError | 0x01A; // no longer used, see #12612 - // static Error_StringInVirtualKeySection = () => m(this.ERROR_StringInVirtualKeySection, `extend string illegal in virtual key section`); + // static Error_StringInVirtualKeySection = () => mc(this.ERROR_StringInVirtualKeySection, `extend string illegal in virtual key section`); // static ERROR_AnyInVirtualKeySection = SevError | 0x01B; // no longer used, see #12612 - // static Error_AnyInVirtualKeySection = () => m(this.ERROR_AnyInVirtualKeySection, `'any' statement is illegal in virtual key section`); + // static Error_AnyInVirtualKeySection = () => mc(this.ERROR_AnyInVirtualKeySection, `'any' statement is illegal in virtual key section`); static ERROR_InvalidAny = SevError | 0x01C; - static Error_InvalidAny = () => m(this.ERROR_InvalidAny, `Invalid 'any' statement`); + static Error_InvalidAny = () => mc(this.ERROR_InvalidAny, `Invalid 'any' statement`); static ERROR_StoreDoesNotExist = SevError | 0x01D; - static Error_StoreDoesNotExist = () => m(this.ERROR_StoreDoesNotExist, `Store referenced does not exist`); + static Error_StoreDoesNotExist = () => mc(this.ERROR_StoreDoesNotExist, `Store referenced does not exist`); // static ERROR_BeepInVirtualKeySection = SevError | 0x01E; // no longer used, see #12612 - // static Error_BeepInVirtualKeySection = () => m(this.ERROR_BeepInVirtualKeySection, `'beep' statement is illegal in virtual key section`); + // static Error_BeepInVirtualKeySection = () => mc(this.ERROR_BeepInVirtualKeySection, `'beep' statement is illegal in virtual key section`); // static ERROR_IndexInVirtualKeySection = SevError | 0x01F; // no longer used, see #12612 - // static Error_IndexInVirtualKeySection = () => m(this.ERROR_IndexInVirtualKeySection, `'index' statement is illegal in virtual key section`); + // static Error_IndexInVirtualKeySection = () => mc(this.ERROR_IndexInVirtualKeySection, `'index' statement is illegal in virtual key section`); static ERROR_InvalidIndex = SevError | 0x020; - static Error_InvalidIndex = () => m(this.ERROR_InvalidIndex, `Invalid 'index' statement`); + static Error_InvalidIndex = () => mc(this.ERROR_InvalidIndex, `Invalid 'index' statement`); // static ERROR_OutsInVirtualKeySection = SevError | 0x021; // no longer used, see #12612 - // static Error_OutsInVirtualKeySection = () => m(this.ERROR_OutsInVirtualKeySection, `'outs' statement is illegal in virtual key section`); + // static Error_OutsInVirtualKeySection = () => mc(this.ERROR_OutsInVirtualKeySection, `'outs' statement is illegal in virtual key section`); static ERROR_InvalidOuts = SevError | 0x022; - static Error_InvalidOuts = () => m(this.ERROR_InvalidOuts, `Invalid 'outs' statement`); + static Error_InvalidOuts = () => mc(this.ERROR_InvalidOuts, `Invalid 'outs' statement`); // static ERROR_ContextInVirtualKeySection = SevError | 0x024; // no longer used, see #12612 - // static Error_ContextInVirtualKeySection = () => m(this.ERROR_ContextInVirtualKeySection, `'context' statement is illegal in virtual key section`); + // static Error_ContextInVirtualKeySection = () => mc(this.ERROR_ContextInVirtualKeySection, `'context' statement is illegal in virtual key section`); static ERROR_InvalidUse = SevError | 0x025; - static Error_InvalidUse = () => m(this.ERROR_InvalidUse, `Invalid 'use' statement`); + static Error_InvalidUse = () => mc(this.ERROR_InvalidUse, `Invalid 'use' statement`); static ERROR_GroupDoesNotExist = SevError | 0x026; - static Error_GroupDoesNotExist = () => m(this.ERROR_GroupDoesNotExist, `Group does not exist`); + static Error_GroupDoesNotExist = () => mc(this.ERROR_GroupDoesNotExist, `Group does not exist`); static ERROR_VirtualKeyNotAllowedHere = SevError | 0x027; - static Error_VirtualKeyNotAllowedHere = () => m(this.ERROR_VirtualKeyNotAllowedHere, `Virtual key is not allowed here`); + static Error_VirtualKeyNotAllowedHere = () => mc(this.ERROR_VirtualKeyNotAllowedHere, `Virtual key is not allowed here`); static ERROR_InvalidSwitch = SevError | 0x028; - static Error_InvalidSwitch = () => m(this.ERROR_InvalidSwitch, `Invalid 'switch' statement`); + static Error_InvalidSwitch = () => mc(this.ERROR_InvalidSwitch, `Invalid 'switch' statement`); static ERROR_NoTokensFound = SevError | 0x029; - static Error_NoTokensFound = () => m(this.ERROR_NoTokensFound, `No tokens found in line`); + static Error_NoTokensFound = () => mc(this.ERROR_NoTokensFound, `No tokens found in line`); static ERROR_InvalidLineContinuation = SevError | 0x02A; - static Error_InvalidLineContinuation = () => m(this.ERROR_InvalidLineContinuation, `Invalid line continuation`); + static Error_InvalidLineContinuation = () => mc(this.ERROR_InvalidLineContinuation, `Invalid line continuation`); static ERROR_LineTooLong = SevError | 0x02B; - static Error_LineTooLong = () => m(this.ERROR_LineTooLong, `Line too long`); + static Error_LineTooLong = () => mc(this.ERROR_LineTooLong, `Line too long`); static ERROR_InvalidCopyright = SevError | 0x02C; - static Error_InvalidCopyright = () => m(this.ERROR_InvalidCopyright, `Invalid 'copyright' statement`); + static Error_InvalidCopyright = () => mc(this.ERROR_InvalidCopyright, `Invalid 'copyright' statement`); static ERROR_CodeInvalidInThisSection = SevError | 0x02D; - static Error_CodeInvalidInThisSection = () => m(this.ERROR_CodeInvalidInThisSection, `This line is invalid in this section of the file`); + static Error_CodeInvalidInThisSection = () => mc(this.ERROR_CodeInvalidInThisSection, `This line is invalid in this section of the file`); static ERROR_InvalidMessage = SevError | 0x02E; - static Error_InvalidMessage = () => m(this.ERROR_InvalidMessage, `Invalid 'message' statement`); + static Error_InvalidMessage = () => mc(this.ERROR_InvalidMessage, `Invalid 'message' statement`); static ERROR_InvalidLanguageName = SevError | 0x02F; - static Error_InvalidLanguageName = () => m(this.ERROR_InvalidLanguageName, `Invalid 'languagename' statement`); + static Error_InvalidLanguageName = () => mc(this.ERROR_InvalidLanguageName, `Invalid 'languagename' statement`); static ERROR_InvalidBitmapLine = SevError | 0x030; - static Error_InvalidBitmapLine = () => m(this.ERROR_InvalidBitmapLine, `Invalid 'bitmaps' statement`); + static Error_InvalidBitmapLine = () => mc(this.ERROR_InvalidBitmapLine, `Invalid 'bitmaps' statement`); static ERROR_CannotReadBitmapFile = SevError | 0x031; - static Error_CannotReadBitmapFile = () => m(this.ERROR_CannotReadBitmapFile, `Cannot open the bitmap or icon file for reading`); + static Error_CannotReadBitmapFile = () => mc(this.ERROR_CannotReadBitmapFile, `Cannot open the bitmap or icon file for reading`); static ERROR_IndexDoesNotPointToAny = SevError | 0x032; - static Error_IndexDoesNotPointToAny = () => m(this.ERROR_IndexDoesNotPointToAny, `An index() in the output does not have a corresponding any() statement`); + static Error_IndexDoesNotPointToAny = () => mc(this.ERROR_IndexDoesNotPointToAny, `An index() in the output does not have a corresponding any() statement`); static ERROR_ReservedCharacter = SevError | 0x033; - static Error_ReservedCharacter = () => m(this.ERROR_ReservedCharacter, `A reserved character was found`); + static Error_ReservedCharacter = () => mc(this.ERROR_ReservedCharacter, `A reserved character was found`); static ERROR_InvalidCharacter = SevError | 0x034; - static Error_InvalidCharacter = () => m(this.ERROR_InvalidCharacter, `A character was found that is outside the valid Unicode range (U+0000 - U+10FFFF)`); + static Error_InvalidCharacter = () => mc(this.ERROR_InvalidCharacter, `A character was found that is outside the valid Unicode range (U+0000 - U+10FFFF)`); static ERROR_InvalidCall = SevError | 0x035; - static Error_InvalidCall = () => m(this.ERROR_InvalidCall, `The 'call' statement is invalid`); + static Error_InvalidCall = () => mc(this.ERROR_InvalidCall, `The 'call' statement is invalid`); // static ERROR_CallInVirtualKeySection = SevError | 0x036; // no longer used, see #12612 - // static Error_CallInVirtualKeySection = () => m(this.ERROR_CallInVirtualKeySection, `'call' statement is illegal in virtual key section`); + // static Error_CallInVirtualKeySection = () => mc(this.ERROR_CallInVirtualKeySection, `'call' statement is illegal in virtual key section`); static ERROR_CodeInvalidInKeyStore = SevError | 0x037; - static Error_CodeInvalidInKeyStore = () => m(this.ERROR_CodeInvalidInKeyStore, `The statement is invalid inside a store that is used in a key part of the rule`); + static Error_CodeInvalidInKeyStore = () => mc(this.ERROR_CodeInvalidInKeyStore, `The statement is invalid inside a store that is used in a key part of the rule`); static ERROR_CannotLoadIncludeFile = SevError | 0x038; - static Error_CannotLoadIncludeFile = () => m(this.ERROR_CannotLoadIncludeFile, `Cannot load the included file: it is either invalid or does not exist`); + static Error_CannotLoadIncludeFile = () => mc(this.ERROR_CannotLoadIncludeFile, `Cannot load the included file: it is either invalid or does not exist`); static ERROR_60FeatureOnly_EthnologueCode = SevError | 0x039; - static Error_60FeatureOnly_EthnologueCode = () => m(this.ERROR_60FeatureOnly_EthnologueCode, `EthnologueCode system store requires VERSION 6.0 or higher`); + static Error_60FeatureOnly_EthnologueCode = () => mc(this.ERROR_60FeatureOnly_EthnologueCode, `EthnologueCode system store requires VERSION 6.0 or higher`); static ERROR_60FeatureOnly_MnemonicLayout = SevError | 0x03A; - static Error_60FeatureOnly_MnemonicLayout = () => m(this.ERROR_60FeatureOnly_MnemonicLayout, `MnemonicLayout functionality requires VERSION 6.0 or higher`); + static Error_60FeatureOnly_MnemonicLayout = () => mc(this.ERROR_60FeatureOnly_MnemonicLayout, `MnemonicLayout functionality requires VERSION 6.0 or higher`); static ERROR_60FeatureOnly_OldCharPosMatching = SevError | 0x03B; - static Error_60FeatureOnly_OldCharPosMatching = () => m(this.ERROR_60FeatureOnly_OldCharPosMatching, `OldCharPosMatching system store requires VERSION 6.0 or higher`); + static Error_60FeatureOnly_OldCharPosMatching = () => mc(this.ERROR_60FeatureOnly_OldCharPosMatching, `OldCharPosMatching system store requires VERSION 6.0 or higher`); static ERROR_60FeatureOnly_NamedCodes = SevError | 0x03C; - static Error_60FeatureOnly_NamedCodes = () => m(this.ERROR_60FeatureOnly_NamedCodes, `Named character constants requires VERSION 6.0 or higher`); + static Error_60FeatureOnly_NamedCodes = () => mc(this.ERROR_60FeatureOnly_NamedCodes, `Named character constants requires VERSION 6.0 or higher`); static ERROR_60FeatureOnly_Contextn = SevError | 0x03D; - static Error_60FeatureOnly_Contextn = () => m(this.ERROR_60FeatureOnly_Contextn, `Context(n) requires VERSION 6.0 or higher`); + static Error_60FeatureOnly_Contextn = () => mc(this.ERROR_60FeatureOnly_Contextn, `Context(n) requires VERSION 6.0 or higher`); static ERROR_501FeatureOnly_Call = SevError | 0x03E; - static Error_501FeatureOnly_Call = () => m(this.ERROR_501FeatureOnly_Call, `Call() requires VERSION 5.01 or higher`); + static Error_501FeatureOnly_Call = () => mc(this.ERROR_501FeatureOnly_Call, `Call() requires VERSION 5.01 or higher`); static ERROR_InvalidNamedCode = SevError | 0x03F; - static Error_InvalidNamedCode = () => m(this.ERROR_InvalidNamedCode, `Invalid named code constant`); + static Error_InvalidNamedCode = () => mc(this.ERROR_InvalidNamedCode, `Invalid named code constant`); static ERROR_InvalidSystemStore = SevError | 0x040; - static Error_InvalidSystemStore = () => m(this.ERROR_InvalidSystemStore, `Invalid system store name found`); + static Error_InvalidSystemStore = () => mc(this.ERROR_InvalidSystemStore, `Invalid system store name found`); static ERROR_60FeatureOnly_VirtualCharKey = SevError | 0x044; - static Error_60FeatureOnly_VirtualCharKey = () => m(this.ERROR_60FeatureOnly_VirtualCharKey, `Virtual character keys require VERSION 6.0 or higher`); + static Error_60FeatureOnly_VirtualCharKey = () => mc(this.ERROR_60FeatureOnly_VirtualCharKey, `Virtual character keys require VERSION 6.0 or higher`); static ERROR_VersionAlreadyIncluded = SevError | 0x045; - static Error_VersionAlreadyIncluded = () => m(this.ERROR_VersionAlreadyIncluded, `Only one VERSION or store(version) line allowed in a source file.`); + static Error_VersionAlreadyIncluded = () => mc(this.ERROR_VersionAlreadyIncluded, `Only one VERSION or store(version) line allowed in a source file.`); static ERROR_70FeatureOnly = SevError | 0x046; - static Error_70FeatureOnly = () => m(this.ERROR_70FeatureOnly, `This feature requires store(version) '7.0' or higher`); + static Error_70FeatureOnly = () => mc(this.ERROR_70FeatureOnly, `This feature requires store(version) '7.0' or higher`); static ERROR_80FeatureOnly = SevError | 0x047; - static Error_80FeatureOnly = () => m(this.ERROR_80FeatureOnly, `This feature requires store(version) '8.0' or higher`); + static Error_80FeatureOnly = () => mc(this.ERROR_80FeatureOnly, `This feature requires store(version) '8.0' or higher`); // static ERROR_InvalidInVirtualKeySection = SevError | 0x048; // no longer used, see #12612 - // static Error_InvalidInVirtualKeySection = () => m(this.ERROR_InvalidInVirtualKeySection, `This statement is not valid in a virtual key section`); + // static Error_InvalidInVirtualKeySection = () => mc(this.ERROR_InvalidInVirtualKeySection, `This statement is not valid in a virtual key section`); static ERROR_InvalidIf = SevError | 0x049; - static Error_InvalidIf = () => m(this.ERROR_InvalidIf, `The if() statement is not valid`); + static Error_InvalidIf = () => mc(this.ERROR_InvalidIf, `The if() statement is not valid`); static ERROR_InvalidReset = SevError | 0x04A; - static Error_InvalidReset = () => m(this.ERROR_InvalidReset, `The reset() statement is not valid`); + static Error_InvalidReset = () => mc(this.ERROR_InvalidReset, `The reset() statement is not valid`); static ERROR_InvalidSet = SevError | 0x04B; - static Error_InvalidSet = () => m(this.ERROR_InvalidSet, `The set() statement is not valid`); + static Error_InvalidSet = () => mc(this.ERROR_InvalidSet, `The set() statement is not valid`); static ERROR_InvalidSave = SevError | 0x04C; - static Error_InvalidSave = () => m(this.ERROR_InvalidSave, `The save() statement is not valid`); + static Error_InvalidSave = () => mc(this.ERROR_InvalidSave, `The save() statement is not valid`); static ERROR_InvalidEthnologueCode = SevError | 0x04D; - static Error_InvalidEthnologueCode = () => m(this.ERROR_InvalidEthnologueCode, `Invalid ethnologuecode format`); + static Error_InvalidEthnologueCode = () => mc(this.ERROR_InvalidEthnologueCode, `Invalid ethnologuecode format`); static FATAL_CannotCreateTempfile = SevFatal | 0x04E; - static Fatal_CannotCreateTempfile = () => m(this.FATAL_CannotCreateTempfile, `Cannot create temp file`); + static Fatal_CannotCreateTempfile = () => mc(this.FATAL_CannotCreateTempfile, `Cannot create temp file`); static ERROR_90FeatureOnly_IfSystemStores = SevError | 0x04F; - static Error_90FeatureOnly_IfSystemStores = () => m(this.ERROR_90FeatureOnly_IfSystemStores, `if(store) requires store(version) '9.0' or higher`); + static Error_90FeatureOnly_IfSystemStores = () => mc(this.ERROR_90FeatureOnly_IfSystemStores, `if(store) requires store(version) '9.0' or higher`); static ERROR_IfSystemStore_NotFound = SevError | 0x050; - static Error_IfSystemStore_NotFound = () => m(this.ERROR_IfSystemStore_NotFound, `System store in if() not found`); + static Error_IfSystemStore_NotFound = () => mc(this.ERROR_IfSystemStore_NotFound, `System store in if() not found`); static ERROR_90FeatureOnly_SetSystemStores = SevError | 0x051; - static Error_90FeatureOnly_SetSystemStores = () => m(this.ERROR_90FeatureOnly_SetSystemStores, `set(store) requires store(version) '9.0' or higher`); + static Error_90FeatureOnly_SetSystemStores = () => mc(this.ERROR_90FeatureOnly_SetSystemStores, `set(store) requires store(version) '9.0' or higher`); static ERROR_SetSystemStore_NotFound = SevError | 0x052; - static Error_SetSystemStore_NotFound = () => m(this.ERROR_SetSystemStore_NotFound, `System store in set() not found`); + static Error_SetSystemStore_NotFound = () => mc(this.ERROR_SetSystemStore_NotFound, `System store in set() not found`); static ERROR_90FeatureOnlyVirtualKeyDictionary = SevError | 0x053; - static Error_90FeatureOnlyVirtualKeyDictionary = () => m(this.ERROR_90FeatureOnlyVirtualKeyDictionary, `Custom virtual key names require store(version) '9.0'`); + static Error_90FeatureOnlyVirtualKeyDictionary = () => mc(this.ERROR_90FeatureOnlyVirtualKeyDictionary, `Custom virtual key names require store(version) '9.0'`); static ERROR_NotSupportedInKeymanWebContext = SevError | 0x054; - static Error_NotSupportedInKeymanWebContext = (o:{line:number, code:String}) => mw(this.ERROR_NotSupportedInKeymanWebContext, - `Statement '${def(o.code)}' is not currently supported in context for web and touch targets`, o); + static Error_NotSupportedInKeymanWebContext = (o:{line:number, code:String}) => mw( + this.ERROR_NotSupportedInKeymanWebContext, + `Statement '${def(o.code)}' is not currently supported in context for web and touch targets`, o, + ); static ERROR_NotSupportedInKeymanWebOutput = SevError | 0x055; - static Error_NotSupportedInKeymanWebOutput = (o:{line:number, code:string}) => mw(this.ERROR_NotSupportedInKeymanWebOutput, - `Statement '${def(o.code)}' is not currently supported in output for web and touch targets`, o); + static Error_NotSupportedInKeymanWebOutput = (o:{line:number, code:string}) => mw( + this.ERROR_NotSupportedInKeymanWebOutput, + `Statement '${def(o.code)}' is not currently supported in output for web and touch targets`, o, + ); static ERROR_NotSupportedInKeymanWebStore = SevError | 0x056; - static Error_NotSupportedInKeymanWebStore = (o:{code:string,store:string}) => mw(this.ERROR_NotSupportedInKeymanWebStore, - `'${def(o.code)}' is not currently supported in store '${def(o.store)}' when used by any or index for web and touch targets`); + static Error_NotSupportedInKeymanWebStore = (o:{code:string,store:string}) => mw( + this.ERROR_NotSupportedInKeymanWebStore, + `'${def(o.code)}' is not currently supported in store '${def(o.store)}' when used by any or index for web and touch targets`, + ); static ERROR_VirtualCharacterKeysNotSupportedInKeymanWeb = SevError | 0x057; - static Error_VirtualCharacterKeysNotSupportedInKeymanWeb = (o:{line:number}) => mw(this.ERROR_VirtualCharacterKeysNotSupportedInKeymanWeb, - `Virtual character keys not currently supported in KeymanWeb`, o); + static Error_VirtualCharacterKeysNotSupportedInKeymanWeb = (o:{line:number}) => mw( + this.ERROR_VirtualCharacterKeysNotSupportedInKeymanWeb, + `Virtual character keys not currently supported in KeymanWeb`, o, + ); static ERROR_VirtualKeysNotValidForMnemonicLayouts = SevError | 0x058; - static Error_VirtualKeysNotValidForMnemonicLayouts = (o:{line:number}) => mw(this.ERROR_VirtualKeysNotValidForMnemonicLayouts, - `Virtual keys are not valid for mnemonic layouts`, o); + static Error_VirtualKeysNotValidForMnemonicLayouts = (o:{line:number}) => mw( + this.ERROR_VirtualKeysNotValidForMnemonicLayouts, + `Virtual keys are not valid for mnemonic layouts`, o, + ); static ERROR_InvalidTouchLayoutFile = SevError | 0x059; - static Error_InvalidTouchLayoutFile = (o:{filename:string}) => mw(this.ERROR_InvalidTouchLayoutFile, - `Touch layout file ${def(o.filename)} is not valid`); + static Error_InvalidTouchLayoutFile = (o:{filename:string}) => mw( + this.ERROR_InvalidTouchLayoutFile, + `Touch layout file ${def(o.filename)} is not valid`, + ); static ERROR_TouchLayoutInvalidIdentifier = SevError | 0x05A; - static Error_TouchLayoutInvalidIdentifier = (o:{keyId:string, platformName: string, layerId:string, address:KeyAddress}) => mw(this.ERROR_TouchLayoutInvalidIdentifier, - `Key "${def(o.keyId)}" on "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}) has an invalid identifier.`); + static Error_TouchLayoutInvalidIdentifier = (o:{keyId:string, platformName: string, layerId:string, address:KeyAddress}) => mw( + this.ERROR_TouchLayoutInvalidIdentifier, + `Key "${def(o.keyId)}" on "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}) has an invalid identifier.`, + ); static ERROR_InvalidKeyCode = SevError | 0x05B; - static Error_InvalidKeyCode = (o:{keyId: string}) => mw(this.ERROR_InvalidKeyCode, - `Invalid key identifier "${def(o.keyId)}"`); + static Error_InvalidKeyCode = (o:{keyId: string}) => mw(this.ERROR_InvalidKeyCode, + `Invalid key identifier "${def(o.keyId)}"`, + ); static ERROR_90FeatureOnlyLayoutFile = SevError | 0x05C; - static Error_90FeatureOnlyLayoutFile = () => m(this.ERROR_90FeatureOnlyLayoutFile, `Touch layout file reference requires store(version) '9.0' or higher`); + static Error_90FeatureOnlyLayoutFile = () => mc(this.ERROR_90FeatureOnlyLayoutFile, `Touch layout file reference requires store(version) '9.0' or higher`); static ERROR_90FeatureOnlyKeyboardVersion = SevError | 0x05D; - static Error_90FeatureOnlyKeyboardVersion = () => m(this.ERROR_90FeatureOnlyKeyboardVersion, `KeyboardVersion system store requires store(version) '9.0' or higher`); + static Error_90FeatureOnlyKeyboardVersion = () => mc(this.ERROR_90FeatureOnlyKeyboardVersion, `KeyboardVersion system store requires store(version) '9.0' or higher`); static ERROR_KeyboardVersionFormatInvalid = SevError | 0x05E; - static Error_KeyboardVersionFormatInvalid = () => m(this.ERROR_KeyboardVersionFormatInvalid, `KeyboardVersion format is invalid, expecting dot-separated integers`); + static Error_KeyboardVersionFormatInvalid = () => mc(this.ERROR_KeyboardVersionFormatInvalid, `KeyboardVersion format is invalid, expecting dot-separated integers`); static ERROR_ContextExHasInvalidOffset = SevError | 0x05F; - static Error_ContextExHasInvalidOffset = () => m(this.ERROR_ContextExHasInvalidOffset, `context() statement has offset out of range`); + static Error_ContextExHasInvalidOffset = () => mc(this.ERROR_ContextExHasInvalidOffset, `context() statement has offset out of range`); static ERROR_90FeatureOnlyEmbedCSS = SevError | 0x060; - static Error_90FeatureOnlyEmbedCSS = () => m(this.ERROR_90FeatureOnlyEmbedCSS, `Embedding CSS requires store(version) '9.0' or higher`); + static Error_90FeatureOnlyEmbedCSS = () => mc(this.ERROR_90FeatureOnlyEmbedCSS, `Embedding CSS requires store(version) '9.0' or higher`); static ERROR_90FeatureOnlyTargets = SevError | 0x061; - static Error_90FeatureOnlyTargets = () => m(this.ERROR_90FeatureOnlyTargets, `TARGETS system store requires store(version) '9.0' or higher`); + static Error_90FeatureOnlyTargets = () => mc(this.ERROR_90FeatureOnlyTargets, `TARGETS system store requires store(version) '9.0' or higher`); static ERROR_ContextAndIndexInvalidInMatchNomatch = SevError | 0x062; - static Error_ContextAndIndexInvalidInMatchNomatch = () => m(this.ERROR_ContextAndIndexInvalidInMatchNomatch, `context and index statements cannot be used in a match or nomatch statement`); + static Error_ContextAndIndexInvalidInMatchNomatch = () => mc(this.ERROR_ContextAndIndexInvalidInMatchNomatch, `context and index statements cannot be used in a match or nomatch statement`); static ERROR_140FeatureOnlyContextAndNotAnyWeb = SevError | 0x063; - static Error_140FeatureOnlyContextAndNotAnyWeb = () => m(this.ERROR_140FeatureOnlyContextAndNotAnyWeb, `For web and touch platforms, context() statement referring to notany() requires store(version) '14.0' or higher`); + static Error_140FeatureOnlyContextAndNotAnyWeb = () => mc(this.ERROR_140FeatureOnlyContextAndNotAnyWeb, `For web and touch platforms, context() statement referring to notany() requires store(version) '14.0' or higher`); static ERROR_ExpansionMustFollowCharacterOrVKey = SevError | 0x064; - static Error_ExpansionMustFollowCharacterOrVKey = () => m(this.ERROR_ExpansionMustFollowCharacterOrVKey, `An expansion must follow a character or a virtual key`); + static Error_ExpansionMustFollowCharacterOrVKey = () => mc(this.ERROR_ExpansionMustFollowCharacterOrVKey, `An expansion must follow a character or a virtual key`); static ERROR_VKeyExpansionMustBeFollowedByVKey = SevError | 0x065; - static Error_VKeyExpansionMustBeFollowedByVKey = () => m(this.ERROR_VKeyExpansionMustBeFollowedByVKey, `A virtual key expansion must be terminated by a virtual key`); + static Error_VKeyExpansionMustBeFollowedByVKey = () => mc(this.ERROR_VKeyExpansionMustBeFollowedByVKey, `A virtual key expansion must be terminated by a virtual key`); static ERROR_CharacterExpansionMustBeFollowedByCharacter = SevError | 0x066; - static Error_CharacterExpansionMustBeFollowedByCharacter = () => m(this.ERROR_CharacterExpansionMustBeFollowedByCharacter, `A character expansion must be terminated by a character key`); + static Error_CharacterExpansionMustBeFollowedByCharacter = () => mc(this.ERROR_CharacterExpansionMustBeFollowedByCharacter, `A character expansion must be terminated by a character key`); static ERROR_VKeyExpansionMustUseConsistentShift = SevError | 0x067; - static Error_VKeyExpansionMustUseConsistentShift = () => m(this.ERROR_VKeyExpansionMustUseConsistentShift, `A virtual key expansion must use the same shift state for both terminators`); + static Error_VKeyExpansionMustUseConsistentShift = () => mc(this.ERROR_VKeyExpansionMustUseConsistentShift, `A virtual key expansion must use the same shift state for both terminators`); static ERROR_ExpansionMustBePositive = SevError | 0x068; - static Error_ExpansionMustBePositive = () => m(this.ERROR_ExpansionMustBePositive, `An expansion must have positive difference (i.e. A-Z, not Z-A)`); + static Error_ExpansionMustBePositive = () => mc(this.ERROR_ExpansionMustBePositive, `An expansion must have positive difference (i.e. A-Z, not Z-A)`); static ERROR_CasedKeysMustContainOnlyVirtualKeys = SevError | 0x069; - static Error_CasedKeysMustContainOnlyVirtualKeys = () => m(this.ERROR_CasedKeysMustContainOnlyVirtualKeys, `The &CasedKeys system store must contain only virtual keys or characters found on a US English keyboard`); + static Error_CasedKeysMustContainOnlyVirtualKeys = () => mc(this.ERROR_CasedKeysMustContainOnlyVirtualKeys, `The &CasedKeys system store must contain only virtual keys or characters found on a US English keyboard`); static ERROR_CasedKeysMustNotIncludeShiftStates = SevError | 0x06A; - static Error_CasedKeysMustNotIncludeShiftStates = () => m(this.ERROR_CasedKeysMustNotIncludeShiftStates, `The &CasedKeys system store must not include shift states`); + static Error_CasedKeysMustNotIncludeShiftStates = () => mc(this.ERROR_CasedKeysMustNotIncludeShiftStates, `The &CasedKeys system store must not include shift states`); static ERROR_CasedKeysNotSupportedWithMnemonicLayout = SevError | 0x06B; - static Error_CasedKeysNotSupportedWithMnemonicLayout = () => m(this.ERROR_CasedKeysNotSupportedWithMnemonicLayout, `The &CasedKeys system store is not supported with mnemonic layouts`); + static Error_CasedKeysNotSupportedWithMnemonicLayout = () => mc(this.ERROR_CasedKeysNotSupportedWithMnemonicLayout, `The &CasedKeys system store is not supported with mnemonic layouts`); static ERROR_CannotUseReadWriteGroupFromReadonlyGroup = SevError | 0x06C; - static Error_CannotUseReadWriteGroupFromReadonlyGroup = () => m(this.ERROR_CannotUseReadWriteGroupFromReadonlyGroup, `Group used from a readonly group must also be readonly`); + static Error_CannotUseReadWriteGroupFromReadonlyGroup = () => mc(this.ERROR_CannotUseReadWriteGroupFromReadonlyGroup, `Group used from a readonly group must also be readonly`); static ERROR_StatementNotPermittedInReadonlyGroup = SevError | 0x06D; - static Error_StatementNotPermittedInReadonlyGroup = () => m(this.ERROR_StatementNotPermittedInReadonlyGroup, `Statement is not permitted in output of readonly group`); + static Error_StatementNotPermittedInReadonlyGroup = () => mc(this.ERROR_StatementNotPermittedInReadonlyGroup, `Statement is not permitted in output of readonly group`); static ERROR_OutputInReadonlyGroup = SevError | 0x06E; - static Error_OutputInReadonlyGroup = () => m(this.ERROR_OutputInReadonlyGroup, `Output is not permitted in a readonly group`); + static Error_OutputInReadonlyGroup = () => mc(this.ERROR_OutputInReadonlyGroup, `Output is not permitted in a readonly group`); static ERROR_NewContextGroupMustBeReadonly = SevError | 0x06F; - static Error_NewContextGroupMustBeReadonly = () => m(this.ERROR_NewContextGroupMustBeReadonly, `Group used in begin newContext must be readonly`); + static Error_NewContextGroupMustBeReadonly = () => mc(this.ERROR_NewContextGroupMustBeReadonly, `Group used in begin newContext must be readonly`); static ERROR_PostKeystrokeGroupMustBeReadonly = SevError | 0x070; - static Error_PostKeystrokeGroupMustBeReadonly = () => m(this.ERROR_PostKeystrokeGroupMustBeReadonly, `Group used in begin postKeystroke must be readonly`); + static Error_PostKeystrokeGroupMustBeReadonly = () => mc(this.ERROR_PostKeystrokeGroupMustBeReadonly, `Group used in begin postKeystroke must be readonly`); static ERROR_DuplicateGroup = SevError | 0x071; - static Error_DuplicateGroup = (o:KmcmpLibMessageParameters) => m( + static Error_DuplicateGroup = (o:KmcmpLibMessageParameters) => mc( this.ERROR_DuplicateGroup, `A group with the name '${o.p?.[0]}' has already been defined on line ${o.p?.[1]}.` ); static ERROR_DuplicateStore = SevError | 0x072; - static Error_DuplicateStore = (o:KmcmpLibMessageParameters) => m( + static Error_DuplicateStore = (o:KmcmpLibMessageParameters) => mc( this.ERROR_DuplicateStore, `A store with the name '${o.p?.[0]}' has already been defined on line ${o.p?.[1]}.` ); static ERROR_RepeatedBegin = SevError | 0x073; - static Error_RepeatedBegin = () => m(this.ERROR_RepeatedBegin, `Begin has already been set`); + static Error_RepeatedBegin = () => mc(this.ERROR_RepeatedBegin, `Begin has already been set`); static ERROR_VirtualKeyInContext = SevError | 0x074; - static Error_VirtualKeyInContext = () => m(this.ERROR_VirtualKeyInContext, `Virtual keys are not permitted in context`); + static Error_VirtualKeyInContext = () => mc(this.ERROR_VirtualKeyInContext, `Virtual keys are not permitted in context`); static ERROR_OutsTooLong = SevError | 0x075; - static Error_OutsTooLong = () => m(this.ERROR_OutsTooLong, `Store cannot be inserted with outs() as it makes the extended string too long`); + static Error_OutsTooLong = () => mc(this.ERROR_OutsTooLong, `Store cannot be inserted with outs() as it makes the extended string too long`); static ERROR_ExtendedStringTooLong = SevError | 0x076; - static Error_ExtendedStringTooLong = () => m(this.ERROR_ExtendedStringTooLong, `Extended string is too long`); + static Error_ExtendedStringTooLong = () => mc(this.ERROR_ExtendedStringTooLong, `Extended string is too long`); static ERROR_VirtualKeyExpansionTooLong = SevError | 0x077; - static Error_VirtualKeyExpansionTooLong = () => m(this.ERROR_VirtualKeyExpansionTooLong, `Virtual key expansion is too large`); + static Error_VirtualKeyExpansionTooLong = () => mc(this.ERROR_VirtualKeyExpansionTooLong, `Virtual key expansion is too large`); static ERROR_CharacterRangeTooLong = SevError | 0x078; - static Error_CharacterRangeTooLong = () => m(this.ERROR_CharacterRangeTooLong, `Character range is too large and cannot be expanded`); + static Error_CharacterRangeTooLong = () => mc(this.ERROR_CharacterRangeTooLong, `Character range is too large and cannot be expanded`); static ERROR_NonBMPCharactersNotSupportedInKeySection = SevError | 0x079; - static Error_NonBMPCharactersNotSupportedInKeySection = () => m(this.ERROR_NonBMPCharactersNotSupportedInKeySection, `Characters with codepoints over U+FFFF are not supported in the key part of the rule`); + static Error_NonBMPCharactersNotSupportedInKeySection = () => mc(this.ERROR_NonBMPCharactersNotSupportedInKeySection, `Characters with codepoints over U+FFFF are not supported in the key part of the rule`); static ERROR_InvalidTarget = SevError | 0x07A; - static Error_InvalidTarget = (o:KmcmpLibMessageParameters) => m( + static Error_InvalidTarget = (o:KmcmpLibMessageParameters) => mc( this.ERROR_InvalidTarget, `Unrecognized compile target '${o.p?.[0]}'` ); static ERROR_NoTargetsSpecified = SevError | 0x07B; - static Error_NoTargetsSpecified = () => m(this.ERROR_NoTargetsSpecified, `At least one compile target must be specified`); + static Error_NoTargetsSpecified = () => mc(this.ERROR_NoTargetsSpecified, `At least one compile target must be specified`); static WARN_TooManyWarnings = SevWarn | 0x080; - static Warn_TooManyWarnings = () => m(this.WARN_TooManyWarnings, `Too many warnings or errors`); + static Warn_TooManyWarnings = () => mc(this.WARN_TooManyWarnings, `Too many warnings or errors`); static WARN_OldVersion = SevWarn | 0x081; - static Warn_OldVersion = () => m(this.WARN_OldVersion, `The keyboard file is an old version`); + static Warn_OldVersion = () => mc(this.WARN_OldVersion, `The keyboard file is an old version`); static WARN_BitmapNotUsed = SevWarn | 0x082; - static Warn_BitmapNotUsed = () => m(this.WARN_BitmapNotUsed, `The 'bitmaps' statement is obsolete and only the first bitmap referred to will be used, you should use 'bitmap'.`); + static Warn_BitmapNotUsed = () => mc(this.WARN_BitmapNotUsed, `The 'bitmaps' statement is obsolete and only the first bitmap referred to will be used, you should use 'bitmap'.`); static WARN_CustomLanguagesNotSupported = SevWarn | 0x083; - static Warn_CustomLanguagesNotSupported = () => m(this.WARN_CustomLanguagesNotSupported, `Languages over 0x1FF, 0x1F are not supported correctly by Windows. You should use no LANGUAGE line instead.`); + static Warn_CustomLanguagesNotSupported = () => mc(this.WARN_CustomLanguagesNotSupported, `Languages over 0x1FF, 0x1F are not supported correctly by Windows. You should use no LANGUAGE line instead.`); static WARN_KeyBadLength = SevWarn | 0x084; - static Warn_KeyBadLength = () => m(this.WARN_KeyBadLength, `There are too many characters in the keystroke part of the rule.`); + static Warn_KeyBadLength = () => mc(this.WARN_KeyBadLength, `There are too many characters in the keystroke part of the rule.`); static WARN_IndexStoreShort = SevWarn | 0x085; - static Warn_IndexStoreShort = () => m(this.WARN_IndexStoreShort, `The store referenced in index() is shorter than the store referenced in any()`); + static Warn_IndexStoreShort = () => mc(this.WARN_IndexStoreShort, `The store referenced in index() is shorter than the store referenced in any()`); static WARN_UnicodeInANSIGroup = SevWarn | 0x086; - static Warn_UnicodeInANSIGroup = () => m(this.WARN_UnicodeInANSIGroup, `A Unicode character was found in an ANSI group`); + static Warn_UnicodeInANSIGroup = () => mc(this.WARN_UnicodeInANSIGroup, `A Unicode character was found in an ANSI group`); static WARN_ANSIInUnicodeGroup = SevWarn | 0x087; - static Warn_ANSIInUnicodeGroup = () => m(this.WARN_ANSIInUnicodeGroup, `An ANSI character was found in a Unicode group`); + static Warn_ANSIInUnicodeGroup = () => mc(this.WARN_ANSIInUnicodeGroup, `An ANSI character was found in a Unicode group`); static WARN_UnicodeSurrogateUsed = SevWarn | 0x088; - static Warn_UnicodeSurrogateUsed = () => m(this.WARN_UnicodeSurrogateUsed, `A Unicode surrogate character was found. You should use Unicode scalar values to represent values > U+FFFF`); + static Warn_UnicodeSurrogateUsed = () => mc(this.WARN_UnicodeSurrogateUsed, `A Unicode surrogate character was found. You should use Unicode scalar values to represent values > U+FFFF`); static WARN_ReservedCharacter = SevWarn | 0x089; - static Warn_ReservedCharacter = () => m(this.WARN_ReservedCharacter, `A Unicode character was found that should not be used`); + static Warn_ReservedCharacter = () => mc(this.WARN_ReservedCharacter, `A Unicode character was found that should not be used`); - static INFO_MinimumCoreEngineVersion = SevInfo | 0x08A; - static Info_MinimumCoreEngineVersion = (o:KmcmpLibMessageParameters) => m( + static INFO_MinimumCoreEngineVersion = SevInfo | 0x08A; + static Info_MinimumCoreEngineVersion = (o:KmcmpLibMessageParameters) => mc( this.INFO_MinimumCoreEngineVersion, - `The compiler has assigned a minimum engine version of ${o.p?.[0]}.${o.p?.[1]} based on features used in this keyboard` + `The compiler has assigned a minimum engine version of ${o.p?.[0]}.${o.p?.[1]} based on features used in this keyboard`, ); static WARN_VirtualKeyWithMnemonicLayout = SevWarn | 0x08B; - static Warn_VirtualKeyWithMnemonicLayout = () => m(this.WARN_VirtualKeyWithMnemonicLayout, `Virtual key used instead of virtual character key with a mnemonic layout`); + static Warn_VirtualKeyWithMnemonicLayout = () => mc(this.WARN_VirtualKeyWithMnemonicLayout, `Virtual key used instead of virtual character key with a mnemonic layout`); static WARN_VirtualCharKeyWithPositionalLayout = SevWarn | 0x08C; - static Warn_VirtualCharKeyWithPositionalLayout = () => m(this.WARN_VirtualCharKeyWithPositionalLayout, `Virtual character key used with a positional layout instead of mnemonic layout`); + static Warn_VirtualCharKeyWithPositionalLayout = () => mc(this.WARN_VirtualCharKeyWithPositionalLayout, `Virtual character key used with a positional layout instead of mnemonic layout`); static WARN_StoreAlreadyUsedAsOptionOrCall = SevWarn | 0x08D; - static Warn_StoreAlreadyUsedAsOptionOrCall = () => m(this.WARN_StoreAlreadyUsedAsOptionOrCall, `Store already used as an option or in a call statement and should not be used as a normal store`); + static Warn_StoreAlreadyUsedAsOptionOrCall = () => mc(this.WARN_StoreAlreadyUsedAsOptionOrCall, `Store already used as an option or in a call statement and should not be used as a normal store`); static WARN_StoreAlreadyUsedAsStoreOrCall = SevWarn | 0x08E; - static Warn_StoreAlreadyUsedAsStoreOrCall = () => m(this.WARN_StoreAlreadyUsedAsStoreOrCall, `Store already used as a normal store or in a call statement and should not be used as an option`); + static Warn_StoreAlreadyUsedAsStoreOrCall = () => mc(this.WARN_StoreAlreadyUsedAsStoreOrCall, `Store already used as a normal store or in a call statement and should not be used as an option`); static WARN_StoreAlreadyUsedAsStoreOrOption = SevWarn | 0x08F; - static Warn_StoreAlreadyUsedAsStoreOrOption = () => m(this.WARN_StoreAlreadyUsedAsStoreOrOption, `Store already used as a normal store or as an option and should not be used in a call statement`); + static Warn_StoreAlreadyUsedAsStoreOrOption = () => mc(this.WARN_StoreAlreadyUsedAsStoreOrOption, `Store already used as a normal store or as an option and should not be used in a call statement`); static WARN_PunctuationInEthnologueCode = SevWarn | 0x090; - static Warn_PunctuationInEthnologueCode = () => m(this.WARN_PunctuationInEthnologueCode, `Punctuation should not be used to separate Ethnologue codes; instead use spaces`); + static Warn_PunctuationInEthnologueCode = () => mc(this.WARN_PunctuationInEthnologueCode, `Punctuation should not be used to separate Ethnologue codes; instead use spaces`); static WARN_TouchLayoutMissingLayer = SevWarn | 0x091; - static Warn_TouchLayoutMissingLayer = (o:{keyId:string, platformName:string, layerId:string, nextLayer:string, address:KeyAddress}) => mw(this.WARN_TouchLayoutMissingLayer, - `Key "${def(o.keyId)}" on platform "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}), references a missing layer "${def(o.nextLayer)}"`); + static Warn_TouchLayoutMissingLayer = (o:{keyId:string, platformName:string, layerId:string, nextLayer:string, address:KeyAddress}) => mw( + this.WARN_TouchLayoutMissingLayer, + `Key "${def(o.keyId)}" on platform "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}), references a missing layer "${def(o.nextLayer)}"`, + ); static WARN_TouchLayoutCustomKeyNotDefined = SevWarn | 0x092; - static Warn_TouchLayoutCustomKeyNotDefined = (o:{keyId:string, platformName:string, layerId:string, address:KeyAddress}) => mw(this.WARN_TouchLayoutCustomKeyNotDefined, - `Key "${def(o.keyId)}" on platform "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}), is a custom key but has no corresponding rule in the source.`); + static Warn_TouchLayoutCustomKeyNotDefined = (o:{keyId:string, platformName:string, layerId:string, address:KeyAddress}) => mw( + this.WARN_TouchLayoutCustomKeyNotDefined, + `Key "${def(o.keyId)}" on platform "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}), is a custom key but has no corresponding rule in the source.`, + ); static WARN_TouchLayoutMissingRequiredKeys = SevWarn | 0x093; - static Warn_TouchLayoutMissingRequiredKeys = (o:{layerId:string, platformName:string, missingKeys:string}) => mw(this.WARN_TouchLayoutMissingRequiredKeys, - `Layer "${def(o.layerId)}" on platform "${def(o.platformName)}" is missing the required key(s) '${def(o.missingKeys)}'.`); + static Warn_TouchLayoutMissingRequiredKeys = (o:{layerId:string, platformName:string, missingKeys:string}) => mw( + this.WARN_TouchLayoutMissingRequiredKeys, + `Layer "${def(o.layerId)}" on platform "${def(o.platformName)}" is missing the required key(s) '${def(o.missingKeys)}'.`, + ); static WARN_HelpFileMissing = SevWarn | 0x094; - static Warn_HelpFileMissing = (o:{line:number, helpFilename:string, e:any}) => mw(this.WARN_HelpFileMissing, - `File ${def(o.helpFilename)} could not be loaded: ${(o.e??'').toString()}`,o); + static Warn_HelpFileMissing = (o:{line:number, helpFilename:string, e:any}) => mw( + this.WARN_HelpFileMissing, + `File ${def(o.helpFilename)} could not be loaded: ${(o.e??'').toString()}`, o, + ); static WARN_EmbedJsFileMissing = SevWarn | 0x095; - static Warn_EmbedJsFileMissing = (o:{line:number, jsFilename: string, e:any}) => mw(this.WARN_EmbedJsFileMissing, - `File ${def(o.jsFilename)} could not be loaded: ${(o.e??'').toString()}`, o); + static Warn_EmbedJsFileMissing = (o:{line:number, jsFilename: string, e:any}) => mw( + this.WARN_EmbedJsFileMissing, + `File ${def(o.jsFilename)} could not be loaded: ${(o.e??'').toString()}`, o, + ); // static WARN_TouchLayoutFileMissing = SevWarn | 0x096; // static WARN_VisualKeyboardFileMissing = SevWarn | 0x097; static WARN_ExtendedShiftFlagsNotSupportedInKeymanWeb = SevWarn | 0x098; - static Warn_ExtendedShiftFlagsNotSupportedInKeymanWeb = (o:{line:number,flags:string}) => mw(this.WARN_ExtendedShiftFlagsNotSupportedInKeymanWeb, - `Extended shift flags ${def(o.flags)} are not supported in KeymanWeb`, o); + static Warn_ExtendedShiftFlagsNotSupportedInKeymanWeb = (o:{line:number,flags:string}) => mw( + this.WARN_ExtendedShiftFlagsNotSupportedInKeymanWeb, + `Extended shift flags ${def(o.flags)} are not supported in KeymanWeb`, o, + ); static WARN_TouchLayoutUnidentifiedKey = SevWarn | 0x099; - static Warn_TouchLayoutUnidentifiedKey = (o:{layerId:string, address:KeyAddress}) => mw(this.WARN_TouchLayoutUnidentifiedKey, - `A key (${keyAddress(o.address)}) on layer "${def(o.layerId)}" has no identifier.`); + static Warn_TouchLayoutUnidentifiedKey = (o:{layerId:string, address:KeyAddress}) => mw( + this.WARN_TouchLayoutUnidentifiedKey, + `A key (${keyAddress(o.address)}) on layer "${def(o.layerId)}" has no identifier.`, + ); static HINT_UnreachableKeyCode = SevHint | 0x09A; - static Hint_UnreachableKeyCode = (o:{line:number,key:string}) => mw(this.HINT_UnreachableKeyCode, - `The rule will never be matched for key ${def(o.key)} because its key code is never fired.`, o); + static Hint_UnreachableKeyCode = (o:{line:number,key:string}) => mw( + this.HINT_UnreachableKeyCode, + `The rule will never be matched for key ${def(o.key)} because its key code is never fired.`, o, + ); // static WARN_CouldNotCopyJsonFile = SevWarn | 0x09B; static WARN_PlatformNotInTargets = SevWarn | 0x09C; - static Warn_PlatformNotInTargets = () => m(this.WARN_PlatformNotInTargets, `The specified platform is not a target platform`); + static Warn_PlatformNotInTargets = () => mc(this.WARN_PlatformNotInTargets, `The specified platform is not a target platform`); static WARN_HeaderStatementIsDeprecated = SevWarn | 0x09D; - static Warn_HeaderStatementIsDeprecated = () => m(this.WARN_HeaderStatementIsDeprecated, `Header statements are deprecated; use instead the equivalent system store`); + static Warn_HeaderStatementIsDeprecated = () => mc(this.WARN_HeaderStatementIsDeprecated, `Header statements are deprecated; use instead the equivalent system store`); static WARN_UseNotLastStatementInRule = SevWarn | 0x09E; - static Warn_UseNotLastStatementInRule = () => m(this.WARN_UseNotLastStatementInRule, `A rule with use() statements in the output should not have other content following the use() statements`); + static Warn_UseNotLastStatementInRule = () => mc(this.WARN_UseNotLastStatementInRule, `A rule with use() statements in the output should not have other content following the use() statements`); static WARN_TouchLayoutFontShouldBeSameForAllPlatforms = SevWarn | 0x09F; - static Warn_TouchLayoutFontShouldBeSameForAllPlatforms = () => mw(this.WARN_TouchLayoutFontShouldBeSameForAllPlatforms, - `The touch layout font should be the same for all platforms.`); + static Warn_TouchLayoutFontShouldBeSameForAllPlatforms = () => mw( + this.WARN_TouchLayoutFontShouldBeSameForAllPlatforms, + `The touch layout font should be the same for all platforms.`, + ); // static WARN_InvalidJSONMetadataFile = SevWarn | 0x0A0; // static WARN_JSONMetadataOSKFontShouldMatchTouchFont = SevWarn | 0x0A1; static WARN_KVKFileIsInSourceFormat = SevWarn | 0x0A2; - static Warn_KVKFileIsInSourceFormat = () => m(this.WARN_KVKFileIsInSourceFormat, `.kvk file should be binary but is an XML file`); + static Warn_KVKFileIsInSourceFormat = () => mc(this.WARN_KVKFileIsInSourceFormat, `.kvk file should be binary but is an XML file`); // kmcmplib: static Warn_DontMixChiralAndNonChiralModifiers = () => m(this.WARN_DontMixChiralAndNonChiralModifiers, `Don't mix the use of left/right modifiers with non-left/right modifiers in the same platform`); static WARN_DontMixChiralAndNonChiralModifiers = SevWarn | 0x0A3; - static Warn_DontMixChiralAndNonChiralModifiers = () => mw(this.WARN_DontMixChiralAndNonChiralModifiers, - `This keyboard contains Ctrl,Alt and LCtrl,LAlt,RCtrl,RAlt sets of modifiers. Use only one or the other set for web target.`); + static Warn_DontMixChiralAndNonChiralModifiers = () => mw( + this.WARN_DontMixChiralAndNonChiralModifiers, + `This keyboard contains Ctrl,Alt and LCtrl,LAlt,RCtrl,RAlt sets of modifiers. Use only one or the other set for web target.`, + ); static WARN_MixingLeftAndRightModifiers = SevWarn | 0x0A4; - static Warn_MixingLeftAndRightModifiers = () => m(this.WARN_MixingLeftAndRightModifiers, `Left and right modifiers should not both be used in the same rule`); + static Warn_MixingLeftAndRightModifiers = () => mc(this.WARN_MixingLeftAndRightModifiers, `Left and right modifiers should not both be used in the same rule`); static WARN_LanguageHeadersDeprecatedInKeyman10 = SevWarn | 0x0A5; - static Warn_LanguageHeadersDeprecatedInKeyman10 = () => m(this.WARN_LanguageHeadersDeprecatedInKeyman10, `This language header has been deprecated in Keyman 10. Instead, add language metadata in the package file`); + static Warn_LanguageHeadersDeprecatedInKeyman10 = () => mc(this.WARN_LanguageHeadersDeprecatedInKeyman10, `This language header has been deprecated in Keyman 10. Instead, add language metadata in the package file`); static HINT_NonUnicodeFile = SevHint | 0x0A6; - static Hint_NonUnicodeFile = () => m(this.HINT_NonUnicodeFile, `Keyman Developer has detected that the file has ANSI encoding. Consider converting this file to UTF-8`); + static Hint_NonUnicodeFile = () => mc(this.HINT_NonUnicodeFile, `Keyman Developer has detected that the file has ANSI encoding. Consider converting this file to UTF-8`); // static WARN_TooManyErrorsOrWarnings = SevWarn | 0x0A7; static WARN_HotkeyHasInvalidModifier = SevWarn | 0x0A8; - static Warn_HotkeyHasInvalidModifier = () => m(this.WARN_HotkeyHasInvalidModifier, `Hotkey has modifiers that are not supported. Use only SHIFT, CTRL and ALT`); + static Warn_HotkeyHasInvalidModifier = () => mc(this.WARN_HotkeyHasInvalidModifier, `Hotkey has modifiers that are not supported. Use only SHIFT, CTRL and ALT`); static WARN_TouchLayoutSpecialLabelOnNormalKey = SevWarn | 0x0A9; - static Warn_TouchLayoutSpecialLabelOnNormalKey = (o:{keyId:string, platformName:string, layerId:string, label:string, address:KeyAddress}) => - mw(this.WARN_TouchLayoutSpecialLabelOnNormalKey, + static Warn_TouchLayoutSpecialLabelOnNormalKey = (o:{keyId:string, platformName:string, layerId:string, label:string, address:KeyAddress}) => mw( + this.WARN_TouchLayoutSpecialLabelOnNormalKey, `Key "${def(o.keyId)}" on platform "${def(o.platformName)}", layer "${def(o.layerId)}" (${keyAddress(o.address)}) does not have `+ - `the key type "Special" or "Special (active)" but has the label "${def(o.label)}". This feature is only supported in Keyman 14 or later`); + `the key type "Special" or "Special (active)" but has the label "${def(o.label)}". This feature is only supported in Keyman 14 or later`, + ); static WARN_OptionStoreNameInvalid = SevWarn | 0x0AA; - static Warn_OptionStoreNameInvalid = (o:{name:string}) => mw(this.WARN_OptionStoreNameInvalid, - `The option store ${def(o.name)} should be named with characters in the range A-Z, a-z, 0-9 and _ only.`); + static Warn_OptionStoreNameInvalid = (o:{name:string}) => mw( + this.WARN_OptionStoreNameInvalid, + `The option store ${def(o.name)} should be named with characters in the range A-Z, a-z, 0-9 and _ only.`, + ); static WARN_NulNotFirstStatementInContext = SevWarn | 0x0AB; - static Warn_NulNotFirstStatementInContext = () => m(this.WARN_NulNotFirstStatementInContext, `nul must be the first statement in the context`); + static Warn_NulNotFirstStatementInContext = () => mc(this.WARN_NulNotFirstStatementInContext, `nul must be the first statement in the context`); static WARN_IfShouldBeAtStartOfContext = SevWarn | 0x0AC; - static Warn_IfShouldBeAtStartOfContext = () => m(this.WARN_IfShouldBeAtStartOfContext, `if, platform and baselayout should be at start of context (after nul, if present)`); + static Warn_IfShouldBeAtStartOfContext = () => mc(this.WARN_IfShouldBeAtStartOfContext, `if, platform and baselayout should be at start of context (after nul, if present)`); static WARN_KeyShouldIncludeNCaps = SevWarn | 0x0AD; - static Warn_KeyShouldIncludeNCaps = () => m(this.WARN_KeyShouldIncludeNCaps, `Other rules which reference this key include CAPS or NCAPS modifiers, so this rule must include NCAPS modifier to avoid inconsistent matches`); + static Warn_KeyShouldIncludeNCaps = () => mc(this.WARN_KeyShouldIncludeNCaps, `Other rules which reference this key include CAPS or NCAPS modifiers, so this rule must include NCAPS modifier to avoid inconsistent matches`); static HINT_UnreachableRule = SevHint | 0x0AE; - static Hint_UnreachableRule = (o:KmcmpLibMessageParameters) => m( + static Hint_UnreachableRule = (o:KmcmpLibMessageParameters) => mc( this.HINT_UnreachableRule, `This rule will never be matched as the rule on line ${o.p?.[0]} takes precedence` ); static WARN_VirtualKeyInOutput = SevWarn | 0x0AF; - static Warn_VirtualKeyInOutput = () => m(this.WARN_VirtualKeyInOutput, `Virtual keys are not supported in output`); + static Warn_VirtualKeyInOutput = () => mc(this.WARN_VirtualKeyInOutput, `Virtual keys are not supported in output`); static HINT_IndexStoreLong = SevHint | 0x0B0; - static Hint_IndexStoreLong = () => m( + static Hint_IndexStoreLong = () => mc( this.HINT_IndexStoreLong, `The store referenced in index() is longer than the store referenced in any()`, ); static ERROR_ContextExCannotReferenceIf = SevError | 0x0B1; - static Error_ContextExCannotReferenceIf = () => m( + static Error_ContextExCannotReferenceIf = () => mc( this.ERROR_ContextExCannotReferenceIf, `The offset in context() points to a non-character if() statement in the context`, ); static ERROR_ContextExCannotReferenceNul = SevError | 0x0B2; - static Error_ContextExCannotReferenceNul = () => m( + static Error_ContextExCannotReferenceNul = () => mc( this.ERROR_ContextExCannotReferenceNul, `The offset in context() points to a non-character nul statement in the context`, ); static ERROR_TextBeforeOrAfterNulInOutput = SevError | 0x0B3; - static Error_TextBeforeOrAfterNulInOutput = () => m( + static Error_TextBeforeOrAfterNulInOutput = () => mc( this.ERROR_TextBeforeOrAfterNulInOutput, `A rule with a nul statement in the output cannot also output text or text-emitting statements`, `If a rule has [\`nul\`](https://help.keyman.com/developer/language/reference/nul) @@ -774,66 +863,70 @@ export class KmnCompilerMessages { ); static ERROR_NameMustBeAtLeastOneCharLong = SevError | 0x0B4; - static Error_NameMustBeAtLeastOneCharLong = () => m( + static Error_NameMustBeAtLeastOneCharLong = () => mc( this.ERROR_NameMustBeAtLeastOneCharLong, `The name parameter is required`, ); static ERROR_NameMustBeAtMostNCharsLong = SevError | 0x0B5; - static Error_NameMustBeAtMostNCharsLong = (o:{name:string,length:string}) => m( + static Error_NameMustBeAtMostNCharsLong = (o: KmcmpLibMessageParameters) => mc( this.ERROR_NameMustBeAtMostNCharsLong, - `The referenced name '${def(o.name)}' must be at most ${def(o.length)} characters long`, + `The referenced name '${def(o.p?.[0])}' must be at most ${def(o.p?.[1])} characters long`, ); static ERROR_NameContainsInvalidCharacter = SevError | 0x0B6; - static Error_NameContainsInvalidCharacter = (o:{name:string}) => m( + static Error_NameContainsInvalidCharacter = (o: KmcmpLibMessageParameters) => mc( this.ERROR_NameContainsInvalidCharacter, - `The referenced name '${def(o.name)}' contains an invalid character`, + `The referenced name '${def(o.p?.[0])}' contains an invalid character`, `Names (or identifiers) must not contain spaces, commas, parentheses, square brackets, control characters, or Unicode non-characters.` ); static ERROR_NameMustNotContainSpaces = SevError | 0x0B7; - static Error_NameMustNotContainSpaces = (o:{name:string}) => m( + static Error_NameMustNotContainSpaces = (o: KmcmpLibMessageParameters) => mc( this.ERROR_NameMustNotContainSpaces, - `The referenced name '${def(o.name)}' must not contain spaces`, + `The referenced name '${def(o.p?.[0])}' must not contain spaces`, `Names (or identifiers) must not contain spaces, commas, parentheses, square brackets, control characters, or Unicode non-characters.` ); static ERROR_NameMustNotContainComma = SevError | 0x0B8; - static Error_NameMustNotContainComma = (o:{name:string}) => m( + static Error_NameMustNotContainComma = (o: KmcmpLibMessageParameters) => mc( this.ERROR_NameMustNotContainComma, - `The referenced name '${def(o.name)}' must not contain commas`, + `The referenced name '${def(o.p?.[0])}' must not contain commas`, `Names (or identifiers) must not contain spaces, commas, parentheses, square brackets, control characters, or Unicode non-characters.` ); static ERROR_NameMustNotContainParentheses = SevError | 0x0B9; - static Error_NameMustNotContainParentheses = (o:{name:string}) => m( + static Error_NameMustNotContainParentheses = (o: KmcmpLibMessageParameters) => mc( this.ERROR_NameMustNotContainParentheses, - `The referenced name '${def(o.name)}' must not contain opening or closing parentheses`, + `The referenced name '${def(o.p?.[0])}' must not contain opening or closing parentheses`, `Names (or identifiers) must not contain spaces, commas, parentheses, square brackets, control characters, or Unicode non-characters.` ); static ERROR_NameMustNotContainSquareBrackets = SevError | 0x0BA; - static Error_NameMustNotContainSquareBrackets = (o:{name:string}) => m( + static Error_NameMustNotContainSquareBrackets = (o: KmcmpLibMessageParameters) => mc( this.ERROR_NameMustNotContainSquareBrackets, - `The referenced name '${def(o.name)}' must not contain opening or closing square brackets`, + `The referenced name '${def(o.p?.[0])}' must not contain opening or closing square brackets`, `Names (or identifiers) must not contain spaces, commas, parentheses, square brackets, control characters, or Unicode non-characters.` ); static WARN_DeprecatedStatement = SevWarn | 0x0BB; - static Warn_DeprecatedStatement = (o: KmcmpLibMessageParameters) => m( + static Warn_DeprecatedStatement = (o: KmcmpLibMessageParameters) => mc( this.WARN_DeprecatedStatement, `The statement '${def(o.p?.[0])}' has been deprecated in Keyman ${def(o.p?.[1])}`, ); static FATAL_BufferOverflow = SevFatal | 0x0C0; - static Fatal_BufferOverflow = () => m(this.FATAL_BufferOverflow, `The compiler memory buffer overflowed`); + static Fatal_BufferOverflow = () => mc(this.FATAL_BufferOverflow, `The compiler memory buffer overflowed`); // static FATAL_Break = SevFatal | 0x0C1; - // static Fatal_Break = () => m(this.FATAL_Break, `Compiler interrupted by user`); + // static Fatal_Break = () => mc(this.FATAL_Break, `Compiler interrupted by user`); + + // ------------------------------------------------------------------------------------------------ + // end of kmcmplib messages + // ------------------------------------------------------------------------------------------------ }; diff --git a/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts b/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts index 09466f7229..d34c791f48 100644 --- a/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts +++ b/developer/src/kmc-kmn/test/kmn-compiler-messages.tests.ts @@ -3,9 +3,24 @@ import { assert } from 'chai'; import { CompilerErrorMask, CompilerErrorNamespace } from '@keymanapp/developer-utils'; import { TestCompilerCallbacks, verifyCompilerMessagesObject } from '@keymanapp/developer-test-helpers'; import { KmnCompiler } from '../src/main.js'; -import { KmnCompilerMessageRanges, KmnCompilerMessages } from '../src/compiler/kmn-compiler-messages.js'; +import { KmcKmnCompilerEvent, KmnCompilerMessageRanges, KmnCompilerMessages } from '../src/compiler/kmn-compiler-messages.js'; import { makePathToFixture } from './helpers/index.js'; + +// Source - https://stackoverflow.com/a/9924463 +// Posted by Jack Allan, modified by community. See post 'Timeline' for change history +// Retrieved 2026-09-01, License - CC BY-SA 3.0 +function getParamNames(func: any) { + const STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg; + const ARGUMENT_NAMES = /([^\s,]+)/g; + const fnStr = func.toString().replace(STRIP_COMMENTS, ''); + let result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES); + if(result === null) + result = []; + return result; +} + + describe('KmnCompilerMessages', function () { const callbacks = new TestCompilerCallbacks(this); @@ -13,6 +28,53 @@ describe('KmnCompilerMessages', function () { return verifyCompilerMessagesObject(KmnCompilerMessages, CompilerErrorNamespace.KmnCompiler); }); + it('should have correct parameter types and numeric ranges for kmcmplib vs kmw vs kmc-kmn messages', function() { + // See comment in kmn-compiler-messages.ts for logic. + // This function follows the same pattern as `verifyCompilerMessagesObject` but with specific tests for + // this more constrained object + const toTitleCase = (s: string) => s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase(); + const keys = Object.keys(KmnCompilerMessages); + const m = KmnCompilerMessages as Record; + + for(const key of keys) { + if(typeof m[key] == 'number') { + const o = /^(DEBUG|VERBOSE|INFO|HINT|WARN|ERROR|FATAL)_([A-Za-z0-9_]+)$/.exec(key); + const f = toTitleCase(o[1]) + '_' + o[2]; + // note: validation done in verifyCompilerMessagesObject, don't repeat it here + + const v: KmcKmnCompilerEvent = m[f]('','','','','','','','','','','','' /* ignore arguments*/); + + const code = m[key] & CompilerErrorMask.BaseError; + const hex = code.toString(16).padStart(3, '0'); + + if(code >= KmnCompilerMessageRanges.RANGE_CompilerMessage_Min &&code <= KmnCompilerMessageRanges.RANGE_CompilerMessage_Max) { + // kmc-kmn messages, should not be using mw() function or mc() function + // + assert.equal(v.kmcKmnSource, 'kmc-kmn', `expected ${v.kmcKmnSource} to equal 'kmc-kmn' for ${hex}, '${key}'.`); + } else if(code >= KmnCompilerMessageRanges.RANGE_KMN_COMPILER_MIN && code <= KmnCompilerMessageRanges.RANGE_KMN_COMPILER_MAX) { + // kmcmplib or kmw compiler messages, should not be using m() function or mx() function + assert.oneOf(v.kmcKmnSource, ['kmcmplib', 'kmw-compiler'], `expected ${v.kmcKmnSource} to equal 'kmcmplib' or 'kmw-compiler for ${hex}, '${key}'.`); + if(v.kmcKmnSource == 'kmcmplib') { + // The only allowed param is an object o with property p. We + // cannot test parameter shape directly, so we will compare + // outputs of calling if o.p is set, which should not match what + // we get when o.p is not set. + const params = getParamNames(m[f]); + if(params.length) { + const v2: KmcKmnCompilerEvent = m[f]({p:['1','2','3','4','5','6','7','8','9']}); + assert.notEqual(v.message, v2.message, `Message '${key}' (${hex}) must use KmcmpLibMessageParameters pattern`); + } + } + } else if(code >= KmnCompilerMessageRanges.RANGE_LEXICAL_MODEL_MIN && code <= KmnCompilerMessageRanges.RANGE_LEXICAL_MODEL_MAX) { + assert.fail(`Message identifier ${hex} for '${key}' is reserved and should not be used (LEXICAL_MODEL range)`); + } else { + assert.fail(`Message identifier ${hex} for '${key}' is out of range`); + } + } + } + + }); + it('should have a 1:1 correspondence with kmn_compiler_errors.h', function() { const headerFilename = 'kmn_compiler_errors.h'; From e8fa8707789424631705986c7977a6079ce5671e Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 1 Sep 2026 10:22:56 +0200 Subject: [PATCH 36/84] chore(developer): address review comments Co-authored-by: Eberhard Beilharz --- developer/src/kmc/src/commands/build.ts | 2 +- developer/src/kmc/src/util/baseOptions.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/developer/src/kmc/src/commands/build.ts b/developer/src/kmc/src/commands/build.ts index b45dc23e97..4dc92ecc16 100644 --- a/developer/src/kmc/src/commands/build.ts +++ b/developer/src/kmc/src/commands/build.ts @@ -195,7 +195,7 @@ async function build(filename: string, outfileSpec: OutFileSpecification, parent let base = path.basename(filename); if(base.endsWith(builder.sourceExtension)) { - base = base.substring(base.length - builder.sourceExtension.length) + builder.compiledExtension; + base = base.substring(0, base.length - builder.sourceExtension.length) + builder.compiledExtension; } outfile = path.join(outfile, base); } diff --git a/developer/src/kmc/src/util/baseOptions.ts b/developer/src/kmc/src/util/baseOptions.ts index 0b6636705c..2f5d461744 100644 --- a/developer/src/kmc/src/util/baseOptions.ts +++ b/developer/src/kmc/src/util/baseOptions.ts @@ -51,7 +51,7 @@ export class BaseOptions { export class BuildBaseOptions extends BaseOptions { public static addOutFile(program: Command) { - return program.option('-o, --out-file ', 'Override default folder and/or filename for the output file; terminate with '+path.delimiter+' for folder') + return program.option('-o, --out-file ', 'Override default folder and/or filename for the output file; terminate with '+path.sep+' for folder') } public static addAll(program: Command) { From 7a613111478cb677f4ec2f57d4f9a33885ffaa15 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Tue, 1 Sep 2026 17:29:41 +0200 Subject: [PATCH 37/84] chore(web): tweak error message Previously the browser component and web engine had the same error message which made it harder to know where the exception happened if a call stack or source map were missing. This change modifies the message in engine. Related-to: $#16190 Build-bot: skip release:android,ios,web Test-bot: skip --- web/src/app/browser/src/contextManager.ts | 2 +- web/src/engine/src/main/contextManagerBase.ts | 2 +- web/src/test/manual/web/keyboard-errors/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/web/src/app/browser/src/contextManager.ts b/web/src/app/browser/src/contextManager.ts index 9598227110..51fafc480c 100644 --- a/web/src/app/browser/src/contextManager.ts +++ b/web/src/app/browser/src/contextManager.ts @@ -532,7 +532,7 @@ export class ContextManager extends ContextManagerBase { this.engineConfig.alertHost?.wait(); // clear the wait message box, either way. const message = (err as Error)?.message || - 'Sorry, the ' + keyboardId + ' keyboard for ' + languageCode + ' is not currently available.'; + `Sorry, the '${keyboardId}' keyboard for '${languageCode}' is not currently available.`; if(err instanceof KeyboardScriptError) { // We get signaled about error log messages if the site is connected to our Sentry error reporting diff --git a/web/src/engine/src/main/contextManagerBase.ts b/web/src/engine/src/main/contextManagerBase.ts index e9ddd9a18a..7ffe9056ba 100644 --- a/web/src/engine/src/main/contextManagerBase.ts +++ b/web/src/engine/src/main/contextManagerBase.ts @@ -368,7 +368,7 @@ export abstract class ContextManagerBase const keyboardPromise = this.keyboardCache.fetchKeyboard(requestedStub.KI); const timeoutPromise = new Promise((resolve, reject) => { - const timeoutMsg = `Sorry, the ${requestedStub.name} keyboard for ${requestedStub.langName} is not currently available.`; + const timeoutMsg = `The download of the '${requestedStub.name}' keyboard for '${requestedStub.langName}' timed out.`; window.setTimeout(() => reject(new Error(timeoutMsg)), ContextManagerBase.TIMEOUT_THRESHOLD); }); diff --git a/web/src/test/manual/web/keyboard-errors/index.html b/web/src/test/manual/web/keyboard-errors/index.html index e00e2f714c..46b3966328 100644 --- a/web/src/test/manual/web/keyboard-errors/index.html +++ b/web/src/test/manual/web/keyboard-errors/index.html @@ -64,7 +64,7 @@
  • wrong-filename keyboard: "Unable to download wrong-filename keyboard for debugging"
  • non-parsable keyboard: "Error registering the non-parsable keyboard for debugging; keyboard script at ./unparsable.js may contain an error."
  • -
  • timeout keyboard: "Sorry, the timeout keyboard for debugging is not currently available."
  • +
  • timeout keyboard: "The download of the 'timeout' keyboard for 'debugging' timed out."

Return to testing home page

From 268b64eab56afc750954b9e8b2cfed5d429d2a96 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Fri, 31 Jul 2026 18:44:25 +0200 Subject: [PATCH 38/84] chore(web): update file headers Build-bot: skip Test-bot: skip --- web/src/app/ui/kmwuibutton.ts | 9 ++++----- web/src/app/ui/kmwuifloat.ts | 9 ++++----- web/src/app/ui/kmwuitoggle.ts | 7 +++---- web/src/app/ui/kmwuitoolbar.ts | 9 ++++----- 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/web/src/app/ui/kmwuibutton.ts b/web/src/app/ui/kmwuibutton.ts index d375dae5ca..5f115f68d0 100644 --- a/web/src/app/ui/kmwuibutton.ts +++ b/web/src/app/ui/kmwuibutton.ts @@ -1,7 +1,6 @@ -/*** - KeymanWeb 17.0 - Copyright 2019-2023 SIL International -***/ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ import type { KeymanEngine, UIModule } from 'keyman/app/browser'; @@ -678,4 +677,4 @@ if(!keyman) { // but also call initialization when script loaded, which is after KMW initialization for asynchronous script loading ui.initialize(); } catch(err){} -} \ No newline at end of file +} diff --git a/web/src/app/ui/kmwuifloat.ts b/web/src/app/ui/kmwuifloat.ts index e89c8ab155..68e5606494 100644 --- a/web/src/app/ui/kmwuifloat.ts +++ b/web/src/app/ui/kmwuifloat.ts @@ -1,7 +1,6 @@ -/*** - KeymanWeb 17.0 - Copyright 2019-2023 SIL International -***/ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ import type { KeymanEngine, UIModule } from 'keyman/app/browser'; @@ -607,4 +606,4 @@ if(!keyman) { // Do not wrap in an anonymous function - let the closure compiler do that, but // use try...catch to avoid script errors and only execute if a desktop browser -} \ No newline at end of file +} diff --git a/web/src/app/ui/kmwuitoggle.ts b/web/src/app/ui/kmwuitoggle.ts index dc449c28e5..c8c01f1100 100644 --- a/web/src/app/ui/kmwuitoggle.ts +++ b/web/src/app/ui/kmwuitoggle.ts @@ -1,7 +1,6 @@ -/*** - KeymanWeb 17.0 - Copyright 2019-2023 SIL International -***/ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ import type { KeymanEngine, KeyboardCookie, UIModule } from 'keyman/app/browser'; import type { FloatingOSKViewCookie } from 'keyman/engine/osk'; diff --git a/web/src/app/ui/kmwuitoolbar.ts b/web/src/app/ui/kmwuitoolbar.ts index f121bb66cd..709f02a155 100644 --- a/web/src/app/ui/kmwuitoolbar.ts +++ b/web/src/app/ui/kmwuitoolbar.ts @@ -1,7 +1,6 @@ -/*** - KeymanWeb 17.0 - Copyright 2019-2023 SIL International -***/ +/* + * Keyman is copyright (C) SIL Global. MIT License. + */ import type { KeymanEngine, KeyboardCookie, KeyboardDetails, UIModule } from 'keyman/app/browser'; @@ -1441,4 +1440,4 @@ if(!keyman) { // (may happen in unit testing) ui.initialize(); // equivalent to ui.Initialize() from the other UI modules } catch(ex){} -} \ No newline at end of file +} From abf18cc8e09660f3b42fbd6ce76f71f5038da481 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Tue, 1 Sep 2026 13:03:58 -0500 Subject: [PATCH 39/84] auto: increment master version to 19.0.278 Test-bot: skip Build-bot: skip --- HISTORY.md | 18 ++++++++++++++++++ VERSION.md | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index f5c3aca81c..5780cbbd46 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,23 @@ # Keyman Version History +## 19.0.277 alpha 2026-09-01 + +* fix(developer): handle comment without trailing whitespace (#16479) +* fix(developer): improve scroll wheel behavior in Character Map (#16474) +* fix(developer): call 'Show Console' twice to make the console actually show on first use (#16483) +* fix(developer): use path not dependent on pwd for starting Server (#16476) +* chore(developer): remove duplicated versioning information from Server (#16478) +* fix(developer): handle leading delimiters correctly in `u16tok()` (#16446) +* chore(android): upload webview source map during android and ios build (#16449) +* refactor(windows): rename `GetCapsAndNumlockState()` to `RefreshModifierState()` (#16444) +* chore(developer): strip out defunct printing support (#16480) +* fix(developer): make tool windows non-topmost when TIKE is deactivated (#16482) +* fix(windows): simplify keyboard refresh and make it more on-demand (#16435) +* refactor(windows): cleanup unused wm_keyman_control values (#16439) +* maint(windows): remove `koSwitchLanguageForAllApplications`, `koAutoSwitchOSKPages`, osVista, osWin7, osWin8, cleanup (#16443) +* change(developer): deprecate `fix`, `clearcontext`, bump max .kmx version to 19.0 (#16445) +* fix(developer): add missing message parameters and cleanup kmc-kmn messages further (#16493) + ## 19.0.276 alpha 2026-08-28 * fix(windows): add manifest to insthelper and set trustinfo to asInvoker (#16430) diff --git a/VERSION.md b/VERSION.md index 414f9e906a..37a2860617 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -19.0.277 \ No newline at end of file +19.0.278 \ No newline at end of file From 7b6447c3e438c30eb826b685ebdcbea73486559d Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 09:52:51 +0200 Subject: [PATCH 40/84] fix(developer): improve validation of minDeviceWidth to match spec * Hint on multiple missing minDeviceWidth * Disallow blank or whitespace minDeviceWidth value * Additional tests for minDeviceWidth Fixes: #16457 Test-bot: skip --- developer/src/kmc-ldml/src/compiler/layr.ts | 19 ++++++++---- .../src/compiler/ldml-compiler-messages.ts | 10 ++++++- .../sections/layr/error-bad-width-.xml | 22 ++++++++++++++ .../sections/layr/error-bad-width-0.xml | 2 +- .../sections/layr/error-bad-width-1024.xml | 2 +- .../sections/layr/error-bad-width-1500.xml | 2 +- .../sections/layr/error-bad-width-x.xml | 2 +- ...e-touch-forms-without-min-device-width.xml | 29 +++++++++++++++++++ ...ple-forms-one-without-min-device-width.xml | 29 +++++++++++++++++++ developer/src/kmc-ldml/test/layr.tests.ts | 11 ++++++- 10 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-.xml create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/hint-multiple-touch-forms-without-min-device-width.xml create mode 100644 developer/src/kmc-ldml/test/fixtures/sections/layr/multiple-forms-one-without-min-device-width.xml diff --git a/developer/src/kmc-ldml/src/compiler/layr.ts b/developer/src/kmc-ldml/src/compiler/layr.ts index f260d4f2aa..822ea961b2 100644 --- a/developer/src/kmc-ldml/src/compiler/layr.ts +++ b/developer/src/kmc-ldml/src/compiler/layr.ts @@ -20,19 +20,26 @@ export class LayrCompiler extends SectionCompiler { let valid = true; let totalLayerCount = 0; let hardwareLayers = 0; - let touchLayers = 0; + let touchLayerCount = 0; + let hasNullDeviceWidth = false; const deviceWidths = new Set(); this.keyboard3.layers?.forEach((layers) => { const { formId } = layers; if (formId === 'touch') { - touchLayers++; + touchLayerCount++; totalLayerCount += layers.layer?.length; - // TODO-LDML: CLDR-19754 spec does not require minDeviceWidth, but if multiple touch forms then it would be important for differentiation const { minDeviceWidth } = layers; - if (!minDeviceWidth || + if (minDeviceWidth === undefined || minDeviceWidth === null) { + if(hasNullDeviceWidth) { + this.callbacks.reportMessage(LdmlCompilerMessages.Hint_MultipleTouchFormsWithoutMinDeviceWidth(layers)); + } + hasNullDeviceWidth = true; + } else if ( + (typeof minDeviceWidth === 'string' && (minDeviceWidth).trim() === '') || + Number.isNaN(Number(minDeviceWidth)) || minDeviceWidth < constants.layr_min_minDeviceWidth || - minDeviceWidth > constants.layr_max_minDeviceWidth || - Number.isNaN(Number(minDeviceWidth))) { + minDeviceWidth > constants.layr_max_minDeviceWidth + ) { valid = false; this.callbacks.reportMessage(LdmlCompilerMessages.Error_InvalidLayerWidth({minDeviceWidth}, layers)); } else if (deviceWidths.has(minDeviceWidth)) { diff --git a/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts b/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts index 7d0ae6e308..88c92f7e21 100644 --- a/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts +++ b/developer/src/kmc-ldml/src/compiler/ldml-compiler-messages.ts @@ -277,7 +277,7 @@ export class LdmlCompilerMessages { ); static ERROR_InvalidLayerWidth = SevError | 0x002D; - static Error_InvalidLayerWidth = (o: { minDeviceWidth: number }, compileContext?: ObjectWithCompileContext) => mx( + static Error_InvalidLayerWidth = (o: { minDeviceWidth: number | string }, compileContext?: ObjectWithCompileContext) => mx( this.ERROR_InvalidLayerWidth, compileContext, `Invalid Layers minDeviceWidth=${def(o.minDeviceWidth)}`, `Width must be between 1-999 (millimeters), inclusive.` // sync with layr_max_minDeviceWidth / layr_max_maxDeviceWidth (from spec) @@ -328,6 +328,14 @@ export class LdmlCompilerMessages { and should not have an \`id\` attribute. `); + static HINT_MultipleTouchFormsWithoutMinDeviceWidth = SevHint | 0x0035; + static Hint_MultipleTouchFormsWithoutMinDeviceWidth = (compileContext?: ObjectWithCompileContext) => mx( + this.HINT_MultipleTouchFormsWithoutMinDeviceWidth, compileContext, + `When multiple touch forms are present, 'minDeviceWidth' is required to differentiate them`, ` + Touch forms are differentiated by their minimum device width, so when there is + more than one, at most one form may omit the \`minDeviceWidth\` attribute. + `); + // // Transform syntax errors begin at ...F00 (SevErrorTransform) diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-.xml new file mode 100644 index 0000000000..ede584dc28 --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml index 956cc28019..bd3a58112a 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-0.xml @@ -19,7 +19,7 @@
- + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml index 50b22150f5..08796be62d 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1024.xml @@ -19,7 +19,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml index 87c30e9e46..2e101fdd03 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-1500.xml @@ -12,7 +12,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml index 392cc868b4..6106e9ab42 100644 --- a/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/error-bad-width-x.xml @@ -12,7 +12,7 @@ - + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-multiple-touch-forms-without-min-device-width.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-multiple-touch-forms-without-min-device-width.xml new file mode 100644 index 0000000000..dbf66bece9 --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/hint-multiple-touch-forms-without-min-device-width.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/fixtures/sections/layr/multiple-forms-one-without-min-device-width.xml b/developer/src/kmc-ldml/test/fixtures/sections/layr/multiple-forms-one-without-min-device-width.xml new file mode 100644 index 0000000000..e89c59610b --- /dev/null +++ b/developer/src/kmc-ldml/test/fixtures/sections/layr/multiple-forms-one-without-min-device-width.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/src/kmc-ldml/test/layr.tests.ts b/developer/src/kmc-ldml/test/layr.tests.ts index fa7a5889de..6d8918089c 100644 --- a/developer/src/kmc-ldml/test/layr.tests.ts +++ b/developer/src/kmc-ldml/test/layr.tests.ts @@ -173,7 +173,16 @@ describe('layr', function () { LdmlCompilerMessages.Error_DuplicateLayerWidth({ minDeviceWidth: 120}), ] }, - ...[0, 1024, 1500, `x` as unknown as number].map(minDeviceWidth => ({ + { + subpath: 'sections/layr/hint-multiple-touch-forms-without-min-device-width.xml', + warnings: [ + LdmlCompilerMessages.Hint_MultipleTouchFormsWithoutMinDeviceWidth(), + ] + }, + { + subpath: 'sections/layr/multiple-forms-one-without-min-device-width.xml', + }, + ...[0, 1024, 1500, `x`, ``].map(minDeviceWidth => ({ subpath: `sections/layr/error-bad-width-${minDeviceWidth}.xml`, errors: [ // From ab8c209647b38aec70c396e4073b0a6006244674 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 09:55:02 +0200 Subject: [PATCH 41/84] chore(developer): improve kmc-ldml test messages * Add more detail on each test name to show expected errors * Rename `build-fixtures` action to `fixtures-build` in build.sh, to reduce confusion with `build` action and allow shorthand usage. Test-bot: skip --- core/src/ldml/C7532_ldml_updating.md | 2 +- developer/src/kmc-ldml/build.sh | 4 +-- .../src/kmc-ldml/test/fixtures/basic.txt | 2 +- developer/src/kmc-ldml/test/helpers/index.ts | 26 ++++++++++++++++--- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/core/src/ldml/C7532_ldml_updating.md b/core/src/ldml/C7532_ldml_updating.md index 10d7708ada..2e812e4f8d 100644 --- a/core/src/ldml/C7532_ldml_updating.md +++ b/core/src/ldml/C7532_ldml_updating.md @@ -71,7 +71,7 @@ working on ‘layr’, using ‘disp’ as a model from https://github.com/keyma - update basic.xml and basic.txt - Tweak `eveloper/src/kmc-ldml/test/fixtures/basic.xml` as needed - - You can use `developer/src/kmc-ldml/build.sh build-fixtures` which will generate these. The two .kmx files are supposed to match: if not, fix `basic.txt` or fix other bugs. + - You can use `developer/src/kmc-ldml/build.sh fixtures-build` which will generate these. The two .kmx files are supposed to match: if not, fix `basic.txt` or fix other bugs. - `developer/src/kmc-ldml/build/test/fixtures/basic-txt.kmx` - KMX generated from basic.txt. - `developer/src/kmc-ldml/build/test/fixtures/basic-xml.kmx` - KMX generated from basic.xml. - `developer/src/kmc-ldml/build/test/fixtures/basic-xml.kvk` - KVK generated from basic.xml. diff --git a/developer/src/kmc-ldml/build.sh b/developer/src/kmc-ldml/build.sh index aa1ce44fff..bfbbfd70b0 100755 --- a/developer/src/kmc-ldml/build.sh +++ b/developer/src/kmc-ldml/build.sh @@ -23,7 +23,7 @@ builder_describe "Keyman kmc Keyboard Compiler module" \ "api analyze API and prepare API documentation" \ "clean" \ "test" \ - "build-fixtures builds test fixtures for manual examination" + "fixtures-build builds test fixtures for manual examination" builder_describe_outputs \ configure /developer/src/kmc-ldml/src/util/abnf/46/transform-from-required.js \ @@ -84,6 +84,6 @@ function do_build_fixtures() { builder_run_action clean do_clean builder_run_action configure do_configure builder_run_action build do_build -builder_run_action build-fixtures do_build_fixtures +builder_run_action fixtures-build do_build_fixtures builder_run_action api typescript_run_api_extractor developer/src/kmc-ldml main.d.ts builder_run_action test typescript_run_eslint_mocha_tests diff --git a/developer/src/kmc-ldml/test/fixtures/basic.txt b/developer/src/kmc-ldml/test/fixtures/basic.txt index f028f2155d..f8b75a2082 100644 --- a/developer/src/kmc-ldml/test/fixtures/basic.txt +++ b/developer/src/kmc-ldml/test/fixtures/basic.txt @@ -12,7 +12,7 @@ # # cd developer/src/kmc # ./build.sh configure build # if needed -# ./build.sh build-fixtures +# ./build.sh fixtures-build # # This will compile both the .xml and the .txt to build/test/fixtures and also emit the # checksum for basic-xml.kmx so you can patch that into this file. diff --git a/developer/src/kmc-ldml/test/helpers/index.ts b/developer/src/kmc-ldml/test/helpers/index.ts index be6216f9c1..2b424fb1c1 100644 --- a/developer/src/kmc-ldml/test/helpers/index.ts +++ b/developer/src/kmc-ldml/test/helpers/index.ts @@ -9,7 +9,7 @@ import { fileURLToPath } from 'url'; import { SectionCompiler, SectionCompilerNew } from '../../src/compiler/section-compiler.js'; import { util, KMXPlus, LdmlKeyboardTypes } from '@keymanapp/common-types'; import { CompilerEvent, compilerEventFormat, CompilerCallbacks, LDMLKeyboardXMLSourceFileReader, LDMLKeyboardTestDataXMLSourceFile, LDMLKeyboard, CompilerError } from "@keymanapp/developer-utils"; -import { LdmlKeyboardCompiler } from '../../src/main.js'; // make sure main.js compiles +import { LdmlCompilerMessages, LdmlKeyboardCompiler } from '../../src/main.js'; // make sure main.js compiles import { assert } from 'chai'; import { KMXPlusMetadataCompiler } from '../../src/compiler/metadata-compiler.js'; import { LdmlCompilerOptions } from '../../src/compiler/ldml-compiler-options.js'; @@ -20,7 +20,7 @@ import LDMLKeyboardXMLSourceFile = LDMLKeyboard.LDMLKeyboardXMLSourceFile; import DependencySections = KMXPlus.DependencySections; import Section = KMXPlus.Section; import { ElemCompiler, ListCompiler, StrsCompiler } from '../../src/compiler/empty-compiler.js'; -import { KmnCompiler } from '@keymanapp/kmc-kmn'; +import { KmnCompiler, KmnCompilerMessages } from '@keymanapp/kmc-kmn'; import { VarsCompiler } from '../../src/compiler/vars.js'; /** @@ -279,6 +279,18 @@ export function scrubContextFromMessages(messages: CompilerEvent[]): CompilerEve }); } +function messagesToString(messages?: CompilerEventOrMatch[]) { + return messages?.length + ? messages + .map(message => + Object.keys(LdmlCompilerMessages).find(key => (LdmlCompilerMessages)[key] === message.code) ?? + Object.keys(KmnCompilerMessages).find(key => (KmnCompilerMessages)[key] === message.code) ?? + 'unknown message' + ) + .join(', ') + : 'unknown'; +} + /** * Run a bunch of cases * @param cases cases to run @@ -290,8 +302,14 @@ export function testCompilationCases(compiler: SectionCompilerNew, cases : Compi const callbacks = new TestCompilerCallbacks(); for (const testcase of cases) { const expectFailure = testcase.throws || !!(testcase.errors); // if true, we expect this to fail - const testHeading = expectFailure ? `should fail to compile: ${testcase.subpath}`: - `should compile: ${testcase.subpath}`; + const testHeading = `${testcase.subpath}: ` + ( + testcase.throws ? `should fail to compile with an exception` : + typeof testcase.errors === 'boolean' ? `should fail to compile with errors` : + testcase.errors?.length ? `should fail to compile with errors: ${messagesToString(testcase.errors)}` : + testcase.warnings?.length ? `should compile with hints or warnings: ${messagesToString(testcase.warnings)}` : + 'should compile without hints, warnings, or errors' + ); + it(testHeading, async function () { callbacks.clear(); // special case for an expected exception From 405111d815ec6cd79c55d0ecaf6ba971af96f0d2 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 10:40:41 +0200 Subject: [PATCH 42/84] fix(web): remove deprecated `onunload` handler The `onunload` event is deprecated. The only thing we do is cleanup, which is not necessary if the page is being unloaded anyway. Fixes: #16477 Test-bot: skip --- .../browser/src/context/pageIntegrationHandlers.ts | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/web/src/app/browser/src/context/pageIntegrationHandlers.ts b/web/src/app/browser/src/context/pageIntegrationHandlers.ts index eebf0ebde5..8c2931731d 100644 --- a/web/src/app/browser/src/context/pageIntegrationHandlers.ts +++ b/web/src/app/browser/src/context/pageIntegrationHandlers.ts @@ -168,17 +168,6 @@ export class PageIntegrationHandlers { } } - /** - * Function _WindowUnload - * Scope Private - * Description Remove handlers before detaching KMW window - */ - private _WindowUnload: () => void = () => { - // Future note: should restrict this to anything for the corresponding document if on a - // child iframe, not the whole engine. - this.engine.shutdown(); - } - private attachHandlers() { const eventTracker = this.domEventTracker; const device = this.engine.config.hostDevice; @@ -203,7 +192,6 @@ export class PageIntegrationHandlers { } eventTracker.attachDOMEvent(window, 'load', this._WindowLoad, false); - eventTracker.attachDOMEvent(window, 'unload', this._WindowUnload,false); eventTracker.attachDOMEvent(document, 'keyup', this.engine.hotkeyManager._Process, false); } @@ -230,7 +218,6 @@ export class PageIntegrationHandlers { } eventTracker.detachDOMEvent(window, 'load', this._WindowLoad, false); - eventTracker.detachDOMEvent(window, 'unload', this._WindowUnload,false); eventTracker.detachDOMEvent(document, 'keyup', this.engine.hotkeyManager._Process, false); } From b3ca4fc178281046ffc7717b509b0282f637ce31 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 11:04:11 +0200 Subject: [PATCH 43/84] docs(developer): add comment to test fixtures to clarify expectations Fixes: #16496 Test-bot: skip Build-bot: skip --- .../keyboards/warn_deprecated_statement-clearcontext-17.kmn | 1 + .../keyboards/warn_deprecated_statement-clearcontext-19.kmn | 1 + .../test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn | 1 + .../test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn | 1 + 4 files changed, 4 insertions(+) diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn index efd08a91de..6e108a7852 100644 --- a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-17.kmn @@ -5,4 +5,5 @@ begin unicode > use(main) group(main) using keys +c NOTE: using `clearcontext` should not generate a warning in v17 target version compile (unlike v19 target version) + 'x' > clearcontext diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn index a67ee53c7a..0c2a68f8e2 100644 --- a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-clearcontext-19.kmn @@ -5,4 +5,5 @@ begin unicode > use(main) group(main) using keys +c NOTE: using `clearcontext` SHOULD generate a warning in v19 target version compile (unlike v17 target version) + 'x' > clearcontext diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn index 83d1086324..7d2d9f5df8 100644 --- a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-17.kmn @@ -5,4 +5,5 @@ begin unicode > use(main) group(main) using keys +c NOTE: using `fix` should not generate a warning in v17 target version compile (unlike v19 target version) + 'x' > fix diff --git a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn index 18f1b2af7a..c575136604 100644 --- a/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn +++ b/developer/src/kmc-kmn/test/fixtures/keyboards/warn_deprecated_statement-fix-19.kmn @@ -5,4 +5,5 @@ begin unicode > use(main) group(main) using keys +c NOTE: using `fix` SHOULD generate a warning in v19 target version compile (unlike v17 target version) + 'x' > fix From a94fec4c912b1bc2c989c2adb96c7f86a4c4083a Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 11:13:49 +0200 Subject: [PATCH 44/84] fix(developer): hide keyboard uninstall confirmation This side-steps #8227 by removing an unnecessary confirmation dialog, without needing to change exit codes from kmshell, which would be a more impactful change. (Perhaps kmshell should return non-zero if the Cancel button is pressed in the uninstall confirmation dialog, but don't want to make that change at this point.) Fixes: #8227 --- developer/src/tike/main/KeymanDeveloperUtils.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developer/src/tike/main/KeymanDeveloperUtils.pas b/developer/src/tike/main/KeymanDeveloperUtils.pas index fe2e60f939..9eed5efd45 100644 --- a/developer/src/tike/main/KeymanDeveloperUtils.pas +++ b/developer/src/tike/main/KeymanDeveloperUtils.pas @@ -285,7 +285,7 @@ begin if not GetKmshellPath(kmshell) then Exit(False); - Result := TUtilExecute.WaitForProcess('"'+kmshell+'" -uk "'+nm+'"', ExtractFilePath(kmshell)); // I3475 + Result := TUtilExecute.WaitForProcess('"'+kmshell+'" -uk "'+nm+'" -s', ExtractFilePath(kmshell)); // I3475 end; function UninstallPackage(const nm: string): Boolean; From 9ae2a088a6205e18abc7456ac75591802737b144 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 12:03:00 +0200 Subject: [PATCH 45/84] fix(developer): remember presentation when switching platforms in touch layout editor Fixes: #11209 --- developer/src/tike/xml/layoutbuilder/builder.js | 10 +++++++++- developer/src/tike/xml/layoutbuilder/constants.js | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/developer/src/tike/xml/layoutbuilder/builder.js b/developer/src/tike/xml/layoutbuilder/builder.js index 8915308d6f..2e3a0f9aa9 100644 --- a/developer/src/tike/xml/layoutbuilder/builder.js +++ b/developer/src/tike/xml/layoutbuilder/builder.js @@ -10,6 +10,7 @@ $(function() { this.yscale = 1; this.uniqId = 1; + this.lastPresentations = {...this.defaultPresentations}; this.getPresentation = function () { return $('#selPlatformPresentation').val(); @@ -41,6 +42,7 @@ $(function() { } builder.selPlatformPresentationChange = function () { + builder.lastPresentations[builder.lastPlatform] = builder.getPresentation(); let lastSelection = builder.saveSelection(); builder.selectKey(null, false); builder.selectSubKey(null); @@ -493,6 +495,9 @@ $(function() { } var option = $(document.createElement('option')); option.attr('value', i).text(this.presentations[i].name); + if(builder.lastPresentations[builder.lastPlatform] == i) { + option.attr('selected', true); + } listContainer.append(option); } @@ -1079,7 +1084,8 @@ $(function() { var state = { platform: builder.lastPlatform, layer: builder.lastLayerIndex, - presentation: $('#selPlatformPresentation').val() + presentation: $('#selPlatformPresentation').val(), + lastPresentations: builder.lastPresentations, }; var key = builder.selectedKey(); @@ -1119,6 +1125,8 @@ $(function() { $('#selPlatformPresentation').val($('#selPlatformPresentation option:first').val()); } + builder.lastPresentations = {...(data.lastPresentations ?? this.defaultPresentations)}; + let selection = builder.saveSelection(); builder.prepareLayer(); builder.restoreSelection(selection); diff --git a/developer/src/tike/xml/layoutbuilder/constants.js b/developer/src/tike/xml/layoutbuilder/constants.js index 117020e5d5..d3fd02667e 100644 --- a/developer/src/tike/xml/layoutbuilder/constants.js +++ b/developer/src/tike/xml/layoutbuilder/constants.js @@ -631,6 +631,8 @@ $(function() { "desktop": { "x": 640, "y": 300, "name": "Desktop" }, }; + this.defaultPresentations = { "tablet": "tablet-ipad-landscape", "phone": "phone-iphone5-landscape", "desktop": "desktop" }; + this.keyMargin = 15; // from kmwosk.js: From cdd0f7370c372459b8a93e4bc116a04d9a7c5202 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 2 Sep 2026 12:10:41 +0200 Subject: [PATCH 46/84] fix(developer): remember layer when switching platforms in touch layout editor Remembers the last selected layer for each platform. Fixes: #11209 --- developer/src/tike/xml/layoutbuilder/builder.js | 5 ++++- developer/src/tike/xml/layoutbuilder/layer-controls.js | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/developer/src/tike/xml/layoutbuilder/builder.js b/developer/src/tike/xml/layoutbuilder/builder.js index 2e3a0f9aa9..b81707fa3c 100644 --- a/developer/src/tike/xml/layoutbuilder/builder.js +++ b/developer/src/tike/xml/layoutbuilder/builder.js @@ -11,6 +11,7 @@ $(function() { this.uniqId = 1; this.lastPresentations = {...this.defaultPresentations}; + this.lastLayers = {}; this.getPresentation = function () { return $('#selPlatformPresentation').val(); @@ -502,7 +503,7 @@ $(function() { } builder.prepareLayers(); - builder.selectLayer(0); + builder.selectLayer(builder.lastLayers[builder.lastPlatform] ?? 0); } this.selectLayer = function (val) { @@ -1086,6 +1087,7 @@ $(function() { layer: builder.lastLayerIndex, presentation: $('#selPlatformPresentation').val(), lastPresentations: builder.lastPresentations, + lastLayers: builder.lastLayers, }; var key = builder.selectedKey(); @@ -1126,6 +1128,7 @@ $(function() { } builder.lastPresentations = {...(data.lastPresentations ?? this.defaultPresentations)}; + builder.lastLayers = {...(data.lastLayers ?? {})}; let selection = builder.saveSelection(); builder.prepareLayer(); diff --git a/developer/src/tike/xml/layoutbuilder/layer-controls.js b/developer/src/tike/xml/layoutbuilder/layer-controls.js index 0f1797d413..765aa5c2bd 100644 --- a/developer/src/tike/xml/layoutbuilder/layer-controls.js +++ b/developer/src/tike/xml/layoutbuilder/layer-controls.js @@ -174,6 +174,7 @@ $(function() { }); $('#selLayer').change(function () { + builder.lastLayers[builder.lastPlatform] = $('#selLayer').val(); if (builder.lastPlatform) builder.generate(false,false); let selection = builder.saveSelection(); builder.selectLayer(); From 8d6162358a5e8911d9859426c233d2022e7bb381 Mon Sep 17 00:00:00 2001 From: SabineSIL <86713187+SabineSIL@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:17:46 +0200 Subject: [PATCH 47/84] =?UTF-8?q?feat(developer):=20remove=20TODO-kmc-conv?= =?UTF-8?q?ert=20=F0=9F=98=8E=20(#16460)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit removes comment `TODO-KMC-CONVERT: Support sub-element 'anonymous actions' in the future` from keylayout-xml.ts since this concept is not used in kmc-convert at present and probably not planned to be worked on in near future Test-bot: skip --- .../src/common/web/utils/src/types/keylayout/keylayout-xml.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developer/src/common/web/utils/src/types/keylayout/keylayout-xml.ts b/developer/src/common/web/utils/src/types/keylayout/keylayout-xml.ts index 386da39fe6..75b8cf4e29 100644 --- a/developer/src/common/web/utils/src/types/keylayout/keylayout-xml.ts +++ b/developer/src/common/web/utils/src/types/keylayout/keylayout-xml.ts @@ -192,7 +192,7 @@ export interface KL_Key { * Ether the action attribute or the output attribute must be specified for a key, but not both. * kmc-convert does not use the concept of 'anonymous actions' at present. */ - action?: string; //TODO-KMC-CONVERT: Support sub-element 'anonymous actions' in the future + action?: string; /** * The output attribute specifies the character that is produced when a key is pressed. * Ether the action attribute or the output attribute must be specified for a key, but not both. From a1d50b35bb9321360de2b2448e25388b25de7c07 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Wed, 2 Sep 2026 15:04:40 +0200 Subject: [PATCH 48/84] Apply batched suggestions from code review Co-authored-by: Marc Durdin --- web/src/app/browser/src/contextManager.ts | 5 +++-- web/src/engine/src/main/contextManagerBase.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/web/src/app/browser/src/contextManager.ts b/web/src/app/browser/src/contextManager.ts index 51fafc480c..a164d63fa7 100644 --- a/web/src/app/browser/src/contextManager.ts +++ b/web/src/app/browser/src/contextManager.ts @@ -531,8 +531,9 @@ export class ContextManager extends ContextManagerBase { this.engineConfig.alertHost?.wait(); // clear the wait message box, either way. - const message = (err as Error)?.message || - `Sorry, the '${keyboardId}' keyboard for '${languageCode}' is not currently available.`; + + const message = + `Activation of '${keyboardId}' keyboard failed: ${(err as Error)?.message ?? err?.toString() ?? 'unknown error'}`; if(err instanceof KeyboardScriptError) { // We get signaled about error log messages if the site is connected to our Sentry error reporting diff --git a/web/src/engine/src/main/contextManagerBase.ts b/web/src/engine/src/main/contextManagerBase.ts index 7ffe9056ba..8554c124bc 100644 --- a/web/src/engine/src/main/contextManagerBase.ts +++ b/web/src/engine/src/main/contextManagerBase.ts @@ -368,7 +368,7 @@ export abstract class ContextManagerBase const keyboardPromise = this.keyboardCache.fetchKeyboard(requestedStub.KI); const timeoutPromise = new Promise((resolve, reject) => { - const timeoutMsg = `The download of the '${requestedStub.name}' keyboard for '${requestedStub.langName}' timed out.`; + const timeoutMsg = `Download of ${requestedStub.KI} for language ${requestedStub.langId} timed out.`; window.setTimeout(() => reject(new Error(timeoutMsg)), ContextManagerBase.TIMEOUT_THRESHOLD); }); From 67c7bfe9532b364a74d4ea110a57f4c4c1e8a32c Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Wed, 2 Sep 2026 15:23:30 +0200 Subject: [PATCH 49/84] chore(web): adjust expected error message in manual test --- web/src/app/browser/src/contextManager.ts | 5 ++--- web/src/test/manual/web/keyboard-errors/index.html | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/web/src/app/browser/src/contextManager.ts b/web/src/app/browser/src/contextManager.ts index a164d63fa7..2b58a598cb 100644 --- a/web/src/app/browser/src/contextManager.ts +++ b/web/src/app/browser/src/contextManager.ts @@ -531,9 +531,8 @@ export class ContextManager extends ContextManagerBase { this.engineConfig.alertHost?.wait(); // clear the wait message box, either way. - - const message = - `Activation of '${keyboardId}' keyboard failed: ${(err as Error)?.message ?? err?.toString() ?? 'unknown error'}`; + + const message = `Activation of '${keyboardId}' failed: ${(err as Error)?.message ?? err?.toString() ?? 'unknown error'}`; if(err instanceof KeyboardScriptError) { // We get signaled about error log messages if the site is connected to our Sentry error reporting diff --git a/web/src/test/manual/web/keyboard-errors/index.html b/web/src/test/manual/web/keyboard-errors/index.html index 46b3966328..325058fb7a 100644 --- a/web/src/test/manual/web/keyboard-errors/index.html +++ b/web/src/test/manual/web/keyboard-errors/index.html @@ -64,7 +64,7 @@
  • wrong-filename keyboard: "Unable to download wrong-filename keyboard for debugging"
  • non-parsable keyboard: "Error registering the non-parsable keyboard for debugging; keyboard script at ./unparsable.js may contain an error."
  • -
  • timeout keyboard: "The download of the 'timeout' keyboard for 'debugging' timed out."
  • +
  • timeout keyboard: "Activation of 'Keyboard_timeout' failed: Download of Keyboard_timeout for language lo timed out."

Return to testing home page

From a570108f8565b0110d726f1f40ffd5b6daf6f6d5 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Wed, 2 Sep 2026 19:34:00 +0200 Subject: [PATCH 50/84] chore(web): allow to run keyboard-errors test from build server --- web/src/test/manual/web/keyboard-errors/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/test/manual/web/keyboard-errors/index.html b/web/src/test/manual/web/keyboard-errors/index.html index 325058fb7a..45ed905739 100644 --- a/web/src/test/manual/web/keyboard-errors/index.html +++ b/web/src/test/manual/web/keyboard-errors/index.html @@ -71,7 +71,7 @@