Search the Community
Showing results for tags 'gdi+'.
-
I wrote a dll and the wrapper to convert non-animated WebP images to a GDI/GDI+ format / encode any GDI+ supported image to WebP format for use in Autoit. What is WebP? You can find more information about WebP and WebP tools / source codes here: https://developers.google.com/speed/webp Maybe useful for one or the other... 🙂 WebP.au3: ;Version 0.3.1 build 2022-06-13 beta #include-once #include <GDIPlus.au3> Enum $WEBP_PRESET_DEFAULT = 0, _ ; default preset. $WEBP_PRESET_PICTURE, _ ; digital picture, like portrait, inner shot $WEBP_PRESET_PHOTO, _ ; outdoor photograph, with natural lighting $WEBP_PRESET_DRAWING, _ ; hand or line drawing, with high-contrast details $WEBP_PRESET_ICON, _ ; small-sized colorful images $WEBP_PRESET_TEXT ; text-like ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_Ver ; Description ...: Displays the DLL version information in a messagebox window ; Syntax ........: WebP_Ver([$sPath2DLL = ""]) ; Parameters ....: $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir ; Return values .: None ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func WebP_Ver($sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found DllCall($sDLL, "none", "WebP_DLL_Version") Return True EndFunc ;==>WebP_Ver ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_Ver2 ; Description ...: Returns the DLL version information ; Syntax ........: WebP_Ver([$sPath2DLL = ""]) ; Parameters ....: $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir ; Return values .: DLL version ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func WebP_Ver2($sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found Return DllCall($sDLL, "str", "Web_DLL_Version2")[0] EndFunc ;==>WebP_Ver ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_BitmapGetInfo ; Description ...: Gets some rudimentary information about the WebP image ; Syntax ........: WebP_BitmapGetInfo($sFilename[, $sPath2DLL = ""]) ; Parameters ....: $sFilename - file to load ; $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir ; Return values .: Struct ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_BitmapGetInfo($sFilename, $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found If Not FileExists($sFilename) Then Return SetError(2, 0, 0) ;file not found Local $iFileSize = FileGetSize($sFilename), $nBytes Local $tBuffer = DllStructCreate("struct;byte bin[" & $iFileSize & "];endstruct") Local Const $hFile = _WinAPI_CreateFile($sFilename, 2, 2) _WinAPI_ReadFile($hFile, $tBuffer, $iFileSize, $nBytes) _WinAPI_CloseHandle($hFile) If Int(BinaryMid($tBuffer.bin, 1, 4)) <> 1179011410 Or Int(BinaryMid($tBuffer.bin, 9, 6)) <> 88331643929943 Then Return SetError(3, 0, 0) ;header must contain RIFF and WEBPVP Local $tWebPBitstreamFeatures = DllStructCreate("struct;long width; long height; long has_alpha; long has_animation; long format; ulong pad[5];endstruct") Local $iReturn = DllCall($sDLL, "long", "WebP_BitmapGetInfo", "struct*", $tBuffer, "uint", $iFileSize, "struct*", $tWebPBitstreamFeatures) If $iReturn = 0 Then Return SetError(4, 0, 0) Return $tWebPBitstreamFeatures EndFunc ;==>WebP_BitmapGetInfo ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_BitmapCreateGDIp ; Description ...: Converts (decodes) a WebP image from disk to a GDI / GDI+ bitmap handle ; Syntax ........: WebP_BitmasFilename[, $bGDIImage = False[, $sPath2DLL = ""]]) ; Parameters ....: $sFilename - file to load ; $bGDIImage - [optional] a boolean value. Default is False (GDIPlus bitmap handle). If True then output is GDI bitmap handle ; $bCountColors - [optional] a boolean value. Default is False. If True then the colors will be counted and saved in extended. Use @extended to get color count. ; $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir ; Return values .: GDI / GDIPlus bitmap handle and color count if $bCountColors = True in extended. ; Author ........: UEZ ; Modified ......: ; Remarks .......: Currently only WebP images are supported - no animated WebP images yet! ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_BitmapCreateGDIp($sFilename, $bGDIImage = False, $bCountColors = False, $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found If Not FileExists($sFilename) Then Return SetError(2, 0, 0) ;file not found Local $iFileSize = FileGetSize($sFilename), $nBytes Local $tBuffer = DllStructCreate("byte bin[" & $iFileSize & "]") Local Const $hFile = _WinAPI_CreateFile($sFilename, 2, 2) _WinAPI_ReadFile($hFile, $tBuffer, $iFileSize, $nBytes) _WinAPI_CloseHandle($hFile) If Int(BinaryMid($tBuffer.bin, 1, 4)) <> 1179011410 Or Int(BinaryMid($tBuffer.bin, 9, 6)) <> 88331643929943 Then Return SetError(3, 0, 0) ;header must contain RIFF and WEBPVP Local $tColors = DllStructCreate("struct;ulong cc;endstruct") Local Const $hBitmap = DllCall($sDLL, "ptr", "WebP_BitmapCreateGDIp", "struct*", $tBuffer, "uint", $iFileSize, "boolean", $bGDIImage, "boolean", $bCountColors, "struct*", $tColors)[0] If $hBitmap = 0 Then Return SetError(4, 0, 0) Return SetExtended($tColors.cc, $hBitmap) EndFunc ;==>WebP_BitmapCreateGDIp ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_BitmapCreateGDIpFromMem ; Description ...: Converts (decodes) a WebP image from memory to a GDI / GDI+ bitmap handle ; Syntax ........: WebP_BitmapCreateGDIpFromMem($tBuffer[, $iBufferSize = 0[, $bGDIImage = False[, $sPath2DLL = ""]]]) ; Parameters ....: $tBuffer - a dll struct with WebP binary data as content or pointer to the memory data ; $iBufferSize - the size of the binary data (file size) ; $bGDIImage - [optional] a boolean value. Default is False (GDIPlus bitmap handle). If True then output is GDI bitmap handle ; $bCountColors - [optional] a boolean value. Default is False. If True then the colors will be counted and saved in extended. Use @extended to get color count. ; $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir ; Return values .: GDI / GDIPlus bitmap handle and color count if $bCountColors = True in extended. ; Author ........: UEZ ; Modified ......: ; Remarks .......: Currently only WebP images are supported - no animated WebP images yet! ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_BitmapCreateGDIpFromMem($tBuffer, $iBufferSize = 0, $bGDIImage = False, $bCountColors = False, $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found If $iBufferSize = 0 Then Return SetError(2, 0, 0) Local $binMem If IsPtr($tBuffer) Then Local $tMem = DllStructCreate("byte bin[" & $iBufferSize & "]", $tBuffer) $binMem = $tMem.bin Else $binMem = DllStructGetData($tBuffer, 1) EndIf If Int(BinaryMid($binMem, 1, 4)) <> 1179011410 Or Int(BinaryMid($binMem, 9, 6)) <> 88331643929943 Then Return SetError(3, 0, 0) ;header must contain RIFF and WEBPVP Local $tColors = DllStructCreate("struct;ulong cc;endstruct") Local Const $hBitmap = DllCall($sDLL, "ptr", "WebP_BitmapCreateGDIp", "struct*", $tBuffer, "uint", $iBufferSize, "boolean", $bGDIImage, "boolean", $bCountColors, "struct*", $tColors)[0] If $hBitmap = 0 Then Return SetError(4, 0, 0) Return SetExtended($tColors.cc, $hBitmap) EndFunc ;==>WebP_BitmapCreateGDIpFromMem ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_CreateWebPLossySimpleFromBitmap ; Description ...: Converts a bitmap to WebP lossy image and save it to HD ; Syntax ........: WebP_CreateWebPLossySimpleFromBitmap($sFilename, $hBitmap[, $iQuality = 75[, $sPath2DLL = ""]]) ; Parameters ....: $sFilename - file to load ; $hBitmap - GDIPlus bitmap handle ; $iQuality - [optional] an integer value. Default is 75. Valid range is 0 - 100. ; $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir. ; Return values .: 0 for failure, 1 for success. ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_CreateWebPLossySimpleFromBitmap($sFilename, $hBitmap, $iQuality = 75, $sPath2DLL = "") If $sFilename = "" Then Return SetError(1, 0, 0) Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(2, 0, 0) ;DLL not found Local $iReturn = DllCall($sDLL, "long", "WebP_CreateWebPLossySimpleFromBitmap", "str", $sFilename, "ptr", $hBitmap, "float", $iQuality)[0] If $iReturn = 0 Then Return SetError(3, 0, 0) Return 1 EndFunc ;==>WebP_CreateWebPLossySimpleFromBitmap ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_CreateWebPLosslessSimpleFromBitmap ; Description ...: Converts a bitmap to WebP lossless image and save it to HD ; Syntax ........: WebP_CreateWebPLosslessSimpleFromBitmap($sFilename, $hBitmap[, $sPath2DLL = ""]) ; Parameters ....: $sFilename - file to load ; $hBitmap - GDIPlus bitmap handle ; $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir. ; Return values .: 0 for failure, 1 for success. ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_CreateWebPLosslessSimpleFromBitmap($sFilename, $hBitmap, $sPath2DLL = "") If $sFilename = "" Then Return SetError(1, 0, 0) Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(2, 0, 0) ;DLL not found Local $iReturn = DllCall($sDLL, "long", "WebP_CreateWebPLosslessSimpleFromBitmap", "str", $sFilename, "ptr", $hBitmap)[0] If $iReturn = 0 Then Return SetError(3, 0, 0) Return 1 EndFunc ;==>WebP_CreateWebPLosslessSimpleFromBitmap ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_CreateWebPAdvancedFromBitmap ; Description ...: Converts a bitmap to WebP lossy / lossless image and save it to HD ; Syntax ........: WebP_CreateWebPAdvancedFromBitmap($sFilename, $hBitmap[, $WebPPreset = $WEBP_PRESET_DEFAULT[, $lossless = 0[, ; $quality = 75.0[, $method = 4[, $sns_strength = 50[, $filter_sharpness = 0[, $filter_strength = 60[, ; $pass = 1[, $level = 6[, $sPath2DLL = ""]]]]]]]]]]) ; Parameters ....: $sFilename - file to load ; $hBitmap - GDIPlus bitmap handle ; $WebPPreset - [optional] an unknown value. Default is $WEBP_PRESET_DEFAULT. ; $lossless - [optional] an unknown value. Default is 0. 0 for lossy encoding / 1 for lossless.. ; $quality - [optional] an unknown value. Default is 75.0. Valid range is 0 - 100. ; $method - [optional] a map. Default is 4. Valid range is 0 - 6 (0=fast, 6=slower-better). ; $sns_strength - [optional] a string value. Default is 50. Spatial Noise Shaping. 0=off, 100=maximum ; $filter_sharpness - [optional] a floating point value. Default is 0. Range: [0 = off .. 7 = least sharp] ; $filter_strength - [optional] a floating point value. Default is 60. Range: [0 = off .. 100 = strongest] ; $pass - [optional] a pointer value. Default is 1. Number of entropy-analysis passes (in [1..10]). ; $level - [optional] an unknown value. Default is 6. Between 0 (fastest, lowest compression) and 9 (slower, best compression) only valid for lossless = 1! ; $near_lossless - [optional] an unknown value. Default is 100. Near lossless encoding [0 = max loss .. 100 = off (default)]. ; $alpha_compression - [optional] an unknown value. Default is 1. Algorithm for encoding the alpha plane (0 = none,1 = compressed with WebP lossless). Default is 1. ; $alpha_filtering - [optional] an unknown value. Default is 1. Predictive filtering method for alpha plane.0: none, 1: fast, 2: best. Default if 1. ; $alpha_quality - [optional] an unknown value. Default is 100. Between 0 (smallest size) and 100 (lossless). Default is 100. ; $target_size - [optional] an unknown value. Default is 0. If non-zero, set the desired target size in bytes. ; $NoSave - [optional] an unknown value. Default is False. ; $pMem - [optional] a string value. Default is Null. If $NoSave = True then the pointer to the memory which holds the data will be returned. ; $pCallback - [optional] a pointer value. Default is 0. Pointer to a callback address for progress hook. ; $sPath2DLL - [optional] a string value. Default is "". Path to WebP dll if not in script dir. ; Return values .: negative value for failure, 1 for success or the struct with information (pointers, size) if $NoSave = True ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_CreateWebPAdvancedFromBitmap($sFilename, $hBitmap, $WebPPreset = $WEBP_PRESET_DEFAULT, $lossless = 0, $quality = 75.0, $method = 4, $sns_strength = 50, _ $filter_sharpness = 0, $filter_strength = 60, $pass = 1, $level = 6, $near_lossless = 100, $alpha_compression = 1, $alpha_filtering = 1, $alpha_quality = 100, _ $target_size = 0, $NoSave = False, $pCallback = 0, $sPath2DLL = "") If $sFilename = "" And Not $NoSave Then Return SetError(1, 0, 0) Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(2, 0, 0) ;DLL not found Local $tMem = DllStructCreate("struct;ptr pPic; ptr pWriter; ptr pMemData; uint memsize;endstruct") Local $iReturn = DllCall($sDLL, "long", "WebP_CreateWebPAdvancedFromBitmap", _ "str", $sFilename, _ ;Webp filename "ptr", $hBitmap, _ ;handle to GDI+ bitmap "long", $WebPPreset, _ ;WebPPreset "long", $lossless, _ ;lossless "float", $quality, _ ;quality "long", $method, _ ;method "long", $sns_strength, _ ;sns_strength "long", $filter_sharpness, _ ;filter_sharpness "long", $filter_strength, _ ;filter_strength "long", $pass, _ ;pass "long", $level, _ ;level "long", $near_lossless, _ ;near_lossless "long", $alpha_compression, _ ;alpha_compression "long", $alpha_filtering, _ ;alpha_filtering "long", $alpha_quality, _ ;alpha_quality "long", $target_size, _ ;target_size "bool", $NoSave, _ ; "struct*", $tMem, _ ; "ptr", @AutoItX64 ? $pCallback : 0)[0] ;x86 crashes for unknown reason If $iReturn < 0 Then Return SetError(3, 0, $iReturn) If $NoSave And $tMem.memsize = 0 Then SetError(4, 0, 0) Return $NoSave ? $tMem : $iReturn EndFunc ;==>WebP_CreateWebPAdvancedFromBitmap ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_FreeUp ; Description ...: Release the ressources from $tMem struct ; Syntax ........: WebP_FreeUp(Byref $tMem[, $sPath2DLL = ""]) ; Parameters ....: $tMem - [in/out] a dll struct value. ; $sPath2DLL - [optional] a string value. Default is "". ; Return values .: 1 ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: https://developers.google.com/speed/webp ; Example .......: No ; =============================================================================================================================== Func WebP_FreeUp(ByRef $tMem, $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found Local $iReturn = DllCall($sDLL, "long", "WebP_FreeUp", "struct*", $tMem)[0] Return $iReturn EndFunc ;==>WebP_FreeUp ; #FUNCTION# ==================================================================================================================== ; Name ..........: BitmapCountColors ; Description ...: Counts the colors used by the bitmap ; Syntax ........: BitmapCountColors($hBitmap) ; Parameters ....: $hBitmap - a handle to a GDI+ bitmap. ; $bGDIImage - [optional] a boolean value. Default is False (GDIPlus bitmap handle). ; Return values .: Number of colors used by the image. ; Author ........: UEZ ; Modified ......: ; Remarks .......: The result may differ from other programs for JPG images depending on the decoder. ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func BitmapCountColors($hBitmap = 0, $bGDIImage = False, $sPath2DLL = "") If IsPtr($hBitmap) = 0 Or $hBitmap = 0 Then SetError(1, 0, 0) Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(2, 0, 0) ;DLL not found Local $iReturn = DllCall(Path2DLL(), "ulong", "BitmapCountColors", "ptr", $hBitmap)[0] Return $iReturn EndFunc ; #INTERNAL_USE_ONLY#============================================================================================================ ; Name...........: Path2DLL ; Description ...: Return the path to the _WebP_x??.dll ; Author ........: UEZ ; Modified.......: ; Remarks .......: This function is used internally by WebP.au3 ; =============================================================================================================================== Func Path2DLL($sPath2DLL = "") Return $sPath2DLL ? $sPath2DLL : @ScriptDir & (@AutoItX64 ? "\_WebP_x64.dll" : "\_WebP_x86.dll") EndFunc ;==>Path2DLL WebP Advanced Encoder GUI: ;Coded by UEZ build 2022-06-18 #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_Res_HiDpi=n #AutoIt3Wrapper_Version=p #AutoIt3Wrapper_Compile_Both=y #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /pe ;/rm #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #pragma compile(Icon, WebP_logo_2010_by_Simo99.ico) #pragma compile(FileVersion, 0.9.9.0) #pragma compile(ProductVersion, 3.3.16.1) #pragma compile(CompanyName, "UEZ Software Development") #pragma compile(ProductName, "WebP Advanced Encoder GUI") AutoItSetOption("MustDeclareVars", 1) #include <Array.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GuiMenu.au3> #include <GuiStatusBar.au3> #include <Memory.au3> #include <SliderConstants.au3> #include <StaticConstants.au3> #include <WinAPISysWin.au3> #include <WinAPITheme.au3> #include <WindowsConstants.au3> #include "WebP.au3" Break(0) If @OSBuild < 10240 Then MsgBox($MB_ICONWARNING, "Warning", "Your Windows version is not support!", 30) If WebP_Ver2() < "0.3.1" Then Exit MsgBox($MB_ICONERROR, "ERROR", "DLL Version v0.3.1+ required!", 30) Global Const $ver = "v0.99", $build = "build 2022-06-18" #Region TichySID Global Const $tagIMAGE_DOS_HEADER = 'WORD e_magic;WORD e_cblp;WORD e_cp;WORD e_crlc;WORD e_cparhdr;WORD e_minalloc;WORD e_maxalloc;WORD e_ss;WORD e_sp;WORD e_csum;WORD e_ip;WORD e_cs;WORD e_lfarlc;WORD e_ovno;WORD e_res[4];WORD e_oemid;WORD e_oeminfo;WORD e_res2[10];LONG e_lfanew;' Global Const $tagIMAGE_FILE_HEADER = 'WORD Machine;WORD NumberOfSections;DWORD TimeDateStamp;DWORD PointerToSymbolTable;DWORD NumberOfSymbols;WORD SizeOfOptionalHeader;WORD Characteristics;' Global $tagIMAGE_OPTIONAL_HEADER = 'WORD Magic;BYTE MajorLinkerVersion;BYTE MinorLinkerVersion;DWORD SizeOfCode;DWORD SizeOfInitializedData;DWORD SizeOfUninitializedData;DWORD AddressOfEntryPoint;DWORD BaseOfCode;DWORD BaseOfData;PTR ImageBase;DWORD SectionAlignment;DWORD FileAlignment;WORD MajorOperatingSystemVersion;WORD MinorOperatingSystemVersion;WORD MajorImageVersion;WORD MinorImageVersion;WORD MajorSubsystemVersion;WORD MinorSubsystemVersion;DWORD Win32VersionValue;DWORD SizeOfImage;DWORD SizeOfHeaders;DWORD CheckSum;WORD Subsystem;WORD DllCharacteristics;PTR SizeOfStackReserve;PTR SizeOfStackCommit;PTR SizeOfHeapReserve;PTR SizeOfHeapCommit;DWORD LoaderFlags;DWORD NumberOfRvaAndSizes;' If @AutoItX64 Then $tagIMAGE_OPTIONAL_HEADER = 'WORD Magic;BYTE MajorLinkerVersion;BYTE MinorLinkerVersion;DWORD SizeOfCode;DWORD SizeOfInitializedData;DWORD SizeOfUninitializedData;DWORD AddressOfEntryPoint;DWORD BaseOfCode;PTR ImageBase;DWORD SectionAlignment;DWORD FileAlignment;WORD MajorOperatingSystemVersion;WORD MinorOperatingSystemVersion;WORD MajorImageVersion;WORD MinorImageVersion;WORD MajorSubsystemVersion;WORD MinorSubsystemVersion;DWORD Win32VersionValue;DWORD SizeOfImage;DWORD SizeOfHeaders;DWORD CheckSum;WORD Subsystem;WORD DllCharacteristics;PTR SizeOfStackReserve;PTR SizeOfStackCommit;PTR SizeOfHeapReserve;PTR SizeOfHeapCommit;DWORD LoaderFlags;DWORD NumberOfRvaAndSizes;' Global Const $tagIMAGE_NT_HEADER = 'DWORD Signature;' & $tagIMAGE_FILE_HEADER & $tagIMAGE_OPTIONAL_HEADER Global Const $tagIMAGE_SECTION_HEADER = 'CHAR Name[8];DWORD VirtualSize;DWORD VirtualAddress;DWORD SizeOfRawData;DWORD PointerToRawData;DWORD PointerToRelocations;DWORD PointerToLinenumbers;WORD NumberOfRelocations;WORD NumberOfLinenumbers;DWORD Characteristics;' Global Const $tagIMAGE_DATA_DIRECTORY = 'DWORD VirtualAddress;DWORD Size;' Global Const $tagIMAGE_BASE_RELOCATION = 'DWORD VirtualAddress;DWORD SizeOfBlock;' Global Const $tagIMAGE_IMPORT_DESCRIPTOR = 'DWORD OriginalFirstThunk;DWORD TimeDateStamp;DWORD ForwarderChain;DWORD Name;DWORD FirstThunk;' Global Const $tagIMAGE_IMPORT_BY_NAME = 'WORD Hint;char Name[1];' Global Const $tagIMAGE_EXPORT_DIRECTORY = 'DWORD Characteristics;DWORD TimeDateStamp;WORD MajorVersion;WORD MinorVersion;DWORD Name;DWORD Base;DWORD NumberOfFunctions;DWORD NumberOfNames;DWORD AddressOfFunctions;DWORD AddressOfNames;DWORD AddressOfNameOrdinals;' Global $_KERNEL32DLL = DllOpen('kernel32.dll') Global $_MFHookPtr, $_MFHookBak, $_MFHookApi = 'LocalCompact' Global Const $tagModule = 'PTR ExportList;PTR CodeBase;PTR ImportList;PTR DllEntry;DWORD Initialized;' Global Const $SID_MEMORY = 1 Global Const $SID_NON_DEFAULT = 2 Global $hTitchysidDll, $iSubsongCount = 0 #EndRegion ; enum _PROCESS_DPI_AWARENESS -> https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx Global Enum $DPI_AWARENESS_INVALID = -1, $PROCESS_DPI_UNAWARE = 0, $PROCESS_SYSTEM_DPI_AWARE, $PROCESS_PER_MONITOR_DPI_AWARE ;https://docs.microsoft.com/en-us/windows/desktop/hidpi/dpi-awareness-context Global Enum $Context_UnawareGdiScaled = -5, $Context_PerMonitorAwareV2, $Context_PerMonitorAware, $Context_SystemAware, $Context_Unaware ; enum _MONITOR_DPI_TYPE Global Enum $MDT_EFFECTIVE_DPI = 0, $MDT_ANGULAR_DPI, $MDT_RAW_DPI Global Const $MDT_DEFAULT = $MDT_EFFECTIVE_DPI Global Const $SM_CXPADDEDBORDER = 92 _GDIPlus_Startup() ;~ Global $aDPI = _WinAPI_GetDpiForMonitor() ;_GDIPlus_GraphicsGetDPIRatio() Global $aDPI = [1, 1] Global $hGUI_About, $iFPS = 0, $iShowFPS = 0, $bExit, $bGUIBgColor = 0xFF808080 #Region GUI Global Const $SC_DRAGMOVE = 0xF012, $iW = 322, $iH = 694 Global Const $hGUI = GUICreate("WAE GUI " & $ver & " Beta by UEZ", $iW, $iH, @DesktopWidth - 330, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_APPWINDOW, $WS_EX_TOPMOST, $WS_EX_NOACTIVATE)) GUISetFont(10 * $aDPI[0], 400, 0, "Arial Narrow") Global Const $Title = GUICtrlCreateLabel("WebP Advanced Encoder GUI", 5, 8, 310, 41) GUICtrlSetFont(-1, 21 * $aDPI[0], 400, 0, "Arial Narrow") Global Const $icLoad = GUICtrlCreateIcon(@SystemDir & "\shell32.dll", -127, 8, 60, 32, 32, BitOR($GUI_SS_DEFAULT_ICON, $WS_BORDER)) GUICtrlSetTip(-1, "Load a GDI+ supported image") Global Const $icSave = GUICtrlCreateIcon(@SystemDir & "\shell32.dll", -259, 56, 60, 32, 32, BitOR($GUI_SS_DEFAULT_ICON, $WS_BORDER)) GUICtrlSetTip(-1, "Save compressed image in WebP format.") Global Const $icReset = GUICtrlCreateIcon(@SystemDir & "\shell32.dll", -239, 104, 60, 32, 32, BitOR($GUI_SS_DEFAULT_ICON, $WS_BORDER)) GUICtrlSetTip(-1, "Reset image position if image was moved (only for images larger than preview window).") GUICtrlCreateLabel("", 0, 106, 324, 2, $SS_ETCHEDHORZ) Global Const $lbPresets = GUICtrlCreateLabel("Presets", 10, 125, 39, 20) Global Const $cbPreset = GUICtrlCreateCombo("Default", 120, 120, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL)), $hcbPreset = GUICtrlGetHandle($cbPreset) GUICtrlSetData(-1, "Picture|Photo|Drawing|Icon|Text") Global Const $chkbLossless = GUICtrlCreateCheckbox("&Lossless", 120, 152, 97, 17) GUICtrlSetTip(-1, "Enable lossless compression. Default: lossy.") Global Const $lbEncoding = GUICtrlCreateLabel("Encoding", 10, 152, 48, 20) Global Const $lbQuality = GUICtrlCreateLabel("Quality", 10, 176, 36, 20) Global Const $slQuality = GUICtrlCreateSlider(116, 176, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslQuality = GUICtrlGetHandle($slQuality) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, 75) GUICtrlSetTip(-1, "Between 0 and 100. 0 gives the smallest size and 100 the largest.") Global Const $ipQuality = GUICtrlCreateInput("", 274, 172, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slQuality)) Global Const $lbMethod = GUICtrlCreateLabel("Method", 10, 210, 39, 20) Global Const $slMethod = GUICtrlCreateSlider(116, 210, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslMethod = GUICtrlGetHandle($slMethod) GUICtrlSetLimit(-1, 6, 0) GUICtrlSetData(-1, 4) GUICtrlSetTip(-1, "Quality/speed trade-off (0=fast, 6=slower-better.") Global Const $ipMethod = GUICtrlCreateInput("", 274, 206, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slMethod)) Global Const $lbSNS_Strength = GUICtrlCreateLabel("SNS-Strength", 10, 242, 66, 20) Global Const $slSNS_Strength = GUICtrlCreateSlider(116, 244, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslSNS_Strength = GUICtrlGetHandle($slSNS_Strength) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, 50) GUICtrlSetTip(-1, "Spatial Noise Shaping. 0=off, 100=maximum.") Global Const $ipSSN_Strength = GUICtrlCreateInput("", 274, 240, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slSNS_Strength)) Global Const $lbFilterSharpness = GUICtrlCreateLabel("Filter Sharpness", 10, 274, 81, 20) Global Const $slFilter_Sharpness = GUICtrlCreateSlider(116, 278, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslFilter_Sharpness = GUICtrlGetHandle($slFilter_Sharpness) GUICtrlSetLimit(-1, 7, 0) GUICtrlSetTip(-1, "Range: [0 = off .. 7 = least sharp].") Global Const $ipFilter_Sharpness = GUICtrlCreateInput("", 274, 274, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slFilter_Sharpness)) Global Const $lbFilter_Strength = GUICtrlCreateLabel("Filter Strenght", 010, 304, 69, 20) Global Const $slFilter_Strength = GUICtrlCreateSlider(116, 312, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslFilter_Strength = GUICtrlGetHandle($slFilter_Strength) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, 60) GUICtrlSetTip(-1, "Range: [0 = off .. 100 = strongest]") Global Const $ipFilter_Strength = GUICtrlCreateInput("", 274, 308, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slFilter_Strength)) Global Const $lbPass = GUICtrlCreateLabel("Pass", 10, 344, 27, 20) Global Const $slPass = GUICtrlCreateSlider(116, 346, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslPass = GUICtrlGetHandle($slPass) GUICtrlSetLimit(-1, 10, 1) GUICtrlSetData(-1, 6) GUICtrlSetTip(-1, "Number of entropy-analysis passes (in [1..10]).") Global Const $ipPass = GUICtrlCreateInput("", 274, 342, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slPass)) Global Const $lbNear_Lossless = GUICtrlCreateLabel("Near Lossless", 10, 378, 80, 20) Global Const $slNear_Lossless = GUICtrlCreateSlider(116, 380, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslNear_Lossless = GUICtrlGetHandle($slNear_Lossless) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, 60) GUICtrlSetTip(-1, "Specify the level of near-lossless image preprocessing. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default).") Global Const $ipNear_Lossless = GUICtrlCreateInput("", 274, 374, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slNear_Lossless)) Global Const $lbLevel = GUICtrlCreateLabel("Level", 10, 411, 30, 20) Global Const $slLevel = GUICtrlCreateSlider(116, 414, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslLevel = GUICtrlGetHandle($slLevel) GUICtrlSetLimit(-1, 9, 0) GUICtrlSetData(-1, 6) GUICtrlSetTip(-1, "Switch on lossless compression mode with the specified level between 0 and 9, with level 0 being the fastest, 9 being the slowest.") Global Const $ipLevel = GUICtrlCreateInput("", 274, 410, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slLevel)) Global Const $lbAlpha_Compression = GUICtrlCreateLabel("Alpha Compression", 10, 444, 96, 20) Global Const $chkbAlpha_Compression = GUICtrlCreateCheckbox("&Enable", 120, 444, 97, 17) GUICtrlSetState(-1, $GUI_CHECKED) Global Const $lbAlpha_Filtering = GUICtrlCreateLabel("Alpha Filtering", 10, 478, 71, 20) Global Const $slAlpha_Filtering = GUICtrlCreateSlider(114, 482, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslAlpha_Filtering = GUICtrlGetHandle($slAlpha_Filtering) GUICtrlSetLimit(-1, 2, 0) GUICtrlSetData(-1, 1) GUICtrlSetTip(-1, "Predictive filtering method for alpha plane. 0: none, 1: fast, 2: best. Default if 1.") Global Const $ipAlpha_Filtering = GUICtrlCreateInput("", 274, 478, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slAlpha_Filtering)) Global Const $lbAlpha_Quality = GUICtrlCreateLabel("Alpha Quality", 8, 516, 66, 20) Global Const $slAlpha_Quality = GUICtrlCreateSlider(114, 516, 158, 21, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_ENABLESELRANGE)), $hslAlpha_Quality = GUICtrlGetHandle($slAlpha_Quality) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, 100) GUICtrlSetTip(-1, "Between 0 (smallest size) and 100 (lossless).") Global Const $ipAlpha_Quality = GUICtrlCreateInput("", 274, 512, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slAlpha_Quality)) Global Const $lbTarget_Size = GUICtrlCreateLabel("Target Size", 10, 552, 58, 20) Global Const $ipTarget_Size = GUICtrlCreateInput("0", 120, 550, 121, 24, $ES_NUMBER) GUICtrlSetTip(-1, "If non-zero, set the desired target size in bytes (lossy mode only!).") Global Const $chkbCountColors = GUICtrlCreateCheckbox("&Count Colors", 10, 590, 87, 17) Global Const $lbColorOriginal = GUICtrlCreateLabel("Source:", 101, 590, 38, 20) Global Const $ipColorOriginal = GUICtrlCreateInput("0", 142, 588, 60, 24, BitOR($ES_NUMBER, $ES_READONLY)) Global Const $lbColorWebP = GUICtrlCreateLabel("WebP:", 215, 590, 32, 20) Global Const $ipColorWebP = GUICtrlCreateInput("0", 250, 588, 60, 24, BitOR($ES_NUMBER, $ES_READONLY)) Global Const $btnShow = GUICtrlCreateButton("Show Original Image", 10, 630, 123, 25) GUICtrlSetTip(-1, "Press lmb and hold it to display original image.") Global Const $btnApply = GUICtrlCreateButton("&Apply Settings", 188, 630, 123, 25) Global Const $StatusBar = _GUICtrlStatusBar_Create($hGUI), $iSBColor = 0xE9CFEC _WinAPI_SetWindowTheme($StatusBar, "", "") _GUICtrlStatusBar_SetText($StatusBar, " Welcome to 'WebP Advanced Encoder GUI' ٩(●̮̮̃•̃)۶") _GUICtrlStatusBar_SetBkColor($StatusBar, $iSBColor) Global Const $hGUI_Image = GUICreate("", 0, 0, -1, -1, $WS_EX_TOOLWINDOW, BitOR($WS_EX_TOOLWINDOW, $WS_EX_APPWINDOW)) GUISetBkColor(BitAND(0xFFFFFF, $bGUIBgColor), $hGUI_Image) Global Const $iPic_WebP = GUICtrlCreatePic("", 0, 0, 0, 0), $hPic_WebP = GUICtrlGetHandle($iPic_WebP) ;~ Global Const $iW_Zoom = @DesktopWidth * 0.25, $iH_Zoom = @DesktopHeight * 0.25 ;~ Global Const $hGUI_Image_Zoom = GUICreate("", $iW_Zoom, $iH_Zoom, 0, 0, $WS_POPUP) Global Const $dw = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME), $dh = _WinAPI_GetSystemMetrics($SM_CYDLGFRAME) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1 Global Enum $idAbout = 5000, $idResetPicPos, $idResetValues Global Const $hMenu_Sys = _GUICtrlMenu_GetSystemMenu($hGUI) _GUICtrlMenu_AppendMenu($hMenu_Sys, $MF_SEPARATOR, 0, 0) _GUICtrlMenu_AppendMenu($hMenu_Sys, $MF_STRING, $idAbout, "About") Global Const $hImage_Icon = _GDIPlus_BitmapCreateFromMemory(_WebP_Icon()) Global Const $hIcon = _GDIPlus_HICONCreateFromBitmap($hImage_Icon) _WinAPI_SetClassLongEx($hGUI, -34, $hIcon) _GDIPlus_ImageDispose($hImage_Icon) GUISetState(@SW_HIDE, $hGUI_Image) GUISetState(@SW_SHOW, $hGUI) ;~ GUISetState(@SW_SHOW, $hGUI_Image_Zoom) _WinAPI_SetProcessDpiAwarenessContext($Context_PerMonitorAwareV2, $hGUI, 2) Global Const $iDummy_About = GUICtrlCreateDummy(), $iDummy_Return = GUICtrlCreateDummy() Global $sFileLoad, $hImage, $hImage_GDI, $hHBitmap, $aDim, $aPixelFormat, $pMemData, $pMemData_Size, $tMem, $mp, $sFileSave, $hFile, $nBytes, $nBytes, $iResetPosX, $iResetPosY, _ $hImage_tmp GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES") GUIRegisterMsg($WM_LBUTTONDOWN, "WM_LBUTTONDOWN") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU") GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND") GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL") #EndRegion GUI Global $aGUIGetMsg, $aMPos1, $aMPos2, $iMPx, $iMPy, $iMPx_p = 0, $iMPy_p = 0, $bBigger = False, $iResult, $old_cursor, $bNew = False While 1 $mp = GUIGetCursorInfo($hGUI) If $hImage And $mp[2] And $mp[4] = $btnShow Then _WinAPI_DeleteObject(GUICtrlSendMsg($iPic_WebP, $STM_SETIMAGE, $IMAGE_BITMAP, $hImage_GDI)) While $mp[2] $mp = GUIGetCursorInfo($hGUI) Sleep(10) WEnd _WinAPI_DeleteObject(GUICtrlSendMsg($iPic_WebP, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap)) EndIf $mp = GUIGetCursorInfo($hGUI_Image) $aMPos1 = MouseGetPos() If $mp[4] = $iPic_WebP And $mp[2] And $bBigger And WinActive($hGUI_Image) Then While $mp[2] $mp = GUIGetCursorInfo($hGUI_Image) Sleep(10) $aMPos2 = MouseGetPos() $iMPx = $iMPx_p + $aMPos2[0] - $aMPos1[0] $iMPy = $iMPy_p + $aMPos2[1] - $aMPos1[1] ControlMove($hGUI_Image, "", $iPic_WebP, $iMPx, $iMPy) WEnd $iMPx_p = $iMPx $iMPy_p = $iMPy EndIf $aGUIGetMsg = GUIGetMsg(1) Switch $aGUIGetMsg[1] Case $hGUI Switch $aGUIGetMsg[0] Case $GUI_EVENT_CLOSE GUIRegisterMsg($WM_DROPFILES, "") GUIRegisterMsg($WM_LBUTTONDOWN, "") GUIRegisterMsg($WM_COMMAND, "") GUIRegisterMsg($WM_CONTEXTMENU, "") GUIRegisterMsg($WM_SYSCOMMAND, "") GUIRegisterMsg($WM_HSCROLL, "") ;~ If IsDllStruct($tMem) Then WebP_FreeUp($tMem) _WinAPI_DestroyIcon($hIcon) If $hImage_tmp Then _GDIPlus_ImageDispose($hImage_tmp) If $hImage Then _GDIPlus_ImageDispose($hImage) If $hHBitmap Then _WinAPI_DeleteObject($hHBitmap) If $hImage_GDI Then _WinAPI_DeleteObject($hImage_GDI) If $hGUI_Image Then GUIDelete($hGUI_Image) _GDIPlus_Shutdown() GUIDelete($hGUI_Image) GUIDelete($hGUI) DllClose($_KERNEL32DLL) Exit Case $btnApply, $iDummy_Return If $hImage Then CompressAndDisplay($hImage) EndIf Case $icLoad $sFileLoad = FileOpenDialog("Select an image to compress", "", "Images (*.jpg;*.bmp;*.png;*.gif;*.tif;*webp)") If @error Then ContinueLoop LoadImage($sFileLoad) Case $icSave If $hImage Then $sFileSave = FileSaveDialog("Save WebP Image", "", "WebP Image (*.webp)", BitOR($FD_PATHMUSTEXIST, $FD_PROMPTOVERWRITE), StringRegExpReplace($sFileLoad, ".+\\(.+)\..*", "$1") & ".webp", $hGUI) If @error Then ContinueLoop $hFile = _WinAPI_CreateFile($sFileSave, 1) $iResult = _WinAPI_WriteFile($hFile, $tMem.pMemData, $tMem.memsize, $nBytes) _WinAPI_CloseHandle($hFile) If Not $iResult Then MsgBox($MB_ICONERROR, "ERROR", "Unable to save WebP image to disk!", 30, $hGUI) Else MsgBox($MB_ICONINFORMATION, "Information", "WebP image successfully save to disk", 10, $hGUI) EndIf EndIf Case $icReset ResetImage() Case $slAlpha_Filtering GUICtrlSetData($ipAlpha_Filtering, GUICtrlRead($slAlpha_Filtering)) Case $slAlpha_Quality GUICtrlSetData($ipAlpha_Quality, GUICtrlRead($slAlpha_Quality)) Case $slFilter_Sharpness GUICtrlSetData($ipFilter_Sharpness, GUICtrlRead($slFilter_Sharpness)) Case $slFilter_Strength GUICtrlSetData($ipFilter_Strength, GUICtrlRead($slFilter_Strength)) Case $slLevel GUICtrlSetData($ipLevel, GUICtrlRead($slLevel)) Case $slMethod GUICtrlSetData($ipMethod, GUICtrlRead($slMethod)) Case $slNear_Lossless GUICtrlSetData($ipNear_Lossless, GUICtrlRead($slNear_Lossless)) Case $slPass GUICtrlSetData($ipPass, GUICtrlRead($slPass)) Case $slQuality GUICtrlSetData($ipQuality, GUICtrlRead($slQuality)) Case $slSNS_Strength GUICtrlSetData($ipSSN_Strength, GUICtrlRead($slSNS_Strength)) Case $iDummy_About AutoItSetOption("GUIOnEventMode", 1) GDIPlus_About(11 * $aDPI[0], 0.5, 18.5) AutoItSetOption("GUIOnEventMode", 0) EndSwitch Case $hGUI_Image Switch $aGUIGetMsg[0] Case $GUI_EVENT_CLOSE EndSwitch EndSwitch WEnd Func ResetImage() If $bBigger Then $iMPx_p = $iResetPosX $iMPy_p = $iResetPosY ControlMove($hGUI_Image, "", $iPic_WebP, $iMPx_p, $iMPy_p) EndIf EndFunc Func LoadImage($sFileLoad) If $hImage_tmp Then _GDIPlus_ImageDispose($hImage_tmp) If $hImage Then _GDIPlus_ImageDispose($hImage) If $hImage_GDI Then _WinAPI_DeleteObject($hImage_GDI) If StringRight($sFileLoad, 5) = ".webp" Then $hImage_tmp = WebP_BitmapCreateGDIp($sFileLoad) If @error Or $hImage_tmp = 0 Then Return MsgBox($MB_ICONERROR, "ERROR", "Unable to decode WebP image!", 30, $hGUI) EndIf Else $hImage_tmp = _GDIPlus_ImageLoadFromFile($sFileLoad) If @error Or $hImage_tmp = 0 Then Return MsgBox($MB_ICONERROR, "ERROR", "Unknown image format!", 30, $hGUI) EndIf EndIf $aPixelFormat = _GDIPlus_ImageGetPixelFormat($hImage_tmp) ;Local Const $aImageRawFormat = _GDIPlus_ImageGetRawFormat($hImage_tmp) If BitAND(GUICtrlRead($chkbCountColors), $GUI_CHECKED) Then GUICtrlSetData($ipColorOriginal, BitmapCountColors($hImage_tmp)) Else GUICtrlSetData($ipColorOriginal, 0) EndIf ;~ If $hImage_tmp Then ConsoleWrite("Original color count: " & BitmapCountColors($hImage_tmp) & @CRLF) $aDim = _GDIPlus_ImageGetDimension($hImage_tmp) $hImage = _GDIPlus_BitmapCreateFromScan0($aDim[0], $aDim[1]) Local Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hImage) If $aPixelFormat[0] = 2498570 Then _GDIPlus_GraphicsClear($hGfx, $bGUIBgColor) _GDIPlus_GraphicsDrawImageRect($hGfx, $hImage_tmp, 0, 0, $aDim[0], $aDim[1]) _GDIPlus_GraphicsDispose($hGfx) $hImage_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $bNew = True _WinAPI_LockWindowUpdate($hGUI) CompressAndDisplay($hImage, $aPixelFormat[1]) _WinAPI_LockWindowUpdate(0) EndFunc ;==>LoadImage Func CompressAndDisplay($hImage, $sFormat = "") Local $aDim = _GDIPlus_ImageGetDimension($hImage) If $hHBitmap Then _WinAPI_DeleteObject($hHBitmap) $pMemData = 0 $pMemData_Size = 0 Local $iPreset = GUICtrlRead($cbPreset) Switch $iPreset Case "Default" $iPreset = 0 Case "Picture" $iPreset = 1 Case "Photo" $iPreset = 2 Case "Drawing" $iPreset = 3 Case "Icon" $iPreset = 4 Case "Text" $iPreset = 5 EndSwitch ;~ If IsDllStruct($tMem) Then WebP_FreeUp($tMem) $old_cursor = MouseGetCursor() GUISetCursor(15, 1, $hGUI) _GUICtrlStatusBar_SetBkColor($StatusBar, 192) Local $iCallback = DllCallbackRegister("Progress", "long", "long;ptr"), $hCallback = DllCallbackGetPtr($iCallback) Sleep(10) Local $end, $fTimer = TimerInit() $tMem = WebP_CreateWebPAdvancedFromBitmap("", $hImage, _ $iPreset, _ BitAND(GUICtrlRead($chkbLossless), $GUI_CHECKED), _ GUICtrlRead($slQuality), _ GUICtrlRead($slMethod), _ GUICtrlRead($slSNS_Strength), _ GUICtrlRead($slFilter_Sharpness), _ GUICtrlRead($slFilter_Strength), _ GUICtrlRead($slPass), _ GUICtrlRead($slLevel), _ GUICtrlRead($slNear_Lossless), _ BitAND(GUICtrlRead($chkbAlpha_Compression), $GUI_CHECKED), _ GUICtrlRead($slAlpha_Filtering), _ GUICtrlRead($slAlpha_Quality), _ GUICtrlRead($ipTarget_Size), _ True, _ ;hold the compressed image in memory only, no save to HD! $hCallback) $end = TimerDiff($fTimer) DllCallbackFree($hCallback) ToolTip("") _GUICtrlStatusBar_SetBkColor($StatusBar, $iSBColor) GUISetCursor($old_cursor, 1, $hGUI) Local $iColorsWebp = 0 If IsDllStruct($tMem) Then _GUICtrlStatusBar_SetText($StatusBar, "WebP size: " & Round($tMem.memsize / 1024, 2) & " kb / encoded in " & Round($end, 2) & " ms.") $hHBitmap = WebP_BitmapCreateGDIpFromMem($tMem.pMemData, $tMem.memsize, True, BitAND(GUICtrlRead($chkbCountColors), $GUI_CHECKED)) If @error Then Return MsgBox($MB_ICONERROR, "ERROR", "Unable to compress image", 30, $hGUI) $iColorsWebp = @extended GUICtrlSetData($ipColorWebP, $iColorsWebp) If BitAND(GUICtrlRead($chkbCountColors), $GUI_CHECKED) And GUICtrlRead($ipColorOriginal) = "0" Then GUICtrlSetData($ipColorOriginal, BitmapCountColors($hImage_tmp)) ;~ ConsoleWrite("WebP image color count: " & @extended & @CRLF) Local $aTaskbar = WinGetPos("[CLASS:Shell_TrayWnd;INSTANCE:1]", ""), $tbw = 0, $tbh = 0 If $aTaskbar[2] > $aTaskbar[3] Then $tbh = $aTaskbar[3] ELse $tbw = $aTaskbar[2] EndIf Local Const $minw = 384, $minh = $minw * 10 / 16 Local $maxw = Min($aDim[0] + $dw, @DesktopWidth * 0.95), $maxh = Min($aDim[1] + $dh, @DesktopHeight * 0.95), $iNewW = 0, $iNewH = 0 If $aDim[0] + $dw > @DesktopWidth * 0.95 Or $aDim[1] + $dh > @DesktopHeight * 0.95 Then $bBigger = True Else $bBigger = False EndIf If $bNew Then $iNewW = Max($minw, $maxw) $iNewH = Max($minh, $maxh) WinMove($hGUI_Image, "", (@DesktopWidth - $iNewW - (@DesktopWidth - $iW > $iNewW ? $iW : 0)) / 2 - $tbw, (@DesktopHeight - $iNewH - $tbh) / 2, $iNewW, $iNewH) WinSetTitle($hGUI_Image, "", StringRegExpReplace($sFileLoad, ".+\\(.*)", "$1") & " / " & $aDim[0] & "x" & $aDim[1] & " px / " & $sFormat & " / " & Round(FileGetSize($sFileLoad) / 1024, 2) & " kb") $iNewH -= $dh ;_WinAPI_GetSystemMetrics($SM_CXBORDER) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + _WinAPI_GetSystemMetrics($SM_CXPADDEDBORDER) * 2 $iMPx_p = ($iNewW - $aDim[0]) / 2 $iMPy_p = ($iNewH - $aDim[1] - 4) / 2 $iResetPosX = $iMPx_p $iResetPosY = $iMPy_p GUICtrlSetPos($iPic_WebP, $iMPx_p, $iMPy_p, $iNewW - 1, $iNewH - 1) $bNew = False EndIf _WinAPI_DeleteObject(GUICtrlSendMsg($iPic_WebP, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap)) Local Const $iWC_State = WinGetState($hGUI_Image) If $iWC_State <> 7 Or $iWC_State <> 5 Then WinSetState($hGUI_Image, "", @SW_SHOW) WinActivate($hGUI_Image) EndIf WinActivate($hGUI) Else MsgBox($MB_ICONERROR, "ERROR", "DLL encode error " & $tMem, 30) EndIf EndFunc ;==>CompressAndDisplay Func Progress($progress, $ptr) ToolTip($progress & "%", MouseGetPos(0) - 40, MouseGetPos(1)) Return 1 EndFunc Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg, $wParam Switch $lParam Case $hslAlpha_Filtering GUICtrlSetData($ipAlpha_Filtering, GUICtrlRead($slAlpha_Filtering)) Case $hslAlpha_Quality GUICtrlSetData($ipAlpha_Quality, GUICtrlRead($slAlpha_Quality)) Case $hslFilter_Sharpness GUICtrlSetData($ipFilter_Sharpness, GUICtrlRead($slFilter_Sharpness)) Case $hslFilter_Strength GUICtrlSetData($ipFilter_Strength, GUICtrlRead($slFilter_Strength)) Case $hslLevel GUICtrlSetData($ipLevel, GUICtrlRead($slLevel)) Case $hslMethod GUICtrlSetData($ipMethod, GUICtrlRead($slMethod)) Case $hslNear_Lossless GUICtrlSetData($ipNear_Lossless, GUICtrlRead($slNear_Lossless)) Case $hslPass GUICtrlSetData($ipPass, GUICtrlRead($slPass)) Case $hslQuality GUICtrlSetData($ipQuality, GUICtrlRead($slQuality)) Case $hslSNS_Strength GUICtrlSetData($ipSSN_Strength, GUICtrlRead($slSNS_Strength)) EndSwitch Return "GUI_RUNDEFMSG" EndFunc ;==>WM_HSCROLL Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam) Local $i = 1 Local $aFileList = _WinAPI_DragQueryFileEx($wParam) Do If StringInStr(FileGetAttrib($aFileList[$i]), "D") Then _ArrayDelete($aFileList, $i) Else $i += 1 EndIf Until $i = UBound($aFileList) $aFileList[0] = UBound($aFileList) - 1 $sFileLoad = $aFileList[1] _WinAPI_DragFinish($wParam) LoadImage($sFileLoad) Return 0 EndFunc ;==>WM_DROPFILES# Func WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) _SendMessage($hWnd, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0) EndFunc ;==>_WM_LBUTTONDOWN Func WM_SYSCOMMAND($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $ilParam Switch BitAND($iwParam, 0x0000FFFF) Case $idAbout GUICtrlSendToDummy($iDummy_About) EndSwitch Return "GUI_RUNDEFMSG" EndFunc ;==>WM_SYSCOMMAND Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg Switch $iwParam Case 1 GUICtrlSendToDummy($iDummy_Return) Return 0 Case $idResetPicPos ResetImage() Return 0 Case $idResetValues GUICtrlSetData($slAlpha_Filtering, 1) GUICtrlSetData($ipAlpha_Filtering, 1) GUICtrlSetData($slAlpha_Quality, 100) GUICtrlSetData($ipAlpha_Quality, 100) GUICtrlSetData($slFilter_Sharpness, 0) GUICtrlSetData($ipFilter_Sharpness, 0) GUICtrlSetData($slFilter_Strength, 60) GUICtrlSetData($ipFilter_Strength, 60) GUICtrlSetData($slLevel, 6) GUICtrlSetData($ipLevel, 6) GUICtrlSetData($slMethod, 4) GUICtrlSetData($ipMethod, 4) GUICtrlSetData($slNear_Lossless, 60) GUICtrlSetData($ipNear_Lossless, 60) GUICtrlSetData($slPass, 6) GUICtrlSetData($ipPass, 6) GUICtrlSetData($slQuality, 75) GUICtrlSetData($ipQuality, 75) GUICtrlSetData($slSNS_Strength, 50) GUICtrlSetData($ipSSN_Strength, 50) GUICtrlSetData($ipTarget_Size, 0) GUICtrlSetState($chkbAlpha_Compression, $GUI_CHECKED) GUICtrlSetState($chkbLossless, $GUI_UNCHECKED) _SendMessage($hcbPreset, $CB_SETCURSEL, 0) Return 0 EndSwitch Return "GUI_RUNDEFMSG" EndFunc ;==>WM_COMMAND Func WM_CONTEXTMENU($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $lParam Switch $hWnd Case $hGUI Local $hMenu $hMenu = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Reset values to default", $idResetValues) If $bBigger Then _GUICtrlMenu_InsertMenuItem($hMenu, 1, 0) _GUICtrlMenu_InsertMenuItem($hMenu, 2, "Reset image position", $idResetPicPos) EndIf _GUICtrlMenu_TrackPopupMenu($hMenu, $wParam) _GUICtrlMenu_DestroyMenu($hMenu) Return True EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_CONTEXTMENU Func Max($a, $b) If $a > $b Then Return $a Return $b EndFunc Func Min($a, $b) If $a < $b Then Return $a Return $b EndFunc Func GDIPlus_About($iFontsize = 10, $dx = 0, $dy = 0, $iSpeed = 333, $sFont = "MV Boli") If @AutoItX64 = 0 Then Local $binSIDSound = _Chip_Sound() _SIDStartup() _SIDOpen($binSIDSound) EndIf Local Const $iWh = $iW / 2, $iHh = $iH / 2, $sTitle = "GDI+ About Window" Local Const $fPi = ACos(-1), $fRad = $fPi / 180, $fDeg = 180 / $fPi #Region text Local $sText = _ "WebP Advanced Encoder GUI ²" & _ " " & $ver & " beta " & _ " " & $build & " " & _ " " & _ " Coded by UEZ ;-) " & _ " " & _ "Credits to: " & _ " " & _ "* Google for the WebP API " & _ " and static libraries " & _ "* wakillon for TichySID " & _ " and Stat-Mat for the DLL " & _ "* Soren Lund for SID Tune " & _ "* Ward for Mem call code " & _ " " & _ "-------------------------- " & _ " " & _ "Greetings fly out to: " & _ " " & _ " All Autoit users " & _ " around the globe " & _ " " & _ " " & _ " Press ESC to exit. " & _ " " & _ " " & _ "-------------------------- " & _ " " & _ "NO ..--+++--.. WAR " & _ " .-' | `-. " & _ " +' | `+ " & _ " ' | ` " & _ " ' | ` " & _ ": | :" & _ ": +'|`+ :" & _ ". +' | `+ ;" & _ " + +' | `+ + " & _ " `. +' | `+ .' " & _ " `._ | _.' " & _ "Peace `--.._|_..--' :-) " #EndRegion $bExit = False $hGUI_About = GUICreate($sTitle, $iW, $iH, 0, 0, $WS_POPUP, $WS_EX_NOPARENTNOTIFY, $hGUI) _WinAPI_SetParent($hGUI_About, $hGUI) WinSetTrans($hGUI_About, "", 0xD8) GUISetState(@SW_SHOWNA, $hGUI_About) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI_About) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hBrush_Clr = _GDIPlus_HatchBrushCreate(18, 0xF0B0B0E0, 0xF0F0F0FF), _ $hBrush_FPS = _GDIPlus_BrushCreateSolid(0xF0808080), _ $hFormat_FPS = _GDIPlus_StringFormatCreate(), _ $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial"), _ $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 8), _ $tLayout_FPS = _GDIPlus_RectFCreate(0, 0, 100, 24) $iFPS = 0 GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") Local $iLen = StringLen($sText), $iColums = StringInStr($sText, "²"), $i, $u, $s, $r, $iChar_Space, $x, $y, $t = 0, $f, $b = 0, $a = 512, $iCharCol = 0x101030 $sText = StringReplace($sText, "²", " ") Local $aChars = StringSplit($sText, "", 2) Local $hFormat_char = _GDIPlus_StringFormatCreate(), $hFamily_char = _GDIPlus_FontFamilyCreate($sFont), $hFont_char = _GDIPlus_FontCreate($hFamily_char, $iFontsize, 1), _ $tLayout_char = _GDIPlus_RectFCreate(), $hBrush_char = _GDIPlus_BrushCreateSolid(0xFF000000 + $iCharCol) Local Const $iMilliSeconds = 5 AdlibRegister("CalcFPS", 1000) Do DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush_Clr, "float", 0, "float", 0, "float", $iW, "float", $iH) ;erase canvas background For $i = 0 To UBound($aChars) - 1 If $aChars[$i] <> " " Then $f = $t - $i / $iSpeed $s = $f > 2 ? 2 : $f $s = $s > 0 ? $s : 0 $r = (2 - $s) * $iColums * $iColums $iChar_Space = $s / 4.5 * $iColums $tLayout_char.x = $dx + $r / 2 * Sin($t + $i) + Mod($i, $iColums) * $iChar_Space $tLayout_char.y = $dy + $r / 3 * Cos($t + $i) + Int($i / $iColums) * $iChar_Space * 1.3333 DllCall($__g_hGDIPDll, "int", "GdipDrawString", "handle", $hCanvas, "wstr", $aChars[$i], "int", -1, "handle", $hFont_char, "struct*", $tLayout_char, "handle", $tLayout_char, "handle", $hBrush_char) EndIf Next $t += 0.025 DllCall($__g_hGDIPDll, "int", "GdipDrawString", "handle", $hCanvas, "wstr", "FPS: " & $iShowFPS, "int", -1, "handle", $hFont_FPS, "struct*", $tLayout_FPS, "handle", $hFormat_FPS, "handle", $hBrush_FPS) DllCall("gdi32.dll", "bool", "BitBlt", "handle", $hDC, "int", 0, "int", 0, "int", $iW, "int", $iH, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY) $iFPS += 1 If $bExit Then ExitLoop If $r = 0 Then $b = 1 If $b Then $a -= 5 If $a < 256 Then DllCall($__g_hGDIPDll, "int", "GdipSetSolidFillColor", "handle", $hBrush_char, "dword", BitShift(Max(0, $a), -24) + $iCharCol) If $a <= -50 Then $b = 0 $a = 384 DllCall($__g_hGDIPDll, "int", "GdipSetSolidFillColor", "handle", $hBrush_char, "dword", 0xFF000000 + $iCharCol) $t = 0 EndIf EndIf DllCall($_KERNEL32DLL, "dword", "SleepEx", "dword", $iMilliSeconds, "bool", True) Until False AdlibUnRegister("CalcFPS") ;release resources _GDIPlus_FontDispose($hFont_char) _GDIPlus_FontFamilyDispose($hFamily_char) _GDIPlus_StringFormatDispose($hFormat_char) _GDIPlus_BrushDispose($hBrush_char) _GDIPlus_FontDispose($hFont_FPS) _GDIPlus_FontFamilyDispose($hFamily_FPS) _GDIPlus_StringFormatDispose($hFormat_FPS) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_BrushDispose($hBrush_FPS) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI_About, $hDC) GUIDelete($hGUI_About) If @AutoItX64 = 0 Then _SIDStop() _SIDClose() _SIDShutdown() $binSIDSound = 0 EndIf EndFunc ;==>GDIPlus_About Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func CalcFPS() ;display FPS $iShowFPS = $iFPS $iFPS = 0 EndFunc ;==>CalcFPS Func _GDIPlus_GraphicsGetDPIRatio($iDPIDef = 96) Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0) If @error Then Return SetError(1, @extended, 0) Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0) If @error Then Return SetError(2, @extended, 0) Local $iDPI = $aResult[2] _GDIPlus_GraphicsDispose($hGfx) Local $aResults[2] = [$iDPIDef / $iDPI, $iDPI / $iDPIDef] Return $aResults EndFunc ;==>_GDIPlus_GraphicsGetDPIRatio Func _WinAPI_GetDpiForMonitor($dpiType = $MDT_DEFAULT, $iDPIDef = 96) Local $aMonitors = _WinAPI_EnumDisplayMonitors() Local $x, $y Local $aRet = DllCall("Shcore.dll", "long", "GetDpiForMonitor", "long", $aMonitors[1][0], "int", $dpiType, "uint*", $x, "uint*", $y) If @error Or Not IsArray($aRet) Then Return SetError(1, 0, 0) Local $aDPI[2] = [$iDPIDef / $aRet[3], $aRet[3] / $iDPIDef] Return $aDPI EndFunc ;==>_WinAPI_GetDpiForMonitor Func _WinAPI_SetDPIAwareness($hGUI = 0) Switch @OSBuild Case 6000 To 9199 If Not DllCall("user32.dll", "bool", "SetProcessDPIAware") Then Return SetError(1, 0, 0) Return 1 Case 9200 To 13999 _WinAPI_SetProcessDpiAwareness($PROCESS_PER_MONITOR_DPI_AWARE) If @error Then Return SetError(1, 0, 0) Return 1 Case @OSBuild > 13999 #cs Context_Unaware = ((DPI_AWARENESS_CONTEXT)(-1)), Context_SystemAware = ((DPI_AWARENESS_CONTEXT)(-2)), Context_PerMonitorAware = ((DPI_AWARENESS_CONTEXT)(-3)), Context_PerMonitorAwareV2 = ((DPI_AWARENESS_CONTEXT)(-4)), Context_UnawareGdiScaled = ((DPI_AWARENESS_CONTEXT)(-5)) #ce _WinAPI_SetProcessDpiAwarenessContext($Context_PerMonitorAwareV2, $hGUI) If @error Then Return SetError(3, @error, 0) Return 1 EndSwitch Return -1 EndFunc ;==>_WinAPI_SetDPIAwareness Func _WinAPI_SetProcessDpiAwareness($DPIAware) ;https://docs.microsoft.com/en-us/windows/desktop/api/shellscalingapi/nf-shellscalingapi-setprocessdpiawareness DllCall("Shcore.dll", "long", "SetProcessDpiAwareness", "int", $DPIAware) If @error Then Return SetError(1, 0, 0) Return 1 EndFunc ;==>_WinAPI_SetProcessDpiAwareness ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext Func _WinAPI_SetProcessDpiAwarenessContext($DPIAwareContext = $Context_PerMonitorAware, $hGUI = 0, $iMode = 1) ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext $DPIAwareContext = ($DPIAwareContext < -5) ? -5 : ($DPIAwareContext > -1) ? -1 : $DPIAwareContext $iMode = ($iMode < 1) ? 1 : ($iMode > 3) ? 3 : $iMode Switch $iMode Case 1 Local $hDC = _WinAPI_GetDC($hGUI) Local $aResult1 = DllCall("user32.dll", "ptr", "GetDpiFromDpiAwarenessContext", "ptr", $hDC) If @error Or Not IsArray($aResult1) Then Return SetError(11, 0, 0) _WinAPI_ReleaseDC(0, $hDC) Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult1[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(12, 0, 0) Case 2 ;~ If Not $hGUI Then $hGUI = WinGetHandle(AutoItWinGetTitle()) Local $aResult2 = DllCall("user32.dll", "int", "GetWindowDpiAwarenessContext", "ptr", $hGUI) If @error Or Not IsArray($aResult2) Then Return SetError(21, 0, 0) Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult2[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(22, 0, 0) Case 3 Local $aResult31 = DllCall("user32.dll", "ptr", "GetThreadDpiAwarenessContext") If @error Or Not IsArray($aResult31) Then Return SetError(31, 0, 0) Local $aResult32 = DllCall("user32.dll", "ptr", "GetAwarenessFromDpiAwarenessContext", "ptr", $aResult31[0]) If @error Or Not IsArray($aResult32) Then Return SetError(32, 0, 0) Local $aResult = DllCall("user32.dll", "Bool", "SetThreadDpiAwarenessContext", "int", $aResult32[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(33, 0, 0) EndSwitch Return 1 EndFunc ;==>_WinAPI_SetProcessDpiAwarenessContext ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Chip_Sound($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Chip_Sound $Chip_Sound &= 'UFNJRAACAHwAABAAEAMAAQABAAAAAENvbW1vZG9yZSA2NAAAAAAAAAAAAAAAAAAAAAAAAAAAU/hyZW4gTHVuZCAoSmVmZikAAAAAAAAAAAAAAAAAAAAyMDA0IFZpcnV6L0NhbWVsb3QAAAAAAAAAAAAAAAAAAAAUAAAAAAAQTH0RTOoRTA0SrZaJkpWarS0oAykgCgUGBi8WCRIVGi0BAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFic4S19ziqG61PAOLU5xlr3nE0J0qeAbWpviLHvOJ4XoUcE3tDfEV/WcTgnQo4JuaG6Ir+s5nBOhRgTc0NwQXtZyOCZCjAi4oLggvKzkcEyEGBBwQHBAeFjI4JgIMCAuAQEBAQEBAQEBAQECAgICAgICAwMDAwMEBAQEBQUFBgYGBwcICAkJCgoLDA0NDg8QERITFBUXGBobHR8gIiQnKSsuMTQ3Oj5BRUlOUldcYmhudXyDi5Ocpa+5xNDd6vj9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzRkAAAAAACAaAAAAAABlGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKkPjfMRuSUQCqq9BheNexG9BxeNfBG5KRCNIxCtJBCNMhaNZxK5LRCNTxG5MRCNVhG5NRCNXRGiACDBEaIHIMERog6pAZ0+EZ05EZ1lEakCnQ8RqQSdEhGpAJ04EZ0TEZ1NEZ08ESAtEkxcFKX7SKX8SKkACQCNGNSiDiCpE6IHIKkTogAgqRNohfxohftgpftIpfxIog4gJRKiByAlEqIAICUSTAYSvTsR8OJMyhSp/506EZ0lEbwTEbmWGJ1jEbm2GJ0QEakAnSMRnRQRnTsRnSgRnSkRuTYZnScRuVYZnSYRqQOdEhHgANAZuRYZjRfU' $Chip_Sound &= 'ufYYKfCN8RG51hiNaBGpAI1vEb04EcnA8CO5dhidBtSdPxC5VhidBdSdPhCpCZ0E1L1NEZ1OEakAnTgRYLxiEbmwGZ0G1J0/ELmTGUyWEqn/nToRTEMTKR+dDhH+PBHITC4T8OrJ/fAhsGipA50SEamAnSURjHoRvBMRuTYZnScRuVYZnSYRrHoR/jwRyEwuEyl/nRMR/jwRyEwuE71mEZ0PEb0+EdAJIMoUvU0RnU4RvTkQhfu9OhCF/Lw8EbH7yfuwn8mwsE/JgLDFyWCwh50kEf48Eb0OEZ05Ecix+8n/0Aj+TxGpAJ08Eb0+EdAQvTgRyRDwJ8kg8C/JUPBKYEwtEr0PEfCVyQLwCJADTMoUTJYUTCEU/jwRyEwuE71iEZ0lEakAnTgRYLxiEbmTGZ1jEakAnTgRYN4PEb05EfDCvQ8R8BhMyhS8YhG5sBmdPxC5kxmdPhCpAJ04EWC9ZRFJAZ1lEai5exGdDxHeORFMyhTwEsn+8AmpAJ0+EchMOxSp/p06EakAnT4RTEUUyMmwkDeMehE46bCdYhGouXYZnTgRMAWpAJ0+Eax6EUw7FLw8EfA2qf+dOhGdPhG9ORCF+706EIX8vDwRsfvJ+7CiyWCwur0+EfAPqf6dOhGpAJ0/EKn/nT4QTMoUvVARhfu9URGF/LxPEbH7MBmoua0anTkQuccanToQTCYUsfudTxGoTGkUyMn/8PIpf51NEf5PEUxpFL1lEUkBnWURqLl7EZ1mESDKFL04EclA0BSpAJ0SEZ0oEZ0pEZ04Eb1iEZ09EWDeFBFMCBWpAZ07Eb0UEdDwvBMRufYYKQ+dFBG8YxG5DhfJ/vAfkAyYOPl2F51jEahM4hSdZxEp9509ELl2F51kEf5jEbwlETATvSYRGHmwGZ0mEb0nEXmTGZ0nEb1nESkI0Dq9JBEYfU4RfWQRhfuouU4QGH0mEY14EbmuEH0nEY15Eb0SEfAryQLwJJBirXgRnQDUrXkRnQHU' $Chip_Sound &= 'TDEWvSYRnQDUvWQRGH0nEZ0B1EwxFkz0FaT7uU8QOPlOEIX7ua8Q+a4Qhfy8PRG5kxlKaQCdIxG5sBnwCaiIRvxm+4gQ+f4SEaX7nVIRpfydUxFMMRa9KBEYfVIRnSgRvSkRfVMRnSkRrXgRGH0oEZ0A1K15EX0pEZ0B1L0jEd4jEdBPvD0RuZMZGGkBnSMR/hIRTDEWvSgROP1SEZ0oEb0pEf1TEZ0pEa14ERh9KBGdANSteRF9KRGdAdS9IxHeIxHQD7w9EbmTGRhpAZ0jEd4SEeAA0FisaBHwU7kOGNAbuSAYjXYRjRbUuUQY8ECNaBGouQ4YjXcRTI0WrGgR8C65IBgYbW8RjW8RuTIYbXYRjXYRjRbUuQ4YzXcRzncR0A25RBiNaBGouQ4YjXcRvBAR8F653hfQI7nqF508EJ0D1CnwnTsQnQLUuQIY8EOdEBGoud4XnRERTPAWvBAR8DG56hcYfTsQnTsQnQLUufYXfTwQnTwQnQPUud4X3RER3hER0A25AhidEBGoud4XnRERvT8QnQbUvT4QnQXUvT0QPToRnQTUYAQE////////Cf5B/okZGRkYGP6JSYiIiP+JGfn4/kFBQUERERER/0FBQUERERER/0FBQUERERER/0FBQUERERER/0FBQUERERER/4n+Ef4RQf4T/hkZGRkZGRn+if4T/hP+iRkZGBgYGBgY/xH+Ff4AAAAAzwkHBgQDAM8NVFBUApgeHh4AAAAAAAAAAAAIAAMHDAADBwwIAAUIDAAFCAwIAAUJDAAFCQwIAAUKDAAFCgwIzwAAAAAAABgAEAcGBQQEAwDPAAwADAAyDQkHBgUEBAQIAAAAAAAAEBAAADAwABAgIAAEQMAIBiDgBhAQ8AAAAP8AAAD/AAAA/wACAwIABgcGCQoLCgAABwAAAAcAMACAgACAgIAAAACwANzAqAAQgFCgYIjAgIB4aAAA6AAAAOwABAAA/wD//wAAAAACAAICBgAI' $Chip_Sound &= 'AAoLCg0ODw4KCgAHBwcNBgkAAQcBAQEBtwECxwYHAcYGDQDhwQSnBgMFd4eHh/W3tSMldzs7OztzRTZze41FfWv1JUVDaXWZNVUAAgICBAsFERYCHygxOkMWC0VHRxZKR0wWFlRWWFpkZgABAQEABAAABAQFBQUFAAQEAAgIBAQIAAQEBAAAAAAAAAEDBAAAAAAJBQAAAAAHCQAHEQwRDBAAERERAAAAAAAQEBAQAAAAADAQAgICAhAwABAwMDAwMAAwMDAAAAAAAPHx8fEAAAAA8/EAAAAA8fMA8fPz8/PzAPPz8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAMDAwEDAQBBAQFAQEFBQEBAQEBAQEBAQwBAQEBAQzNzsBQAIAAgI1P8A5AEA/5AwqKCQgPuw+gD++hzKysoCXwUIAwRN+BBLRTD4AAAAAACAABiAgCAAAAkNBAQEBAQEBAQEBAQEBAQEBgYGDwYGBg8GBgYPBgYGDwEBBwgBAQcIAQEHCAEBBwgGBgYPBgYGDwYGBg8GBgYPBgYGDwYGBg8QExUTEBMVE/8BCowDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBIAFBQUFGBmMAwQEBAQEBAQEBAQEBAQEBIARFBYUERQWFP8BCwIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDIwXFxcXEgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBP8B4eQBGz1fkK3K5+vy+RQ2WHWeyuz8Ez1qi74aGhsbGxsbGxsbGxsbHBwcHBwcHBwdHR0dHW/+/4JgD7Ni+4FgG7Ni+7BgD7P7iWEbsWAPs/u0G/v/hGEA/gD+hQD+hwD+AIYAhAD+hQD+hwCGAP+IYCf8LPwi/Cf8Lvwi/Cn8Lvwl/Cn8Kvwl/Cf8Kvws' $Chip_Sound &= '/Cf//GAn/Cz8Ivwn/C78Ivwp/C78Jfwp/Cr8Jfwn/Cr8LPwn/4pgM7X7Y/5gM7X7Y/6LYDW1Yvtv/oxgMbX7Y/5gMbX7Y/6NYDW1+2P+i2A1tftr/v+CYA2zYvuBYA+zYvuwYA+z+4lhG7FgD7P7tBv7/4JgErNi+4FgHrNi+7BgErP7iWEesWASs/u0Hvv/gmAWs2L7gWAis2L7sGAWs/uJYSKxYBaz+7Qi+/+OZwD/kWAMtmb7/2H+hgD+AP+EYQD+AP6FAP6HAP4AhgCEAP6FAIYAhwCGAP+PYCf8LPwi/Cf8Lvwi/Cn8Lvwl/Cn8Kvwl/Cf8Kvws/Cf/iGAn/Cz8Ivwn/C78Ivwp/C78Jfwp/Cr8Jfwn/Cr8LPwn/4JgErNi+4FgFLNi+7BgFLP7iWEgsWAUs/u0IPv/kmAnt2L7Y/5gI7di+2P+YCK3Yvtj/mAet2L7Y/6TYBu3avty/rlg/v+bYDG+YvuSYCe3Yvtj/mAjt2L7Y/5gIrdi+2P+YB63Yvtj/pNgG7dy+2f+/5lgJ/ws/CL8J/wu/CL8Kfwu/CX8Kfwq/CX8J/wq/Cy9J//8YA+4aPt1/mv7vGP7b/7/l2MAZ/6VYAq6bvtr/rtn/rxj/pprAP+SYCe3Yvtj/mAjt2L7Y/6WYC63Yvtj/mAqt2L7Y/6TYCe3avty/rlg/v+bYCe+YvuSYCe3Yvtj/mAjt2L7Y/6WYC63Yvtj/mAqt2L7Y/6TYCe3cvtn/v+XYQCYYCL8J/wu/CL8KfwulwD8+5gq/CX8J/wq/Cz8J/+eYBjAYvvBY/vC+8Nn+8Rj+8X7xvtgSshi+8dgSsj+Sshi+8dgSsj+nxvJavvKYD9m+/+eYBjAYvvBY/vC+8Nn+8Rj+8X7y2H7zPtgSshi+8dgSsj+Sshi+8dgSsj+nz/KYvuXYwCHYQCQYwAAhWEA/w==' Local $bString = _WinAPI_Base64Decode($Chip_Sound) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\Commodore_64.sid", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Chip_Sound Func _WebP_Icon($bSaveBinary = False, $sSavePath = @ScriptDir) Local $WebP_Icon $WebP_Icon &= 'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAMkElEQVR4XsRZe3BU1Rn/vnPvPpNsdsnCIgkkFogoElIpFAMZmUIC5SVpBcb6ACMNFAYUi5RRKUgFNWTEDgyKBEHoA4y1ZkKxHQYspfJ0SpGEplIeCXntJvtIsu+993yF3EDGMs3eO67hd3fuP/fuOb/f9zrfOReoV8TkGBFdrwvo7oXFi5bNmjN59pzJi55dZh4OX5y91P3CXQUDFeAxZu0HhSu8BUtbpyxu/eFz3nsyIRZWnsG3BM5VDR1HgMJPFA16PdizojZHxOaI9ssM2NLAZuvX9UiEbweMqTJub9MTkcKvualRFwJPS9DvFUHGtuZrDsz+5Usbc76b7XL7BCYAECQIBKBnzO1vnD+3qKAwX3FFL2KQiP7/UAgAH+4/WLx81urSSdljfX6PBMBMKfK16v6t7iudkXpZAkBIJAhQAMbg/Q2wY/PvSn72uGJKRNTmAYXXwgUlVWd2vvVRvn1wm68FqCvkIkHMGtU0wpQmiiMQdZBwyLIhhRcUmJbM/8lXl2vLyl5FRMWgGjzQ7pbuy7XlTPEvWTM1xp3tLgmRKVYgAg5AMgEov8QDiawOUcB7X11emWWaWXWwSlsI/any2MyiSau35+RPT/W6vEE/CIwBQl+Cc56UKpstmTs2/vnqqfR/X2gApq4KbXht3cySSeXHZk6Yamxp8ISDIAgK+z4FQ+bvEPzuhqVr8yY/rcM0vC0sjoDz5y6/VGrIyPY1XvODxBAZ3BUgCMCCIfC6PHOL80w2CHR0S4iTxGajJRiJ+L2AwABRaw0hIFkmYARArHs2BI6CgAgIqFEDsWgUwoGYyQACqQshOcaVhUQrdZk4gKxPIvvA1IzMjKx778scmn3jnpGZbh9o0Rm5DDIRAWn3BUMJIBBUV0Y5cgEAuDarA+MWq85i6e9ri507faK6JtpcD6EQGAyQPgRG5/YbOXpMmiPs8/hC' $WebP_Icon &= 'fo7EtLm2Kwdlla3ErSQhVeS72OuMNGCw0dtsWb/icPG0v54/MCfPWr6m6ERZyZevzD0zod+e0/smPvHI4Z2bjwu8v/0eEZhMRNpWNwBB5UKGIAOqEaBo5EYzmFNNn+xq+KCsee+2yic/mX0HgbGrX15AEqxZ89oTBWvLduUNzY21NQVJFjT5QVYpADip84Bie0hOTd31+ilXTS4PNn2tl+yJQoExRBHeLHvlyaefyhmbtWHXw6MmiK3XZdISS8hV5gAQMHVtF+NWh/HjnTXuf33vzOlTt6mzLvxPfHIuMSaOyslsvNyZnpmypXLy4Gy32ykhqVtkUH07zTlTU3OAW+y6+mrTR1t9J0+e6qJIvbTBjHUba1BG8hcnL61aeCQcSDOZmYaqpDaJ1VlfFMmkc2ze+PeKvcdvUURQhzHjhr24cPOBXUes9jQOHCihAgAkiAdOPNmqq73QZPYOm/HoRPUbKCWWuhqWVYf3Q9BrNBiBgBLqAY7I4hYfSklK/7Tyws+Xl2rZQPXEks4IeblFF2vOJqdYZDmhAhB5fBICJzSdPwPTp83qNqoWKNny6NTHzp5oMyWlAeMJ9YAMDIDiJACGA52xTsj4jtgzjsaaPnb8xNpqEJiZJTaEAHgcBQAoYDTiN2mhfWedGOQYEPADESSiCmkHIcE3Q0zijAHDuyGAZDLokqPyN5q14XqjNQ34XRHAZTKaU3gyOOvvWDxUF6Ljnx99MAfkmJero8ExQQLwpvcZYnjMOKg6WNlNSDv2V24dPyHbH2hDlTR4ojyAN6/OQOOMopxNb6/o6d7UQZZlAKi92Hw9UDN85NBQR1TT5oAnQICy4/ZIw0fb9Rn1v/ngkPqFjHMuCAIALFn8zKLnHRy80Qgg9nkOIILEIeT3vLCu8KnFM5wtYZXsFZ179vyxLvqX/KmjvW1+xtjdKaMCsA6f1H+Ic+22ccOyTeEQKJC4xDm/k7pMssL1s6Pnnln+o3VbCkORhmgUEFAt' $WebP_Icon &= '03j7Ae2ZQMzdLD1UICx9/QGTDU8fqxn3/QdEJn4tK9jN67aZd773YcmL89/5eHKy3eVpZgIySGQZ1R5IJDFPY+ThGeay3094ZN7IeUXFdVc7uodWcGuKz49fzM0dW7pv/vufFtoz3d4WiWlmr84DpE0DyhJrbQhlPSjtOzTlSFXFiCm7B4kDfpC38P77c62WNKer/h//PPHZmd2GgVD8/IiH8gtDwRu2186eA5A6AaIgAiodkVoNxIW2ZsloaJk2b9T0uba6q0211aVHr0HwP2CzwdDpMG3V+AHpaVLE7W1tjEVRW+RwAiSdrpssiyugtaNplJhqSmHUzEHdTKgcoUWopb5Dr++w9RemzMgXdUmIJs5D0Yg/FGx31nfKMjDGBC3ncwQkGMBkFoMhCAR9AFbOgbFeT6e3vrN95cZlvz00G3V1Ppes1ddEwImoy2y3IhJRQIW3JhARityRkfS3yvDba7+MeghZdy2Oc7z+6y3lv9jy092VMwXjZZ9LUDT0KRT2Ou5ITzlS4drxqyvtzaQ3qa5Cz61c9MbKd0t+fFCODrPaOScO1NfsRYX9AVf5piudToW9qg8cPT4qK92+/r1l5X+YheIljwsRsc/4i3pwZFiOVLTeYO9rItEAmr7Q9GgofXPbG+XLdx98LMkejvkRBAFUA5W71u9QxJGR0QRVey+9u7623amwjyegFw2bNm55+a0Xpj8OnZ2AGrM5FAYZQKcDowCAav9l1IOzFb46CR11pDMCgAoBvWuoqKj0e0kUjJw0KNDr9UOGZBoNBqfT6WptQyR1AmRR1Hnbry14ttiSosLh/23WykIiPYJw51hcFEVBnxJ8MGBMBkREQV8EQfDFAw+8yGpAjSJhxYcIRiIS3VVXMt6Yw8iIJDMGIXFEFBFFxRtR8+D14C0Rx2tcD8Z18+djC8o//Q+T2SwLFtJUfVNd/1/VVdXd8itvky6eX3eZupW3SbQCb/TZAhU32WF9fILAP01OToaH' $WebP_Icon &= 'h9/c3DxAMrHmm39twPejFy/kL06AOA8ywRSBxLBL8/Pz4OHA7e0tG3GS+PWY5wcR/f8UQpi1oF0HFhYWnJ/+Wr6RA0p3t5ymGxsbg4ODEri+vj4zM6M1tLKyAnx7e1vyjR3ARBKhs7i4eHZ25sBnia6vrycmJtQLfnBwoFYQrq6ueMbU1BQEm82G8Tn65Suqq6uDiHVXh/Py8pIn+/v7SwlpMBjYNE+B2dXVVbWau7u7k8vr4eEBffJQbSExMZEURHNzM+TCwkKebDQagYSGhnp5eTG4v78vdS0SIyMjr66uIPb19RHS1tYm6cAOxsrKyq2trdbWVgJxtb8Lv01ZX/6LRW0IYmJiMGZlZWEBS0pKCIyOjoaCYM94TkBAAMTAwEA1WF1dDbGsrIzEhoYGbRfu7+/XOhkSEoJxd3eXwbm5OVIbHx8npO634kc/iPKuT7N/FF//8uE3xk++NXzGFnx9fTHi1dnC0NAQEDIrIFOEjo+PeU5eXp7ZbAYzMjJCIP0vZG9vj0Rvb2+IJpOJjWqTnsXg4GBOaDX+RV4ueKtFyWoXzVMPvzNnzP05+cwcpx8XKT+JS+udZlBQkF0LNTU1AgIta1NTE/ilpSXwCBIppaWlUUbazZ+wsLDs7GxkUVRUVHx8fHJyMuGjo6NqNb1eL7Wd2NhY4Drdx6/cUh6bxJM/AhSiW+Xp7x88Ngrl5s5CVVWVFKmkpCRKk3ehkJmZiZGyore3l9edYoxxenqaaloq2aOjI9SGxWJBZ9jc3MT65Ofnt7e3R0REqNWoT7A/vEO97/KQLrv4e/DOR4LoPUjehDO5uLhIFigjrFar4FCRBmqXI41yIb6iogLM+fm5tAIoXEYclGBubi547nIgNzc34AUF+eDPLMqjn8XTEfHr8Pfnx0rHYPWzMZH+7xRKT0+XLPj4+AAvKioSEDiLcnJyMGZkZBC4trZGorZei4uLgaDHSQ4MDw8DRyNmB/z8/KS5Ozs7UhE3dZUU' $WebP_Icon &= 'dYoCg0jWiy8N4qtO1yedn7MFnU4nWTg9PSUL2H8EtgYqDqpdOrqoQ5iQkICxpaXF7i5bWloKXtuapMeDZmdngeClX+scKVSEzYTDyhburHh6emrtokB5/5L2y8PDQ2GPuJuxk2j/7BvTxcWFeuPSbs1SW6uvr5csoPygILg/nJycxMXFIQc40rR1p6Sk9PT0EKil5eVlbIVYh8bGRpwpJAX04tTUVOIRv9ra2vLy8oGBAefOOXJfRnNDk0DL6ejokA5z941kB8bGxv7722msAxF4B6D0K05KGJl3MJ01mXGS+F6BAzmbZQv3eQXkG4Xdi4RQ7jehbOCAgyP3P94Red6jcQCLAAAAAElFTkSuQmCC' Local $bString = _WinAPI_Base64Decode($WebP_Icon) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\WebP_logo_2010_64x64_Simo99.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_WebP_Icon Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode #Region TichySID Func _SIDClose() Local $aRet = MemoryDllCall($hTitchysidDll, 'int', 'SIDClose') If @error Then Return SetError(@error, 0, 0) Return $aRet[0] EndFunc ;==>_SIDClose Func _SIDOpen($Sid, $iSubsong = 1) Local $bSid If Not IsBinary($Sid) Then If Not FileExists($Sid) Then Return SetError(2, 0, 0) Local $hFileOpen = FileOpen($Sid, 0) If $hFileOpen = -1 Then Return SetError(-1, 0, 0) $bSid = FileRead($hFileOpen) FileClose($hFileOpen) Else $bSid = $Sid EndIf Local $tSid = DllStructCreate('byte[' & BinaryLen($bSid) & ']') DllStructSetData($tSid, 1, $bSid) Local $sType = BinaryToString(BinaryMid($bSid, 1, 4), 1) ConsoleWrite('-->-- Sid File Type : ' & $sType & @CRLF) Local $iVersion = Execute(BinaryMid($bSid, 5, 2)) ConsoleWrite('-->-- Sid File Version : ' & $iVersion & @CRLF) $iSubsongCount = Int(StringTrimLeft(BinaryMid($bSid, 15, 2), 2)) ConsoleWrite('-->-- SubsongCount : ' & $iSubsongCount & @CRLF) $iSubsong = $iSubsong - 1 If $iSubsong < 0 Then $iSubsong = 0 If $iSubsong > $iSubsongCount Then $iSubsong = 0 ConsoleWrite('-->-- Subsong : ' & $iSubsong & @CRLF) Local $aRet = MemoryDllCall($hTitchysidDll, 'int', 'SIDOpen', 'ptr', DllStructGetPtr($tSid), 'int', DllStructGetSize($tSid), 'int', $SID_MEMORY, 'int', $SID_NON_DEFAULT, 'int', $iSubsong) If @error Then Return SetError(@error, 0, 0) $tSid = 0 $bSid = 0 Return $aRet[0] EndFunc ;==>_SIDOpen Func _SIDShutdown() MemoryDllClose($hTitchysidDll) $hTitchysidDll = 0 EndFunc ;==>_SIDShutdown Func _SIDStartup() $hTitchysidDll = MemoryDllOpen(TitchySIDdll()) If $hTitchysidDll = -1 Then Return SetError(1, 0, 0) Return SetError(0, 0, $hTitchysidDll) EndFunc ;==>_SIDStartup Func _SIDStop() Local $aRet = MemoryDllCall($hTitchysidDll, 'int', 'SIDStop') If @error Then Return SetError(@error, 0, 0) Return $aRet[0] EndFunc ;==>_SIDStop Func TitchySIDdll() ;only x86 :-( Local $sFileBin = 'cbsATVqQAAMAAACCBAAw//8AALgAOC0BAEAEOBkAsAAMDh8Aug4AtAnNIbgAAUzNIVRoaXMAIHByb2dyYW0AIGNhbm5vdCAAYmUgcnVuIGkAbiBET1MgbW+AZGUuDQ0KJASGADvpjpN/iODAQQUDg6jywHwAB/EQl/PAZQAHUmljBmgBFwVzUEUAAEyAAQQA9O0oVQUTAOAADiELAQUMpAASAAzMAgegEAADfjAECQELABoB5wEABQcA/iCAfgQGgxwAFIEVhgMDA2BgMgAAvoEDgCc84RmKEAMAnKCdDgCAK4JYGA8udGV4dIADftYBRoEBgXUGYgRlAE8uAHJkYXRhAAAeNwHqgX2BERaLE4DtQC5xAxMAW8NAPQF7AT8aAc4JwC5yZWxvY7gAAGjBB8A2whMczgn+QrE8PwA/AD8APwA/ADcAAFWL7IPE6FZXADPJvoRCABC/ASA5EOtzUQ+3RgACJf8PAADB4AAQiUcED7YVmwEAA9Pqg+IBiFcACQ+2TgXB6QRAiwSNCEAA4AMKDLpI4AChAoDhDw9AtwRKiUcOoAEGAaYBFg+2RgYk8ACJRxKKRgSIR0AID7cG9yXgRhAAiQdZQYPGB4MAxyyD+QNyiL+BYRAPtkcWweBgDgBPFYPhBwPB90QlBCAFuQCAoIXBAHYBkYlHGTPJCLEE64AKRxjT6ACD4AGA+Qd1AwCD8AGIRDkZQQCD+Qhy5WaD5gAPiXchuD0KAAIAAAkXwOkE9+EAuTMzAQAryMEA6QiJTyUzwImARfyLRQzpYSBbADPJiU3wiU3sCIhN6yIg6c0BAAAAUYsHAUcagQBnGv///w8zwAD2RwgIdA2JR4AaiUcjx0cngAIAAIpF6/7IPACAcwKwAohF+wAEIAJ0ILksoCr34QK+wQgD8ItGGosADjvBcwn3JzMI0vfxoAeLRxozAMk7RwR3Av7JAIhN+MHoE4hFAPrR6IhF+cHoQAM5RyN0WOAL0QBnJ4tHJ8HoFimAG4vwQgERQAEzxhAJRyczwAbqM9IAsAOxB7IZ6x8EKtBAEAF1ArAEJFBRAAWKyiIiWdMA4AhF6lj+yYAA+f913IpF6ogERysgD8HoGwvAQHQEgHX6/6AVBAh0GLihFfZl+4FMuBrgFWABCHOiA8YARff/ik8I9sEAEHQGikX6IEVQ9/bBIEEB+UIBQJVBAfhCAYBAAUcrQAEAikciCsB1GYtARwoBRx64wSM5AEcefFOJRx7GYEciAetKgBSAHw7AKUcei0cSwEqgAwR/NaMDAussPAIkdRHmAnQdQgYXPMADdROLRxZABsDSEgThCX0DIAaAfetAAnIJgD2kQRZ0QB0PtkX3LYBDAAD3Zx7B+BaAfwAJAHQFAUXs64ADAUXw/kXrIEwBwksPgir+//++Ap2gBotN7MHhEACLRhTB+Aj3ZgAMK8grThiJToAQM//rE4sGYAIAi0y+EMH5CPcA4QFEvhRHg/8AAnLoi/6DxwQB4UTssQLrEoA/AAB0CotEjhDBFPgQQA1HAy3pi0UA8ANF7PdmCIsATfyLVQhmiQQESv+iTDlF/A+CAJb9//9fXsnCAgihbg+3RQgPtgSAw6ARgH0MAHRgB2b/BcGAAcgDiwDIZiUA/GY9AADUdRGA4R+KRUAMUIrBUOigcgDk6wmgAYiBoQcEBkB4AP+KVQiA+gdyAAyA+g13B0eAAG0IB+sRgPoOqQECFHeAbAJAAg7ifAS4B+El5wPwD7YQTQwPtnEDBnYFAaIBgPoDdgOIDBIycAB3MHFAgPoBBHcDEDv2wgF0CgIlMIIAweEI6wWEJQCgAAPBM8nwAQh2AUGwDk7rKIAQ+gR1I0Il9+e6ASIw0PbBAXUGxgBCIgPrCoB6IigDdQSwAABmEIPEAvyQC8CD/gJ0BQCD/gV1DIB9EAgAdQbxAQwAi3UoCL+5QAS50QoCTQOAEvAeFTvxcxFqAAGD7AJm/3cIROixMB1mi8gABHcgYw+3VwjyAxRmIIPqAmoAMQJS6IKPEwJCikUQUBMBAn0QAcHgCGYLyMAzwAv2dA2ARMAHhAF1MEdHBDPSoAAEdAdyBAFCC9IPBIW50AdmA8jpsbNwADAKdzozBtEGSkUGw6ElYggDD4SJcAIjBQYEIwXAA2aB4f8AgOtyg/4Hd1ZiDEBQg/4GdQ/UAQ+Mt8GCFdMEUOjckCLAZolF/mZBcgNjAZhR6MVhAYILRf6QBIR1B6BNBWYDwYAHgOsXg/4JdRKgBUgCdQZQBQPrEDoMqIhHAxEHM2IBDmUE8n5gBOsf8AeAIdgW8SXVAwJ8hCoMgiW+IRgBXAKDcSoFC0UI6wYA91UII0UIiEYGBnUcVQJOB4HBAFHAU4pFCMQEL8AEgAB+BwB0A/5OBxHgAgQAuKECgHgHIP9zA/5AMAxABwYFIQPFD9/8///DA0Eholi5w0IBECvQz/Oqv4EAg3A3IEEECAWRL/93BFD/MDfomQahmfAA/o6BYaIzyesLx0byWQiDxizgYANy8F9cXsO1JgIl5yNywAYPCLawaBBmi9DR6gAPtpJoQQAQqQPgCAALwOoEgOIPAIlV/IP+JHYiQIP+N3MdamAl/xB1/OhBUA2D/jVAcwyD/itykB4uEHYCiAexFmkPtoRXBhAkdwWA4iBMYwAhkQAC6w2RI5AAgKDrA4DiQFAnDzEvBgowIoEvBnUJC9IAdQNC6wIz0lIhMQZqCOjeoAlmmIhmA0dwREcBWpAojISC0JfAAAjpeYAAgIP+Dnc7M8CgYAJAsB93BLAB6xBIg/4LgAAI66AIDa53MGGAATEGCzEGDeAskFJQ6CmQKuk58gMQEXclimEqD3UFAooQIwiD/hB1A0CKRwRqAVAxDl0JAAjpD5ICE3cWigpHYA0S8QEDUOgKBUEE9OCgg/4UdQsAZsdHCAAA6eQh8gAWD4ebgjIWdUAfM9LrFmbgGmYAQArSdQRmwegQCFDoz5AT/sKAUPoCcuWgGhinGOdg+v//CslgAtAO/kDBgPkCcuOxLglARwFmi1cB8AR0ARAo/AB1CWaJVwgI6XfBBn38DA9chW2QAJIEpDifcARmikKUBAiaBAjpQDIKIBd1Deh2cAiIRwgG6S4SARl3JejCZFI3RwHoW3U2sgcVMABAQhcEkgIadQtBIBKIRwfp9JCDgyD+Lw+Ht+Aig/4AG3UI/k8E6QWFwgAcwABHBOn4khBSHSEDA4jwAOjyAB5V8QAH8QDY8gAfkQMFlOnLwgAgkQMF6cHGiIP+IZQDBemu8gBaIoALvWAZgD3pYcaDRP4j5AgD6YzyACQMdQgwHfAA63+D/hAldQUgkAB1g/4QJnUFMJAAa4P+ECd1BQiQAGGD/gApdxqD/ih1BAD+D+sC/gdqABSKB2IfZvAT60KDoP4qdQUigAI4EC5CdQIFLoP+LJEABCDrJIP+LZEABesBEAQudQTR4OsCpNHosRNqADIEIjAEGYFUHnbgJUADilcEHOs04AzhAJADilcFHOsloAjhAMAFilcDROsW8QgEiheBMirAdQSK0OsEYR8AWgDSdQFAUGoC6EBw+///geKBflIyaFEA6F8AAcACdAkRMAgPgmZwFzPSD2i2B7KwIi5AKYAbJQVxReuQNip1B4PgIECyQOsDwJFQUiToJKAD6TSSGjJ3YlXgCIP+MHMIQDAxBUAuV4Bb0lJmK9BbwCZJCOuADUoI2pEOwBBaOhdyAQIB6MqJ8ADp2qIYNHdYwUCBcECD/jN1CSXxAgTQJxAG4AHQL8GU4gfhApvgAggXthdE6vjhSAcz0qCUAWpCEgNQcwZygAKQQegCatEZfYP+Nnd4QUAAdQQ0/4ggVFcAAwPC9kcGAXQuAaEqcw/hBTzQAg+33EcB4Bs0BTEEJlABwEsAdQsPto+4AEcDJYAAAADrAAkzwIB/A392EAFAUGgBgOgC+gD//w+2RwYkAQAPtk8GgOGAMwDBUGpA6Ov5/wD/X17Jw1WL7ABW' $sFileBin &= 'vrlCABCKRQAMiEYDM8CJRgAE/k4HZotNCIBmiU4IUOjoAFAIUOjiAArrBeh/AQCYZoN+CAF39CBeycIIAAB6g8QA/FZXi3UIi30ADA+2RgeIRf8AD7cEMGaJB6MAy0IBEA+3RgpIZsHAAEtHAgALDIUECwQAKg+IRwYABgARiEcHD7cHBQLDAIMPtlX/g8IAAgPyi00QK8oAZolPCFBRv8MBAEaJTwSDPwB0wAj/dwToXgDVAAclAMNOAAmJBwAL/zcIVuhbAAZZWFFQGFboUYAEgEZmg38ABAB1GWoAg+wAAmb/dwLoEf+BgIS3BddFABABQQGAWWoYWYPGFoMQxwrzpYCFwgwAAP8lADAAEP8lmgSAAswKAIGTV/yDc0GATsHpAvOlgAODMOED86SDHYsXVlcAvndDARCL/oEAx+QGAAC4yA0AAAD3ZssD+P8ARsuDfssQdQUlAbXLhE62XYBN6HAA/v//aHIDAAAAVugt8v//M9IA6xFmiw5miQ8BgIQCg8YCg8cECEKB+gEQcudfXg0D3dCAjoEkclBQUABo8EEAEGr/jQBGblDomAIAAADHRnqA3AAAgwSOioFMx0Z2W0qAARBqDI+GhsADAGogjUZ2UP92SG7oeYAK6EwAIIOgfnIAdfUHBngABgj+hqSBlT5qBI9khpaBDQyNwgECCC0RAAiLhpqAAzPSuQFCOPGD4A85RnIQdAfo+wAz6wdqAAXo9gEAAIC+oqIACQB0uUEND0ANLQcZDUADwQHbgAlqACzoqoABgFMEgZZWVyK/gTeAv6MCDwXoAotBdnUIgH0QAEB1I1dqClYADH9RAAyL+FdAAntBAvAFQQJ9QAKJRQxf6AR+94A1dQxXVugAUv3//4pFGPYARRQBdAWKRwdg/siIh6XBMUWH8xD8//9qQCBqAGgs8x2AUQEjF8ERR2oAC8B0DmoPUOgyIIAD/ocBI0F8FAAJQ1/+hsE2av//dlhq6BBACMEB2IFEwPKJQgZew8MJhzzCEcJVi8UGQQX4QevN9v8AaiJywTuAvqaBAXUHIsaCCgCKhscrdgJk6EPAK+iWQDVDbV7Qw/81PgBO6IEEZQEGq2EBDyk2ikUIOgBHBnQuPAByKkkAAXMlYyH+hyEO6JJpYCb+j0EBgL8iDw0gLzlgAoEeBADM/1QlCGJkDKIAEKIAFFWiABiiAByiACCiACRVogAoogAwogA0ogA4VaIAPKIAQKIARKIASPWiAEyiAFCgAKEPHwAfAH8fAB8AHwAfAB8AHwATAPQAMAAAAjEAAB5VYAAsYAA8YABKYABaVWAAamAAfmAAkGAAmKtgAAEAruAAvmAA1GAACuJgAPJgAAoyAABqGmAALGAARmAACQCcW+ALBQAQYQjgAcxoAlY/4AUgPH8TfxN/E2QTpQEAR2xvYmFsQWwgbG9jAKykAUZyAGVlAABrZXJuAGVsMzIuZGxsAAAAIwBDbG9zAGVIYW5kbGUAAFYAQ3JlYXRlFFRowABkYBsARXgEaXSlAcAARmluAGRSZXNvdXJjAGVBAO8BTG9hgeYBAACpAlNlhAUAUHJpb3JpdHkAALYCU2l6ZW8CZqcEtwJTbGVlAnDg71dhaXRGbwByU2luZ2xlTwBiamVjdAC2AIB3YXZlT3V0whIIAAC/5QFHZXRQAG9zaXRpb24ABADCpQJPcGVuAKLDpQFQYXVhBsTmAYByZXBhcmVIAAkaZZBDxXUBwAhldABEAMb4AHRhchABylEVAVVucLsDy5UBV4NgDTAGd2lubW0jFNFxHO0oVXEAzvAXIExUAAc0AIjwAKQwAMAFMRog8EIfAADRHqswH7AAnLAADnAAuHAAqtzwAeowAPMwAPswAKAEMwAADDAAFjAAAREFAgADAAQABQAABgB0aXRjaBB5c2lksgdTSUQAQ2hhbmdlU2/8bmfSAFITgACCEXAAIxExgQBsYXlxALAOdW3hEgFTdG9wLykPAA8A/w8ADwAPAA8ADwAPAA8ADwAbDwAIAGcAGWAWAKSTgAIAh7kAAD1gkgB+PgAA2CcAAAT8GjA3FgAA+BKAAAAlDwAAFACJqgpQhOYwA4UwAIJwAwOxlOE3pKZtPLEeAFsU+gzKCD4HAC4G7wT7Af0AgJ4AfwAqABkAWQAUJzg4OCcuOFYTMABxAAT0AAh0ABYAJTg4KiUzOBerMABxAAXwADhwAAl0AIQYJnAAJi84EjAAKhUwAAb0AAx0ABk1oXAANTQ4IjAAFTAACgf0AA10ADgPODiAEQ8QOB84I3IAIgD0ACQPGrIBLSsiLDIAISsdcgABKxEzAQ4rHnIAMjA4QTAAKDggMBtyAAIV8AA4cAAKdAAxNjhBMAApOBw2N3IAAxXwADhwAAt0AGvdMwDTi9kA0HrdTcDUK90d0WD8AP0BFfMADPYAaPYBRNUrStnwANj5ABHS+AHUT/IB/AD1HtEyRKywWLEuAjAzgHIgAGhwAQswABAwKTA/MEcwAHswjzClMBIxAFkxCTK8MvIyAIAzjTO+M/MzAA40XDShNCQ2AEo2dTadNqI2AKs2uDbINvI2AAc3Ejc9PJM8AME82jwqPUg9AE49kz34PQU+ACU+1z5MP3Y/sJ4/uj8ABkAmNGAAAgRwBiAwbDByMAB4MH4whDCKMACQMJYwnDCiMACoMK4wtDC6MIDAMMYwzDDSP2H/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ABAA=' $sFileBin = Binary(_WinAPI_Base64Decode($sFileBin)) $sFileBin = Binary(_LzntDecompress($sFileBin)) Return SetError(0, 0, $sFileBin) EndFunc ;==>TitchySIDdll Func _LzntDecompress($bBinary) $bBinary = Binary($bBinary) Local $tInput = DllStructCreate('byte[' & BinaryLen($bBinary) & ']') DllStructSetData($tInput, 1, $bBinary) Local $tBuffer = DllStructCreate('byte[' & 16 * DllStructGetSize($tInput) & ']') Local $a_Call = DllCall('ntdll.dll', 'int', 'RtlDecompressBuffer', 'ushort', 2, 'ptr', DllStructGetPtr($tBuffer), 'dword', DllStructGetSize($tBuffer), 'ptr', DllStructGetPtr($tInput), 'dword', DllStructGetSize($tInput), 'dword*', 0) If @error Or $a_Call[0] Then Return SetError(1, 0, '') Local $tOutput = DllStructCreate('byte[' & $a_Call[6] & ']', DllStructGetPtr($tBuffer)) Return SetError(0, 0, DllStructGetData($tOutput, 1)) EndFunc ;==>_LzntDecompress Func API_FreeLibrary($Module) Local $Ret = DllCall($_KERNEL32DLL, 'bool', 'FreeLibrary', 'handle', $Module) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_FreeLibrary Func API_GetProcAddress($Module, $Procname) If IsNumber($Procname) Then Local $Ret = DllCall($_KERNEL32DLL, 'ptr', 'GetProcAddress', 'handle', $Module, 'int', $Procname) Else Local $Ret = DllCall($_KERNEL32DLL, 'ptr', 'GetProcAddress', 'handle', $Module, 'str', $Procname) EndIf If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_GetProcAddress Func API_IsBadReadPtr($Ptr, $Len) Local $Ret = DllCall($_KERNEL32DLL, 'int', 'IsBadReadPtr', 'ptr', $Ptr, 'UINT_PTR', $Len) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_IsBadReadPtr Func API_LoadLibrary($Filename) Local $Ret = DllCall($_KERNEL32DLL, 'handle', 'LoadLibraryW', 'wstr', $Filename) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_LoadLibrary Func API_lstrlenA($Address) Local $Ret = DllCall($_KERNEL32DLL, 'int', 'lstrlenA', 'ptr', $Address) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_lstrlenA Func API_lstrlenW($Address) Local $Ret = DllCall($_KERNEL32DLL, 'int', 'lstrlenW', 'ptr', $Address) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_lstrlenW Func API_VirtualProtect($Address, $Size, $Protection) Local $Ret = DllCall($_KERNEL32DLL, 'bool', 'VirtualProtect', 'ptr', $Address, 'dword_ptr', $Size, 'dword', $Protection, 'dword*', 0) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_VirtualProtect Func API_ZeroMemory($Address, $Size) Local $Ret = DllCall($_KERNEL32DLL, 'none', 'RtlZeroMemory', 'ptr', $Address, 'dword_ptr', $Size) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ;==>API_ZeroMemory Func MemLib_BuildImportTable($CodeBase, $PEHeader) Local Const $IMAGE_DIRECTORY_ENTRY_IMPORT = 1 Local Const $SizeOfPtr = DllStructGetSize(DllStructCreate('ptr', 1)) Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfDataDirectory = DllStructGetSize(DllStructCreate($tagIMAGE_DATA_DIRECTORY)) Local $ImportDirectoryPtr = $PEHeader + DllStructGetSize($IMAGE_NT_HEADER) + $IMAGE_DIRECTORY_ENTRY_IMPORT * $SizeOfDataDirectory Local $ImportDirectory = DllStructCreate($tagIMAGE_DATA_DIRECTORY, $ImportDirectoryPtr) Local $ImportSize = DllStructGetData($ImportDirectory, 'Size') Local $ImportVirtualAddress = DllStructGetData($ImportDirectory, 'VirtualAddress') Local $SizeOfImportDir = DllStructGetSize(DllStructCreate($tagIMAGE_IMPORT_DESCRIPTOR)) Local $ImportList = '' If $ImportSize > 0 Then Local $ImportDescPtr = $CodeBase + $ImportVirtualAddress While 1 If API_IsBadReadPtr($ImportDescPtr, $SizeOfImportDir) Then ExitLoop Local $ImportDesc = DllStructCreate($tagIMAGE_IMPORT_DESCRIPTOR, $ImportDescPtr) Local $NameOffset = DllStructGetData($ImportDesc, 'Name') If $NameOffset = 0 Then ExitLoop Local $Name = Peek('str', $CodeBase + $NameOffset) Local $OriginalFirstThunk = DllStructGetData($ImportDesc, 'OriginalFirstThunk') Local $FirstThunk = DllStructGetData($ImportDesc, 'FirstThunk') Local $Handle = API_LoadLibrary($Name) If $Handle Then $ImportList &= $Handle & ',' Local $FuncRef = $CodeBase + $FirstThunk Local $ThunkRef = $CodeBase + $OriginalFirstThunk If $OriginalFirstThunk = 0 Then $ThunkRef = $FuncRef While 1 Local $Ref = Peek('ptr', $ThunkRef) If $Ref = 0 Then ExitLoop If BitAND(Peek('byte', $ThunkRef + $SizeOfPtr - 1), 0x80) Then Local $Ptr = API_GetProcAddress($Handle, BitAND($Ref, 0xffff)) Else Local $IMAGE_IMPORT_BY_NAME = DllStructCreate($tagIMAGE_IMPORT_BY_NAME, $CodeBase + $Ref) Local $NamePtr = DllStructGetPtr($IMAGE_IMPORT_BY_NAME, 2) Local $FuncName = Peek('str', $NamePtr) Local $Ptr = API_GetProcAddress($Handle, $FuncName) EndIf If $Ptr = 0 Then Return SetError(1, 0, False) Poke('ptr', $FuncRef, $Ptr) $ThunkRef += $SizeOfPtr $FuncRef += $SizeOfPtr WEnd Else Return SetError(1, 0, False) EndIf $ImportDescPtr += $SizeOfImportDir WEnd EndIf Return $ImportList EndFunc ;==>MemLib_BuildImportTable Func MemLib_CopySections($CodeBase, $PEHeader, $DllDataPtr) Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfFileHeader = DllStructGetPtr($IMAGE_NT_HEADER, 'Magic') - $PEHeader Local $SizeOfOptionalHeader = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfOptionalHeader') Local $NumberOfSections = DllStructGetData($IMAGE_NT_HEADER, 'NumberOfSections') Local $SectionAlignment = DllStructGetData($IMAGE_NT_HEADER, 'SectionAlignment') Local $SectionPtr = $PEHeader + $SizeOfFileHeader + $SizeOfOptionalHeader For $i = 1 To $NumberOfSections Local $Section = DllStructCreate($tagIMAGE_SECTION_HEADER, $SectionPtr) Local $VirtualAddress = DllStructGetData($Section, 'VirtualAddress') Local $SizeOfRawData = DllStructGetData($Section, 'SizeOfRawData') Local $PointerToRawData = DllStructGetData($Section, 'PointerToRawData') If $SizeOfRawData = 0 Then Local $Dest = _MemVirtualAlloc($CodeBase + $VirtualAddress, $SectionAlignment, $MEM_COMMIT, $PAGE_READWRITE) API_ZeroMemory($Dest, $SectionAlignment) Else Local $Dest = _MemVirtualAlloc($CodeBase + $VirtualAddress, $SizeOfRawData, $MEM_COMMIT, $PAGE_READWRITE) _MemMoveMemory($DllDataPtr + $PointerToRawData, $Dest, $SizeOfRawData) EndIf DllStructSetData($Section, 'VirtualSize', $Dest - $CodeBase) $SectionPtr += DllStructGetSize($Section) Next EndFunc ;==>MemLib_CopySections Func MemLib_FinalizeSections($CodeBase, $PEHeader) Local Const $IMAGE_SCN_MEM_EXECUTE = 0x20000000 Local Const $IMAGE_SCN_MEM_READ = 0x40000000 Local Const $IMAGE_SCN_MEM_WRITE = 0x80000000 Local Const $IMAGE_SCN_MEM_NOT_CACHED = 0x4000000 Local Const $IMAGE_SCN_CNT_INITIALIZED_DATA = 64 Local Const $IMAGE_SCN_CNT_UNINITIALIZED_DATA = 128 Local Const $PAGE_WRITECOPY = 0x0008 Local Const $PAGE_EXECUTE_WRITECOPY = 0x0080 Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfFileHeader = DllStructGetPtr($IMAGE_NT_HEADER, 'Magic') - $PEHeader Local $SizeOfOptionalHeader = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfOptionalHeader') Local $NumberOfSections = DllStructGetData($IMAGE_NT_HEADER, 'NumberOfSections') Local $SectionAlignment = DllStructGetData($IMAGE_NT_HEADER, 'SectionAlignment') Local $SectionPtr = $PEHeader + $SizeOfFileHeader + $SizeOfOptionalHeader For $i = 1 To $NumberOfSections Local $Section = DllStructCreate($tagIMAGE_SECTION_HEADER, $SectionPtr) Local $Characteristics = DllStructGetData($Section, 'Characteristics') Local $SizeOfRawData = DllStructGetData($Section, 'SizeOfRawData') Local $Executable = (BitAND($Characteristics, $IMAGE_SCN_MEM_EXECUTE) <> 0) Local $Readable = (BitAND($Characteristics, $IMAGE_SCN_MEM_READ) <> 0) Local $Writeable = (BitAND($Characteristics, $IMAGE_SCN_MEM_WRITE) <> 0) Local $ProtectList[8] = [$PAGE_NOACCESS, $PAGE_EXECUTE, $PAGE_READONLY, $PAGE_EXECUTE_READ, $PAGE_WRITECOPY, $PAGE_EXECUTE_WRITECOPY, $PAGE_READWRITE, $PAGE_EXECUTE_READWRITE] Local $Protect = $ProtectList[$Executable + $Readable * 2 + $Writeable * 4] If BitAND($Characteristics, $IMAGE_SCN_MEM_NOT_CACHED) Then $Protect = BitOR($Protect, $PAGE_NOCACHE) Local $Size = $SizeOfRawData If $Size = 0 Then If BitAND($Characteristics, $IMAGE_SCN_CNT_INITIALIZED_DATA) Then $Size = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfInitializedData') ElseIf BitAND($Characteristics, $IMAGE_SCN_CNT_UNINITIALIZED_DATA) Then $Size = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfUninitializedData') EndIf EndIf If $Size > 0 Then Local $PhysicalAddress = $CodeBase + DllStructGetData($Section, 'VirtualSize') API_VirtualProtect($PhysicalAddress, $Size, $Protect) EndIf $SectionPtr += DllStructGetSize($Section) Next EndFunc ;==>MemLib_FinalizeSections Func MemLib_FreeLibrary($ModulePtr) If Not MemLib_Vaild($ModulePtr) Then Return 0 Local $Module = DllStructCreate($tagModule, $ModulePtr) Local $CodeBase = DllStructGetData($Module, 'CodeBase') Local $DllEntry = DllStructGetData($Module, 'DllEntry') Local $Initialized = DllStructGetData($Module, 'Initialized') Local $ImportListPtr = DllStructGetData($Module, 'ImportList') Local $ExportListPtr = DllStructGetData($Module, 'ExportList') If $Initialized And $DllEntry Then Local $Success = MemoryFuncCall('bool', $DllEntry, 'ptr', $CodeBase, 'dword', 0, 'ptr', 0) DllStructSetData($Module, 'Initialized', 0) EndIf If $ExportListPtr Then _MemGlobalFree($ExportListPtr) If $ImportListPtr Then Local $ImportList = StringSplit(Peek('str', $ImportListPtr), ',') For $i = 1 To $ImportList[0] If $ImportList[$i] Then API_FreeLibrary($ImportList[$i]) Next _MemGlobalFree($ImportListPtr) EndIf If $CodeBase Then _MemVirtualFree($CodeBase, 0, $MEM_RELEASE) DllStructSetData($Module, 'CodeBase', 0) DllStructSetData($Module, 'ExportList', 0) _MemGlobalFree($ModulePtr) Return 1 EndFunc ;==>MemLib_FreeLibrary Func MemLib_GetExportList($CodeBase, $PEHeader) Local Const $IMAGE_DIRECTORY_ENTRY_EXPORT = 0 Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfDataDirectory = DllStructGetSize(DllStructCreate($tagIMAGE_DATA_DIRECTORY)) Local $ExportDirectoryPtr = $PEHeader + DllStructGetSize($IMAGE_NT_HEADER) + $IMAGE_DIRECTORY_ENTRY_EXPORT * $SizeOfDataDirectory Local $ExportDirectory = DllStructCreate($tagIMAGE_DATA_DIRECTORY, $ExportDirectoryPtr) Local $ExportSize = DllStructGetData($ExportDirectory, 'Size') Local $ExportVirtualAddress = DllStructGetData($ExportDirectory, 'VirtualAddress') Local $ExportList = '' If $ExportSize > 0 Then Local $IMAGE_EXPORT_DIRECTORY = DllStructCreate($tagIMAGE_EXPORT_DIRECTORY, $CodeBase + $ExportVirtualAddress) Local $NumberOfNames = DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'NumberOfNames') Local $NumberOfFunctions = DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'NumberOfFunctions') Local $AddressOfFunctions = DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'AddressOfFunctions') If $NumberOfNames = 0 Or $NumberOfFunctions = 0 Then Return '' Local $NameRef = $CodeBase + DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'AddressOfNames') Local $Ordinal = $CodeBase + DllStructGetData($IMAGE_EXPORT_DIRECTORY, 'AddressOfNameOrdinals') For $i = 1 To $NumberOfNames Local $Ref = Peek('dword', $NameRef) Local $Idx = Peek('word', $Ordinal) Local $FuncName = Peek('str', $CodeBase + $Ref) If $Idx <= $NumberOfFunctions Then Local $Addr = $CodeBase + Peek('dword', $CodeBase + $AddressOfFunctions + $Idx * 4) $ExportList &= $FuncName & Chr(1) & $Addr & Chr(1) EndIf $NameRef += 4 $Ordinal += 2 Next EndIf Return $ExportList EndFunc ;==>MemLib_GetExportList Func MemLib_GetProcAddress($ModulePtr, $FuncName) Local $ExportPtr = Peek('ptr', $ModulePtr) If Not $ExportPtr Then Return 0 Local $ExportList = Peek('str', $ExportPtr) Local $Match = StringRegExp($ExportList, '(?i)' & $FuncName & '\001([^\001]*)\001', 3) If Not @error Then Return Ptr($Match[0]) Return 0 EndFunc ;==>MemLib_GetProcAddress Func MemLib_LoadLibrary($DllBinary) $DllBinary = Binary($DllBinary) Local $DllData = DllStructCreate('byte[' & BinaryLen($DllBinary) & ']') Local $DllDataPtr = DllStructGetPtr($DllData) DllStructSetData($DllData, 1, $DllBinary) Local $IMAGE_DOS_HEADER = DllStructCreate($tagIMAGE_DOS_HEADER, $DllDataPtr) If DllStructGetData($IMAGE_DOS_HEADER, 'e_magic') <> 0x5A4D Then Return SetError(1, 0, 0) EndIf Local $PEHeader = $DllDataPtr + DllStructGetData($IMAGE_DOS_HEADER, 'e_lfanew') Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) If DllStructGetData($IMAGE_NT_HEADER, 'Signature') <> 0x4550 Then Return SetError(1, 0, 0) EndIf Switch DllStructGetData($IMAGE_NT_HEADER, 'Magic') Case 0x10B If @AutoItX64 Then Return SetError(2, 0, 0) Case 0x20B If Not @AutoItX64 Then Return SetError(2, 0, 0) EndSwitch Local $ImageBase = DllStructGetData($IMAGE_NT_HEADER, 'ImageBase') Local $SizeOfImage = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfImage') Local $SizeOfHeaders = DllStructGetData($IMAGE_NT_HEADER, 'SizeOfHeaders') Local $AddressOfEntryPoint = DllStructGetData($IMAGE_NT_HEADER, 'AddressOfEntryPoint') Local $ModulePtr = _MemGlobalAlloc(DllStructGetSize(DllStructCreate($tagModule)), $GPTR) If $ModulePtr = 0 Then Return SetError(3, 0, 0) Local $Module = DllStructCreate($tagModule, $ModulePtr) Local $CodeBase = _MemVirtualAlloc($ImageBase, $SizeOfImage, $MEM_RESERVE, $PAGE_READWRITE) If $CodeBase = 0 Then $CodeBase = _MemVirtualAlloc(0, $SizeOfImage, $MEM_RESERVE, $PAGE_READWRITE) If $CodeBase = 0 Then Return SetError(3, 0, 0) DllStructSetData($Module, 'CodeBase', $CodeBase) _MemVirtualAlloc($CodeBase, $SizeOfImage, $MEM_COMMIT, $PAGE_READWRITE) Local $Base = _MemVirtualAlloc($CodeBase, $SizeOfHeaders, $MEM_COMMIT, $PAGE_READWRITE) _MemMoveMemory($DllDataPtr, $Base, $SizeOfHeaders) MemLib_CopySections($CodeBase, $PEHeader, $DllDataPtr) Local $LocationDelta = $CodeBase - $ImageBase If $LocationDelta <> 0 Then MemLib_PerformBaseRelocation($CodeBase, $PEHeader, $LocationDelta) Local $ImportList = MemLib_BuildImportTable($CodeBase, $PEHeader) If @error Then MemLib_FreeLibrary($ModulePtr) Return SetError(2, 0, 0) EndIf Local $ExportList = MemLib_GetExportList($CodeBase, $PEHeader) Local $ImportListPtr = _MemGlobalAlloc(StringLen($ImportList) + 2, $GPTR) Local $ExportListPtr = _MemGlobalAlloc(StringLen($ExportList) + 2, $GPTR) DllStructSetData($Module, 'ImportList', $ImportListPtr) DllStructSetData($Module, 'ExportList', $ExportListPtr) If $ImportListPtr = 0 Or $ExportListPtr = 0 Then MemLib_FreeLibrary($ModulePtr) Return SetError(3, 0, 0) EndIf Poke('str', $ImportListPtr, $ImportList) Poke('str', $ExportListPtr, $ExportList) MemLib_FinalizeSections($CodeBase, $PEHeader) Local $DllEntry = $CodeBase + $AddressOfEntryPoint DllStructSetData($Module, 'DllEntry', $DllEntry) DllStructSetData($Module, 'Initialized', 0) If $AddressOfEntryPoint Then Local $Success = MemoryFuncCall('bool', $DllEntry, 'ptr', $CodeBase, 'dword', 1, 'ptr', 0) If Not $Success[0] Then MemLib_FreeLibrary($ModulePtr) Return SetError(4, 0, 0) EndIf DllStructSetData($Module, 'Initialized', 1) EndIf Return $ModulePtr EndFunc ;==>MemLib_LoadLibrary Func MemLib_PerformBaseRelocation($CodeBase, $PEHeader, $LocationDelta) Local Const $IMAGE_DIRECTORY_ENTRY_BASERELOC = 5 Local Const $IMAGE_REL_BASED_HIGHLOW = 3 Local Const $IMAGE_REL_BASED_DIR64 = 10 Local $IMAGE_NT_HEADER = DllStructCreate($tagIMAGE_NT_HEADER, $PEHeader) Local $SizeOfDataDirectory = DllStructGetSize(DllStructCreate($tagIMAGE_DATA_DIRECTORY)) Local $RelocDirectoryPtr = $PEHeader + DllStructGetSize($IMAGE_NT_HEADER) + $IMAGE_DIRECTORY_ENTRY_BASERELOC * $SizeOfDataDirectory Local $RelocDirectory = DllStructCreate($tagIMAGE_DATA_DIRECTORY, $RelocDirectoryPtr) Local $RelocSize = DllStructGetData($RelocDirectory, 'Size') Local $RelocVirtualAddress = DllStructGetData($RelocDirectory, 'VirtualAddress') If $RelocSize > 0 Then Local $Relocation = $CodeBase + $RelocVirtualAddress While 1 Local $IMAGE_BASE_RELOCATION = DllStructCreate($tagIMAGE_BASE_RELOCATION, $Relocation) Local $VirtualAddress = DllStructGetData($IMAGE_BASE_RELOCATION, 'VirtualAddress') Local $SizeOfBlock = DllStructGetData($IMAGE_BASE_RELOCATION, 'SizeOfBlock') If $VirtualAddress = 0 Then ExitLoop Local $Dest = $CodeBase + $VirtualAddress Local $Entries = ($SizeOfBlock - 8) / 2 Local $RelInfo = DllStructCreate('word[' & $Entries & ']', $Relocation + 8) For $i = 1 To $Entries Local $Info = DllStructGetData($RelInfo, 1, $i) Local $Type = BitShift($Info, 12) If $Type = $IMAGE_REL_BASED_HIGHLOW Or $Type = $IMAGE_REL_BASED_DIR64 Then Local $Addr = DllStructCreate('ptr', $Dest + BitAND($Info, 0xFFF)) DllStructSetData($Addr, 1, DllStructGetData($Addr, 1) + $LocationDelta) EndIf Next $Relocation += $SizeOfBlock WEnd EndIf EndFunc ;==>MemLib_PerformBaseRelocation Func MemLib_Vaild($ModulePtr) Local $ModuleSize = DllStructGetSize(DllStructCreate($tagModule)) If API_IsBadReadPtr($ModulePtr, $ModuleSize) Then Return False Local $Module = DllStructCreate($tagModule, $ModulePtr) Local $CodeBase = DllStructGetData($Module, 'CodeBase') If Not $CodeBase Then Return False Return True EndFunc ;==>MemLib_Vaild Func MemoryDllCall($Module, $RetType, $FuncName, $Type1 = '', $Param1 = 0, $Type2 = '', $Param2 = 0, $Type3 = '', $Param3 = 0, $Type4 = '', $Param4 = 0, $Type5 = '', $Param5 = 0, $Type6 = '', $Param6 = 0, $Type7 = '', $Param7 = 0, $Type8 = '', $Param8 = 0, $Type9 = '', $Param9 = 0, $Type10 = '', $Param10 = 0, $Type11 = '', $Param11 = 0, $Type12 = '', $Param12 = 0, $Type13 = '', $Param13 = 0, $Type14 = '', $Param14 = 0, $Type15 = '', $Param15 = 0, $Type16 = '', $Param16 = 0, $Type17 = '', $Param17 = 0, $Type18 = '', $Param18 = 0, $Type19 = '', $Param19 = 0, $Type20 = '', $Param20 = 0) Local $Ret, $OpenFlag = False Local Const $MaxParams = 20 If (@NumParams < 3) Or (@NumParams > $MaxParams * 2 + 3) Or (Mod(@NumParams, 2) = 0) Then Return SetError(4, 0, 0) If Not IsPtr($Module) Then $OpenFlag = True $Module = MemoryDllOpen($Module) If @error Then Return SetError(1, 0, 0) EndIf Local $Addr = MemLib_GetProcAddress($Module, $FuncName) If Not $Addr Then Return SetError(3, 0, 0) Poke('ptr', $_MFHookPtr + 1 + @AutoItX64, $Addr) Switch @NumParams Case 3 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi) Case 5 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1) Case 7 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2) Case 9 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3) Case 11 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4) Case 13 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5) Case Else Local $DllCallStr = 'DllCall ( $_KERNEL32DLL, $RetType, $_MFHookApi', $n = 1 For $i = 5 To @NumParams Step 2 $DllCallStr &= ', $Type' & $n & ', $Param' & $n $n += 1 Next $DllCallStr &= ' )' $Ret = Execute($DllCallStr) EndSwitch Local $Err = @error If $OpenFlag Then MemoryDllClose($Module) Return SetError($Err, 0, $Ret) EndFunc ;==>MemoryDllCall Func MemoryDllClose($Module) MemLib_FreeLibrary($Module) EndFunc ;==>MemoryDllClose Func MemoryDllOpen($DllBinary) If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit() Local $Module = MemLib_LoadLibrary($DllBinary) If @error Then Return SetError(@error, 0, -1) Return $Module EndFunc ;==>MemoryDllOpen Func MemoryFuncCall($RetType, $Address, $Type1 = '', $Param1 = 0, $Type2 = '', $Param2 = 0, $Type3 = '', $Param3 = 0, $Type4 = '', $Param4 = 0, $Type5 = '', $Param5 = 0, $Type6 = '', $Param6 = 0, $Type7 = '', $Param7 = 0, $Type8 = '', $Param8 = 0, $Type9 = '', $Param9 = 0, $Type10 = '', $Param10 = 0, $Type11 = '', $Param11 = 0, $Type12 = '', $Param12 = 0, $Type13 = '', $Param13 = 0, $Type14 = '', $Param14 = 0, $Type15 = '', $Param15 = 0, $Type16 = '', $Param16 = 0, $Type17 = '', $Param17 = 0, $Type18 = '', $Param18 = 0, $Type19 = '', $Param19 = 0, $Type20 = '', $Param20 = 0) If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit() Poke('ptr', $_MFHookPtr + 1 + @AutoItX64, $Address) Local $Ret Switch @NumParams Case 2 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi) Case 4 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1) Case 6 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2) Case 8 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3) Case 10 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4) Case 12 $Ret = DllCall($_KERNEL32DLL, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5) Case Else Local $DllCallStr = 'DllCall($_KERNEL32DLL, $RetType, $_MFHookApi', $n = 1 For $i = 4 To @NumParams Step 2 $DllCallStr &= ', $Type' & $n & ', $Param' & $n $n += 1 Next $DllCallStr &= ')' $Ret = Execute($DllCallStr) EndSwitch Return SetError(@error, 0, $Ret) EndFunc ;==>MemoryFuncCall Func MemoryFuncInit() Local $KernelHandle = API_LoadLibrary('kernel32.dll') API_FreeLibrary($KernelHandle) Local $HookPtr = API_GetProcAddress($KernelHandle, $_MFHookApi) Local $HookSize = 7 + @AutoItX64 * 5 $_MFHookPtr = $HookPtr $_MFHookBak = DllStructCreate('byte[' & $HookSize & ']') If Not API_VirtualProtect($_MFHookPtr, $HookSize, $PAGE_EXECUTE_READWRITE) Then Return False DllStructSetData($_MFHookBak, 1, Peek('byte[' & $HookSize & ']', $_MFHookPtr)) If @AutoItX64 Then Poke('word', $_MFHookPtr, 0xB848) Poke('word', $_MFHookPtr + 10, 0xE0FF) Else Poke('byte', $_MFHookPtr, 0xB8) Poke('word', $_MFHookPtr + 5, 0xE0FF) EndIf Return True EndFunc ;==>MemoryFuncInit Func Peek($Type, $Ptr) If $Type = 'str' Then $Type = 'char[' & API_lstrlenA($Ptr) & ']' ElseIf $Type = 'wstr' Then $Type = 'wchar[' & API_lstrlenW($Ptr) & ']' EndIf Return DllStructGetData(DllStructCreate($Type, $Ptr), 1) EndFunc ;==>Peek Func Poke($Type, $Ptr, $Value) If $Type = 'str' Then $Type = 'char[' & (StringLen($Value) + 1) & ']' ElseIf $Type = 'wstr' Then $Type = 'wchar[' & (StringLen($Value) + 1) & ']' EndIf DllStructSetData(DllStructCreate($Type, $Ptr), 1, $Value) EndFunc ;==>Poke #EndRegion Download 7-Zip archive for the UDF, DLLs and examples: WebP v0.3.1 build 2022-06-18 beta.7z
-
_GDIPlus_BitmapApplyFilter v0.9.8 build 2024-04-17 beta
UEZ posted a topic in AutoIt Example Scripts
Since I disovered FreeBasic I decided to create a DLL to implement much faster image processing functionality to AutoIt. Following functions are implemented yet: _GDIPlus_BitmapApplyFilter_BWJJNDithering _GDIPlus_BitmapApplyFilter_BWBayerOrderedDithering _GDIPlus_BitmapApplyFilter_Cartoon1 _GDIPlus_BitmapApplyFilter_ColorAccent _GDIPlus_BitmapApplyFilter_Convolution_AnotherBlur _GDIPlus_BitmapApplyFilter_Convolution_BoxBlur _GDIPlus_BitmapApplyFilter_Convolution_EdgeDetection1 _GDIPlus_BitmapApplyFilter_Convolution_EdgeDetection2 _GDIPlus_BitmapApplyFilter_Convolution_EdgeDetection3 _GDIPlus_BitmapApplyFilter_Convolution_EdgeDetection4 _GDIPlus_BitmapApplyFilter_Convolution_EdgeDetection5 _GDIPlus_BitmapApplyFilter_Convolution_EdgeDetection6 _GDIPlus_BitmapApplyFilter_Convolution_Emboss1 _GDIPlus_BitmapApplyFilter_Convolution_Emboss45Degree _GDIPlus_BitmapApplyFilter_Convolution_EmbossTopLeftBottomRight _GDIPlus_BitmapApplyFilter_Convolution_Gaussian3x3 _GDIPlus_BitmapApplyFilter_Convolution_Gaussian5x5_1 _GDIPlus_BitmapApplyFilter_Convolution_Gaussian5x5_2 _GDIPlus_BitmapApplyFilter_Convolution_GaussianBlur _GDIPlus_BitmapApplyFilter_Convolution_IntenseEmboss _GDIPlus_BitmapApplyFilter_Convolution_Kirsch _GDIPlus_BitmapApplyFilter_Convolution_Laplace1 _GDIPlus_BitmapApplyFilter_Convolution_Laplace2 _GDIPlus_BitmapApplyFilter_Convolution_Laplace3 _GDIPlus_BitmapApplyFilter_Convolution_LaplacianOfGaussian _GDIPlus_BitmapApplyFilter_Convolution_ManualMatrix _GDIPlus_BitmapApplyFilter_Convolution_MotionBlur _GDIPlus_BitmapApplyFilter_Convolution_Outline3x3 _GDIPlus_BitmapApplyFilter_Convolution_Prewitt _GDIPlus_BitmapApplyFilter_Convolution_Sharpen1 _GDIPlus_BitmapApplyFilter_Convolution_Sharpen2 _GDIPlus_BitmapApplyFilter_Convolution_Sobel _GDIPlus_BitmapApplyFilter_Convolution_SovelVsPrewitt _GDIPlus_BitmapApplyFilter_Convolution_TriangleBlur _GDIPlus_BitmapApplyFilter_Convolution_Unsharp _GDIPlus_BitmapApplyFilter_Convolution_Unsharp5x5 _GDIPlus_BitmapApplyFilter_Delaunay _GDIPlus_BitmapApplyFilter_Dilatation _GDIPlus_BitmapApplyFilter_DistortionBlur _GDIPlus_BitmapApplyFilter_Edges _GDIPlus_BitmapApplyFilter_Erosion _GDIPlus_BitmapApplyFilter_FakeGreyscale _GDIPlus_BitmapApplyFilter_FishEye _GDIPlus_BitmapApplyFilter_Indexed _GDIPlus_BitmapApplyFilter_Jitter _GDIPlus_BitmapApplyFilter_Kuwahara _GDIPlus_BitmapApplyFilter_Linellism _GDIPlus_BitmapApplyFilter_Median _GDIPlus_BitmapApplyFilter_Median2 _GDIPlus_BitmapApplyFilter_Mosaic _GDIPlus_BitmapApplyFilter_OilPainting _GDIPlus_BitmapApplyFilter_Open _GDIPlus_BitmapApplyFilter_PenSketch _GDIPlus_BitmapApplyFilter_PenSketch2 _GDIPlus_BitmapApplyFilter_Pixelate _GDIPlus_BitmapApplyFilter_Pointillism _GDIPlus_BitmapApplyFilter_RadialBlur _GDIPlus_BitmapApplyFilter_Raster _GDIPlus_BitmapApplyFilter_Spiral _GDIPlus_BitmapApplyFilter_Swirl _GDIPlus_BitmapApplyFilter_SymmetricNearestNeighbour _GDIPlus_BitmapApplyFilter_TiltShift _GDIPlus_BitmapApplyFilter_TimeWarp _GDIPlus_BitmapApplyFilter_Ver _GDIPlus_BitmapApplyFilter_Wave _GDIPlus_BitmapApplyFilter_XRay Since I am absolutely a newbie in FreeBasic, the DLL may contain errors. Please report any bug. FreeBasic source code can be found here: https://pastebin.com/Lugp6rCR To do: add function headers with descriptions speed-up FB code -> partly done add more filters -> ongoing Credits to: Jakub Szymanowski rdc Dewald Esterhuizen Santhosh G_ Christian Graus www.gutgames.com Have fun. You can compare the speed with AutoIt version: #AutoIt3Wrapper_Version=b #include <Array.au3> #include <GDIPlus.au3> Global $sFile = FileOpenDialog("Select an image", "", "Images (*.jpg;*.png;*.gif;*.bmp)") If @error Then Exit _GDIPlus_Startup() Global Const $STM_SETIMAGE = 0x0172 Global Const $hImage = _GDIPlus_ImageLoadFromFile($sFile) Global Const $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) Global Const $hGUI = GUICreate("GDI+ Image Filters", $iW * 2, $iH) Global $fProg = 0, $iEnd = $iW * $iH - 1 AdlibRegister("Progress", 490) Global $t = TimerInit() Global Const $hGDIBitmap = _GDIPlus_BitmapApplyFilter_Median($hImage, 4) ConsoleWrite(Round(TimerDiff($t) / 1000, 2) & " s / " & Round(TimerDiff($t) / 60000, 2) & " min" & @CRLF) Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW - 1, $iH - 1) Global Const $iPic_o = GUICtrlCreatePic("", $iW, 0, $iW - 1, $iH - 1) _WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hGDIBitmap)) Global Const $hGDIBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) _WinAPI_DeleteObject(GUICtrlSendMsg($iPic_o, $STM_SETIMAGE, $IMAGE_BITMAP, $hGDIBitmap2)) GUISetState() AdlibUnRegister("Progress") ToolTip("") Do Until GUIGetMsg() = -3 _GDIPlus_ImageDispose($hImage) _WinAPI_DeleteObject($hGDIBitmap) _WinAPI_DeleteObject($hGDIBitmap2) _GDIPlus_Shutdown() Exit Func Progress() ToolTip(Int($fProg / $iEnd * 100) & " % / " & Round(TimerDiff($t) / 60000, 2) & " min", MouseGetPos(0) + 30, MouseGetPos(1) + 30) EndFunc #Region Symmetric Nearest Neighbour Func _GDIPlus_BitmapApplyFilter_SymmetricNearestNeighbour($hImage, $fRadius = 2, $bGDI = True) ;no alpha channel implemented yet Local Const $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) Local Const $hBitmap_Dest = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local Const $tBitmapData_Dest = _GDIPlus_BitmapLockBits($hBitmap_Dest, 0, 0, $iW - 1, $iH - 1, $GDIP_ILMWRITE, $GDIP_PXF32ARGB) Local Const $iScan0_Dest = DllStructGetData($tBitmapData_Dest, "Scan0") Local Const $tPixel_Dest = DllStructCreate("int[" & $iW * $iH & "];", $iScan0_Dest) Local Const $tBitmapData = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iW - 1, $iH - 1, $GDIP_ILMREAD, $GDIP_PXF32ARGB) Local Const $iScan0 = DllStructGetData($tBitmapData, "Scan0") Local Const $tPixel = DllStructCreate("int[" & $iW * $iH & "];", $iScan0) Local $iRowOffset, $iX, $iY, $c, $k, $sumR, $sumG, $sumB, $iCount, $xx, $yy, $iR, $iG, $iB, $iR1, $iG1, $iB1, $iR2, $iG2, $iB2, $x, $y For $iY = 0 To $iH - 1 $iRowOffset = $iY * $iW For $iX = 0 To $iW - 1 $sumR = 0 $sumG = 0 $sumB = 0 $iCount = 0 $c = DllStructGetData($tPixel, 1, $iRowOffset + $iX) $iR = BitShift(BitAND(0x00FF0000, $c), 16) $iG = BitShift(BitAND(0x0000FF00, $c), 8) $iB = BitAND(0x000000FF, $c) For $yy = -$fRadius To $fRadius For $xx = -$fRadius To $fRadius $k = $iX + $xx $x = $k < 0 ? 0 : $k > $iW - 1 ? $iW - 1 : $k $k = $iY + $yy $y = $k < 0 ? 0 : $k > $iH - 1 ? $iH - 1 : $k $c = DllStructGetData($tPixel, 1, $y * $iW + $x) $iR1 = BitShift(BitAND(0x00FF0000, $c), 16) $iG1 = BitShift(BitAND(0x0000FF00, $c), 8) $iB1 = BitAND(0x000000FF, $c) $k = $iX - $xx $x = $k < 0 ? 0 : $k > $iW - 1 ? $iW - 1 : $k $k = ($iY - $yy) $y = $k < 0 ? 0 : $k > $iH - 1 ? $iH - 1 : $k $c = DllStructGetData($tPixel, 1, $y * $iW + $x) $iR2 = BitShift(BitAND(0x00FF0000, $c), 16) $iG2 = BitShift(BitAND(0x0000FF00, $c), 8) $iB2 = BitAND(0x000000FF, $c) If __DeltaE($iR, $iG, $iB, $iR1, $iG1, $iB1) < __DeltaE($iR, $iG, $iB, $iR2, $iG2, $iB2) Then $sumR += $iR1 $sumG += $iG1 $sumB += $iB1 Else $sumR += $iR2 $sumG += $iG2 $sumB += $iB2 EndIf $iCount += 1 Next Next DllStructSetData($tPixel_Dest, 1, 0xFF000000 + Int($sumR / $iCount) * 0x10000 + Int($sumG / $iCount) * 0x100 + Int($sumB / $iCount), $iRowOffset + $iX) $fProg += 1 Next Next _GDIPlus_BitmapUnlockBits($hImage, $tBitmapData) _GDIPlus_BitmapUnlockBits($hBitmap_Dest, $tBitmapData_Dest) _GDIPlus_ImageSaveToFile($hBitmap_Dest, @ScriptDir & "\Filter_SNN" & $fRadius & "_" & @YEAR & @MON & @MDAY & @MIN & @SEC & ".png") If $bGDI Then Local $hGDIBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Dest) _GDIPlus_BitmapDispose($hBitmap_Dest) Return $hGDIBitmap EndIf Return $hBitmap_Dest EndFunc Func __DeltaE($iR1, $iG1, $iB1, $iR2, $iG2, $iB2) Return Sqrt(($iR1 - $iR2) * ($iR1 - $iR2) + ($iG1 - $iG2) * ($iG1 - $iG2) + ($iB1 - $iB2) * ($iB1 - $iB2)) EndFunc #EndRegion #Region Jitter Func _GDIPlus_BitmapApplyFilter_Jitter($hImage, $iAmount = 20, $bGDI = True) Local Const $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) Local Const $hBitmap_Dest = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local Const $tBitmapData_Dest = _GDIPlus_BitmapLockBits($hBitmap_Dest, 0, 0, $iW - 1, $iH - 1, $GDIP_ILMWRITE, $GDIP_PXF32ARGB) Local Const $iScan0_Dest = DllStructGetData($tBitmapData_Dest, "Scan0") Local Const $tPixel_Dest = DllStructCreate("int[" & $iW * $iH & "];", $iScan0_Dest) Local Const $tBitmapData = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iW - 1, $iH - 1, $GDIP_ILMREAD, $GDIP_PXF32ARGB) Local Const $iScan0 = DllStructGetData($tBitmapData, "Scan0") Local Const $tPixel = DllStructCreate("int[" & $iW * $iH & "];", $iScan0) Local $iX, $iY, $iRowOffset, $fNX, $fNY For $iY = 0 To $iH - 1 $iRowOffset = $iY * $iW + 1 For $iX = 0 To $iW - 1 $fNX = $iX + Int((Random() - 0.5) * $iAmount) $fNX = $fNX < 1 ? 1 : $fNX > $iW - 1 ? $iW - 1 : $fNX $fNY = ($iY + Int((Random() - 0.5) * $iAmount)) $fNY = $fNY < 1 ? 1 : $fNY > $iH - 1 ? $iH - 1 : $fNY $fNY *= $iW DllStructSetData($tPixel_Dest, 1, DllStructGetData($tPixel, 1, $fNY + $fNX), $iRowOffset + $iX) $fProg += 1 Next Next _GDIPlus_BitmapUnlockBits($hImage, $tBitmapData) _GDIPlus_BitmapUnlockBits($hBitmap_Dest, $tBitmapData_Dest) _GDIPlus_ImageSaveToFile($hBitmap_Dest, @ScriptDir & "\Filter_Jitter" & $iAmount & "_" & @YEAR & @MON & @MDAY & @MIN & @SEC & ".png") If $bGDI Then Local $hGDIBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Dest) _GDIPlus_BitmapDispose($hBitmap_Dest) Return $hGDIBitmap EndIf Return $hBitmap_Dest EndFunc #EndRegion #Region Median Func _GDIPlus_BitmapApplyFilter_Median($hImage, $fRadius = 3, $bGDI = True) Local Const $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) Local Const $hBitmap_Dest = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local Const $tBitmapData_Dest = _GDIPlus_BitmapLockBits($hBitmap_Dest, 0, 0, $iW - 1, $iH - 1, $GDIP_ILMWRITE, $GDIP_PXF32ARGB) Local Const $iScan0_Dest = DllStructGetData($tBitmapData_Dest, "Scan0") Local Const $tPixel_Dest = DllStructCreate("int[" & $iW * $iH & "];", $iScan0_Dest) Local Const $tBitmapData = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iW - 1, $iH - 1, $GDIP_ILMREAD, $GDIP_PXF32ARGB) Local Const $iScan0 = DllStructGetData($tBitmapData, "Scan0") Local Const $tPixel = DllStructCreate("int[" & $iW * $iH & "];", $iScan0) Local $iX, $iY, $iRowOffset For $iY = 0 To $iH - 1 $iRowOffset = $iY * $iW + 1 For $iX = 0 To $iW - 1 DllStructSetData($tPixel_Dest, 1, __Median_Value($iX, $iY, $fRadius, $tPixel, $iW, $iH), $iRowOffset + $iX) $fProg += 1 Next Next _GDIPlus_BitmapUnlockBits($hImage, $tBitmapData) _GDIPlus_BitmapUnlockBits($hBitmap_Dest, $tBitmapData_Dest) _GDIPlus_ImageSaveToFile($hBitmap_Dest, @ScriptDir & "\Filter_Median" & $fRadius & "_" & @YEAR & @MON & @MDAY & @MIN & @SEC & ".png") If $bGDI Then Local $hGDIBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Dest) _GDIPlus_BitmapDispose($hBitmap_Dest) Return $hGDIBitmap EndIf Return $hBitmap_Dest EndFunc Func __Median_Value($iPosX, $iPosY, $fRadius, $tPixel, $iW, $iH) Local $iX, $iY, $aColors[1000], $iColors = 0, $iSize = $iW * $iH - 1, $iOff, $e For $iX = $iPosX - $fRadius To $iPosX + $fRadius For $iY = $iPosY - $fRadius To $iPosY + $fRadius $iOff = 1 + $iY * $iW + $iX $aColors[$iColors] = DllStructGetData($tPixel, 1, $iOff < 1 ? 1 : $iOff > $iSize ? $iSize : $iOff) $iColors += 1 Next Next ReDim $aColors[$iColors] ;~ _ArraySort($aColors, 0) $e = $iColors - 1 __ArrayQuickSort1D($aColors, 0, $e) Local $iMid = Floor($iColors / 2), $iMedian If BitAND($iColors, 1) Then $iMedian = Int($aColors[$iMid + 1]) Else $iMedian = Int(($aColors[$iMid] + $aColors[$iMid + 1]) / 2) EndIf Return $iMedian EndFunc #EndRegion _GDIPlus_BitmapApplyFilter v0.9.8 build 2024-04-17 beta.7z -
As a request in this thread I wrote a small function to add a transparency mask to a bitmap. I post it here with an example, maybe someone else will need it. The function works with both 32/64 bit versions of AutoIt. #AutoIt3Wrapper_UseX64=y #include <GDIPlus.au3> #include <Memory.au3> $hMain = GUICreate('Transparency mask blending', 720, 400) $cPic = GUICtrlCreatePic('', 0, 0, 720, 400) GUISetState(@SW_SHOW, $hMain) _GDIPlus_Startup() $hDraw = _GDIPlus_BitmapCreateFromScan0(720, 400) $hBackground = _GDIPlus_ImageLoadFromFile('background.png') $hTree = _GDIPlus_ImageLoadFromFile('tree.png') $hMask = _GDIPlus_ImageLoadFromFile('mask.png') $hGraphics = _GDIPlus_ImageGetGraphicsContext($hDraw) $aDim = _GDIPlus_ImageGetDimension($hTree) $DrawWithMask = False AdlibRegister('Draw', 3000) Draw() Do Until GUIGetMsg() = -3 ; GUI_EVENT_CLOSE _GDIPlus_BitmapDispose($hDraw) _GDIPlus_ImageDispose($hBackground) _GDIPlus_ImageDispose($hTree) _GDIPlus_ImageDispose($hMask) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Func Draw() _GDIPlus_GraphicsClear($hGraphics) _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hBackground, 0, 0, 720, 400, 0, 0, 720, 400) If $DrawWithMask Then Local $hCloneTree = _GDIPlus_ImageClone($hTree) SetBitmapMask($hCloneTree, $hMask) _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hCloneTree, 0, 0, $aDim[0], $aDim[1], 550, 200, $aDim[0], $aDim[1]) _GDIPlus_ImageDispose($hCloneTree) Else _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hTree, 0, 0, $aDim[0], $aDim[1], 550, 200, $aDim[0], $aDim[1]) EndIf BitmapToCtrl($hDraw, $cPic) $DrawWithMask = Not $DrawWithMask EndFunc Func SetBitmapMask($hBitmap, $hMask) Local $aDim1 = _GDIPlus_ImageGetDimension($hBitmap) Local $aDim2 = _GDIPlus_ImageGetDimension($hMask) If $aDim1[0] <> $aDim2[0] Or $aDim1[1] <> $aDim1[1] Then Return SetError(1, 0, Null) Local $tBitmap = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aDim1[0], $aDim1[1], BitOR($GDIP_ILMWRITE, $GDIP_ILMREAD), $GDIP_PXF32ARGB) Local $tMask = _GDIPlus_BitmapLockBits($hMask, 0, 0, $aDim2[0], $aDim2[1], BitOR($GDIP_ILMWRITE, $GDIP_ILMREAD), $GDIP_PXF32ARGB) If @AutoItX64 Then Local $sCode = '0x56534C89C6BBFFFFFF00AD25000000FF211A09024883C204E2F05B5EC3' Else Local $sCode = '0x8B4C24048B7C24088B74240CBBFFFFFF00AD25000000FF211F090783C704E2F1C20C00' EndIf Local $dCode = Binary($sCode) Local $iCode = BinaryLen($dCode) Local $pCode = _MemVirtualAlloc(0, $iCode, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE) Local $tCode = DllStructCreate('byte Code[' & $iCode & ']', $pCode) $tCode.Code = $dCode Local $aCall = DllCallAddress('int', DllStructGetPtr($tCode), 'int', $aDim1[0] * $aDim1[1], 'ptr', $tBitmap.Scan0, 'ptr', $tMask.Scan0) _MemVirtualFree($pCode, $iCode, $MEM_DECOMMIT) _GDIPlus_BitmapUnlockBits($hBitmap, $tBitmap) _GDIPlus_BitmapUnlockBits($hMask, $tMask) Return $aDim1 EndFunc Func BitmapToCtrl($hBitmap, $cCtrl) Local Static $STM_SETIMAGE = 0x0172 $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) _WinAPI_DeleteObject(GUICtrlSendMsg($cCtrl, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP)) _WinAPI_DeleteObject($hHBITMAP) EndFunc Resources used in this example can be downloaded at the link below (sorry for external link, my attachement quota is 100%). Credits for graphics resources goes to https://itch.io. Transparency Mask.zip
-
This is a replication of an old game called Bulldozer created by John 'FlyMan' Hattan (The Code Zone). There is another implementation in AutoHotkey made by Weston Campbell so I made one in AutoIt. In Weston's github repository you can check the game objective and all valid movements and objects. The controls are: UP - Move bulldozer up DOWN - Move bulldozer down RIGHT - Move bulldozer right LEFT - Move bulldozer left R - Restart current level U - Undo last move J - Jump to a specific level PAUSE - Pause the game Currently I added just first 30 40 60 levels but the original game have 180 levels (eventually I will add all of them). Since Weston's code is on github I suppose it's under some kind of creative license so I didn't bother to create other sprites but if someone have time and inspiration to create new sprites, I am open to add new sprites. To do: Maybe some music Hall of fame / Score table Add all original game levels Add more custom levels Provide access to settings (fonts, colors, sprites, hotkeys, etc) In the attachment is a compiled executable and also the source code. #NoTrayIcon #include-once #include <GDIPlus.au3> #include <WinAPI.au3> #include <SQLite.au3> If Not FileExists(@ScriptDir & '\Bulldozer.sqlite') Then MsgBox(0x10, 'Error', 'Database could not be located!', 10) Exit EndIf _SQLite_Startup(@ScriptDir & '\sqlite3.dll') Global $hDB = _SQLite_Open(@ScriptDir & '\Bulldozer.sqlite') Global Const $TileSize = Number(ReadProperty('TileSize', 32)) Global Const $XTiles = Number(ReadProperty('XTiles', 35)) Global Const $YTiles = Number(ReadProperty('YTiles', 25)) If @DesktopWidth < $XTiles * $TileSize Or @DesktopHeight < $YTiles * $TileSize Then MsgBox(0x30, 'Warning', 'For a better experience you need a display with a resolution ' & String($XTiles * $TileSize) & 'x' & String($YTiles * $TileSize) & '.', 10) EndIf Global $X, $Y, $Direction Global $mResources[] Global $mTiles[] Global $aTiles = GetTiles() If IsArray($aTiles) Then For $Index = 1 To UBound($aTiles) - 1 If $aTiles[$Index][1] Then $mTiles[$aTiles[$Index][0]] = $aTiles[$Index][1] Next Else _SQLite_Close() _SQLite_Shutdown() MsgBox(0x10, 'Error', 'Cannot retrieve game tiles from database!', 10) Exit EndIf Global $CurrentLevel = 1 Global $MaxLevel = Number(ReadProperty('MaxLevel', 1)) Global $AutoRestart = Number(ReadProperty('AutoRestart', 0)) Global $Font = ReadProperty('Font', 'Segoe UI') Global $FontSize = Number(ReadProperty('FontSize', 40)) Global $SecFontSize = Number(ReadProperty('SMFontSize', 20)) Global $MessageColor = ReadProperty('MessageColor', 0xFFFFFFFF) Global $SecMessageColor = ReadProperty('SMColor', 0xFF00A000) Global $Start, $PlayTime = 0, $Pause = False, $MsgShow = False Global $LastMove = Null, $PrevLevel = Null, $NumOfMoves = 0 Global $hMain, $aLevel[$YTiles][$XTiles] Global $ClearColor = ReadProperty('ClearColor', '0xFF000000') Global $KeyboardEnabled = False _GDIPlus_Startup() $mResources['Bitmap'] = _GDIPlus_BitmapCreateFromScan0($XTiles * $TileSize, $YTiles * $TileSize) $mResources['Graphics'] = _GDIPlus_ImageGetGraphicsContext($mResources['Bitmap']) _GDIPlus_GraphicsSetCompositingMode($mResources['Graphics'], 0) _GDIPlus_GraphicsSetCompositingQuality($mResources['Graphics'], 2) _GDIPlus_GraphicsSetInterpolationMode($mResources['Graphics'], 2) _GDIPlus_GraphicsSetSmoothingMode($mResources['Graphics'], 2) _GDIPlus_GraphicsSetTextRenderingHint($mResources['Graphics'], 3) For $Index = 1 To UBound($aTiles) - 1 If $aTiles[$Index][2] Then $mResources[$aTiles[$Index][0]] = _GDIPlus_BitmapCreateFromMemory(Unpack($aTiles[$Index][2])) Next $hMain = GUICreate('Bulldozer', $XTiles * $TileSize, $YTiles * $TileSize) $hPic = GUICtrlCreatePic('', 0, 0, $XTiles * $TileSize, $YTiles * $TileSize) GUISetState(@SW_SHOW, $hMain) LoadLevel() DrawLevel() DrawBulldozer($mResources['Bulldozer' & $Direction]) PushToScreen() While True If GUIGetMsg() = -3 Then Quit() If LevelDone() Then NextLevel() If WinActive($hMain) Then If $KeyboardEnabled = False Then KeyboardInput(True) Else If $KeyboardEnabled Then KeyboardInput(False) EndIf Sleep(10) WEnd Func Quit() Local $aKeys = MapKeys($mResources) For $Index = 0 To UBound($aKeys) - 1 $aKeys[$Index] = 'Graphics' ? _GDIPlus_GraphicsDispose($mResources[$aKeys[$Index]]) : _GDIPlus_BitmapDispose($mResources[$aKeys[$Index]]) Next _GDIPlus_Shutdown() _SQLite_Close() _SQLite_Shutdown() Exit EndFunc Func KeyboardInput($Set = True) Local $aKeys = GetKeyboard() If IsArray($aKeys) Then For $Index = 1 To UBound($aKeys) - 1 HotKeySet($aKeys[$Index][0], $Set ? $aKeys[$Index][1] : Null) Next EndIf $KeyboardEnabled = $Set EndFunc Func MoveRight() If $Pause Or $MsgShow Then Return $PrevLevel = $aLevel IsMovable($X + 1, $Y) If $X + 1 < $XTiles And IsMovable($X + 1, $Y) Then If IsRock($X + 1, $Y) And (IsEmpty($X + 2, $Y) Or IsEmptySocket($X + 2, $Y)) Then $aLevel[$Y][$X + 1] = IsSocket($X + 1, $Y) ? $mTiles['Socket'] : $mTiles['None'] $aLevel[$Y][$X + 2] = IsEmpty($X + 2, $Y) ? $mTiles['Rock'] : $mTiles['RockSocket'] $X += 1 ElseIf IsRock($X + 1, $Y) And (Not IsMovable($X + 2, $Y) Or IsRock($X + 2, $Y)) Then $X = $X Else $X += 1 EndIf $NumOfMoves += 1 EndIf $LastMove = 'R' DrawLevel() DrawBulldozer($mResources['BulldozerR']) PushToScreen() EndFunc Func MoveLeft() If $Pause Or $MsgShow Then Return $PrevLevel = $aLevel If $X - 1 > 0 And IsMovable($X - 1, $Y) Then If IsRock($X - 1, $Y) And (IsEmpty($X - 2, $Y) Or IsEmptySocket($X - 2, $Y)) Then $aLevel[$Y][$X - 1] = IsSocket($X - 1, $Y) ? $mTiles['Socket'] : $mTiles['None'] $aLevel[$Y][$X - 2] = IsEmpty($X - 2, $Y) ? $mTiles['Rock'] : $mTiles['RockSocket'] $X -= 1 ElseIf IsRock($X - 1, $Y) And (Not IsMovable($X - 2, $Y) Or IsRock($X - 2, $Y)) Then $X = $X Else $X -= 1 EndIf $NumOfMoves += 1 EndIf $LastMove = 'L' DrawLevel() DrawBulldozer($mResources['BulldozerL']) PushToScreen() EndFunc Func MoveUp() If $Pause Or $MsgShow Then Return $PrevLevel = $aLevel If $Y - 1 > 0 And IsMovable($X, $Y - 1) Then If IsRock($X, $Y - 1) And (IsEmpty($X, $Y - 2) Or IsEmptySocket($X, $Y - 2)) Then $aLevel[$Y - 1][$X] = IsSocket($X, $Y - 1) ? $mTiles['Socket'] : $mTiles['None'] $aLevel[$Y - 2][$X] = IsEmpty($X, $Y - 2) ? $mTiles['Rock'] : $mTiles['RockSocket'] $Y -= 1 ElseIf IsRock($X, $Y - 1) And (Not IsMovable($X, $Y - 2) Or IsRock($X, $Y - 2)) Then $Y = $Y Else $Y -= 1 EndIf $NumOfMoves += 1 EndIf $LastMove = 'U' DrawLevel() DrawBulldozer($mResources['BulldozerU']) PushToScreen() EndFunc Func MoveDown() If $Pause Or $MsgShow Then Return $PrevLevel = $aLevel If $Y + 1 < $YTiles And IsMovable($X, $Y + 1) Then If IsRock($X, $Y + 1) And (IsEmpty($X, $Y + 2) Or IsEmptySocket($X, $Y + 2)) Then $aLevel[$Y + 1][$X] = IsSocket($X, $Y + 1) ? $mTiles['Socket'] : $mTiles['None'] $aLevel[$Y + 2][$X] = IsEmpty($X, $Y + 2) ? $mTiles['Rock'] : $mTiles['RockSocket'] $Y += 1 ElseIf IsRock($X, $Y + 1) And (Not IsMovable($X, $Y + 2) Or IsRock($X, $Y + 2)) Then $Y = $Y Else $Y += 1 EndIf $NumOfMoves += 1 EndIf $LastMove = 'D' DrawLevel() DrawBulldozer($mResources['BulldozerD']) PushToScreen() EndFunc Func IsMovable($CX, $CY) If $CX < 0 Or $CX >= $XTiles Then Return False If $CY < 0 Or $CY >= $YTiles Then Return False Switch $aLevel[$CY][$CX] Case $mTiles['None'], $mTiles['Rock'], $mTiles['RockSocket'], $mTiles['Socket'] Return True Case Else Return False EndSwitch EndFunc Func IsRock($CX, $CY) If $CX < 0 Or $CX >= $XTiles Then Return False If $CY < 0 Or $CY >= $YTiles Then Return False Switch $aLevel[$CY][$CX] Case $mTiles['Rock'], $mTiles['RockSocket'] Return True Case Else Return False EndSwitch EndFunc Func IsEmpty($CX, $CY) If $CX < 0 Or $CX >= $XTiles Then Return False If $CY < 0 Or $CY >= $YTiles Then Return False Switch $aLevel[$CY][$CX] Case $mTiles['None'] Return True Case Else Return False EndSwitch EndFunc Func IsEmptySocket($CX, $CY) If $CX < 0 Or $CX >= $XTiles Then Return False If $CY < 0 Or $CY >= $YTiles Then Return False Switch $aLevel[$CY][$CX] Case $mTiles['Socket'] Return True Case Else Return False EndSwitch EndFunc Func IsSocket($CX, $CY) If $CX < 0 Or $CX >= $XTiles Then Return False If $CY < 0 Or $CY >= $YTiles Then Return False Switch $aLevel[$CY][$CX] Case $mTiles['RockSocket'], $mTiles['Socket'] Return True Case Else Return False EndSwitch EndFunc Func JumpToLevel() Local $iLevel = InputBox('Jump to level', 'Please type the level that you want to play') If $iLevel And Int($iLevel) > 0 And Int($iLevel) <= $MaxLevel Then $CurrentLevel = $iLevel LoadLevel() DrawLevel() DrawBulldozer($mResources['Bulldozer' & $Direction]) PushToScreen() EndIf EndFunc Func LevelDone() For $j = 0 To $YTiles - 1 For $i = 0 To $XTiles - 1 If $aLevel[$j][$i] = $mTiles['Socket'] Then Return False Next Next Return True EndFunc Func NextLevel() $PlayTime += Int(TimerDiff($Start) / 1000) ShowMessage('Level ' & $CurrentLevel & ' completed.' & @CRLF & ' ', 'Solved in ' & $NumOfMoves & ' moves.' & @CRLF & 'Time: ' & FormatTime($PlayTime), 4000) If $CurrentLevel + 1 > $MaxLevel Then GameEnd() Else $CurrentLevel += 1 LoadLevel() DrawLevel() DrawBulldozer($mResources['Bulldozer' & $Direction]) PushToScreen() EndIf EndFunc Func LoadLevel() Local $Data = SQLite_Query($hDB, 'SELECT Data FROM levels WHERE Level = ' & $CurrentLevel) If @extended Then $Data = BinaryToString(Unpack($Data[1][0])) $Data = StringSplit($Data, @CRLF, 1) For $Line = 1 To $YTiles Local $Row = StringSplit($Data[$Line], '') For $Index = 1 To $Row[0] $aLevel[$Line - 1][$Index - 1] = $Row[$Index] Next Next $X = $Data[26] $Y = $Data[27] $Direction = $Data[28] ShowMessage('Level ' & $CurrentLevel) $NumOfMoves = 0 $PlayTime = 0 $Start = TimerInit() EndIf EndFunc Func RestartLevel() If $Pause Then Return LoadLevel() DrawLevel() DrawBulldozer($mResources['Bulldozer' & $Direction]) PushToScreen() EndFunc Func GameEnd() ShowMessage('Congratulations!' & @CRLF & @CRLF & 'You have finished the game.', Null, 4000) If $AutoRestart Then $CurrentLevel = 1 RestartLevel() Else Quit() EndIf EndFunc Func FormatTime($Sec) If $Sec < 60 Then Return $Sec & ' seconds' Local $Min = Int($Sec / 60) $Sec -= $Min * 60 If $Min > 60 Then Local $Hours = Int($Sec / 60) $Min -= $Hours * 60 Return $Hours & ' hour' & ($Hours > 1 ? 's' : '') & ($Min <> 0 ? ', ' & $Min & ' minute' & ($Min > 1 ? 's' : '') : '') & ($Sec <> 0 ? ', ' & $Sec & ' second' & ($Sec > 1 ? 's' : '') : '') Else Return $Min & ' minute' & ($Min > 1 ? 's' : '') & ($Sec <> 0 ? ', ' & $Sec & ' second' & ($Sec > 1 ? 's' : '') : '') EndIf EndFunc Func ShowMessage($Message, $SecMessage = Null, $iDelay = 1500) $MsgShow = True Local $hFamily = _GDIPlus_FontFamilyCreate($Font) Local $hFont = _GDIPlus_FontCreate($hFamily, $FontSize, 1) Local $tLayout = _GDIPlus_RectFCreate(0, 0, $XTiles * $TileSize, ($SecMessage ? ($YTiles * $TileSize / 2) : ($YTiles * $TileSize))) Local $hBrush = _GDIPlus_BrushCreateSolid($MessageColor) Local $hFormat = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($hFormat, 1) _GDIPlus_StringFormatSetLineAlign($hFormat, ($SecMessage ? 2 : 1)) _GDIPlus_GraphicsClear($mResources['Graphics'], $ClearColor) _GDIPlus_GraphicsDrawStringEx($mResources['Graphics'], $Message, $hFont, $tLayout, $hFormat, $hBrush) If $SecMessage Then _GDIPlus_StringFormatSetLineAlign($hFormat, 0) Local $hSecFont = _GDIPlus_FontCreate($hFamily, $SecFontSize, 1) Local $tSecLayout = _GDIPlus_RectFCreate(0, ($YTiles * $TileSize / 2) , $XTiles * $TileSize, $YTiles * $TileSize / 2) Local $hSecBrush = _GDIPlus_BrushCreateSolid($SecMessageColor) _GDIPlus_GraphicsDrawStringEx($mResources['Graphics'], $SecMessage, $hSecFont, $tSecLayout, $hFormat, $hSecBrush) EndIf PushToScreen() _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_FontDispose($hFont) If $SecMessage Then _GDIPlus_BrushDispose($hSecBrush) _GDIPlus_FontDispose($hSecFont) EndIf _GDIPlus_FontFamilyDispose($hFamily) Local $DelayTimer = TimerInit() Do If GUIGetMsg() = -3 Then Quit() Sleep(10) Until TimerDiff($DelayTimer) >= $iDelay $MsgShow = False EndFunc Func UndoLastMove() If $PrevLevel = Null Then Return If $LastMove = Null Then Return If $Pause Then Return $aLevel = $PrevLevel DrawLevel() Switch $LastMove Case 'R' $X -= 1 DrawBulldozer($mResources['BulldozerR']) Case 'L' $X += 1 DrawBulldozer($mResources['BulldozerL']) Case 'U' $Y += 1 DrawBulldozer($mResources['BulldozerU']) Case 'D' $Y -= 1 DrawBulldozer($mResources['BulldozerD']) EndSwitch PushToScreen() $PrevLevel = Null $NumOfMoves -= 1 EndFunc Func Pause() $Pause = Not $Pause If $Pause Then $PlayTime += Int(TimerDiff($Start) / 1000) ShowMessage('Game is paused.', 'Press {Pause} button to resume your game.', 10) Else DrawLevel() DrawBulldozer($mResources['Bulldozer' & $Direction]) PushToScreen() $Start = TimerInit() EndIf Do Sleep(10) Until $Pause = False EndFunc Func DrawLevel() _GDIPlus_GraphicsClear($mResources['Graphics'], $ClearColor) For $j = 0 To $YTiles - 1 For $i = 0 To $XTiles - 1 Switch $aLevel[$j][$i] Case $mTiles['Wall1'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall1'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall2'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall2'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall3'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall3'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall4'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall4'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall5'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall5'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall6'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall6'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall7'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall7'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Wall8'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Wall8'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Rock'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Rock'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['RockSocket'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['RockSocket'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) Case $mTiles['Socket'] _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $mResources['Socket'], $i * $TileSize, $j * $TileSize, $TileSize, $TileSize) EndSwitch Next Next EndFunc Func DrawBulldozer($hImage) _GDIPlus_GraphicsDrawImageRect($mResources['Graphics'], $hImage, $X * $TileSize, $Y * $TileSize, $TileSize, $TileSize) EndFunc Func PushToScreen() Local $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($mResources['Bitmap']) _WinAPI_DeleteObject(GUICtrlSendMsg($hPic, 0x0172, 0, $hHBITMAP)) _WinAPI_DeleteObject($hHBITMAP) EndFunc Func ReadProperty($sProperty, $vFallback = Null) Local $aQuery = SQLite_Query($hDB, "SELECT Value FROM settings WHERE Property = " & _SQLite_FastEscape($sProperty)) If @extended Then Return $aQuery[1][0] Else Return $vFallback EndIf EndFunc Func GetTiles($vFallback = Null) Local $aQuery = SQLite_Query($hDB, 'SELECT Tile, Symbol, Data FROM tiles') If @extended Then Return $aQuery Else Return $vFallback EndIf EndFunc Func GetKeyboard($vFallback = Null) Local $aQuery = SQLite_Query($hDB, 'SELECT Key, Function FROM keyboard') If @extended Then Return $aQuery Else Return $vFallback EndIf EndFunc Func SQLite_Query($hDB, $sQuery) Local $aResult, $iRows, $iColumns _SQLite_GetTable2d($hDB, $sQuery, $aResult, $iRows, $iColumns) If @error Then Return SetError(1, 0, False) Else Return SetError(0, UBound($aResult, 1) - 1, $aResult) EndIf EndFunc Func Unpack($bData) Local $tData = DllStructCreate('byte Data[' & BinaryLen($bData) & ']') Local $bCode = Binary('0x8B7424048B4C2408AC347F8846FF4975F7C20800') Local $iSize = BinaryLen($bCode) Local $tCode = DllStructCreate('byte Code[' & $iSize & ']') DllStructSetData($tCode, 'Code', $bCode) DllStructSetData($tData, 'Data', $bData) DllCallAddress('int', DllStructGetPtr($tCode), 'ptr', DllStructGetPtr($tData), 'int', DllStructGetSize($tData)) Return DllStructGetData($tData, 'Data') EndFunc Have fun! Bulldozer.zip
-
I think that _GDIPlus_ImageGetPropertyItem should return a Property Item that can readily be set as a property of another image. Why would one want to do this? A script might (as one of mine does) edit an image of a .jpg file then write the result to a .jpg file. In editing it, in my case, the number of horizontal and vertical pixels change, and the date/time edited should be set as a property. All other property items remain the same. Other GDI+ users may change other properties. So an approach is to copy all the property items from image1 to image2, then update a few properties. M$ provides a Property Item class (id, length, pointer to an array of values) but _GDIPlus_ImageGetPropertyItem returns something different. I think that, wherever reasonable, UDFs that are wrappers for M$ methods should work like M$'s methods. _GDIPlus_ImageGetPropertyItem does not do this: While M$ returns 2 values for a value that is a ratio of 2 numbers, _GDIPlus_ImageGetPropertyItem returns numerator/denominator as a single value (often a Double). _GDIPlus_ImageSetPropertyItem (when included in GDIPlus.au3) will be unable to set ratio property items properly because it cannot know what the numerator and denominator are. So copying such property items will not work properly. M$ has a Void* buffer where the buffer is an array of values but _GDIPlus_ImageGetPropertyItem() returns the values in the same 1-d array as id, length and type. M$'s approach produces a 1-d array with the same number of elements for all property items while _GDIPlus_ImageGetPropertyItem produces a 1-d array with various numbers of elements. To me, this is not good programming practice. For a photo from a Sony camera, the worst case has 1-d array with 67 elements. When combined into a 2-d array with the property items of all properties, there are 66 rows and 67 columns, with many elements not used. So I suggest that _GDIPlus_ImageGetPropertyItem look like this: ; #FUNCTION# ==================================================================================================================== ; Name ..........: cGDIPlus_ImageGetPropertyItem ; Description ...: Gets a specified property item (piece of meta data) from an Image object ; Syntax ........: cGDIPlus_ImageGetPropertyItem($hImage, $iPropID) ; Parameters ....: $hImage - Pointer to an image object ; $iPropID - Identifier of the property item to be retrieved ; Return values .: Success: Array containing the values of the property item ; [0] - identifier ; [1] - size, in bytes, of the value array ; [2] - type of value(s) in the value array ; [3] - value array ; Failure: Sets the @error flag to non-zero, @extended may contain GPSTATUS error code ($GPID_ERR*). ; Author ........: Eukalyptus ; Modified ......: c.haslam ; Remarks .......: types: unsigned byte = 1, ASCII string = 2, unsigned short = 3, unsigned long = 4, ; unsinged rational = 5, undefined = 7, signed long = 9, signed rational = 10 ; Related .......: _GDIPlus_ImageGetPropertyIdList ; Link ..........: https://msdn.microsoft.com/en-us/library/windows/desktop/ms535390(v=vs.85).aspx, ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms534493(v=vs.85).aspx, ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms534414(v=vs.85).aspx ; Example .......: Yes ; =============================================================================================================================== Func cGDIPlus_ImageGetPropertyItem($hImage, $iPropID) Local $iSize = __GDIPlus_ImageGetPropertyItemSize($hImage, $iPropID) If @error Then Return SetError(@error, @extended, -1) Local $tBuffer = DllStructCreate("byte[" & $iSize & "];") Local $pBuffer = DllStructGetPtr($tBuffer) Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetPropertyItem", "handle", $hImage, "uint", _ $iPropID, "uint", $iSize, "struct*", $tBuffer) If @error Then Return SetError(@error, @extended, -1) If $aResult[0] Then Return SetError(10, $aResult[0], False) Local $tPropertyItem = DllStructCreate("int id; int length; short type; ptr pvalue;", $pBuffer) Local $iBytes = DllStructGetData($tPropertyItem, "length") Local $pValue = DllStructGetData($tPropertyItem, "pvalue") Local $aRet[4] Local $type = DllStructGetData($tPropertyItem,'type') Local $tValues, $iValues Switch $type Case 2 ;ASCII String $iValues = 1 $tValues = DllStructCreate("char[" & $iBytes & "];", $pValue) Case 3 ;Array of UShort $iValues = Int($iBytes / 2) $tValues = DllStructCreate("ushort[" & $iValues & "];", $pValue) Case 4, 5 ;Array of UInt / Fraction $iValues = Int($iBytes / 4) $tValues = DllStructCreate("uint[" & $iValues & "];", $pValue) Case 9, 10 ;Array of Int / Fraction $iValues = Int($iBytes / 4) $tValues = DllStructCreate("int[" & $iValues & "];", $pValue) Case Else ;Array of Bytes $iValues = 1 $tValues = DllStructCreate("byte[" & $iBytes & "];", $pValue) EndSwitch $aRet[0] = DllStructGetData($tPropertyItem,'id') $aRet[1] = $iBytes $aRet[2] = $type Local $aVals[$iValues] If $type=2 Or $type=7 Then ; ASCII string or undefined $aVals[0] = DllStructGetData($tValues,1) Else For $i = 0 To $iValues-1 $aVals[$i] = DllStructGetData($tValues,1,$i+1) Next EndIf $aRet[3] = $aVals Return $aRet EndFunc And here is an example: #include <GDIPlus.au3> #include <Array.au3> Example() Func Example() _GDIPlus_Startup() Local $hImage = _GDIPlus_ImageLoadFromFile(RegRead((@AutoItX64 = True ? "HKLM\SOFTWARE\Wow6432Node\AutoIt v3\AutoIt" : "HKLM\SOFTWARE\AutoIt v3\AutoIt"), "InstallDir") & "\Examples\GUI\Torus.png") If @error Then _GDIPlus_Shutdown() MsgBox(16, "", "An error has occured - unable to load image!", 30) Return False EndIf Local $ar = _GDIPlus_ImageGetPropertyIdList($hImage) Local $vPropNbrs[UBound($ar,1)-1] ; Extract ID numbers For $i = 1 To UBound($ar,1)-1 $vPropNbrs[$i-1] = $ar[$i][0] Next ; Get all property items Local $aPropItems[UBound($vPropNbrs)][4],$vPropItem For $i = 0 To UBound($vPropNbrs)-1 $vPropItem = cGDIPlus_ImageGetPropertyItem($hImage,$vPropNbrs[$i]) For $j = 0 To 3 $aPropItems[$i][$j] = $vPropItem[$j] Next Next ; Collapse values arrays so _ArrayDisplay can display them Local $ar = $aPropItems For $i = 0 To UBound($aPropItems,1)-1 $ar[$i][0] = '0x'&Hex($ar[$i][0],4) $ar[$i][3] = '' For $j = 0 To UBound($aPropItems[$i][3])-1 $ar[$i][3] &= ($aPropItems[$i][3])[$j]&'|' Next $ar[$i][3] = StringTrimRight($ar[$i][3],1) Next _ArrayDisplay($ar) _GDIPlus_Shutdown() EndFunc Unfortunately this example (based on one now in the Help) does not exercise most of the item types, but I do not know of a file with EXIF metadata that is on most PCs. I have tested this code by updating and adding property items to torus.jpg and to a photo taken by a Sony camera. The code for implementing and calling _GDIPlus_ImageSetPropertyItem will be fairly simple [see below]. Your thoughts?
-
So a little project I am working on. I sort of have this working via Irfanview using cmd scripting, but curious if it can be done in AutoIT maybe with GDI+ or any other native tool. I have an ancient microfilm scanner, and currently the only way it will scan is to take a full screen scan of 11x14 and make it a 2 page 8.5x11 Tiff Image. So this is cutting the image in half down the middle. What I need to do is have the 2nd page append to the first page on the right side, and then save the image as a single flat new image (Do not care about format very much) Any of the GDI wizards think this can be done? Here is my starting point, I can open the image, convert the format to .jpg and flatten it (lose the 2nd page of the TIF) I have not quite figured out how to grab that 2nd page or do the append (panorama #Include <GDIPlus.au3> Local $hImage, $sCLSID _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Test3.tif") $sCLSID = _GDIPlus_EncodersGetCLSID("TIF") $sCLSID2 = _GDIPlus_EncodersGetCLSID("JPG") _GDIPlus_ImageSaveToFileEx($hImage, @ScriptDir & "\GDIPlus_Image2.jpg", $sCLSID2) _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() Edit: got a lead on the multipage stuff: And my code has grown into something where I am trying to draw an image ontop of the first image but it looks like it wont expand the canvas, but ultimately I was thinking just draw the 2nd page next to the 1st page once I figure out how to capture the 2nd page. #Include <GDIPlus.au3> Local $hImage, $sCLSID _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Test3.tif") $sCLSID = _GDIPlus_EncodersGetCLSID("TIF") $sCLSID2 = _GDIPlus_EncodersGetCLSID("JPG") $iWidth = _GDIPlus_ImageGetWidth($hImage) $iHeight = _GDIPlus_ImageGetHeight($hImage) ; Draw one image in another $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage) _GDIPlus_GraphicsDrawImage($hGraphics, $hImage, $iWidth, $iHeight) _GDIPlus_ImageSaveToFileEx($hImage, @ScriptDir & "\GDIPlus_Image2.jpg", $sCLSID2) _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown()
-
I don't think I ever posted The Matrix here, so here's the upload: The Matrix v1.31.au3 ;coded by UEZ build 2018-10-20 #pragma compile(Icon, "c:\Program Files (x86)\AutoIt3\Icons\au3.ico") #AutoIt3Wrapper_UseX64=n #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /pe ;/rm #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include "The Matrix Sound.au3" _GDIPlus_Startup() Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit Global Const $iW = @DesktopWidth / 2, $iH = @DesktopHeight / @DesktopWidth * $iW, $sTitle = "GDI / GDI+ The MATRIX v1.31" AutoItSetOption("GUIOnEventMode", 1) ProcessSetPriority (@AutoItPID, $PROCESS_HIGH) TheMatrix_v1() AutoItSetOption("GUIOnEventMode", 0) _GDIPlus_Shutdown() Func TheMatrix_v1() Local $bFullscreen = True, $iMsg = MsgBox(BitOR($MB_ICONQUESTION, $MB_TOPMOST, $MB_YESNO), "Question", "Enable fullscreen?", 5) If $iMsg = 7 Then $bFullscreen = False Local $binMusic = _Music() Local Const $iLen = BinaryLen($binMusic) Local $tMem = DllStructCreate("byte[" & $iLen & "]") DllStructSetData($tMem, 1, $binMusic) FSOUND_Init() Local Const $hMod = LoadSongEx($tMem, 0, $iLen) FMUSIC_MasterVolume($hMod, 50) FMUSIC_PlaySong($hMod) FMUSIC_SetLooping($hMod, 1) $binMusic = 0 $bExit = False If $bFullscreen Then Local Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]") Local Const $aFullScreen = WinGetPos($hFullScreen), $iPosMainScreen = Abs($aFullScreen[0]) $hGUI = GUICreate($sTitle, $aFullScreen[2], $aFullScreen[3], $aFullScreen[0], $aFullScreen[1], $WS_POPUP, $WS_EX_TOPMOST) Else $hGUI = GUICreate($sTitle, $iW, $iH, -1, -1) EndIf GUISetBkColor(0) GUISetState(@SW_SHOW, $hGUI) GUISetCursor(16, 1) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI) Local Const $hHBitmap = _WinAPI_BitmapCreateDIB($iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $hDC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hHBitmap2 = _WinAPI_BitmapCreateDIB($iW, $iH) Local Const $hDC_backbuffer2 = _WinAPI_CreateCompatibleDC($hDC) Local Const $hDC_obj2 = _WinAPI_SelectObject($hDC_backbuffer2, $hHBitmap2) Local Const $hCanvas2 = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer2) _GDIPlus_GraphicsSetSmoothingMode($hCanvas2, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas2, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hImage_Bg = _GDIPlus_BitmapCreateFromMemory(_BG_Image()) Local Const $hHBitmap3 = _WinAPI_BitmapCreateDIB($iW, $iH) Local Const $hDC_backbuffer3 = _WinAPI_CreateCompatibleDC($hDC) Local Const $hDC_obj3 = _WinAPI_SelectObject($hDC_backbuffer3, $hHBitmap3) Local Const $hCanvas3 = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer3) Local $tColorMatrix = _GDIPlus_ColorMatrixCreate() DllStructSetData($tColorMatrix, "m", 2, 2) DllStructSetData($tColorMatrix, "m", -1, 12) DllStructSetData($tColorMatrix, "m", 0.0175, 19) Local $hIA = _GDIPlus_ImageAttributesCreate() _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $tColorMatrix) Local $iPosY = $iH - _GDIPlus_ImageGetHeight($hImage_Bg) $iPosY = $iPosY < 0 ? 0 : $iPosY _GDIPlus_GraphicsDrawImageRectRect($hCanvas3, $hImage_Bg, 0, 0, $iW, $iH, 0, $iPosY, $iW, $iH, $hIA) Local Const $hBrush_Clr = _GDIPlus_BrushCreateSolid(0x0B000000), _ $hBrush_FPS = _GDIPlus_BrushCreateSolid(0xF0C0FFC0), _ $hFormat_FPS = _GDIPlus_StringFormatCreate(), _ $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial"), _ $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 8), _ $tLayout_FPS = _GDIPlus_RectFCreate(0, 0, 60, 16) _GDIPlus_GraphicsClear($hCanvas) $iFPS = 0 Local Const $fFontSize = 8, $iW_Char = Int($fFontSize * 1.5), $iH_Char = Int($fFontSize * 1.5), $iMaxSpeed = 8, $iMinSpeed = 2, _ $iAmountChars = ($bFullscreen ? 75 : 100) Local $aTable[$iAmountChars][4], $aChars[56], $i, $sChar, $iChar = 0 For $i = 0 To UBound($aChars) - 1 $aChars[$i] = ChrW($i + 65382) Next $sChar = $aChars[0] Local Const $hFamily = _GDIPlus_FontFamilyCreate("Times New Roman") Local Const $hFont = _GDIPlus_FontCreate($hFamily, $fFontSize, 1) Local Const $hFont_Glow = _GDIPlus_FontCreate($hFamily, $iW_Char, 1) Local Const $tLayout2 = _GDIPlus_RectFCreate(0, 0, $iW_Char, $iH_Char) Local $tLayout3 = _GDIPlus_RectFCreate(0, 0, $iW_Char, $iH_Char) Local Const $hStringFormat = _GDIPlus_StringFormatCreate() Local Const $hBrush_Char = _GDIPlus_BrushCreateSolid(0xE8E0FFE0) , _ $hBrush_CharGlow = _GDIPlus_LineBrushCreateFromRectWithAngle($tLayout3, 0x4000FF00, 0xE0A0FFA0, 0, False, 1), _ $hBrush_CharGlow2 = _GDIPlus_BrushCreateSolid(0xF000FF00), _ $hBrush_Bg = _GDIPlus_HatchBrushCreate(9, 0xFF002800, 0xF0000000) _GDIPlus_LineBrushSetSigmaBlend($hBrush_CharGlow, 0.5, 1) _GDIPlus_LineBrushSetGammaCorrection($hBrush_CharGlow) _GDIPlus_StringFormatSetAlign($hStringFormat, 1) _GDIPlus_StringFormatSetLineAlign($hStringFormat, 1) For $i = 0 To UBound($aTable) - 1 $aTable[$i][0] = Random(0, $iW - $iW_Char) ;x $aTable[$i][1] = -1 * Random(3, 200) ;Y $aTable[$i][2] = Random($iMinSpeed, $iMaxSpeed) ;vy $aTable[$i][3] = $aTable[$i][1] - $iH_Char - 1 ;delta y counter Next Local $hGfx, $aChars_pre[UBound($aChars)][3] Local Const $hEffect = _GDIPlus_EffectCreateBlur(2) For $i = 0 To UBound($aChars_pre) - 1 $aChars_pre[$i][0] = _GDIPlus_BitmapCreateFromScan0($iW_Char, $iH_Char) $hGfx = _GDIPlus_ImageGetGraphicsContext($aChars_pre[$i][0]) _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4) _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, 4) _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3) _GDIPlus_GraphicsDrawStringEx($hGfx, $aChars[$i], $hFont_Glow, $tLayout2, $hStringFormat, $hBrush_CharGlow) _GDIPlus_GraphicsDispose($hGfx) $aChars_pre[$i][1] = _GDIPlus_BitmapCreateFromScan0($iW_Char, $iH_Char) $hGfx = _GDIPlus_ImageGetGraphicsContext($aChars_pre[$i][1]) _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4) _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, 4) _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3) _GDIPlus_GraphicsDrawStringEx($hGfx, $aChars[$i], $hFont, $tLayout2, $hStringFormat, $hBrush_Char) _GDIPlus_GraphicsDispose($hGfx) $aChars_pre[$i][2] = _GDIPlus_BitmapCreateFromScan0($iW_Char, $iH_Char) $hGfx = _GDIPlus_ImageGetGraphicsContext($aChars_pre[$i][2]) _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4) _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, 4) _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3) _GDIPlus_GraphicsDrawStringEx($hGfx, $aChars[$i], $hFont_Glow, $tLayout2, $hStringFormat, $hBrush_CharGlow2) _GDIPlus_BitmapApplyEffect($aChars_pre[$i][2], $hEffect) _GDIPlus_GraphicsDispose($hGfx) Next _GDIPlus_EffectDispose($hEffect) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") AdlibRegister("CalcFPS", 1000) Local $c = 500, $bDisplay = -1 Do DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas2, "handle", $hBrush_Bg, "float", 0, "float", 0, "float", $iW, "float", $iH) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush_Clr, "float", 0, "float", 0, "float", $iW, "float", $iH) For $i = 0 To UBound($aTable) - 1 If $aTable[$i][1] - $aTable[$i][3] > $iH_Char Then DllCall($__g_hGDIPDll, "int", "GdipDrawImageRect", "handle", $hCanvas, "handle", $aChars_pre[$iChar][0], "float", $aTable[$i][0], "float", $aTable[$i][1], "float", $iW_Char, "float", $iH_Char) $aTable[$i][3] = $aTable[$i][1] EndIf $iChar = Random(0, UBound($aChars) - 1, 1) DllCall($__g_hGDIPDll, "int", "GdipDrawImageRect", "handle", $hCanvas2, "handle", $aChars_pre[$iChar][2], "float", $aTable[$i][0], "float", $aTable[$i][1], "float", $iW_Char, "float", $iH_Char) DllCall($__g_hGDIPDll, "int", "GdipDrawImageRect", "handle", $hCanvas2, "handle", $aChars_pre[$iChar][1], "float", $aTable[$i][0], "float", $aTable[$i][1], "float", $iW_Char, "float", $iH_Char) $aTable[$i][1] += $aTable[$i][2] If $aTable[$i][1] > $iH Then $aTable[$i][0] = Random(0, $iW - $iW_Char, 1) ;x $aTable[$i][1] = -1 ;Y $aTable[$i][2] = Random($iMinSpeed, $iMaxSpeed) ;vy $aTable[$i][3] = $aTable[$i][1] - $iH_Char - 1 ;delta y EndIf Next _GDIPlus_GraphicsDrawStringEx($hCanvas2, "FPS: " & $iShowFPS, $hFont_FPS, $tLayout_FPS, $hFormat_FPS, $hBrush_FPS) If Not Mod($c, 1000) Then $bDisplay *= -1 EndIf $c += 1 If $bDisplay = 1 Then _WinAPI_BitBlt($hDC_backbuffer, 0, 0, $iW, $iH, $hDC_backbuffer3, 0, 0, $SRCPAINT) _WinAPI_BitBlt($hDC_backbuffer2, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCPAINT) Switch $bFullscreen Case True _WinAPI_StretchBlt($hDC, $iPosMainScreen, 0, @DesktopWidth, @DesktopHeight, $hDC_backbuffer2, 0, 0, $iW, $iH, $SRCCOPY) Case Else _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer2, 0, 0, $SRCCOPY) EndSwitch $iFPS += 1 If $bExit Then ExitLoop DllCall($_MDKernel32Dll, "none", "Sleep", "uint", 5) Until False AdlibUnRegister("CalcFPS") ;release resources For $i = 0 To UBound($aChars_pre) - 1 _GDIPlus_ImageDispose($aChars_pre[$i][0]) _GDIPlus_ImageDispose($aChars_pre[$i][1]) _GDIPlus_ImageDispose($aChars_pre[$i][2]) Next _GDIPlus_ImageAttributesDispose($hIA) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_FontDispose($hFont) _GDIPlus_FontDispose($hFont_Glow) _GDIPlus_StringFormatDispose($hStringFormat) _GDIPlus_BrushCreateSolid($hBrush_Char) _GDIPlus_BrushCreateSolid($hBrush_CharGlow) _GDIPlus_BrushCreateSolid($hBrush_CharGlow2) _GDIPlus_BrushCreateSolid($hBrush_Bg) _GDIPlus_FontDispose($hFont_FPS) _GDIPlus_FontFamilyDispose($hFamily_FPS) _GDIPlus_StringFormatDispose($hFormat_FPS) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_BrushDispose($hBrush_FPS) _GDIPlus_ImageDispose($hImage_Bg) _GDIPlus_GraphicsDispose($hCanvas3) _WinAPI_SelectObject($hDC_backbuffer3, $hDC_obj3) _WinAPI_DeleteDC($hDC_backbuffer3) _GDIPlus_GraphicsDispose($hCanvas2) _WinAPI_SelectObject($hDC_backbuffer2, $hDC_obj2) _WinAPI_DeleteDC($hDC_backbuffer2) _WinAPI_DeleteObject($hHBitmap2) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $hDC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI, $hDC) GUIDelete($hGUI) FMUSIC_StopSong($hMod) FSOUND_Close() MemoryDllClose($F_DLL) MemoryDllExit() DllClose($_MDKernel32Dll) EndFunc ;==>TheMatrix_v1 Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func CalcFPS() ;display FPS $iShowFPS = $iFPS $iFPS = 0 EndFunc ;==>CalcFPS Func _WinAPI_BitmapCreateDIB($iWidth, $iHeight) Local $tBMI = DllStructCreate($tagBITMAPINFO) $tBMI.biSize = DllStructGetSize($tBMI) $tBMI.biWidth = $iWidth $tBMI.biHeight = -$iHeight $tBMI.biPlanes = 1 $tBMI.biBitCount = 32 $tBMI.biCompression = $BI_RGB Local $aResult = DllCall("gdi32.dll", "ptr", "CreateDIBSection", "hwnd", 0, "struct*", $tBMI, "uint", 0, "ptr*", 0, "ptr", 0, "uint", 0) Return $aResult[0] EndFunc ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2018-02-02 Func _BG_Image($bSaveBinary = False, $sSavePath = @ScriptDir) Local $BG_Image $BG_Image &= 'iVBORw0KGgoAAAANSUhEUgAAAyAAAAH0CAMAAADynrlKAAAARVBMVEVHcEzdzLzCmnaee2J2XkxnQTG0nY5SQjZFJxgwIx43MSoUDw4lGxocGBcvKicgHRwqIiKCWkbWknfiuJP1z6uQUkGycFteeNywAAAAAXRSTlMAQObYZgAAen9JREFUeNrswQkNACAQAKD7+0c2hxsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwlq2d2uvsy8x47d5aoWArGALisg/4nIYH0/jfboD2swbp8hOEOj8ZZt8ev4/jhVhVWJV6tbtzP6/fj9+/nvXHX5DTk+NkeV9WqR3X5bu336krtpqy06/UpyJrH8TO9qu0alMBn27ccvaPfz3ZtZVZb9dnObcnx8zyudq16tBv3qgFhLFK3PMi677pa1bWchhw/sR+1LvfXDdytPW91WOrqfa+ewn1XFXc/fh3HT/Oo63pdrYiO2JYdWNb0IgcIQrbrOk9nHT/Oo9XCKsBwtw0l8iZpyo4MZHKX5HE6cvzxHo//j1XXpyLo6MYeCXq37DnjaRm2lYCsdm5Ijj+3F4/3+snjc/vB61GsKndZ3VYAf8wlMmzssZOEZDsVOf48j9f71fFlXb5f12PX5OL1amCNLkU2bBJGlxElVuaUZasrWAiuVDslOf4sj+tqrRWrvep6vLgbctXraoWbgAXZ1iDQbRmJFFvygj0yyKq2VJF1Xacjxx/j4gLcJDrramu+VkHaVSShDFtxSHRYnvCc09ObuhVwKVbV9VH1x7xN6ziuqva8q+0bkruDRF21chWLMAYsebRyh4140UqX5QQjCmQHk2RVtVat6vNOlOP4ci/W63W1AtKuBssi2XY9qgjUUE/MxtiwFcebujURSbYlDZJjcKm21LI6ct6Gcny3V2uvNesmWcQNeCVVYK0xipBEXkS3syJvsjQz7WlJwR4CEHKl6mq1ll/bacjxtR6vate1cjUWibdu' $BG_Image &= 'J0AVd4BoVKM7vIf8JiWalu0gsmcWO3HPf49KTjeOr/ZotV1VTBAFIADNYNSnIQGz9085YrvLtjTX8Eqi7kGOETjGYEbI4iTrNOT4Yo+LVVxmonAAAUckhaiPDIKt0YatwIvsyG+BIA0WbUUgB5KpsXag2q/j+FaPVyMAMuhSMEisCAnAqpUiOGZVo7sR+UNzTi+KpT7JYRkgi0QGRiAFvbOd25DjW70u2oClCIhQJAcwMEjWShVJgK0qsDX36mllygtsRUls8K2K0ALIAszrNOT4To+r0AV7QEGATyMGAL7P3MClqgI4lu3pmeyD4gl7n0UCAmtAH8gnvH4dxxd6tNnRZahLMpDBYtX4NOWdBSzVQgBakbKSaXtuawuyWGD0+bWnpAlZPg/Uj+90BR1etCAzIFlVDPDeWdgD/Pw4RqRAiBLNXYS9JVYiOBiG8zGjQAbi+fp1HF/nlR6jw9ACIAOs2vm3KVUoPEFwn0kCH4I0pUjyShDDY8QKDG/IEAR0mOcm5Pg6L+Lulu2ZSIMRl1qIvbVPQQhg7GORN+5xkwVgQHvMKXkkTjQgw0BkOcnnv9SR05Dj2zwq6B2GgwQKhzBQZC2fgizYc3diI3nXXfW87xUAEgQFiQYgKUOLZcnJICF0YZyGHF/mErZEnpA0BgncKLDeWn2wyDVruWv5nPYZNyAIIwowBJDAvwXZBkkAYr1+HccXeSUAGRgREGCAa4Io7nJ83PWsJ9b29tx5Pp/t+V7uBdANCVkJSSAZGQvm1GA1Ere+6ksdjuPB2yBgI0EwMDgGQECF2tq7EKW93cU11+lec/vr+qutmlTdvEEgWFgY8YCkAGMQGCwWCL5OQY4v0ng7seXpZIwgCwKA2FVof7N3RkuOqzoUnRhjaSsywfF0/v9TL5Iojnse7rNTxQI7yen0PPWqjQxwIikc7nciv6/5OFLDJDmy2QMWKEQkcmP3NY1aixhmF2OdY6zJNwUIGrpXm8pogniM1NLu' $BG_Image &= 'BhnreqzH4RZkg1pj8yOvq/ux+Lly69o0inIEUmqtZtzewKvuzTzEJkPmKcjke0g7sOuO1l7+rKmgvkIPppxNj9Vj4r01D47jyPnomjQ/zI5tO5flXNrb9tnyhVXEpWuYIdoaKmoRt22uN5l8EQSI+VFfrxgJlYqqCoEXIHl1C9K2bO92pYaFSZPj8PjYtuU8/57nYzF9miOWLyxsQmi1jVWOvlChithf+Gcy+aYR1g70FSEVgDYAZspHIzUWS4iz8fagOOxqgpg2i9nxt3Gei4fIkQ1mAJYd7Ypjrp+7lqJFkNJckDX5GhJsCl1r9X0dpZSq0NYjPCwsNkuP5RxsXnE4y/I4H25Hux4uTyhiJTyg9WX/MLCHLBVQVEmzSp98DVIV2BVqgtRair60suSc1/STPumd3pEfQxHLCiMtaduaGUb/79vijhyWIiRAwUtRUSCNUl87VEVSmkXI5Et4iOoTWveq+jJDdFdVK819dLU1DYyuh4swgsRy5XH+tRYhcppHW3/sa4qMqXSoqdefHVOaCTL5ElJRxCDoVRvw4oNzbnZ8UjI9nDOaMzS5fjZD+k+W5JgirFAWgcIssQsoZZ5vMvkaNuz1VVt/Garw8iP34nzIEXYsw44hSajhrd+8WF+aXp/1yMQSC+ZLQ2tVVYhMQybfwlYVWlCr1l1RALXyw+zw/Nh6gJzDEHPDe687ehuWdEWWFHMmjMziQKQAUC1TkMnXsAFFa0VsBQEgTDa/YWymyD8jrIsh4xZSDF16EZ/eyWbeLUIYDQGJInbzziJ98iWkilJq0wMeICzZ/QjCjz7AuhoyLPGBVRByhDQRNz7xzjkzVCGAZYg+UbWufyaTr2CFoPTD34DKlG3uw3ryacDNDdlCjn8NMYYddo+PvVYPQzIxZybXo7auu6LOmcLJ1+wlLIinvFAwZXI3eg1yGWGZJINRknfOcb8Ms6ISsSkRZiJSFTFJZFctsv2ZTL6ATaDi5yzoC/ClhHF6' $BG_Image &= 'tQtiLfBE2H4bYi//0nNlKBKVes5EJBr7qPBUzOWKk68RpKjuPsASQc5ef+QuSB9ieQHi9IQYNgwGbs5lkGWK5ExshgigVUR3xSxCJt8iCLRqbR0CohwBchwp+Pcp1jAl2m+GGldFUhiSicRAQ4F5SO/kWwRRrepThMxMh4+vrDc+XoVsIYh3T5BGd8F4eB+cvYVGXqh/0s9KjAwRkqKKBs0iZPItgtSie2uAkE8RHml1O9LmdgxDQpDrzODgXz+iQgm8UDdDWFSkVNVSeM6ETL6CVPtpP1GiRwmydkeWNPTwFoQCER4jQx52N3rC9Ba5Y4tOiLmSoohgVzDoz2Ryex6EhlXpqi5IjqdYpslnPMjauh6DXmm4G+M+FIke9KVZh2+hEqhWQAGZh1hPvoHHKoDp4YJkE+RIq7Vhh/VRhdjO2v8iYngRvd8uE+qP9v3+sDeTsAj0VaAKFpmCTL4hQawqeKq+APEEOVZ3o88Ujjrk7IY4j/6oKsSIa9jRm1fohrEca2YyQWpF1QbXWaVP7s8mJNhfqgoQZRfEzyY5jnTdD/K7AvknQkKOQdhx/W6fUGcSUYWaItjnTMjk/mzmh9aKhiBzbqTDm/FZwpGxHmvQDRhyPLw1xnLFCJkgZgtZiOCo6lyONfkCNhHYOnc0suTGcaTV9IgEGUXIaa3xsD4IJ/6l6xGi9An1IyKEIKVAtWqZRcjk/iRBQxUKBks2whBjsb6NFYseIXZtI0J6dlgfDDEuCbKM2XTx/CiKOmdCJrdnFcCrZq/RM0eEeDtijLW4JkbY8Zv/GyDWLD7GGEsY0jA7oDqLkMndeRADO1wQBluNfk2Qj7uR+hirMeJjpMNlyvAx/GhcI8QsSSnlNWcRCKAoCp1FyOT+ggjgkyAKoeyCHMc6KpC09BZyjAHW4LoV5Mqv8VXfGJLXlQjiggCqc0/I5O48hAFUrYCAJTvHeMTrd4uQUYY4W//jX66G2DtvvwdZy3+r3n1XiJCI' $BG_Image &= 'QqtdU5DJFzzE0h0VgCDmCcdjrHBkuexM9zYIAy6GXOWICPE+BFnXWPJOqkCB7rNKn9xeEDRKrUVHDTISxFkadrsqsoQg9jIKjj67PqqQ+DS+HGMsyhxFugpUn1OQybcIUgESohx6HGsUIUsaVfqw41cVsvTyY6gy9LjWINY8QVZhwAUpovMx1uT2JDQE1W56TZDgM6p0J8qPK12DhzlxUWQIMgLEVVtzhgAQVX+lP5PJrVlrJAigQuIBEhHicnQ3hiJn6yHJZaAVdvx9eA9ObyM+rPcEIXCBCAydz3knd2eFUytQvQY5cjfk0wMkeiekiHvgckT9EdMhQw+7jS+GII3uhmqBQqYgky/YLoWqgEJ6CZItQJzQY+THhXFIb+jhZgxCl/41b0MQIlGIQAGozASZ3JuHiKD1WgsEDLYS5McM8Qrd+J0fpsXjlyOP8OS6Zeq8bLx1oggxQ0hEBQ01I9cpyOT2gihQWi8goVGEuCGfbdQg2wiQ9/Uv/xFePNyJwb9J02uQdc2ZWKSvdleVNAWZ3H+IZQlSLEJEYoiVTZCoP0yRrTXjeiKWdftokfE2SwZjkeJg1CDHaoLAqQDKFGRyd0EsNiAo5gd+JYiHR/R/dtw++qTgFltuvV24FCD2frFmfiTzgwDTUQHoFGRydxKJ1QUCmB7c/RizhO/f0+jbeb4ffQXJw8NkYG9dl3MYcmFpWIBkIkYBKmqFzg0hk7uzCmgVkSosTNkYE4WuxsDrj5Ye7789Qewl0iMSJK6oR65u/B3TIDlThrgeWtGYgkxuDqEKiRSBUH/K24+vNjviuibIe+y6be3d+vVELOe8nh63XJ9hJQsQgguCUoAyBZncHDIzhAplg9ZsHGMO/cJ7Od+mx9sy5Pwbogw34vX3sQ3BYq3RS5CeIDBDpiCTu7OiEhXpR/50VhckxbjK1BgZ8j7DkbOxvU/jfZUkHDHOgcWIC3JYgKiguCCi0CnI5Oas4pTStKCVKGfym72s' $BG_Image &= 'jZTiIe/QJAw5r7REGRkyuCRIoycIC4FQoVpFAKx/JpNbsyIEEcpra0TEygplA2zk47A08ULCIySa50mX5e/78a8hp19jkNUPbQAJUKMCUdQpyOTmrEIkIiiZaCUwFKoABGpwd4SyR8l72SxDFvfCnOk8LhMi9mbpk4jW/e3SMEEYgKBRRAClP5PJrUlCRAIIDsoE1dBDFXolguSz2VArLsuFiJDl/Q47mg3bltJ6ZGf14LlumMqUgYpSYSgwFytOvkOQIuQr0d0LQBt7Q59P/wi1zjkf29b1MEKTbWsRsjU1qMEkxAwWZo7Hxqk74hHCQG29FLNEpyCTu7OJEJWYR1fn1dW4ok91mPNnczGsv9tlLR3HT/bCRRneGawKix3DHIkEyQwzo8C6AjIFmdybBwmRlAIBdH+99qfuz31/2tXuhr04uztybOnT48Nv6cjawEWpHjwVAuauiBmy5pgmdAqmIJP7sxKRNFS1QvfqPrQb2hWOXG4mSE4phRzBymo8rZlE9hIf4c0U4Xy0ELEihMMchTEFmdyeZHqsG+2q1v3aew5ElthL/9i68toEGQmyrbxfoyMIQyxyENtMKK9p22KMVVEjQVSx/ZlMbr8jpKTkVQZ0V8+KIYb1SBKNHNEnOLPvOvykz+c4sroN2pVoxFu1l11fqoKcrV5PiwnCUDdEUXgKMvkCQYqAVjRqDUHMjvCi9UYoomGNKvvjW+vHT86skRgeMerf2v21tfYOqgyibKwpK2vpQyydgky+AYIUEZRaVd0EJ/LDr16LuDwagnzeS0ytH5kjOuwWctmlDahqMwWAGUKZslUj5D9BQ0V5rnef3B4CCoAKxLMo3QdPNyaaWoYUggnSDPFDrT82s8HP+KmFx8iPoL+BUsZBrJzXRD0/UAQ8E2RydzaCoAhUQ5GnDidMj/4p6m8I6VM5Hz/90PfPYQEC2b0OaXezw9AO/AIok7LaMGsjVdSQEjIFmdybbRUuda+qihp+aI+C' $BG_Image &= '8QzL3xha61NNEJsJsYWI6WB+7iIlShDrroc1raqvHbsqKCODfY2wpFVUoxCB0BRkcms2sEJQ4bMWeFr38lq7FVGNGFFquCAWH36E4mIJslfxn1sPmfaXaucFqCIjE5hyygSiWgFoKUXmPMjk1jxWZjCkVDS0YXp48wCJBOmq2EdVF2Tp/3/bJgirC7TH2EwjPhqqWtVFQYMoW1sJIqXWAkVRKXOINbk3iZgZ8tIqUI2uLsgIDxfA5HC6IG2EZbggXqaMDNkD3VVftbomUBCyr1ykLAAiQSAyBZncGysilKEK9jpdESnSi3Mj2OvuwijY5kH8UMW/5zuxagRIa0MR9STRXV8IBNlJmRRRf6gy0VzNO7m7IEdmFtVKBG1U06Sqasxn9AhpDVGUKCTbRKFvGHwsKSubEl6c2D2+HpmjTkyEICMEYdPDUaI5DTK5NykfP9kEKX0OD9X10L0RRjyN+GgaEOfDdt6aIe/zk1kRFj330CO+ZpniXQEBQDlnHJt93Yi18GkGyOTepJ8mCLFCaLUXdV5RaZsSjn0ATAMFOI8a5DxT7oV9LHQcaxz919XwvKhhSIotU4h/5ji2WYJM7k3KPz9Hhqoc2QwxMV59bNUnC2OaHC6PUFbOP5+lJ8jf98GqcH20qn09nmiZYyYNjCog+HbElJi1oEE/Ztk2I2Ryc0GyLziEZFozoZohDbXuxACrvuAQKB9H8uOx/NSSlFkIO7wed0HUf8HzJAQRGJl/NtsRojCI0tvOPJmCTG7NJ+e8EqDZD87NUGN/vV67aizK3aH98RYocz7iECBPEDtlsfmVGXuF4XHTJ0MasbK9wa0f7Ze2lUjhU4ZNj/f7ff6ZTG6M/XmTAMjNEMpEPq3xetlf+dic3m7QWiHCLsgn2fFxDy9CLEJyFtQdzjN+B7sG1X4PUG5KPJYlZRNE9ThNr5+f5c9kcmOOzBkEsOmRyWVR9TGWxUh9Gfte60uZ7SuHC/JufrxbDWItc2aB' $BG_Image &= 'J4xegI/KKgzus+/LlrIoc+bj8ff8/ExBJl8gCAtemQ5ThC1E3JDn6/kK9sarVlCm9UhHPn7SZ3v7WYrNkvP8yWxe8a95eAMKRxUwPxbPG3NpPT5/l/TTmBMhkzvzOJgZpJp7gjBxJmZ2Rzr7jiqw2uOT0vFjgvQEsfMVt7dJlhmKWlt/avcEDX/HzMfx7uePHqw2TDvPT/r85CnI5NY8skFABAhlYbEUERI0VHVXqBYhsoHVth0/NsR6b++3C/Kwp1nLkaOSUUWF1TC1EYJ4y0czy/JjObeDGb4j8X/sneGO4ygQhOMuINnT6qTGod//UY/qEvbtPEGy4mvAyU40v+67ApshsP7xU6zNFuRVHeXXjI1SJy8WqbyIynfVgW49fMzysH7mFEuHt3cZcq9D0gzBxx+OCLP8cOPvpS3drPc9xdp8viADhf+TLzWPVmAnnGnp9bPyijAzIAUJ0I/OANHh7jb4Md4Dkxd6ij6zotZa3Ad646ds9jIFicbnKO/eYwuy+WjwqrXw//1enl4Tr+6ZEiPGRUSex4twAlhbCdLSEYtKhtwideJj8FfBQDcybcBFj9mbXtGQvRtr88mUZ/V80EdN6EqRHAAC1htTY7auM911CO/w0fr5fvf8vs6MAqbDGDIkR9c44NFMdhibGbNJtrxTkPdjs/nkGVb1yo2DpdTC9BhON4JemG483QPgSQaCEkS8J92CiTE8BoLVZvV22pm89SusvChI79rJ1W0nyOZzaa9KMkHKvPoEjknoWzvpiIogDake6FOP/l6GdKXJefTW29H1HTp8UnK+tWFLKEFeL2/neQmyE2TzuSAF+T2roNTiNCQwqxmM/KFID7gwO/ubJtwRImjGLI7ilB72Xr/JXy/0HtE7vep7t+Lms49sqKz6q0IJElqA2Gw/6FeA6C7Wm+QKncgJ2XEbcq6SJ2Z5Om87bYww5s5OkM0Hc3DFLD+exb3OctCPYLO45ZhCrHtYdTi6cWmegoj3' $BG_Image &= 'xaGSPgoQwgCZPbc29haj0pD+3gmy+WDai1TyRPHqBDELaQism1GGbgSQRLkGWQmiCFl2SIwLrUEWNqEgrU8/BqjdFmTzweBXlR+v+nTUsvbqsiiHGklHwlOQGugmJ/qbepD3zaHxTg8FCNvRUKuffTBBgpZtQTafC34zQISj1DtD1p3elSCnkeHDSbTeOz2gHTZrsuTQpVMPNS3S5Yi1UiveFjFG5EJ9C7L5bEGWIQWeCTI8MkMYITLkShBQHlCg3mXEtcDQWykiuupegiTNq09teg/SP/ku1maD1x0hjuIURAARuQRRguiKgWid8jBBJIHsOLuW7EsRPUScTShBrJmZu/Hf+9m/IEE2++RqcieI1+FXgoQFtaAcMgSOZg0edObUfdwLrcjvRyBnpzVUwViimY6cIzLkvQXZfCxH+S1BRq0uQdy10EBgYmFyhA2IFs3gfyRIP+8E4bNzDnpzpYcaAQdGSxrU46OnWJtNK1WGlFohQUjMQqBj/TfdmSGBhD8ySylyiSH6NcHSq670UHwI6NcpbGRIP3eCbD4ZXHvTPRchvgDuZ4XdEmjqBf6Ud7E4iVKCXBlCjkyIOztsNgI2vskPSZDPTpDNpl2GlHUbS5MsZgjCUhGmABPERwaIw0MP15tNqAZdoRaCesyx/6lHQ4NNMkB0j5hLkC3I5oM5SqmVgnh1rN0mIrRQn/RsAffAhILAVipMPSgEPWGlHgtjJR2GBgmlnEmDPj1BNlsQhE9FqntxUJCFNKABCgHDcAdcszFE6/QDYJZwmrVO69X93T7HLj0ulZo1+rEEoR/z+thsPhhUhA+fFC+FglS+JStBTrZuwwdGffFvzX0AMYtG1UFFjD502jEbK6EOJpAB0pgp6cehXVx9C7L5aNpTq47wAnjxSc3S8xDci/TBf+N0jIakHuGpyxhhEkQ3s5KeehhR0MAmTUsQJg0/3Ht7bDafzPGsPhBQhsgMjStCtJAAcm5V628KorU8/eD6' $BG_Image &= 'hYacMkRTLJF+iEZJNMMS7zb70cMem81Hgzx9pI6qBPG6BAlEYMVHD0wTqvO7dvhihIf7i+Q7013bXHvQkjtBerrBlmj2JZE+/0yTzaY9q3CHl7oMKT5ZinQzjJeOuXrmEQ8OJkiVLWNErjtM20vkgASRGMhK7s3xJ1f3j83mw3nWezOWU5FKTXLeRT1EpAw6TZSGaI3ioypB7NQ5vZN1tdkSZG+8co2uG16zIlrbAbL5eFqRIA4Ur1681FLrcIcD60QsICdXs83vwqEh/MQAMkZqzOCQIayfSxCaQUvanSD81+848mezQXnWMbxkhFQKUr1WZQiCguiG7jSB6ZGzqtkGIAIMEApid4RIDwF26B6WaY+JsXaAbL6BoxX3OqgHX5QsbccyWKKoeM6a8fGb36DmDhiZ4/9OOFkJYjkIpB33GiQ/mK48NpvvUARtdnjJAFm7esO1GQsIeFJJxofnxsPjJPcRJgwPYRdgg4lcf2ibfGuPzeZ7OFBKYYCw1+oDExoyASNkFj8wUbq0c5LDlCMbUXz8CBAZcgvCoNkrkM23zbRkSEkHintgYup3ihSXHpZyHAyO+wxFO7sMsUVThCzGiDzX/dwLkM2XwQSps7K57mJF6hGpB7tnAxoNsUOGsH5s42X/mSBLkOiN9dhsvk2Qp5fKqlU5EdkMwgORevz/uTgNkSIcr6N8LTstwqzF6aO2htZ2fmy+jjYFkR8crr9LD3UHUaS0WQazw+784FLkTg+WwFXUZYzxfhzbjs0X0p6FbmRpM9atCAUR1tYKY23MNdphs0sRm5VN3PMr2Amv2HZsvpNWaMhsLC8yxN1x0Ww23b3KEHkLy25nYqxrrztY4JW0+Nrvfd5sDs6w/liCODSySLRO2nl0hgaXH2S+TkGErRIKkNmJu7fHZvOlgixDigxZhQKOMVvE7HmkydmuY93nkF4QpYfe/riF1ax5rVuQzfcKogW6r0V6dsxWQD9i+CARnbQeAGgDoRuq' $BG_Image &= 'dSFg0Q3htWxBNl/KgeeyQ182JUMK1MOdgohgmORFe7Jmipg42ZUjRAsQ0eCOx2bzpYB6+JMzLZ9ID5aTwVZ9sIiuTJXAlRo/80O1APYMa/O9oDgD5FkmtAHuhQ2O4SPtGTrHt/IyZiM+W+A0IUluRe5rM0M5HpvN9z4IoSCl8DqBV3hBRgnVmfzWV1K9ZpH1pyETmAFYhgjAWIu2Bdl8M62U9KBM7jmW9CC/XzXrGtYLesJPLkN+BEjLV+CIx2bzrRwUpDJAnp7Ay2xMit+zGBrjIiJaTObLKk8oCXAvQpAlmhk4tMdm87Wg0IZyJwh4rYwI2YHRotGM3vqR1SNmG+szDjBBVmyot2VK2/tMNt8+xyqFhlQJAvohhnswNugGmwzRq1CQUJD7MF+wYAsZsgXZfLcgJadYd4LA66xJpgdmRZMkXXZE79HTivAxC7ZAFoc7Qh6bzReDMqmMESdwL7OL4QMxadHZstQ4hE2AACjLed/EStB0n3cHyOaraSi3Io4CeDIw4BqXIz3RJXpYnxUgV35gZYhk2TOszbdzIPWYOAVhg3MMDJniGBjBNqtRkZAFosO6JbJDYoC1Z1ib76elHKrrGSEcAb0M7TgZXnObSQiuQa57uwtciqxxC7L5dg6AhsyOIjdYDgTC3YuLOrzqpxNaQT26FBFQXYbsNfrmr6ABCpCih+hr6aH6QTg8ANxPz+lK54VY1kSD7TX65us5GkrqkXYUlyIIwDFYPvxCGbKsEGC/s0NsQTZ/CweUIUX5sVirELChrDwBsaT/3xBi6uIvWoJs9iQLKE4JXB0+KyYIn33QlqxAUIwuMRaXG1YMhBfbgmz+ChoNqShrSQ6NrAGP2TTt0spdOnAgmI2FAORJYWNvhuOx2Xw9DQaUUlC9zLoTJEusq0Fa0BO9Sz1uCspscMC2IJu/glaaAbX4FSEaIPq10ujZsMbsfCN/qAztoB4T2rMF2fwFHM/S4KU4i+2SQwr88SUHzW5h' $BG_Image &= 'BFgFSD9YDq+evmxBNn8BR6kOSI7iRBMsg5GTjYeMHvnFOTRlSXIrsizR1x56+lFfz/LYbL6dA6XCQDsqB7gXTMLENOJtOtWdZJb80IM+CGpG3+B1fov0PztDNt8PaimA8mNtyNKyYkFFpiHvY1oijCUgFCD64vWSerx+/YvHZvPttKe7NzBDSnEHO4l7kvWe42HvnGjZKhNQ6Q5WZXs+pxyT17/Px2bz7bRaizdMSjrCMMHPCLH/2DujNIdZG4p2Gif4ykLceej+t1oJQZOZDXT8fzrIgP1+PiFMHJckqpBMIPnwpyDfh1/PZzvPE4mI1LvC4vZ8ze+TvDIFRBERq6yIx/oEw9e/M+Yn3V+uR8RUJP0IQqzj2Z4niM4AJia1xir+ER+xTkNilfXMLd99nOqdQjxxzH+Y2nrElX6EIk+P5+nAYYCgVZle3J7jGV68whB3xdv3IxWZBrgkr1AjN7R8tpJHkuV51B5NABBKGscwB0CtsYr784g11uEmZBmSisxC/fVZhHzNibdfCSQTz/NUKEAqSBOLDidqjVXcnkd86ccNec1CJBSJYn3W6a/8bfnS45XJ4zOBHGvz6jyva4xOggrQADPDWWus4v68jvkR68eqJqYg/iQfbEN+sxLIMZV6nqpjcDAAAQiE3p0lSPEPEGSusY48f3VM4jYfRIQiEb+I5DHLD0T64MZEzCg+oIqQ4v58ZQbJjLEVSUHyUaaSn2T58e1qNdHeM3/MiwYLQSAAWUVIcX9B8j9yQpEg5Igr2ifpSUTqkZ++bqJXpxm3HhSaIwICrAOLxe3xRJB1+hYiBNndLz7OXoUfrWmQbtBoiZhPAYiVIMXd+cptrJBkG+Gj4913TBN//DbmiPRxPuXEdV1dmVhclpqIkDC2fxXF7UsQ59vbu/R4i7F+KfI8NlOTZxwraQ16aYd9LrAGYTAjBCCsBCluzqHnsx0hiGeRx3M5Mgd/8v6jaJ84R0Qkj1OaRPpA7+Rm0IbR' $BG_Image &= 'm5gHAKl93uLefEHDkHcO+d55Ikg3vtOMDc6zeYOmHkYlwIl5GHcdAhEpQYpb81IHrWWh7rgV3k9B5pNQIy1xjRzxq52n6eV0JvC2AGwDk1YvQopb8zqvMARhwXfmkf/ljuxyjbWRqD2ep2ro0Tm2IAsjYdFyjWWjXoQUt+ZLVK8wpLUWRuyFVrR0JAbvw542rxN6BdpJDC5UlYGBZpCYmIhUlV7cXpBQxDlbJJBsmUdy+2o681y0c2YPvXrv2ocN/sQIA0TMcqwipLi5IH3lA0eyWJ9rqzQlt3jX36m3JieupA8lmXqojkFwATODQAQwqS83FP8MQdKQlqki1NjrLCclaQ26XLp6QCoD5RhUh7YzCGQGzOpdenFzQbKi6GlI2hHh3WQpI2nHphMdpoBClYkqjDYRQ6YRs3oTUtyZL8DdGJfTVRXLkNzfXQkkfm6+c0cynGmEAmDebZDFBxKrE+/FzTPIhav3K5iLrCALEdcjJk3CoY1effRBpaND1eekj1CaAwsEJkbAZ1WEFHfmAYQd3dulV25lBUfLBOKCpB9vet8ZYwQ6RhpCADRCvBmJJUqlkOLGHJeiO9fOIe0IPWYK+Y7p+av4mH6wc5OCvI+Z0DDFMANDj3qbXtyZdmnYMZYfl8rKIM8E508/nDE4lDp8jHCUE4vAWmYhDYGPZUhx600s5AorOWNtFS26dgp+ZA8PpSr7rkBm+phdYrSI1IMmFO+k6pDivkexYtF0jW2InunH05mHrvTDDyd06CP62elQDiaW1zIkBhgImLAMKW7J49K5xrriSlTmJu9/XBD5kT9m+sj1VAyZNnoMn4bQLCYK26eyADErQ4o7ItApx/DeWxAbWe5HpJAG/Kw/xlBlKDEt6cPp1PE2xKJz4JgJJAwxj1F1SHE/vuRSb33sjaxA0Z7H/PmH4Epw9YSDujevGBG6vBlMQbyDB8yBeAOlDCluxwt6aY/sod45e693/gC3we8T3X70kXqwe++t' $BG_Image &= '7/xhyZ6sRzCZfhhQ53qL2/FA10gcIyuM8CRQRP44ml6Trnk+MaTQzmCMud6a07xW8RHNmbdxA4gDA+oLJ8XtOFyJKcbowZXopfBCpEGvRXfoMSvyLNDzuImmLj82erFEmb0JJCTxqEK9uJ8gOhdXY6wSJG4nCqz6vTvaJ+nByF7p9LwxD/vcx/KWPUUEaUh96724G7mI6hHZnHykgIYtfcPOQY/c4lWNm5QlDXFyhAEWjaBfjhiCOpVV3I3WVcOOqEHSk6SHID4i23uF5ZAEqX3QY+FPwWSaYR9f/xGACOplSHE32nVpD0H6LtK9TdSJG/SJjp6luA5NSZzhkd1G6QCEwSacHQgBOo9aYxW34rg2fS+xfjzxSzu8aR4vmdfI8+47laQeZszRI+/lY7eXAyAo0l7lSHEfmurHMasrI5lTXRU6ta+Tu+w5zgeZPX5jWGqEI1zzTvityL0OvxeVQXTbkOHdpgfoytFTjxSEQSgS96TyNzttMIKJAWIGhRC10CruQjtDhLQhLYl++4EUo698EcG1vppi+POcME341OIzfQyaBABCFMrxeL2+SpPiz9P60mMLMofF8DuqsiuV1FWDuCD7N1PgZPDjTUgKkpJsPWICmIghJkQ8F2nH41GeFH+Yr6aRM9KQjM8Mwk4d3nx8V+c50xjfmLdPzHYfWJB+QEQwm0MS0tyTqtyLP8lLLr22Ibvpx+l29k6ObCFKVx/zyZuswt95g2mHWK7Kwg0PIcwbRGCC5IQAQqAd5Ujx93icmTCy/1mEdGUn9V2da9QiOq7c8f0EU4vPk4obVW5pLMwAzCAA5O3IeQL4g7tbRSF4y/He7s2bWaBrlOjTC43kQXqveUxx0BHjxjK2EEINO0BzYCaI8EsCOAYxMRCOBEcpUvwpXoBeE01N1pAXh44+kwU6MbrP+/5BYbImZjk4+TDvdYQn0w7j7CUiLfELHraTicQorXa3ir+VQIIRWnzU6ppTkponS5YTyp4Z' $BG_Image &= 'JCxIbEUOZuuZukupjETH2fJOxCCwJI2RGHDiFCNNqmgv/gavC7o2edVbxMep3tzLJYZyaO+qVAUZ49sOiWGSaSP73ruSJulMOEIuH5C1iMh2JgwB6N05A7IkKUeK/zPtv+ydh5LEOgpFN8+gRsD/f+36+pRoeffllEbXMmDUXXFOIWy5Z5oKxibevCXJ7av3Dnd36og1HYEP5eRBhI/paoQkV3GfgwxvT+mQCmvBeqvGZe5K83EKydHv24G8WEzJeHcgmMu595ZdOc+y8i4T+LHft8Kl9wz/IcSoLnHL6NcNWJoPPjqGubVE0u+23Do6+rC1qsK/YGNVlVmIFsSqgAMCMkBi0F4sklAoM6xo0UdYQUJRTq5BJ6IpTVYBzBWPy+u08cnNrd8TkqPzo6P9m3Hevcd7ieXNQ2W6c23QULh+OijlpaJUUD+iyoZRWESG6RQISg+7TYR8WdS4ZBXDuAH8+XmNvr11GDn6jfWfcHDQqYM2HV6k3O/kio4wRRpgQZjUhlpwyHLQlo9Hs9FBDbKUDE4+CXR3BEKaKBvnYfvRb/yjow4Pa42Fo4LIZxRyBVyY4cHjsuSdxnzojAE/TLWNEUvEhYeKdfOXeEimSSoIu1M+zttWR7+dPvz9YNAblKkYzdw7chQVJstYyizX1E4NNYAk8bi/utTEjMJDBiVHMUut62Q5BjIfZ6119Btp+Oo7eAwCKxMveVIn0Fv92CPWS7he0mBGE/FeazFKrlVSPEUpkXAVAoJd8iAiDekwcvTr6+8GExMgfI39hcJCWRHf8M45fjrpd8euuInAF9hYr6vIPbnAr1BgINNA+sTHqPFxHiMe/cr6j/vLvfe396536YUyk7/1DY12OSuzEBgwuIOlXCPDNDIc6u/s5WPQ18vDBbu25JitGFW/8s7Go/OqVN5EmOwED9igkEjzXRuiCN4uZ15ja8ZhSYMMcS+1hkKurNdgpGjhNaSmQ+NdQIoKMgxWrui07Ee/mv45' $BG_Image &= 'Xu5bb84/KpT2l9Iza4k6IPmleZ3bVE8rbDQ6zSVEKLZwA6e3Bs16N++EJkZsUFWwQKKkxSkjR7+K/vNRj9u6dp2Kp06IAZAmJAvn6T5ffqnf/sDeIzqhYLuEFzN5cmR0wsNoXgbn6MDYvSXLhA0JSk43cvRL6++UDx39UND6BtYEEQCRCjqweX/PCwFClw2CBcqljkoReECNhRGrLKAxivqxBhIaxvyjbedQ8p+njBz9kngkhYOnhLQeXHKh8ULJ7zTAhmdeU66jCoEEMBAQ0YEQLyasIAZv5Ts8YIIItww9iCbkRov0sBpnb/zRL1c9ug/v/Vd2HbNbdmk1Ia5GnN2KRX+y6Ehcr64udUajF1ddRcZYGSvVhPIABlxpdKbwsrTsrK+AguJxD4ipX2Sv1tHRf0Y2Hk8ZhaR//OdNSKU7Naae6h269WaDLPHepNSgfESZlVXJ2/NpCKJW6AxkMUgak4CCDHsdVXZ2/R79TP39X9XbrkwGIHy+11rtlqZPJ1UVqdFwVL5XV3hc9yUbIVItIpQykpSWNyKF2zSgQuJT1BNrOEzhp5E5PfvRT9Z/6m6w+3dG/VE/OFC3IcpBxy1ehaJtp0ZsXTm+tkhxe++OZJUW4tEkaKBW7zihL5dWjVky09DW+MuY/eRfDzo6P6L46S4sfPXnm7yXVvJMTfeZ6ZWV/WB8ZKSCBgMbVBMNJoPjTULhDcunYm87CKuK632BxZCxrijYTbzPLp0icvRTuo/xak1x8hQtu8n59JrwYLjc7+KCixdQMDC4BAamiJGVAQ+xBYuutXSClyHTKs3ZCNMZA+EpKC0yOiJOETn60TevvCYrK3HglAwdrZbYAIt1C8uTlFy+MVHUcHAoVlCo11RLzBGE6YAHedwm7lUpZzwo7F5FlEDI55CwJnOjdIrI0Y9cXq3dVpgJLE9GHDx8NeA1L/G/D8RDnyjcKuhKnpt5CxHBDDMdLG6sdFqwuYopigYqlla3D8JbCmjP' $BG_Image &= '5aVmBEys7PwzxKMfrn8Oexm9BWdb1lo0JWiuVzxm5jXtyb8khIvUQPbAQqZkSCni5HrRwgxzxkvrtlZYTMlxjkAEEPJsRyzGQ8ZpMnlWWUc/UH8f9XLjfu702XpNDCcFBkDu06tKU3kNqaADVkIDBQY1BpWragBHdyP4InwiwSC9A0IaDThR9B1STTqLrKMfWD78RechEFq+MDERgkyG+lG38CAhk1kouncfDzJk0Io2KvhAE2JWgUY7Pl2gZSQ16llIZIZ9FyA2ziLr6Ift2xUDqg6IMuJQscmucadcgKj3KPrxd4d+B74BUvTsKStRA3ZeSDz+7LutZzQgLbKDudZAwaGEkUOt+2nI0DiLrKMfsPPKLwkKRLBUiw0jEBqX3KdsXcqbI6d0YL9LNBwrKgjAVCeKTwFBBTLcaEKGTuUpGv0OiA592PYHIcBiY8+dEnL0/c8+zJ1d7bkWUNPTa0elJtaqFJdzW5cuJF+virxU0KEoYQBYynPHo0sEhkR0Ay+RZE8WN2wvryPCmFn0GGDJQ8AwAKDEiJVNhlmK04Ucfd/Oq3Hj4TcMeUPh8tBRokH5vFxlZSpFC2I+wcGrQr7gAb8rvuOyCZEhAI6nESVyb1UJmlbf4+WTyKChFRikOYt//e3o6Duac62PhMhLWPDPonRg4GLWJbiYxc2s+4N1G3DYbvJyyVUvpVASc01LTxXZOm9cEZoFWY1h9eg/KCetUs7kdmz+H5A9Y3ZKyNF3ra6mmwrIrbzk02v6rGukl0NKigwBoXhym/fiKivEAaPeT0KyfDUTPS0T1Qpst+KdJUk0mpM23yB7w4Ab9r4nDBTYb958EqcLOfr21dX97NxzTh6Fu9cECwXp6//XXuollgDJYk9K8dVKCKkGRDFhSyhgnoBkdx1kZIYS7xxfLeNKIkWAxfFmFIm+RoR3ymIrJqeEHH0zHvUye7mASIqHe/E3n5PAZ5W4mPChCQApr5J/cVuL7/fffWokASLV' $BG_Image &= '4cYLwtfWplfhNwhGVK+grB6Q5L6bUdEovmKD81b3KSuBP3d6j75xdWV+aU5XVSgAIZ6VdwG5o5uNzCwiSS1IBUWEkuFizOFCB6Z88RDY2vTsRjC4WPiMAg2FI5TqLkRJZH0hjXU3y2wRQucODgRQQsbOnd6jb9qXaG5+jZe5CGFHlbuV033MBIcqdiJOGnaadLDIigCC3Ft1Qi9zf3QeiUFR2NC0nOw9UL+ubrdjZtRjPga+SuFKsKXXwizuAAiAg1JCm3In8R9/Ozp66J+j1HromE55SJfUipQLD0UPVYmNSt4UcXEhUzKEqRNESk5D10g+ZAMn9RORjhVuq6wRLbKktyszJtWOYyQyCyLwGN9wRwudNdbR88l5mdkUGiof0qxyCTfdhQkqJ0SZSQV578Py22QuOlxqKPCryAQmoqcJK4ji8bxwlMk3GAOE3l+x8Bp2KYbx2EMWxiTSW/ch95SNUWeNdfToPvidXcFRVI+kcKRjaTjABVYWNvqgHpzwCQkkqBmuqyR6dulRrcjtOlcYELI16CUgjEv4URj9wVLF4KZU2WUl4yMyiPl1lDUUmx57eo/OzSu75FMVJH2yOup7s92ru3ziZC8/p2Lx8cpGI4sPlm+VQnYjqFEJLFdbZ57EYbeNAS4yoxYtkNFF5M1QOWwMXhphqt57FYNw1Ddv7rV9jXV0VlfxsnkNgwr3ykmpyKoCDtZVmXWFDDQ1SQGpjACIot2QYANbnO2ik6mYShOEsdNCGMVN3aGIqUs16tGGiB/bfsShmDY85cOiwyH4njuxUJ3tJkesrj6mTb/GnJPeOn1tzq1c7QOQVCmQkWayxuoFVmOwseD4TCyuloIYPaYiaEwMGvjrX06mGcGAUS+s+jMxOL1MxGiW1l1B8YDQHmx82FCROWuso3t1FV4mPOw66DRYFDmrqVqLq0nh0AkYiI6eFRbFY2/Gk1R2JBUSAKiVmIeaBQUV1qluTN6ojNWVG6TUEBRUGitd' $BG_Image &= 'h5CQ5dDoXyWFEWRnu8kR75zbp7aWmM2iOfd+idwri1YjnWbEp+I5J/XEp84SIPpuVHYBas6SMuLbSiugkD4jCrW2LEjs2+HHIKkzK4YiQdB3cflwFZf0GIV6XxbPPmhEaljs6ysZps6jkKP/fIy7FPDCh9Nz+JTJSaO9akVi4IIgZbsF6acWXp6xcHAnyOwKI+FDyYUCs1wy+z5AhnOZkLp+DIymLKzMrKgO/R1ifgklEP97CjNMZ7DGGnHeCjnSS4Pm5u42k16DLqEmt54KGOCDc2neJyZrssKCgQ4Y+453QiYIWvl80zZLFkpIZgYEGn6VFi5Kw9hUstih11jfuqwN5UwI1b7R5PFKITkZO2usr76zZEy2lkza8P4DzkvFskpS+k1HdnSvt/ATQEDC4WJvNiqfXHT22bBzMtds2ErGLbKc76KSMpcGfDw1opxt7iU8BqSESgcbs6wBQcRnjfXFHw1Os0kBKYpEsQX3BkKeVVTf6L0vUxGBxBfYoLgQ4avrWlqNe1NUOwsZASdPdWXY0GkgurDQgvTN3GZn3yP/bkpo0IeRpn70z/buD9XNdH3WWF96Z8n0ac6+9RIiq0GfpVC0yKfgmO4FG7p6iRBy+t6cfZcXvpR9Lqq6pHDcIx71hJDRCmyCBLYw+KJHJ1vgYaOCg69I06r/ryc/4VAjFh6qIArt+Ybh115jnY27qh5WVSYcFh78OSvW5aQhr6KCtFr6Cq9XZWVRbqrkBApxCjPFnKSiJGwSolQcmASFd4PNNW4F2/uGAoPI4GdN2/oMy6kK2FgF4/ZEARqoxscpIV+1O3ezF1sT13O8XM1HKXB/FwwFBRBqOxD5qaF3pLofvyfeXbrA67mlJHw2KKGQTOjjj/2KiZNow/tqtfWjlDYLzZu8sg3JCGTDLhGTW/0HmIzW55fdbnL0L977mB7ptW8/N27xTpfJVMSfPE83JtDUFbwUykm6iZVZbMKaJbGRl44dQUnb7sT9wQ2j' $BG_Image &= 'xESM3BrySlew7UyUq31/lulSePDDvdUtTHVDYpqLWISU2pB36ZCppsO+6g9knYcfltPnFCEplXdvzusd/WtWPBTsp+fAkhoz31r/9dmLrv1VNOZvwcvzbVtgISAsJyTl/RpIynKSIiwIGPj9Hpe6CdipsT4qVb9DxTe5rEF0mSVb5qyxvp7+/vnpNqcLBXOv8mLPlXlmzfLrrER9oxdHUJ4P3T9c7SymIAm8ujOX2Xr22/S5uTXXCo1WXML0Ft7uxVERDQsbNaqzVeuLXPZaKhRgOrfr/FO2r/mTiSKDztWnXDcJs6as4icgmHmfziQ2pyqIAOHvm6ciTHZns75BlgPljkUWNmRkYYFc6CSqYSyoimlQqB794rpRP+ZCbRSduXzxCCSQYOFsfck11tE/TXuvLnmae03acfZdsdlKkUTTDhUUhn7sAR7FB6ZqCAxVpUtMIEVeqPsOGOnxmGtRH9IJ+wkhfrBvl0uygan3r5xsd4/JvKtKUDEApQFpLlpnz/tX+9Eru985t2mpMuJVZZ5ePODjv//XwqMoGxqpgUqTEjb51yDuPEIvCNrrhSzBqhALQBIZ2y75IInTBDb3l29hgIlREngMAmbXp1EjAxyAwdDZ93xRy04T8qX4GG737V1X5RAPZXO+d7gLF9/+/F1sUD1oz3WpABVOj0GEjb9vQLUoM5qTsFmI7xNBB1ErsLGfIT8eNaWjIC8VpgDkkeYlkCYDVoqlV/fnnF/vRu/Zmzh9WnpNHXkP7l950nzMhBCMS1Wyvc6iHKBqQLK83xJsdQEBqeqqgX/uPekI9UPCep+YvYQ8jv6UyeZNUlCPnhqFgxAC+ECtz9OEfCU+3NzsbqJn6fC6Ii/PWoT47MZaWg/L788hLiVZBB++VYBVO3BJ+8IEs1zsBrDaoi4B+BFUC5MtLjBFQGJUbF/ONQMERLW/VqhzEHX9wNtX2rB4llef7v56L6lq1qXkd0lSYa2f3k10xV4yl6Yv5d5k' $BG_Image &= 'sFORTjzpFXgKvigi6fiS4dyvaUoet7RaC4F+K0RX9oRpp0SH2VZPvNNo0+CUTAFY7BXEzpOQL/Tm4PsNWdeBm3VZ+o37MjeBRn+tL5mtRFphlb9mVtAfeBRNv+zeozsASEpshlT7jvZFFXh0acCQgJHuUmqbyGQOMQsV3YgUwTc26SNOE/Il+Cjzl7lP5092TsfBSKVUE3BatB53lZnrVfQ7ibqCTPfSbhP+Il/Obi5JuVJQveTaTD179GIUikIjsrt1gvGEQ0dfcNj7Awh4WtWbeaXRbu/PQ/5r/EfPo4+y6fbf9q52yXEkuUU41jFNJSDk+z+tPUIlokSz7/xXOqJbZJFia/aHsFnIz9qTSyj0dKJOWION7hiIKf3QbkWASPju2WIJjWJRAGtMVGvIZKKEDJL07Asdon6aUaZa3srXXUtm+DK/Yz8SIPQfRww5g9fNrq0+IkraCyPsSCHuf0jV1B39IMjXa5V3qNlLjFBCCgGbVOyDGXKCn9tMCFmAusvgdOVVQ8hEaHWIuPy9T6/T8eRCnmTz1EEsQ47TF6s7+SfHMU1IW1oJWceKfhwRIP7pvz8mTsKFwc/Pf0I61l37gePAwWpJhOPnXPOhxJZtRPLSvchdhwBFdNN8SSRxDAit4OsvlqhwNfsKrgi7sJDOeyslxTfYzcueTxVB4pNiSnaWdLgEmCmv8qfj6VzeYI+EpDT95Od93pGQ/4R5tYWDJcNmghJJaSzIKqS1ZTG4BElDNh3J51UrDKmyBUlLd3VngzZ0gHp+MA+cnVlq5XK3GX6tYQi7Y8s3TwzxGNzHug2pXUFlgjyfpkhHom/WxNXqG0n+PI7/gEjIzY8fAOCWoNtDDlEOoZPeX/WYD7+ZpooAQQjtv0gohKKqyrspTMK6GpO5mF7vHV/VW4HhuTOpWtNWMfJas9WSrzuIct9H4r4GgZgz2vOALTiO1ZfUQ3RctL7XGAZtg3K3IP320nOgeJCEDIrrHIMidYts' $BG_Image &= 'idwUOpADEdDy22wDqwqckHjkuDkiKfHH1jsjtG6k31wYlGMQN25Hafh6y0DxKnsxQ/Tt5Cf6b6Y/XK/4oN+JBunHjuctQr66a3umnVuBJFmXZgq9fkcIkSz3tSQ6/ePGf1tVe+JImz2dwOHcyGWgzu2wR33G+8zbNQj9YnB0pzYkKsVEXAQJktM7Gt0XJs1Zgvw873Ssb64dbOJAYbxTFEmORrfN0A47eYFqCfI6pbYA1RAK3Sg0WJbmIUICGVg7rMQC1/lcP+WfbM0uSPTeSjR1hFluUz6TD59HpNUB+xdp3kl5H2TiVHCLkK/dXf3zOBw+NyuAVVm+jMe8Uv6BsSaO8jF9FUmIoG82UGqATvGtoqW4sQUDk5CF3hkUXmTpw553MlnxMSK7yAhVHkOQxEZCFLPEn3macbgTJWfzZBbR6d9cE3KL8+dB4CgA7JVZshGEFNmKEdmRMpBU23IYQ6obJQClllhVMjWEVkeDA/A9szJpVj7tU3RCFq+ekSDohWye1M+zu9fYeqDknOBjKGIqTUDRiPWwJJ+R0MbxvSLkzr3igcm+Ir27kpW462rJFmkLEkSfk92TX2I0CC0v7d7QughFfwvolKdnBA81ZMghDImo92kXItjtx2mezpbCe44n5pEG/UkbNSLXjZkzFdth59aO4xYh32g/jgMFb4t0NCC2QDYB0VQhm7rGdCLVcAOS2kLELHFssEAUkKhIwxSbcAmcRx8D8jaJTSHWBE+UN092IVNuO7R4p004s7t+JSr7rjeG5BjhYZgb/wEi5M5tP7y7Yh2NZkOUHBAnaX3e5ojlez+lAAWAVCpArKFHlvTiCoFCFUd8OJDYUA+NJqze6FP4/LLjKPYH5FXKarOxCiFMg21xzuSFfHWYEEdY4C3WmSaXRbffGAm58d8vAwKgRR6UlYHIVvf4sqh2tklAGQ3IlkMz+1x27DpVJXK9WVWQUgGFxSC0mZJwx55mEjGvfViCTxKUmDl83hGL' $BG_Image &= 'sNWZ5w1FgywLIm3UynDcHUl7T4v3FUIMjuedjvV1G6yfRMA9WY2Te0VSdC4We15DjQCi/1ad1qNTOiUJ3AbrpCUWpLVtSvajrcdQQNEafjJuXGiI4Dh/NPxZWURcpFpw329tXuAOHU9+rAsnVq4yrDAIT26CfF1r0Z9a+yPy8E5KTXtTGf3RluhkAuwGAQiypdimhBDqxnBDXIF0l1zZYgBqbCm6wmm+lNQ5JMnXl7mg1iDoiAoNVVJa2IHfiPXouLdA6nX/2KupFlJtG0yGSXgRHLcI+S48fg6gylKbhJpJTaTNhyFSZELqc0S8V46JW4WgCwZhLiQMMgmIDqD4aLuztH5cvLKeQTgiky6X77pk0+KzPcoDuYxYD3yboOSHzJFYkVAjlHGu4nNvbBI870jIt4VAALe/EtRLkKvpLccQQxQ1wXRelNoSUkHzpZedWWNPZHrUBAznyw9yBlK19uxEJeChXYq0ydYR6ZopbDhHOSJA9hTERD3Cn5iRiqN4WskdCRcOcr2GILiKcPDnFVa/C9O/LQZC4JgAuMTFA7V5MJQYSeIrxXyMGwuTbjUkQWfdIOlELJgZ6+1M4uHYH9uIkEIZhXhOYNSIcqmNU4hjbj/6LEv2HJNAVENaExMeOy8uOzikZa+nUAXfJ0LuAluwkYR22Zc7zX5I5doy3T9BWlBPMHBcuNJYCkdCCBYK6l6KRIkz+u1u9QTUzYCZIBIaaB+VMBQIQaSrQPlTuZdzPL4BGqS07c22qMcFzAtPvj0ex5/H408m3t6hwi9r8EN2bIJtRYui182BGaNhkhEPFvzTSgqv31FHupctCNXTehTqSBVEiduU9DakZ1fyiOZ48wOHKI+I87+H1BNqa10tPd8ZAzQkQnqbUjXL9kU404shQUZ7vk64Vfp3EcSbIEMSKZkW4+dlk1sFiB8LTUop+KA2s1AOp2fkbaFQkeHhjhrEdNui2ZAeEG3aJKckjLmcQbWrEF+EGY/lzHqY' $BG_Image &= 'Lfnix4slJDiZopGHFyFL4oMpKtzbNfj0jZ0b7ihIj2HY1Ua3pHivhiuhRtJ81ymAOiknDh5qXVZhS2pMBi/qdbYkacmCPUXqUR4y48yIIJm9gVIOZWS1L/dCkJ5tn+R35mU++feiPsR8+fIe1nceFggBigYhl9GIKPcdZy5qfjZWkFKuEy7MTmswUZA4gttX4yHm+usZuz6ciEfLvFKyENUnT+8VlunwIQpjmLAokv83LCQHeIaC9EzOiT6JBDnh+DoRcluQRDAoslMnNSH0RZUQYV5eDLKExnJAINqCfVJ5R4MQmRRiH28SVdSNzCtEAuWKajm7tNDvyPc+UUHLj1N0PXYmFqS0S/zV92eX7Ol0YoIcbwbkz9iPu33cVxFkfUetM5pJSjTWjWy5IuVF0FfUO6wdoBLCDXm8LaDVWseShICi5BuuzfXROiQ57sOatXieyxK1u6ZMmdyQV3veb5S4hjACQe0DFDqWoxP+8MjoBdPDi+DbiqbuMAgIHBBBo8datGjIr2aHDeDwRCq9o9cOa68DSRwdWqkgPe9R0OYfFpaDd9caW7IW4sp6E+nPvaIq7AhOMcLwJBcCJ1PZj5oUDwfV2y3e20VSJodPxtmjdYuQ78E/INSHSIJUmyCbDMlaFHvzYmV1QhJ7vb9i+IFa5kPJN0yKy5ITHEUSAqTDIvw9FtzefZfkOzEU3d37KkcbgBAkb2ulLO9/4La8tidLg3juemKF5yihCXLcIuSbCALCXz0qfDCUA7PdigopneRHK9YFIJoAyZk1RTuxpF6qAJLAzCu0cUj+e1KuZMOQWaDAokqqEtMNSOf4n1eagEY/Wk8lXrInokgUWVSSVx5bZ4enkTZZmTrVqyjk+cVFU3cxSBWAcCHsUDOn8KYZDWKOkIglgd9znDzBDyXT/XU5Uwrc7IRoDMVaC7EZkEKBlNWKkyK/mw5TJA918Hzsqlx7iWGgw965ImOPFjPcVytG49HHau5r7XHZoveb' $BG_Image &= 'RMiNP1gmhDzCgxPEnJp7urvJsRbRJ+msODssoUwWlEN81UrRIXQCkLYOhtkiSMJa7vocPmVvtetx7A2sd79Vxn8OoSCSpbmb2IdXIcjxooabKG5K/RQrvEXI9wTSf37Wnt/kmJd8GbTE7l7siD6vxRWeCALGgVUA2plYrrjNRGhzpzXotZw/pdbsg62TnNPfsdVUKSxKD9KwY5cgCi/Mk9x3mjzJYknvicC75Hgd3Pd9Wr0/k/G+4+eLIiE3QVJtyxP6/UKiX4aXoMIQ7iodcWBFeFcVqoqkxNeq0ICpkdeyElZF2TE5po7x+kIrL343FwmLpDhE2S4plqNz1rMDidYg5m8aokzoZPDIeML0WHxrX/2NIuSuBikAeiLpiF5QUm9uXnWz1Wc2FCXx0oYQBIlOqiJYgUMlNgYKSTTBD3C/7Tie3+nEQ2JV/MiO3NojISHGGAi12tLFLu6yBpHf7oQIA4uO9jKMOfl5f76MIHcgfc0jIANll5UkE272w+9I5Ysc6XODhJAooCCQS6Qv0KyRwx/bBqsFTp8sRHBbqkPIF1/nuZ45tDpMgJ4ZySZlSsjTq3AJMs1nZulpZnTwiqM/PEFnZS0+L8dB350bvocgrkfv1ubLNQWCU3YWIa9iNPaz2Ft/d2laYpkgYNWqraLZs6H9WqRJelbiINOJbkVNdO63+MJ5QK6R7VbUSGLvDnqybUEi3ZcHKxRZ0uPoDEpvM+Rdg/wxQ467aOprAulY31gSJxNCRaqneTWpSrAQRSUDnhqYETsahcUMOIbuEMjyqoYh6RbvaVYtJvVEeh1NnjDicnfVLT2f4cNWrB6ujNJ32N8GksuEaGvcO6NDQpC/w3W6M1En/DhDt0r/EoLwqMoW6yzOW2QxUOgQmxFsJbgsgJxi9WGMBxIm231h2QBEcTis7ie70aopKgSQkVOpKTSUDMbLydBbXXobljOpVlRRrJo4yOJT/nJvsDhCPaIkbUh3EXLnK35Tpgks' $BG_Image &= 'wQeSlDWzkO/ntFkSSmeJfp3rvherN20YYFahYQvhkyWHWlM95cj7REe0GZC1DCXOJNHYkiiUrZUpRjt1VLrxtJ3IuJ0g6bxHaJK2WKHItxRN3fhzlAkABuJWEVUsLxJDr8UF35hDQEBlGZLRU1MsZfsgxz9iFwQj3d1nQjvU4D4KAZNxgm49s9WKnggzzqzZz/LT6OSzmCPFKkp6pmfEa491HM9NrI/1SBx9zhEhPt4q/WsKbo+Vy04GWqhFEgfROASQCOoK9PsIGosAhSJMiTJRGPcVYLfuTKWa5lreZgl+rQG4PpsxymwQX+1uX6F3gW42BQIUA9S2hlXFkvZYoVv/HMl3z2honz2X7RUVOefzHn2LkO+IEx4oSMKeoVinjVaZJol4nMsIy6sFECJXgokkpicWbB/oIAhkWQFSNilqcAam+/1SI93fIzSQXZRy1+eNJKZFJP2mSZ7CBByX/ajyAN6iP6OD59HHsWIiSTd5JSv61+dssP58XU3IPfigig45lJmRkIB8Sa0TJaoUS6EB3u4RRDcLyXcn2hJkLighzuCcHf8wSyCTqUeSqJO4awkjnbdP2oclzO0wJJ5exYY0ZLBeL4f5R94c5kTbgDxcMGUN4m1WJuhcREKOLxEhtxPrQBUJqcnFEM1MKTHwzXOayYAKItIzqbAhW5BOEso2j0peoRsa+Q5o3VFTqaNK861Vrh5CSCFCJDtCniCVifAnmgsaE1i0BRmSpZj9OCJB9o5YXqzVjuN78hVv/ENYorfA0RrJP7T1iArZ/LzmT70OOqFFoXcvlmPovlRjOogA0krXKgkNmja9NEkDMm+8mrqQDh9iEvQ8pb6PMnnG0/XMA5p/1zJLqpIZQhbhz0zrxUcyentGpve+rwpBzsH0W4R8B0FQjng0q8jS60TWVi01N+Kx8u2s10uELQhJCC1u8worc9n8VzjZHFKTerJ4IZNlT2ektma90R8hzGlM9CAdSnMTQota5KAtx3Lz' $BG_Image &= 'ClEwFiHH0UnJ6iHGeHlnkxX8+bJ8xdvLa4KwsbZYlQmFVcXXQYXieHrXIfxIElbBxqQAcPFCgkBrdC+7tQOSyRMhQlBQwxCwV1ENBYYT2Knhm1e6XNpLTGbwKEvFZTks0s0UhVcepNN9rCZacWN5Vk6Kpo6zAfkSlX47sf7YgoDqjgXx7ipdDGpVo8ZoyGuAUSS7So8EMWxH3LDBv+fUEhRTwS4mT57LfMRm+OWf+Y1kSPq6YjeM6UnXMT5rk0eVVIZEzqqlff7OYX/v1KabDk5yH/vh15kjdzrWN5RLgSCbDbwIYoqIwwjRF0VSGP2RLvCjbxWkKN1mIWWFVSxrECxT4KO7qpsgUse3pekeNxzpUEVJeJcaoYpvnZMY0+p3SGYG0/GcokKQJdI5Vsr06ON5HMO1KUzvx9P9GhIqvNhi9S1CvsHLW+BC3Fik5NtFmjUqYjRIdmBRI7EeWAaEhJYNYQji+9CyBNkxQRjvb8R9GptkKEKejwV5Z0Xcu+GG3wpPRPhKghQXRBkUvbZIeu/7sKoKM0ja7bGe2WSdJ0G7888tQr7DywszRGAvCxI7UfQVq7K/mp8tSjgEyc1FBXq/pGprkBcWN/YiKSIhE7Tize0ZPSWTIAQ5xUDUGmIYIckG6a0LxCTNBIqft4C3blpJNLEksQmxk3fYYeX+/NJxt3cuLwkRPXlXpIhSvFihCnwlgaSC0KVlFBosJAQYgthQSIHXI1UaSAzFZIB2jW4uLIQ0sRDDGMWcBOiGMrcEkE4EIVXyqhwfSRPrdiTdGA1ihrRPjxyMY0mQ5x0q/Hj8ccyOAnmwqphQiFdUwTv0GJZYkFJcWbWrdYQb6f3z+iXBeKV6NyMgVoI8KBDOLik1CLMoNiQHqIHO/VTeaozUc2eTYB9xc/2JRIkhiBiGCNBmQnzwna0Z6QwoTN1t8CdTC2+V/vlOrKMKfBPjRcH02ALqtUU8qqUtAR4cYgQs7B7gGieWfcnQppgbSGBk' $BG_Image &= 'EQ4y4sACslRCHEjS+hgPYahksuRbnX2ZkVW9WxAvCoI/cWgx5mMihsfj2X/ZYY7EfnxnJOR2YiXXXYRNiHlhtvhkbUIFJLaseIQgfDuUIkksfy3bhVZPhmQsioJIEwUrtNfoN8fvuXfc9Fzc/FBKz4cOfwKyBtJGkZAjRmQPi6QA92w8Qo4vIsidqmiGoNmUOVE0lE2WykJkT+R1EMEmxXcCzsu2giaIN1qJ/tUsAL7TIsthwZSVBAkTKqGReVLy+lwPIkFnkCGIKG7LMT8Og6S+0Bepk3LmYoxIEBy3Sv9w/HPUwUGjWMUCgy2TN6QZHQJJ4E6KoN8JMx0bknNCgk6FR+VDxucbnZHdUk3pBpS6EItu9yQ9CfWJ9Glu+P0w5MqAcOhCR0Btk1Jwu9jxPCw6jNWXd59WuPdY/PMd86DvRBMWMSKkEglxwNAEGY9WKe5dshBSiJWlAqa6CkRNGEQF0hSZaCIpYjceHQliuHgkWSfDgCSO+GdGUmG9HSR4rjM/VIN9be7vw3j2GdKPww3jenl4H/8CN0E+vpzwhyuvENTIDS6eZOETxY0SsSbbEIRS6wI9BemFoQQKVdPN2h/bm3DXINdEY6FdvY71JpRGDuYMOrZnb++Ds6Ez5w1V1lRBMSH7IAQH1dOxdxvpecGM7xAhN0EIHhwVQlbBZGCpVqBZpWh0USLi7kVKR9Kg/cqM9CIICoYZAtiztUuQN2rkZ0rYOT1/3ZMx5mNjCOQ7iaHnhOwJN5TBYsgC896fNtoj/RuO43UKHm77c4mfO1/x4zU6UGp7sdjYLUiN9KgoEE0bh0y29T1Sge9p8npHg1RNtju66Vk6fXQRHD9vQL6HPERMBQdhSHPH8RBFhu9j2Z69F952LF+oqxBkTMgkZG1Fu3FkPfo4XkkmneFsxkW51JfMg74TTY5CEUKbBBViiEUHB7e7e2G6slxcQZ1LcdtLu3khEklexMS3C+gr925vJIEIOApOupwKPa7f' $BG_Image &= 'dMuaZSpGlK6k0r7JIhVzxz2Z10XpZP7a2DuQHuu8m5DfHb0/twj5dCfWil8TJOPGUb2XSpVvJIs3nFC4grd+WWMTetPoBdTEyfvRvvXCHjq5hollCFpXGtOx2p0Ihdd5T2cMZEKY1UX1RpDEewxKexQkHHntr47nGbEawZ+w5E7o/fQ4+lEUG80wBCxmV25qTHiAojaaUCjCN5PSG+TWhEG6MLN6uqpkipDY/vBsgFqieqgxNYmwMlfI4F8gkZBodL/rZcfCUYOdIIZIKX+Smbc2HX8ZcjxiRiZZ8dgZkvXPx6v0ezQIxlSAiBdLRVmGeGU+cEiRDVYtVWI2IOLkomKQBYCTxo4qPBqrVAscQhhZcJYQiEm/wlDBPxkhYroAbXLkOx4R8hyfdM1nx4TYq520LCmF7Ulx7+fjWL2wJpweigQdG/IlIuSOo6MoYQZLzTeEosokUTExkBSlcxab7i2JSPyioAWKqIK9ugSRGWvt2PrJ+ERBZE3L8yYkGA0Ji3+tHs4kVBIVoQxn26jHCicZC1IxIaXQy8hEtmyxdgmSjN5BDMjPTZCPb/kDSosdsSBmB8IQJhdrWJLuo4hrS/kNd8waea7U66D0HAWZKnQFMRw7V2D4zLYlEtI8LjoEQjITtbe1zvK9012nDt0mZMHk78AW5GU3zJC0sV64CIP4+PPZCb23RucBB8a8yxqGxNGb744PCXsIk5uVcCG5VxcaIQhq2rs78FGEIN8FKpzwIYtzn61odKbhL5RSwq2b6IkhqUPcm2CV16aF7QdNlvVOZ5ZhXsffRJOYkE5XkxOOkOSuKvxoPH4A6mRBEjW38eBWpU5TqRZDsOQKRWTgFKkNFLSoAVSNJakIb1ZSQBLEeG4EaZm9JYDaooVtPd5RHFBjLwcJQ3wOiyTOFotDkNSCDEMSbHw+JqDiMtvHX4X+iOVIu/fjZD/+zBarb4J8chy9QPIYDb5/Ryxax8nrVaprE0woTR1HxXCkgKRp' $BG_Image &= 'AWF3VUG1MOGQiW5wdW6AwhPtoFpXwAh3B8qB5OxuBDNJoGEKWHBsZ88voaRaEMlh2OpA9zRFkt37PFxxa6S54k4S0+SjRcit0ScRygeC+YKoos79kqkxNOEiVcVk+In9ZZCEu00NAxcvZB0iEquKvafzT9DauAGd0IgnV8mI78ZSInlny38XQXB5IBS3hF8GawjSM2vKh+OVbTIbreM5WAL9eMZ6/PmKfMVbozec2n5O3eOSHWVyzAGF0qY3iqHCRhL6ilmhVFUyXot2nRSnvZz9W4sg4cfmjYp435Em1t3R5xIEZNRnaNKZe0iQVcs8pumPXr+BCZJ8lcdqaOLV0+xYBsSHX7qP/nx0qPDW6E6tbWZblLAZGAPCstyYzgYUxk/63s0kCN/mfpkgTExPGBDMHJH0xhK3nVZ0dwAF5oemRbY6Bbgj2DvXrn0vbFqrDK+5r3dHca+uiivb3cbjeI3zNLZGvffA9C/CH2CZEILaIgFk/her5L3Pc4q7Si4kYYji1SaA0/22sHunkEY/aDNETK4v0QwFOocr9MYBqbO9sjyJAfGl5Q4Kyy7abmyk0MmA9DkSYoIsUT6deS8rb//k+HMT5IM1OoBku4cfSf5WaQXTc4+MD4gsIqXpKrVIbkmLA07sOpMGluHoLjulhGU9WsuSKE2qbU1wMW16Sj/2OepSC5MMGSME2xhNJJ9ktlVXmDDi0wzcCgstQI7j79Hu3rDkTI7PFyE3QZ5I07hSvTf5MDmoWBGRnFfNBGgm6hYdI8aE+Ja9WHv8j9MMbmYjyNaE+R7/WyQDJcPW0Mpcg+ziEkwfg+VaX6o0zjmDuwFRcU8HHqRGas0HOY5HLMjrzgl/PpwgtxPLOyx0j7iuQXYhetttgZDEEpYRSb8gvIfPfeJQh5WvHB05bKT6Sct8FBsrwh4WnBHy9PQqacOEkFMhU587NR3LOBWJApFKydJZgxhLOnUSspZGf66Zno/HcVijD3ovRt9XPx+v' $BG_Image &= '0u+uo02hZDsxsJA1MTjivLZR6V5WIvDbHLO0z1oc4dIgAVCW44DUhS5rbBKoQl/m9naut8sECtFCTxKLodbWswEmJQiUSVqqOtnMDWFITIh1+st0/P19hCLp7X6Nn7uq8GM1emGreIXICjwGgTEgS40kGHIuD+GmEXKA0p9NASXCEHpWEgZsSROYvyRLxH6m1NqJZUuRenVExQsBAUrxPQQ7V/YaybNQf/y1IP7Zim77eJ4D6cFNkM+eDEJSaasYiBM+I8WR67EgE3mXlAm4C1YoZLRJCBIAsg1ZgXQMmO69Yvhw2WsrGgTqLCHBV2ZLxYgAQ0tmn0hSvxiQ+LHCkMyXes70zsNjdPaMrFO+yeer9NuJRTS7CYYgATWOHntElXxecWFEeSwD01BxT0VZIj0oCBmWM0pdYqiiTs6tD70NWtgBUwO9jWwDtgkKLW1CBPRB+e+9MiC7CdmbPqQ5lr1Yj8O8SD7vM/wIRT5chNzzny1BorVrR0aD2JqYIDBLsr9av8x+Kp2AokFUJgilFmwEakKUkEDwbUShTuB2HooaLm0PqRoI7BBz65Mn4Kc0FFFSB4Ks94x3SL3P85z+7sfDQt2WYxsRcuHt/dRQ4a3R67BvlYpdqCBFdg6DW6izCDNmtETRMEtiRuocBqn92p4qVLJ5SwJIB0G6z+0aW2FhBE4PQcyUyI1N0BBsWaH305bGlFLIVteIAVEMiGJBnsuCmBrGw+YkOCJEPlmE3A0brEGOqO26IEjCBbYyxQI17tIkMpKxH0Vh4weVMEi6oDg6KBGmygLVQAHhRpCmdTvcQzHbqVgfL/25oyOe+9QpM87teAOe0xUF4K02ferTlwV5tQB6nBKxbhHyPfhTGcoRl1TtUHH9TL0dmRYNEewCt71PzpWZIfMBStM5JghCjg1hRHoVlNKSFnVhP6g0rkZm4/TspDrFVSt86I3W60JuGTSEriuQ8hGmxsYQT5c6XtnuzyNGJIbDfPA5NuQW' $BG_Image &= 'IZ/pxMJhRRDzwbMJUU3VVLo7K1qZth5zXSlT37/HZ41ep64lyLSqOrWcE6+FCGniSJ03oM4OCtYi5GT6Jh4iteV8K0UmbwazgpUeBsWJFbzo0Q8XhfQapGOK+BjjkfVNkI8kyFFOnWVnx11BTIhfdmZRlUk7Kbm1yPCmZgyIC913gnAYExA6I28XteuYU1heOmPrtohQBUrColbOyUzEDbgzJKtQRGmtJVfd2ovl7dWxIoTTuMFT2YK9LuS4VfpnxtEdETCUuFlA38qEkOT0atPlXtS+wzJrBN97F+lc71CgEHtxYV+ogCFUVPtZjRiyKDF6EUQNpHlDCOLTb5FCb/mUZKxMCDnMkb8avXvlYb3OXydCbo1+LPXQTMXtpQnRWlnXngjCsCRskMT8hB9viIERzzxgbEie6ao8F/T2qyR2WYTbfkjwlfbCqU4jIGWPdQaKVUgf01gfC/Rn92qL5VOSeuPmDTOCmyAfOBkEI69X1atUJ9DEGJosQiD1I4p84BbXw9adNGNpdF3vVBtFmPf3WONe6K4rZG40CKgzyBZmCGI7ZnAhnk+lFcovoUKgGJO06JEBbH0cHpO+/Y4NeZ77xn2sSr/j6LYgpJYJScp3YHbQ57i6qPLFCo8Q70FuVkS3MimTVJIYK4/nwCxDmLAjB5yaOHSuAfjQkenJzGrr85R1hCsmiK5NCFiEMAPWYQVyPPNycfpLevRjeXr7Ikz4oSLkjqM/gFgQltbX/cSPNP7xa5VKwVxBKTH4wdAgN2ELglxKljOh1Ipe5BClHjWDzVgwq5x7ckwmEt+ZSNXYnrLSHkh6tiTVJWyPIMV6PH1wronTst77mhj9LbMK744mB7AV7V2qkKj0VRlCP+XHiViVsMMohCvFdw1SNEE2CogePmAylIw88kaKChMrJJkw/ORZJb7nW92w0dhtR+LjlwTBGslLTan7M+m8bqxoijgIYlwpdFuQn49U6bcTa9JafTzn8xpiVbLetx45' $BG_Image &= 'flglv8bFVNuBc3OPg0TUz4Bc6RQ1QWUOVHj7C6wjQhAByghcGxMRPckncUjNWfKJlxqkKsOserWQ6ziyHq84yOPvyhLEG6yYj4uExZsgn6fRj+SHpP5pEDimHDUiyCYjL4Vd8T2pYgJOXiwnARaKCl+CXO6sOee9g+ZVrx8DmV3YyBrwyyW5IUQk+9Mn4VqEWKULrivZ8OjDw6CTy+tFJPrJgnyoSr8ng0QX9Bb5Y12oECWgvolzeUmleVxysHzMeAQTZEXb/RtlHiaU7coAWeWxIOuQxERYGbwIY0wRoiEpba1DEGsSQdcapJxNqRnJs029PY50OAlBoj/6bEI+MqH3dmIdzjTJHouR6EHa4fjMzJmRF6GMyFijHM0I1QTSGSuSMivOkxR83vQMLtJMcm1mxIKgQaKLTKdRIVsukNw8tsrhKQnNaxUCB9PzuDaG9GPmsSVd8fg9TviZUxDurqP7l5r+OXPE9FCa5HCZjqk0lDBxwn3XtAcP9y1Wd6b3S8OI5PkGYQH8eQi5dp70PiPBRJhjd5xavdmSveP7eqGBX/ZYUf5St55PdVxZx9GP7m2M52Pz9F5S5CbIp2n0nwNYlSBthiQOcuHpVZkTKJEJZ6BKnFhhvLSo8UVRCRSKWiJgPft8Lh+wsrdiDvDRV6dSKSgIPRoZDkqIGgVCq3UMJExi1bMlV60D9StDJt9xm5gus+TRDx+XC8utfy4aWH9oLP2eDIID0AqDgFoinXWGUhti7bHIIQ5fSEKUtFskOFySZlsq7qEMV2gwxqP2idLcaWIwi9iloFPX7sMwIsJ98SbjETqYcvVLekSCRN6/CZEYkN5KQvrCenxi2e2NnzixBCJltFciZCrvNA2tpVoMSW8GIuSoqRmpKIwqBd1y8EH9FlBM9H1dEwwxCuLcu1Tro9Mpk4PrWuaEIDMEq9GVokSez5iQC4aQaT4nm4/J6D28r5oaw+HGM+yICfH5HhPyYRr95zhq2Y0MQGCp' $BG_Image &= 'eGlAxrioaB7FKSVuApyzKO11Tinxtq5OahYhYt6hkpw1sfp8SLrJa4e//j0JvASbMR/uBdSJsCP7JailZ2S3y6euI4UAT02GUjt1eBybm7wfj55AoU9hSShyl91+mEb/OVY+uESgxGHIlQjJGITyj3xpgIqnl+uoOduU2BAZ7bBhKyaGu/LOOozjrv3XEqANhiAYiYW0HP72LTI7L0LvMt0nB1cGQTxq/Ta+bZVMHX8Pf/nhypCHBYitSJCikA9U6bdGr8hWRoJcb7K0ebHyQ1E0pFmL1EaOEsEE37eUkdbABItLeLCtwKT2JsCeAaDxMolor8KWXZ2LBP1GguqZ8ty4jJCG1Op9qLRxvPIU27mKI0HcbfEbSkLuHdZ//4Br1z5f0Qx+PiFT060/aoT51tC6hmDrY7Crak0tbxJ8M688lMrJXNuTHi9zToYameYJQiIwOSbYZnwKBiECgJ1SihiRoCsDsjM2dmc1beiHT89dpD9PUXSfwpGbIB8VRwfK+3YRVuhpM3pGOrwrVYXJ813mR4l7wEQb7AksUiIgy6BQcyJzg+BFNvwbi9KpHaB255XlCGS1rrRq3NpESC3t5SEtXVoQJt7iYw9CkWebHJkydYFQ5rjdWJ+D//o5DrzACTKz/BsEafMcqoQlDhdqswMR18MAnrtBUItNUeAopSOjDdGbOFGQfwYbiFiLZsyHCRPz8lrVutNtqbLVqbOCKK6SwpDudci4qZiPx/pJskko4dNaHXeyyUdpdBwEqKZEzaGuHb0yM1gxIGTJNgRbB9Kr3dKSNaxAAzKPCYVt25WNVU5GKDP2AgEhavFE8GJ7gAj2Xg7pecIr3wSViH0IZYQhI0B8+N1+fNi89FujmyAQmxa/U0lexmVZYWlzZ8F3RVaZCYianvaKqlJE+oLfUphUiZBX+ZIhgg958r33z4Q7SLSiRQTJHJgIYVIWORfybxtq2YKcsXdXDJciQ15YqVieb7si6X1dFHI8bz/v' $BG_Image &= 'JxWDFIhC8zBDKBq6JoiJMbMLqdIyI/EtOTiiU+8GStwb354FN63nC5EaaUPXo+nzsEKr2ARhUYHoVrPTpbfNkm7lORRKaXgixTFVZxFiyiP96U7tfwxP8jz+kmM4Enqco4Wf5ca68efnAA6KKxFLSluT6z0Ws9cauhjKanEsvX6Q6GMK0pWjYWYK60Eh2yujFFBZlARy/FfEHKUtVVGdriZwHH3nlCS4F5BMIamuQBn9Potnea5Om6w+TT8IN7K8CfJJTiyWFfqRrp7pPXpFkH2ajjaGFEr+USpwJfIUWVESe/e+jEMh+mYUf/R77a4thjFEpkcrNEGhuzE5V2gDhuyyQy/zEZK43EOX0R8Fe5Gu4WqQMCQaPSmLEek53m6sjyHIATd2P5pNCem4W5cqPZFCG4/Flkh20N9fJmQomQgJwW3iIQypsNLvCAq9zA1/dNgUm1IJ+6WXu9qLZTEynlBo9bpnNkjmSEOttH6/rIOhxiksJZye7g3PDj38Ssr7CR/YoPcuBqFDa82DVAYNXg9GphmSOTrLJTwpvic31m6RitLGjxadzVWp8tgn7iCGJpzZwEQOUSK4An9yUF1tUsREJBromzYh2tPiG53cLPE6lE4ZNh4RIhkKbduRs7PfzxLdvz93658P0ugHAIrdb3ui0OMdrJgW5YIlv5MPeAvvMTeszRnhXvRFxcyEUuGGacNcnsKJKBA6B0LWCzOYrVsxFW1i2PSYjWZKE79qELJqL806V4Z0L2JYkLwUevgRknzkqMJ7MohlLfs4KCqx8N8Yoqp9dnLiIT6LIjaGbJ/oD/QbMQy1LgrkViaYh97jhkqgvsIYFAhQocgYBxsSRX57e6WNJGgnEQhq+T1Iuuy6Ssb2qecQA5JNVkbdJl540umfRZAbD8fRmyQ7X0iaAkFAMVm8s+EyTVIukhh4FIiKopwlb0LMgX4j9zJJfY8dokIWKNQZHqJMi1YIAnGshxoOgiS6B2GEu7iNKmzi' $BG_Image &= '10BIrKN6Z8jTq63g9vFs5ywuExJivB+P28/7QeNt0yXBYZCK8L62IEkwkUZ1lFaYUL5bWFunzL+x74oT/6iaWP2pzWiFnuPl2iIg5DZgIWF4UAHFvfGP1CbOTLeFZHXuI4FmCtczL+TMkERFY0A6+e7pGfT0SJ2M9nQ+b+pCTky5CfI51VLLqTOJfUJsyC8mZBtRlqi6yVEqKCrE6GlhXdTix6hwmETY92FCWEPMu8nkkrQf/O8GPYRBD0lavmipzQxbFchHgQ1N2N3ska7TB0gF5wYnliBu3uCp0Isdz6tQ+vFB+by3E4sAxy0qZS5OXRNkLIZqMUjUlu6eVie7jjC4EyT2QUgoJFF3yijfLxuNaBC/9SusLhRWADJTlner2wei0eERjDYZr3XXbkEybmTBocJVlm6C/HkcI9SDGJDbz/tBXUeT7sq99umaH2mMFcsxZCLLLIkP1ncWSiR3gqxDvbVmyH1qzlQa0qVQUVq2BmHfRpCxEw3EhZV91CSsj/JotIReZSTXW6zERhU7pWU9vFzl6A+rdTPkiAE5UcMzo28/76c4sZgoNGdnZfyiQWxCVruGcMKLaNlMS3/7ppthpIJS9LfpQWzREx+ynEWZRyR2j3D6tsPwd32f6Skpk3AnjOg92J7LJZFXcZB9j7X3LlWC6f1cue6e/Hz8OazTk4cVV9YHtXi/M7FgEGDkR0zIFZjfzGozZ1Dzd1taYcT3EIQhRwgwij5UYEwM9u0YtRYonWB6QI6Px4S0MNmKshFZDEr1B9JDbnilupo+55eMXi1RtPEj9YVjQDy38FKD/Ln9vB/jxBrzIQD/nz2WSowCSeUUYfmepCsmdz0kUDRIkOySHEytvfg8j/n93dNL1kmkR4RQLTXWDkrecDW8hqBeT0R6AGZLmLxD9tPFfMDWIwhLzJHlw7puYv1R3RVvJ9YPlGpCmwAffzMgTDWIalxTJkWBJGsPqE9Ab/NiKbJ97kkp/cgXkdMLCwm5' $BG_Image &= 'x188TFFw8mJBPflXkIStobvfMEu6TRjQ8kT2bl1KEJr9MSDOx4ozy9o8QqRf/EjZ1K5AvDg+iCB3W96kuFKALUBigFfwbiiDEKTK09EvqQiBz1S0r4oaMJYjBiN2ZA+HCFJAIj3k1NrRLcXn0FgsiGKY0ii02nzAOggaukisC1AMQ4S9dipIl3erkOXo7VlFgfhw+3k/pJwQgHqq7Bj5wN9Vurg1xDJjXpdigbVsiWpr9m7NMH9uQNx6jYKWIPCnjyVJ4opZZAnNvCUFoRuEvX81ItynHbDQFiiabHcnainjdXTtxIrVEpKteCq9dbJiOxJy7t5g++EwyU2Qz8A/WKBgfhD8dyKdpfKbjPCo9WNWEIQDI5xAR7rGSa3skcCiwFpWhoYv/UAlW7G2asftbyScJUg7TJ7adNsLH0wRG4yYDiiJKo7gXFWlhx5L1AiSWicLsuBs96t0rDEidyDkE/AnQXRBgFg0TINrLDqUfFQlfEjWMh1Qgs8hyJ7tnrIsmBhSLWtSp1IRFZTdmmrX835P2rdavfZWgXW6t1XdouMidu+mBnf39FK8GB30HkyHP2ST6s/xYrku/WluHE5bNDOSqnh8UKTw9vJyqrSn7ai/5Y6K/zsTYhokv1fTyJqU78RWzMfx1J69fJkseRMkSb+SP+zU+WS7WOhtMe3jOhurFQ7ZG50kPcu3U5AoXVjOGNQ3DaJO+dSWjOVoyEaQswH5X6IcN0E+ZLZU0r4FWhiMNCjVb+DKAPeiSMnqO7yIq9e39jhh+k5b9m5SPOOkNdf7HGmGVL6x903ZEfUhKOUggq3EXlSodYN+RzB+LZiSuZxtXLrOPXN+73DSx0UgJIubIB8xIP3nzYMlBiL1qwhhck2iOpjNl0qMFYmkToqTBqAYqJLkaAIxv3wPpNfWTC4kkgLEh0UoMj2SvX02U+Z22vkKuoyk/8VGxvSMb/lkfmzkMDWeFwbE57t33Kd4eTc3bwb7M5uo35BsRcv0' $BG_Image &= 'iBBuZYbzXpI0KhrEaqLEhN8lG5e0rDM9SMy4kPKLMSQhBrWjG7EiNhs9VoNQw6SIAOHku7MFkC3x2mg6x3/Q7W1a0t9Tn57Kwteowr+XYUcOH9I77vbyCockUngrlaUohzouIZ9GqFMsk4rzZ8kueQuCmyCQTBILFFm5bP86SggFqIASwUUjeinlMLCdWIzHZIYATNouAXoV74TFOwGEyjto+yeBQrK+0oc0MEcefxu+x4mVeOEu1f/cBPkULy+FfPuU7VWqza9AJZN3OXjycNqRUtwgMRaEWsAU7b5+pxgq+y2zoSDDFN40v/xzhu3H7KUa3blU6m7hd0OSBsbw2FwFgWwxFU9AD0WCVS71ysNyScjftXGmyE2QT8CfAwelRlq2zSznRYJrUHsDB9VsroZUZF6UmRINksbvlCzIx/KIomJYahfgOzem/U5kidGndHcnmQwvWlpaPGID4/ACO2Rp6DrVxGdq0E3vsl7rdxvyePylh03IyX7kdBPkU5xYB6XE7kanj8T4NZ9Xfu0VuKXKZJ0JqW+QuGW711BnwihzK8oiO6jcmFcl2B/ibFiSYlV6TOC8G/Cr1SaJS9UJjRDhMj0Xfl7tRVOGsyDhs5TuPy/n1ULcvUE2WHc676cQZO0tOsMHSiRKiRRegZHppCYTy+QaymjSxP1Z52ReijJnhhil6Jb4qfaUeGQVwkSnQAMKhJH+WMvZq0lNbABc1BCB+RNJk9B8ZUNoIgftiqvT0Nulzp23OD8XBuQmyGd0VcQhqPfhNatViP6lG8vJV5l8m5wT/xHTw0HFyscOQXy59dztVu1TRcRYjyj3zBlpC+rhQ47IzMJ1hRYITFlUytFbkvWJuI8MGbVyPZ3RADVI/YiksGNef+H+Jn2Rz/tB+e63lxcUlK7sVIrL9esWK1sr8yTWZJkSVYYiYJRICJKJhinMc6URqFgW7vobeZ4yQiFRF8hXXRkbova2Sr3kutB+MS2uDV7HQTQ2RBQU' $BG_Image &= 'xbNaN6Z3g4YmLpwyIkL2VKzPqJi6vbxYwY/G3gQRIpPN+7tK3xS5Mh2EjN/XCEMqBFHQkT9lta4Qg7Nkwh5zkbcvgbQUJSEM5IAI1ELkgxPRksNLAF3S9WStMY2JgkB6ryuUbYfLb21GLgrTP2fS7U2QRh1sQkamDubb/xvMitmY+1kTIbVTsTMJkmQENKkW1YkZMl6qrMwXhiI1hxAmAuU3gJBIYA+vA6S/yyrE3QVnnJBoiRc1tz7siS1AZo5oTEgyTuznfR7ZY0Wg24R8CkFuL2+S+DL8v0YJ/Ot0RcsOkjI/FErYqsQZBguT4ZsgbH2g88XPlHVKSD26DdPwQ2Gygn97CaHDD9sWtcalhV5vN2eHFY2+I4YylgxGAybGwnMaADlC6N9gU+p367jPmG8b7/+WCJgAx682RMw8z4zUYSkSZOOKuSMyjUc5Ul0t+4pPW6q0b/CtdTGv08roK3r0EERxxwLwZW9teom3QAjF3yejiArzGlI2b8+OBLFCn9x357cHY0FugnyAl/c4juX+3ChCi2uZIlfIlMJMi5avTIgJHKowdIkBgVKarm4NOWJU+N42LkSZV2TKNfpKkyQncUqjmD5yyHecbZZQFK9DheR0b5C55T/tlZOVXosZfrByTXY3b1T6TZAPcGIlgrxkCAc2B//azbuZicWAUpouqsIVcCX4JtNEqZuqzD8IDXYdUhxzQ5w0Oq+JkSvkFl6Ie0utWsVTWPxJLgoBWEP9QpC9TmXp+0UP9SBerKXS+xmCxIB8CEFuJ9bBRubGSNOAmuFKXSMVh/6KVwbZlkabgKFa+V0mkM4kyF4MK9wk+1Lam4fLi8QGr9Fv5xEKtiTt4CGqW8IMaiO7JU1KM3nJD1NkCJr2W4T2YLqPRozIyYx8BkFughyWpRCaEn2Rlj22DdfgeD5T85QmDsqOatR7biRQWIOdG6fcEZ7akELXuLYgympreqVWTMZssFYMRJ04yKXhTG1Ymaacj/Qf' $BG_Image &= 'p8QwFuRFkotcrPzeBPkIJ1ZzZbAikeLaEtivEepwrWdA+lCm9g7XFr2nCYV1HjZlrlQ4osouy4Q9+YHFyfBF0s99uGoEZEK0GpyeWHIoXalBtFxvScXfmhIbJrCVPrhydaZsSpbpV8Zj32TdBPmM+bagJCWETEqKU1b1K1jaq6qUJg5E5n4wRkji1ty9W1cgU2ArI0tCFy19w5SFXq9U+nkJwKfp817J5rU8MV0kFASqxEt2iF6JpNkk+O9sRQzZeKwWWUf6m7zhJsintB3lXoqtqSSf8+Rb/dpf8dTsx5SRtXmtj9LIjvBDfeZFVhmTY57GsuSQ9RmZYI40rZ5lYuXomV/YoIAIeAiyHRB0rdLTumEGsdO0SCvszg7LIsShQo9AiBkJboJ8SscGNaSxJFwQY0WuYVduTIgiYe3nGevhZVHpAZFMjYDCLEQHQUCvZhdlLOLw3BboLDtSa7sPhPa99DRpJNUdABEhv1of6TeCqBZD6D+LERqzpU2n9zHxwpiRDxLpt5f3BzgkKf2gtHUiUf1OkaiP3YCEXeXjMkQatixkIzTO25NF6FSwx4iEPu8xkd8xcQm1OgRAjEi30CPaiZgRqQmoyF+NJlerO4CM8THnZncns+NlPzo93j9xi3Xn8v7MmBmk3W2UgxzF+A0qJSaYvmo+mWE+ixmDW4akjSGkTuh4syCh/FTowVgW5RC0lO99L2mhzHawDBekuHR9A8Bb+julX/6HYKc2KsW5tlFpjb3B5SDu0Ds4bD4+yYLcubzQfH2yeaGKir64xp54ZYoYqowOZCBV2EYZPfxgSLJXgWjMR5LdQ5O8vZ44A5nuDK0XYUI0ZMviR1qxKwLVwuzgfvPxklUg/DKpIKTAMCJklab/rUnvMOQzLchNENmApCCEA8WR9duYkIQ9itlZ+RK5kQbWZSiIkze1IJjG12POLtTGIs3vgNmQabbCgjSFtxbjU4+7EDH/e98fG0IAtfTL2CEXLb6Xp3va' $BG_Image &= '7Ro4dYxKjwq5kxU/oS/vcSi7jHQwNJYC/wW7AQkVNmKRkR5T68E9DBJCpPlV5HixIPoiY6BDkbh2O2nwg5YxRYRTfS7QlDAhlPwaIEd50Si06hreS6JYAJlB0ukEkQZc0x3r8MDbEeobOz4lm/ceLnX4GyQQSirvCGz9rkFmF+YXyWKoolgTMEGV7NaUBokOpewB8306znJlpWXchBELixTxadGnAHQKCZNN0pmh1UoW77oOgxxTXx/5Wy9JUNNqj/4zQv7R6gP8TDDdm6wkY234DAtye3kPQHsgxD9mSjqVXIHk3qJ3ESVFVGdI+STqDcTenmFO9MvveL0DegPfGYKuZSsyhlD+8rf5sbWqbiGlT+PkEnVtM20ILUJG+E9herZwS4Xo2R4U8teK9HlIyIc0bbgL0n+A6HRqhtcwPW7qVyz7MrnuoZNIryNJwrdYkHRdVMgQiky5lheiQL7RghHqq71C1EwACmhqJngkXarXuiVbFft7IShRki5JdQ2K3mCBtPVw0jyBxCC3Bg7Hq8eiJxX2/zUgd0XhB6QqopFNRrQAJarSwucKSkKW1qHemaHU31Z2WXt6YjRFNkpzeMG3t2cUJuVvxbk/zxsJe7Raa5bUNOYVUv4HGxf0sjSYhu+6yvNnZs6hCNQyIDFFmEr3FU+3BVkavV1b+M6Q24J8AEEO9AS6AAY2ByPUL8EMJax9HtsiFkpYs0IUrbKghT1v90QCTAgl3/88sruGUx0cVocgUqdFdQaBDDkmQKhOyaE2qa3LSGE65AlVJmAhHNlcYA2ozbrj+fdnBrGdc03uzoofMCH9wAIxu5NCaZuAfg0m24TKd6cYpC2KkJhKNIjChSmbYq59IFI5KBuhyXfcnyyUny5tHUmXLpAjFLYgktLQREIK0s0dtWaLJEIpXTmBy3ICLABNcs9ToUVN6gr33iad9oobboJ8QEH6EQUCKgVTqPh59bsXi4kSKhRRWDIjBLEW+aST5i7una+o' $BG_Image &= 'ikL3TwxMykzSXS5gusptiTOZtDnTCdXp9SbfNTm835JfQkuXqVgxk1he3tev/ErK/PtIz+N4WoOc+PEx3d3vtqOAEmwmSUjeXSVt5HcbklEg2UnFv5s5tBWNvicr7vLcd/INj3wXCTvAxMxmsOUo2zlTJ3IleSqNbk40EEtv+Hp2XBiz0sk74forGyhdy64yPyLS2UAEvm3UKJHn4RCh54X0Fib8EAtyD5c66K0zCRQ46R3QVuFRvyDiPK1MVIkRIj3d5cjanq4Y5THYcxMpMYTxFk0llZWNqSaDOUg1ViT3WkEuV+Rwgu29Lld0fUXVaZF+BZX3jMUYOTSghF40cZVkLL5keqjx/CgNcnt5D6IlDERNbqFU/vkVe8WtTUjJIp0LykI0mQwFe/+SBP4Sd4dKog95OE/ThBKvO2V1jt0+ucl7ooMuuhXgg6Ru0BfXDEk+5m6y0g5mEiS1NbF295+0WPw4DXI7sWg/b+ZpiBnkn0zd35DQoJ/NMJ2dHpb7KaIypDNDsOT10Mnhhmh0FaZGXms1lgeSiOv8LMsM241ZqregSGccW/vevKT6BSwsgpCrfaktL6aOFxk69aLH30ihBYjnsWWT9fFz0r8f/xyW6B16SAQnZlcZGHWF8IclDrwq7XeUDN8QJDgFQNJqlBddrBP7QOUG68oOqXVeeNlA+wAL91SrOx+lHCm8FOl7x8hSDMjU8w///NlOcDlcFPI0Tk7enw+Ycnt3bDiAhqLSlTicRP4yQSdIP9G0aIg6F3cUlfr2ECSdGkzIOKZ8WKRALIPfwXob3srtbd5/R4yJkJJcYNroCoZaMzZ60fxagqQY+W0c9GR3yb/bSM8XQ3pxZMcHEOTuqmgLgsH6KmLLWv+dH2UGlbXKOf6xQ36dvViR5bk1titMLZVUqBS1nwavS6cYOjdGBAG0vFqSQ3nx4M1oXNaI7qvWimm0Gr9bK/EjiNNGroWMm3IkxMgu69sI8j/twS5+biz0fwAA' $BG_Image &= 'AABJRU5ErkJggg==' Local $bString = _WinAPI_Base64Decode($BG_Image) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\Neo_Matrix_800x500_cut_32c.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_BG_Image You need The Matrix Sound.au3 which is in the Zip archive (see below) to run the code properly! Download: The Matrix v1.31 (incl. sound), without sound The Matrix v1.30 Can you decipher the code?
-
Here a first draft for creating barcodes using the Zint.dll. Mor information about Zint can be found here: https://zint.org.uk 32-bit only! Zint, libzint and Zint Barcode Studio are Copyright © 2022 Robin Stuart. All historical versions are distributed under the GNU General Public License version 3 or later. Version 2.5 (and later) is released under a dual license: the encoding library is released under the BSD license whereas the GUI, Zint Barcode Studio, is released under the GNU General Public License version 3 or later. Zint.au3 ;Coded by UEZ ;v0.50 build 2022-07-04 beta ;32 bit (x86) only! ;IMPORTANT: You are not allowed to sell this code or just parts of it in a commercial project or modify it and distribute it with a different name! ; Distributing copies of the program in compiled format (exe) must be free of any fee! #include-once #include "ZintDll.au3" Global $g__ZintDLL = @ScriptDir & "\Zint.dll" #Region Constances Const $BARCODE_CODE11 = 1 ; Code 11 Const $BARCODE_C25STANDARD = 2 ; 2 of 5 Standard (Matrix) Const $BARCODE_C25MATRIX = 2 ; Legacy Const $BARCODE_C25INTER = 3 ; 2 of 5 Interleaved Const $BARCODE_C25IATA = 4 ; 2 of 5 IATA Const $BARCODE_C25LOGIC = 6 ; 2 of 5 Data Logic Const $BARCODE_C25IND = 7 ; 2 of 5 Industrial Const $BARCODE_CODE39 = 8 ; Code 39 Const $BARCODE_EXCODE39 = 9 ; Extended Code 39 Const $BARCODE_EANX = 13 ; EAN (European Article Number) Const $BARCODE_EANX_CHK = 14 ; EAN + Check Digit Const $BARCODE_GS1_128 = 16 ; GS1-128 Const $BARCODE_EAN128 = 16 ; Legacy Const $BARCODE_CODABAR = 18 ; Codabar Const $BARCODE_CODE128 = 20 ; Code 128 Const $BARCODE_DPLEIT = 21 ; Deutsche Post Leitcode Const $BARCODE_DPIDENT = 22 ; Deutsche Post Identcode Const $BARCODE_CODE16K = 23 ; Code 16k Const $BARCODE_CODE49 = 24 ; Code 49 Const $BARCODE_CODE93 = 25 ; Code 93 Const $BARCODE_FLAT = 28 ; Flattermarken Const $BARCODE_DBAR_OMN = 29 ; GS1 DataBar Omnidirectional Const $BARCODE_RSS14 = 29 ; Legacy Const $BARCODE_DBAR_LTD = 30 ; GS1 DataBar Limited Const $BARCODE_RSS_LTD = 30 ; Legacy Const $BARCODE_DBAR_EXP = 31 ; GS1 DataBar Expanded Const $BARCODE_RSS_EXP = 31 ; Legacy Const $BARCODE_TELEPEN = 32 ; Telepen Alpha Const $BARCODE_UPCA = 34 ; UPC-A Const $BARCODE_UPCA_CHK = 35 ; UPC-A + Check Digit Const $BARCODE_UPCE = 37 ; UPC-E Const $BARCODE_UPCE_CHK = 38 ; UPC-E + Check Digit Const $BARCODE_POSTNET = 40 ; USPS (U.S. Postal Service) POSTNET Const $BARCODE_MSI_PLESSEY = 47 ; MSI Plessey Const $BARCODE_FIM = 49 ; Facing Identification Mark Const $BARCODE_LOGMARS = 50 ; LOGMARS Const $BARCODE_PHARMA = 51 ; Pharmacode One-Track Const $BARCODE_PZN = 52 ; Pharmazentralnummer Const $BARCODE_PHARMA_TWO = 53 ; Pharmacode Two-Track Const $BARCODE_PDF417 = 55 ; PDF417 Const $BARCODE_PDF417COMP = 56 ; Compact PDF417 (Truncated PDF417) Const $BARCODE_PDF417TRUNC = 56 ; Legacy Const $BARCODE_MAXICODE = 57 ; MaxiCode Const $BARCODE_QRCODE = 58 ; QR Code Const $BARCODE_CODE128B = 60 ; Code 128 (Subset B) Const $BARCODE_AUSPOST = 63 ; Australia Post Standard Customer Const $BARCODE_AUSREPLY = 66 ; Australia Post Reply Paid Const $BARCODE_AUSROUTE = 67 ; Australia Post Routing Const $BARCODE_AUSREDIRECT = 68 ; Australia Post Redirection Const $BARCODE_ISBNX = 69 ; ISBN Const $BARCODE_RM4SCC = 70 ; Royal Mail 4 State Const $BARCODE_DATAMATRIX = 71 ; Data Matrix (ECC200) Const $BARCODE_EAN14 = 72 ; EAN-14 Const $BARCODE_VIN = 73 ; Vehicle Identification Number Const $BARCODE_CODABLOCKF = 74 ; Codablock-F Const $BARCODE_NVE18 = 75 ; NVE-18 (SSCC-18) Const $BARCODE_JAPANPOST = 76 ; Japanese Postal Code Const $BARCODE_KOREAPOST = 77 ; Korea Post Const $BARCODE_DBAR_STK = 79 ; GS1 DataBar Stacked Const $BARCODE_RSS14STACK = 79 ; Legacy Const $BARCODE_DBAR_OMNSTK = 80 ; GS1 DataBar Stacked Omnidirectional Const $BARCODE_RSS14STACK_OMNI = 80 ; Legacy Const $BARCODE_DBAR_EXPSTK = 81 ; GS1 DataBar Expanded Stacked Const $BARCODE_RSS_EXPSTACK = 81 ; Legacy Const $BARCODE_PLANET = 82 ; USPS PLANET Const $BARCODE_MICROPDF417 = 84 ; MicroPDF417 Const $BARCODE_USPS_IMAIL = 85 ; USPS Intelligent Mail (OneCode) Const $BARCODE_ONECODE = 85 ; Legacy Const $BARCODE_PLESSEY = 86 ; UK Plessey ; Tbarcode 8 codes Const $BARCODE_TELEPEN_NUM = 87 ; Telepen Numeric Const $BARCODE_ITF14 = 89 ; ITF-14 Const $BARCODE_KIX = 90 ; Dutch Post KIX Code Const $BARCODE_AZTEC = 92 ; Aztec Code Const $BARCODE_DAFT = 93 ; DAFT Code Const $BARCODE_DPD = 96 ; DPD Code Const $BARCODE_MICROQR = 97 ; Micro QR Code ; Tbarcode 9 codes Const $BARCODE_HIBC_128 = 98 ; HIBC (Health Industry $BARCODE) Code 128 Const $BARCODE_HIBC_39 = 99 ; HIBC Code 39 Const $BARCODE_HIBC_DM = 102 ; HIBC Data Matrix Const $BARCODE_HIBC_QR = 104 ; HIBC QR Code Const $BARCODE_HIBC_PDF = 106 ; HIBC PDF417 Const $BARCODE_HIBC_MICPDF = 108 ; HIBC MicroPDF417 Const $BARCODE_HIBC_BLOCKF = 110 ; HIBC Codablock-F Const $BARCODE_HIBC_AZTEC = 112 ; HIBC Aztec Code ; Tbarcode 10 codes Const $BARCODE_DOTCODE = 115 ; DotCode Const $BARCODE_HANXIN = 116 ; Han Xin (Chinese Sensible) Code ; Tbarcode 11 codes Const $BARCODE_MAILMARK = 121 ; Royal Mail 4-state Mailmark ; $ZINT specific Const $BARCODE_AZRUNE = 128 ; Aztec Runes Const $BARCODE_CODE32 = 129 ; Code 32 Const $BARCODE_EANX_CC = 130 ; EAN Composite Const $BARCODE_GS1_128_CC = 131 ; GS1-128 Composite Const $BARCODE_EAN128_CC = 131 ; Legacy Const $BARCODE_DBAR_OMN_CC = 132 ; GS1 DataBar Omnidirectional Composite Const $BARCODE_RSS14_CC = 132 ; Legacy Const $BARCODE_DBAR_LTD_CC = 133 ; GS1 DataBar Limited Composite Const $BARCODE_RSS_LTD_CC = 133 ; Legacy Const $BARCODE_DBAR_EXP_CC = 134 ; GS1 DataBar Expanded Composite Const $BARCODE_RSS_EXP_CC = 134 ; Legacy Const $BARCODE_UPCA_CC = 135 ; UPC-A Composite Const $BARCODE_UPCE_CC = 136 ; UPC-E Composite Const $BARCODE_DBAR_STK_CC = 137 ; GS1 DataBar Stacked Composite Const $BARCODE_RSS14STACK_CC = 137 ; Legacy Const $BARCODE_DBAR_OMNSTK_CC = 138 ; GS1 DataBar Stacked Omnidirectional Composite Const $BARCODE_RSS14_OMNI_CC = 138 ; Legacy Const $BARCODE_DBAR_EXPSTK_CC = 139 ; GS1 DataBar Expanded Stacked Composite Const $BARCODE_RSS_EXPSTACK_CC = 139 ; Legacy Const $BARCODE_CHANNEL = 140 ; Channel Code Const $BARCODE_CODEONE = 141 ; Code One Const $BARCODE_GRIDMATRIX = 142 ; Grid Matrix Const $BARCODE_UPNQR = 143 ; UPNQR (Univerzalnega Placilnega Naloga QR) Const $BARCODE_ULTRA = 144 ; Ultracode Const $BARCODE_RMQR = 145 ; Rectangular Micro QR Code (rMQR) Const $BARCODE_LAST = 145 ; Max $BARCODE number marker, not $BARCODE ; Output options (`symbol->output_options`) Const $BARCODE_NO_ASCII = 0x0001 ; Legacy (no-op) Const $BARCODE_BIND = 0x0002 ; Boundary bars above & below the symbol and between stacked symbols Const $BARCODE_BOX = 0x0004 ; Box around symbol Const $BARCODE_STDOUT = 0x0008 ; Output to stdout Const $READER_INIT = 0x0010 ; Reader Initialisation (Programming) Const $SMALL_TEXT = 0x0020 ; Use smaller font Const $BOLD_TEXT = 0x0040 ; Use bold font Const $CMYK_COLOUR = 0x0080 ; CMYK colour space (Encapsulated PostScript and TIF) Const $BARCODE_DOTTY_MODE = 0x0100 ; Plot a matrix symbol using dots rather than squares Const $GS1_GS_SEPARATOR = 0x0200 ; Use GS instead of FNC1 as GS1 separator (Data Matrix) Const $OUT_BUFFER_INTERMEDIATE = 0x0400 ; Return ASCII values in bitmap buffer (OUT_BUFFER only) Const $BARCODE_QUIET_ZONES = 0x0800 ; Add compliant quiet zones (additional to any specified whitespace) ; Note: CODE16K, CODE49, CODABLOCKF, ITF14, EAN/UPC have default quiet zones Const $BARCODE_NO_QUIET_ZONES = 0x1000 ; Disable quiet zones, notably those with defaults as listed above Const $COMPLIANT_HEIGHT = 0x2000 ; Warn if height not compliant and use standard height (if any) as default ; Input data types (`symbol->input_mode`) Const $DATA_MODE = 0 ; Binary Const $UNICODE_MODE = 1 ; UTF-8 Const $GS1_MODE = 2 ; GS1 ; The following may be OR-ed with above Const $ESCAPE_MODE = 0x0008 ; Process escape sequences Const $GS1PARENS_MODE = 0x0010 ; Process parentheses as GS1 AI delimiters (instead of square brackets) Const $GS1NOCHECK_MODE = 0x0020 ; Do not check validity of GS1 data (except that printable ASCII only) Const $HEIGHTPERROW_MODE = 0x0040 ; Interpret `height` as per-row rather than as overall height Const $FAST_MODE = 0x0080 ; Use faster if less optimal encodation for symbologies that support it ; Note: only DATAMATRIX currently ; Data Matrix specific options (`symbol->option_3`) Const $DM_SQUARE = 100 ; Only consider square versions on automatic symbol size selection Const $DM_DMRE = 101 ; Consider DMRE versions on automatic symbol size selection ; QR, Han Xin, Grid Matrix specific options (`symbol->option_3`) Const $ZINT_FULL_MULTIBYTE = 200 ; Enable Kanji/Hanzi compression for Latin-1 & binary data ; Ultracode specific option (`symbol->option_3`) Const $ULTRA_COMPRESSION = 128 ; Enable Ultracode compression (experimental) ; Warning and error conditions (API return values) Const $ZINT_WARN_INVALID_OPTION = 2 ; Invalid option given but overridden by $ZINT Const $ZINT_WARN_USES_ECI = 3 ; Automatic ECI inserted by $ZINT Const $ZINT_WARN_NONCOMPLIANT = 4 ; Symbol created not compliant with standards Const $ZINT_ERROR = 5 ; Warn/error marker, not returned Const $ZINT_ERROR_TOO_LONG = 5 ; Input data wrong length Const $ZINT_ERROR_INVALID_DATA = 6 ; Input data incorrect Const $ZINT_ERROR_INVALID_CHECK = 7 ; Input check digit incorrect Const $ZINT_ERROR_INVALID_OPTION = 8 ; Incorrect option given Const $ZINT_ERROR_ENCODING_PROBLEM = 9 ; Internal error (should not happen) Const $ZINT_ERROR_FILE_ACCESS = 10 ; Error opening output file Const $ZINT_ERROR_MEMORY = 11 ; Memory allocation (malloc) failure Const $ZINT_ERROR_FILE_WRITE = 12 ; Error writing to output file Const $ZINT_ERROR_USES_ECI = 13 ; Error counterpart of warning if WARN_FAIL_ALL set (see below) Const $ZINT_ERROR_NONCOMPLIANT = 14 ; Error counterpart of warning if WARN_FAIL_ALL set ; Warning warn (`symbol->warn_level`) Const $WARN_DEFAULT = 0 ; Default behaviour Const $WARN_FAIL_ALL = 2 ; Treat warning as error ; Capability flags (ZBarcode_Cap() `cap_flag`) Const $ZINT_CAP_HRT = 0x0001 ; Prints Human Readable Text? Const $ZINT_CAP_STACKABLE = 0x0002 ; Is stackable? Const $ZINT_CAP_EXTENDABLE = 0x0004 ; Is extendable with add-on data? (Is EAN/UPC?) Const $ZINT_CAP_COMPOSITE = 0x0008 ; Can have composite data? Const $ZINT_CAP_ECI = 0x0010 ; Supports Extended Channel Interpretations? Const $ZINT_CAP_GS1 = 0x0020 ; Supports GS1 data? Const $ZINT_CAP_DOTTY = 0x0040 ; Can be output as dots? Const $ZINT_CAP_QUIET_ZONES = 0x0080 ; Has default quiet zones? Const $ZINT_CAP_FIXED_RATIO = 0x0100 ; Has fixed width-to-height (aspect) ratio? Const $ZINT_CAP_READER_INIT = 0x0200 ; Supports Reader Initialisation? Const $ZINT_CAP_FULL_MULTIBYTE = 0x0400 ; Supports full-multibyte option? Const $ZINT_CAP_MASK = 0x0800 ; Is mask selectable? Const $ZINT_CAP_STRUCTAPP = 0x1000 ; Supports Structured Append? Const $ZINT_CAP_COMPLIANT_HEIGHT = 0x2000 ; Has compliant height? ; The largest amount of data that can be encoded is 4350 4-byte UTF-8 chars in Han Xin Code Const $ZINT_MAX_DATA_LEN = 17400 ; Maximum number of segments allowed for (`seg_count`) Const $ZINT_MAX_SEG_COUNT = 256 #EndRegion Global Const $tag_zint_vector_rect = "struct;float x;float y;float height;float width;long colour;ptr next;endstruct" Global Const $tag_zint_vector_hexagon = "struct;float x;float y;float diameter;long rotation;ptr next;endstruct" Global Const $tag_zint_vector_string = "struct;float x;float y;float fsize;float width;long length;long rotation;long halign;ptr text;ptr next;endstruct" Global Const $tag_zint_vector_circlezint_vector_circle = "struct;float x;float y;float diameter;float width;long colour;ptr next;endstruct" Global Const $tag_zint_vector = "struct;float width;float heigth;ptr rectangles;ptr hexagons;ptr strings;ptr circles;endstruct" Global Const $tag_zint_seg = "struct;ptr source;long length;long eci;endstruct" Global Const $tag_zint_structapp = "struct;long index;long count;char id[32];endstruct" Global Const $tag_zint_symbol = "struct;long symbology;" & _ "float height;" & _ ;Symbol height, excluding fixed width-to-height symbols. "float scale;" & _ ;Scale factor for adjusting size of image. Default 1.0. "long whitespace_width;" & _ ;Horizontal whitespace width. Default 0. "long whitespace_height;" & _ ;Vertical whitespace height. Default 0. "long border_width;" & _ ;Border width. Default 0. "long output_options;" & _ ;Set various output file parameters. Default 0. "char fgcolour[10];" & _ ;Foreground (ink) colour as RGB/RGBA hexadecimal string. Must be 6 or 8 characters followed by a terminating NUL. Default is "000000". "char bgcolour[10];" & _ ;Background (paper) colour as RGB/RGBA hexadecimal string. Must be 6 or 8 characters followed by a terminating NUL. Default is "ffffff". "ptr fgcolor;" & _ ;Points to fgcolour allowing alternate spelling. "ptr bgcolor;" & _ ;Points to bgcolour allowing alternate spelling. "char outfile[256];" & _ ;Contains the name of the file to output a resulting barcode symbol to. Must end in .png, .gif, .bmp, .emf, .eps, .pcx, .svg, .tif or .txt followed by a terminating NUL. Default is "out.gif". Additional DLLs required if not GIF / BMP! "char primary[128];" & _ ;Primary message data for more complex symbols, with a terminating NUL. Default is "". "long option_1;" & _ ;Symbol specific options. Default is -1. "long option_2;" & _ ;Symbol specific options. Default 0. "long option_3;" & _ ;Symbol specific options. Default 0. "long show_hrt;" & _ ;Set to 0 to hide text. Default 1. "long fontsize;" & _ ; "long input_mode;" & _ ;Set encoding of input data. "long eci;" & _ ;Extended Channel Interpretation code. Default 0. "float dot_size;" & _ ;Diameter of dots used in dotty mode. Default is 4.0 / 5.0. "float guard_descent;" & _ ;Height of guard bar descent (EAN/UPC only). Default is 5.0. "long index;" & _ ; "long count;" & _ ; "char id[32];" & _ ; "long warn_level;" & _ ;Affects error/warning value returned by Zint API. "long debug;" & _ ; "char text[128];" & _ ;Human Readable Text, which usually consists of input data plus one more check digit. Uses UTF-8 formatting, with a terminating NUL. Default is "". "long rows;" & _ ;Number of rows used by the symbol (output only). "long width;" & _ ;Width of the generated symbol (output only). "ubyte encoded_data[28800];" & _;Representation of the encoded data (output only). "float row_height[200];" & _ ;Representation of the height of a row (output only). "char errtxt[100];" & _ ;Error message in the event that an error occurred, with a terminating NUL (output only). "ptr bitmap;" & _ ;Pointer to stored bitmap image (output only). "long bitmap_width;" & _ ;Width of stored bitmap image in pixels (output only). "long bitmap_height;" & _ ;Height of stored bitmap image in pixels (output only). "ptr alphamap;" & _ ;Pointer to array representing alpha channel or NULL if no alpha channel needed (output only). "ulong bitmap_byte_length;" & _ ;Size of BMP bitmap data (output only). "ptr vector;endstruct" ;Pointer to vector header containing pointers to vector elements (output only). Func ZBarcode_Create() If @AutoItX64 Then Return SetError(1, 0, 0) ;DLL is x86 only! If Not FileExists($g__ZintDLL) Then _Zint_dll(True) Local $hPtr = DllCall($g__ZintDLL, "ptr:cdecl", "ZBarcode_Create")[0] If $hPtr = 0 Then Return SetError(2, 0, 0) Return $hPtr EndFunc Func ZBarcode_Delete($pSymbol) If IsPtr($pSymbol) And $pSymbol <> 0 Then DllCall($g__ZintDLL, "none:cdecl", "ZBarcode_Delete", "ptr", $pSymbol) Return 1 EndIf Return SetError(1, 0, 0) EndFunc Func ZBarcode_Encode($pSymbol, $sInput) Local $iLength = StringLen($sInput), $tInput = DllStructCreate("struct;ubyte text[" & $iLength + 1 & "];endstruct") $tInput.text = $sInput Local $iResult = DllCall($g__ZintDLL, "long:cdecl", "ZBarcode_Encode", "ptr", $pSymbol, "struct*", $tInput, "long", $iLength + 1)[0] If $iResult Then Return SetError($iResult, 0, 0) Return 1 EndFunc Func ZBarcode_Buffer($pSymbol, $iAngle = 0) Local $iResult = DllCall($g__ZintDLL, "long:cdecl", "ZBarcode_Buffer", "ptr", $pSymbol, "long", $iAngle)[0] If $iResult Then Return SetError($iResult, 0, 0) Return 1 EndFunc Func ZBarcode_Buffer_Vector($pSymbol, $iAngle = 0) Local $iResult = DllCall($g__ZintDLL, "long:cdecl", "ZBarcode_Buffer_Vector", "ptr", $pSymbol, "long", $iAngle)[0] If $iResult Then Return SetError($iResult, 0, 0) Return 1 EndFunc Func ZBarcode_Encode_and_Buffer($pSymbol, $sInput, $iRotate = 0) Local $iLength = StringLen($sInput), $tInput = DllStructCreate("struct;ubyte text[" & $iLength + 1 & "];endstruct") $tInput.text = $sInput Local $iResult = DllCall($g__ZintDLL, "long:cdecl", "ZBarcode_Encode_and_Buffer", "ptr", $pSymbol, "struct*", $tInput, "long", $iLength + 1, "long", $iRotate)[0] If $iResult Then Return SetError($iResult, 0, 0) Return 1 EndFunc Func ZBarcode_Encode_and_Buffer_Vector($pSymbol, $sInput, $iRotate = 0) Local $iLength = StringLen($sInput), $tInput = DllStructCreate("struct;ubyte text[" & $iLength + 1 & "];endstruct") $tInput.text = $sInput Local $iResult = DllCall($g__ZintDLL, "long:cdecl", "ZBarcode_Encode_and_Buffer_Vector", "ptr", $pSymbol, "struct*", $tInput, "long", $iLength + 1, "long", $iRotate)[0] If $iResult Then Return SetError($iResult, 0, 0) Return 1 EndFunc Func ZBarcode_Encode_and_Print($pSymbol, $sInput, $iRotate = 0) Local $iLength = StringLen($sInput), $tInput = DllStructCreate("struct;ubyte text[" & $iLength + 1 & "];endstruct") $tInput.text = $sInput Local $iResult = DllCall($g__ZintDLL, "long:cdecl", "ZBarcode_Encode_and_Print", "ptr", $pSymbol, "struct*", $tInput, "long", $iLength + 1, "long", $iRotate)[0] If $iResult Then Return SetError($iResult, 0, 0) Return 1 EndFunc ZintDll.au3 ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Zint_dll($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Zint_dll $Zint_dll &= 'AOAIAE0AWpAAAwAAAASDBvD/DwCA6wAAgQbkQACvAG8ADh+6AA4AtAnNIbgBAEzNIVRoaXMgAHByb2dyYW0gAGNhbm5vdCBiAGUgcnVuIGluACBET1MgbW9kAmUuDQ0KJIYUHDC8T14oWnlrUAQGvpu3gg6g3hvxeQvoIJG3hg5AoCf4eXtoJJS3RKAOcN5r6CGzhBGft7U+EnlL6AAMUmljaI5xBm8AVQQAAMAUQABAfQqiKGZS4AAOIQsFAQYAAIALAVAGUAkAcYYOAAEBkB6CB2EhBqAzDgcAjvDtNAAgoCAY4CEOxUAIAggAWdEBsP8HIAA8qfEKsAgAECfo+fERAP0EQMnzCS50ZSd4dA5Ac/cKdA3xAwQIUCAAAGAucmQBYXRhAABZdVkAufcQgA4EgDcDQC5MUwEAH4kAEAcBoA4EDIBOAOwiV8b2RjAGAGCfcgsDAMPuQADoBELj8CEA/0/DsEgEQMKwyESCsEgFQEKA1hIAAKAGYIAGAYEAoRYQoAYFFSWFzqA7AgSDxCDDkAAUyA7EpKkCU1VWi7QkRFwksGjICw2D+AEBdA2D+ALHNQCYfiRRh0ASYACwyCpCQoYZhCRoGLCjgO7XAsUCfCwABRBoTGMHAIAGCFgLYPVfwQhJAEEwSAyBWwANXl0QW4HEnRDDi5wkQGAcUDWlBoIeCTSdEsFQCFzXsojBSIKHBQUwQVFoTFQNkAy4Ki7QAHi1CLA/mPw/AyzvCnAfvZLfSEVCAbAYvHi/qB+cTiAwX7qIXDAAMQgQPlAIPE9KRyFQNYWuKSKQCYAggEjEQlFkDAEAwg0BsRCLlCR0GLEM0MhHgrYosxhMyE+NRBxo/DBPChoVAAcIhcl0MTMA0oXtfmAzyYsA8IpMFBSDwAYAg+kwQjvVjQwESY0MTZiVAYs5AIk+ZotJBGaJAk4EfNfrNcDyogp8CsCVCAzUwLRYkEeQ6EeADQjYAIHAF10U1Lj0vyiAvyhHsBhd' $Zint_dll &= 'FKMMWBPSyESCthLcCEGF8d9A1EhEgmYgBTWFrptBkCAAct40UjuQNTTJECcRNhklAzXYZ/HVZlCHYEwYsrLgKBNeXTPAgWWo/Zcv/TcY/RcAai2G/RfM/f///Ze8GqPIGwRoILzIyfsKM9K82JfExvsJagCEoSBaoAJBSIHsPP05VwiLvCRQKDBjn1hARwKxeJihVZAqIVLg257CSYJFCIMC+1p+JYHHqRi5mDEQvuD9AJ0p86VmGqWkX6UoVRDDsQpUynUgtQnj0LVZI+y0QMsesOzRlzFPvsPGAEQkGACD4AF0BQSF9nQI2ADBAQgMZqGswDBklghKB1NJBhxVUf8VaEyZOnyAUaOAMSUFgW7+0ZzEgTFkjAgBAKEs2DDTXgi1DQ543MDn1zMDAvzbHKFIxIIxCIAO00gLiBNJUAExA8wDGTxByCMAK/CKFAaIEYoAEEGIEUFAT3UA8YPFAjvrfMMNZosVKEUAfQes1SMCZokQihUqRIAIAiUQhoC3gjwYDDIQFQoRVYWOFZ1aiEJSiFxZiE8w2JtOAZ6H2PdgBhCFwA+FuoA4UYRhTwzyQAikyQJom2xyQeggeNdUMJzNRUJRkLkiHI3fNrHNABHYDXgFAtgFdBQB0gBHAdkcJOhLqLCQXTmAjQuDxAQB3+D2xAF0CIkHABCJTCQU2UQkDBTYHWysABZBdUAK3QcUiVQkEOvNBgLhtwNIQn0fuEBRmFDYg1CFrlIdZkFRDUAGEWDYkwCAhhtqAB5V6AeIQx6I2I8ySMBOMQM8BQ8JVgqLdCQoIBDBABUTg/4NjRYZVwYElXMAAAGASETy4VdCGA9A4ssT0YzUmAsdkpaPtJUKMLzIRWKCYmU5EGvO3WgtAiSz1TgM9FGN0ahLH+0okNii2wAFK9aF0gJ+GYvKuDAAsBgVn14AEVixuugcWCGkqj9AjVQUECU2VZgRNmoNGZbtBhhR6ABdHQIAi2wkMCBqAWUJIGoOUlWgDQI5' $Zint_dll &= 'MQI6AOiB/Ar//4vYdQAsYUcY4Ek3UTDqAB9QhIFqUAcwwUCQWISxWCREUSRwcFxE0TAxmLBf0JfUdUPX0lURgHaGBCiEDpZNAJhsgLbVaguEPsUIM1XoetoH0luyTgGaWQpGNoXbXYvDP3UE5R9VQzIA1VvSuNBboVJQBQEN0VUVtSUzVe3dBVepdSapJZipxfIFFaVvJgHRWvbL3FpF0ttah9ZaH8A9sfUjXfQAvjZGAfRbiaHIxAMRhR6QsAwA8PBqHLcAMIA+aN/wlIfeUYVeFc6RKtBhgtFhAGUVKBBTKiADgJ4bpd9hAB3oSNHo2WHMte/GUMLFIAFSfgVDMAMknZ9yH78YvCIMMCN9Hy+FXqxcWTJBMNxLD7HQS47fS3/x9lQq0EuO3EuPwBe99DbFEpO9NJnJvfQA5f5NBL10UAy9JC+lAjAA6ElF+b30KYHs/OEAUyoKoEZgSQDaFTAgXgEUrgryg1pCY6YMABHKFcAz6A+BQPcVpECnNegPAEFXNegvQQcVMOh/QbfUuNtF4iRROwE54a5g/gnUBzGcyQ5+I5xUmeGLxfkEwPoHEA9hVYU2/gCwAYDumzIQVFMCT0pR0eNLAR+SCyPIYPgzkBxARNIe8VB40AHQaBSAP4j/8HBoxwIAM8mKiMQeABAN/ySNrBhgnAAQGQAsoBIQYGZkEEEEEulCTaBgttjAAAWKMhUOaGJyAIhUaCCzihahZNJAFlYWDlCNEcCByETigU5RGqXxUJgQDlEb41AbAZ0mURtfkBDAzAagzhAwnxBXqpAQQRaKFWgRCjPs5gAZAR7oq8ihYEpUARoKCRkKbzCILkRHA4BEp4FUR2QW6sQYBtHg2AzSZ1AfIKGy3pISgJgSoZgSuW5l0RFA2BFiyCUpQ7rIelXRq7JinY2xqLxold2ss9yBABF/ka5hHEBEQQJgP4iQkgARQDdh8QAQUGhwiR0A/xUIghGCYOV0AGwowhEVAgDTn1LOACMP' $Zint_dll &= '5NrxQKOGcB+dhBgTQLKYTgokUWpQIMEBMIUGNADopFvHGRMYqR1llywJk6m0Qiho0EhHYpQnQQQwA/zgy0QAAQQwaCxgtkjRBAYs6ABeFmCWaOXPZ47LNhRsq8QBbDHYjwDgBzfY30A3MxjQL0HnMtgPIXQBBv0XdVy4TRP6ITBFyh4k7LlTjC7n6yA4v4zy7veiSETAQwKFxgcH6IyEHQKNjEDULLBoDdg0cGS2GDBoPABgliiw06+YJECBqCTg4QHG0Q5EKwDCg/gWdAqD+EAlDhlBU0dgbDATZFRFQGQFhW6TnROYKEJFwmSWiEALJcACPQAz9pYWANw9AADih6fIxUIECLAfQ1cAuA9TByaiEwKpFYvGwfgDA7IBjbwIlPoUYR0AAAeKB9LiCsKIBAeLzrIBOLBoDCMtDkuoMBCsiAhE4uwFCsqA+zKIwygSBGOAAEkLA+EFQSD1AkU76HyPNUcoi0MmDQIixgBgQccAgxRzAADNzGwIQMeDGCRgZmYCBAQG4EDrGGoA8HBj7AVwBABAagBTEOhm6f4ZweCUOHsEGRlwPMhIAVZpUWgI0JgEkK0BADEvyAAOGwAQXAxgR8kAQBwWYlAAAAEFCwUCBQMkQaDfgL4eBKuEAUDaKeafEVeL/itC+DoI8C/g51SV0IgAN7CCnK+haPRfoEYAhW4qWxBOrg9AEKWIjZ4JExZqAgJSAtjojSwggIXdMIASYdCXgMjFAsAxYFy0c8xXDF4GIO8RJQo8akNR6AjziAMANgaCpEZQIIVekDggUBIodAABAxVFBVhVUuhY0FCAK9MQPLAzSAxBsgItcAL+igwCQEhxAI2MSZSSBAAQhcBmixlmiUAfrRdPAn/ei8acRhj74CvEAMIi4eAB0+AAw5BVi+y4ILECAQDoM2QE6huAsDQlKgKIzHoD8Z9qUHsgIA2YL7CIGN2RiNAH/EApfAABiXUAzIlN4IpIGPYEwRDHRdhFEYl9A9CJVeh0' $Zint_dll &= 'Cx4jwhcAddg713QqO/cJdCaNuDYHR3WR0wBcrZHT0VhK7eT/D6hAAYvlXcOLkOCE6LBz/UDoVhC5CcCMYLkAvW3////GIoVsFAAwqG8EAA8gjNY6AKGv8fDYLFiC0YSwGMhtUjIPIYyQBRDCD4+I+REI242B5BwAyIMBAEBnMDS4D8IHQF+4Tfez2IdAoAYy1XjIFlDoIA7D8gNEl7J4ncupKBG+JIlReg6VGduHALBYBN3YSPH6D/APFaVWoNaBrqJAzAqVQCIFFIkIRdDo9l0gIDP2hkIkUARNRxNG4DIA0Zo9Mo2w8RBVMiAKLTonELCIb0xYAyZGJIqHYRKKj10Ti10I4ARAiGRjBBiMAYTIiDJFAiSLh5KE0VgJFIHHaRBSAldQUGjkFmYERwGwWAXdWAQ9BWXurhHxMakJUo0JIbkPl8C6B9CDsFgEvliFDtDYxA0VtdgEDdJYyBlSi1UQUACLRQxRUlDo8IrCbjBIzOFIAGzhBL54qIUAHhTpjBBd9gBNCFIngcF8gUbHC3IGIE1Ty40kqFqFkFADBAr1NDHpu3IPwAWLgriRJiL/fKoCQOB300OQi+jzAAC+BKiwCElA3MGRiTJfmssCADsI0Q+Eg+iQ2ASccwyIHp0CThOwKKh+EoBRCsk7xol1/A8whamCAdEGRUewYwxRV4CrhCJ92EiJAEXUM9uD+AOJAHX0iV0MD4dVgKzwT1JIBAMAgbBYxY3bMgDQSAMQoYvFSQDx8Aug5L8T38ewiA1xXEQvGRCJTfyDAuoCSIH6GHTwBwFe+F8AsHj84AjkVFpB0WfRSQBB9Fu68fCrwA0IiwrYiX30zIAEDYUGwH/p6SPNFpGAmOiR8AsJEZGA6dBB0edxGwnv4BsqEQmIHQm/kBARCShFGAljEgnfsM5VCIkhTwuF8Aj9EIVgfiZ1AC7BdfANpFC4/UC4218RsC/wl3BcBOHqEAbrH4P7CDTSiLEOFOGwAfsWD5/ASAAk' $Zint_dll &= '/oPADIlFEBCLRdwRFzP/hcAwfmP0ofcCmfd9EAqF0nUxOj3g0KygBLCjTEcwk7zOAlCY/EAJPAgMAzKT3M9AEPD/rwhC2BO2YTTEE/MgQBm8vgDIyyMxBnUBQYqUKJIHgAhEySpGQ0c7+HxAog0Di8aLfRArAMKJReiLxpn3AP+L34vOiU3wACvaO991AjPbwOUMDgEwMSWFRl6hmN212ASvFhDb1iGwHNLImwOyGI0bAwDIbhTT/DHgbQQCfRCJIF3wegAQPCO9chywE9wHAchbQBuARQFCQDvBfPA7SteyM9EwwAQwpTBzJIs1iRBo2LUQ1otYRaUABFUBOQNMjY2A7JFYhJ/YxF4I8O8XstjFvng/8OA7IYVGnRbmAQEKQ0516hFA0BEwTQnsi0X4kiHxjIQOhgEAdcBozGjUB7FD0MT/4HgjxxB92AiLTeiLeQz26Zrvji4R4+DwIZS0kOFj8lF9rxAPjJpaBzCIT/Ig8hgJAotNzOklOxLLdRSuFcD3UPbwx6NwnOiCH7E+UFGQiNBFv27Q4TAIzL9IColFDKl3ICoWkHoHITGTLEUBD5/BSQCD4f6DwQyJTaWtp16Z9019EHH3bvSlAEENugbw8EtQ5NDTgLC+sFgFE1XOm4DZBugDD6/HO8g3fifJFYogwpVcbWSw5SFxQ5k43TGpiB2Ntd0hBNhWV2hUbYgMAw33S3Xr7TdIRNArALFYxBwD0DLYx/BmERDgjwAggOCPkA0YAdEIwYtdDMkVi030AIXJi/iNBBuJAH3UiUXsdAkPLr+wgSIHIBAn0RqwAnRvtgF1/HRchck0uBhxADIHwIABU4toHRURSgxAURQwvVgERK/8MAyLVewPv0WCFSAKi0UsABgCAQGFhs05TRBRaGzAKBIowAki9gvQSAPUay0Qi8aDwAMkCPzovFraFFDFvxjAn9iH3chRiSZRw2gTihbOM8D6LySySB3skFjFXuyw3LCovxgNVu4PoprD' $Zint_dll &= 'QJhEsLRYhx3g1IQP6woQVXYz4BMDH41K/wCLffiAPAcxdRANix5OBDJ9PvANkOgBlLQjzEcOyAaLRegD+oPGCQRIiX3kUUfMDgCNQvqD+AYPh0RRBgxBUkilrgBqQyLrBd5W0ljIpcIEUAroO34DehHAr54BjYVAMRWFnkQUVTUPg5kO1FJQjZVcIcYEZOFqj2AJAekG9ID2D2jDAI2FBE///2hGCRaUgT4rSBdqLoHyGmdB1juA60MTcaZBv9kwZJUREE5KIDKYDVDEPrDYhL1YRe28AXEglNYRoEKowgGNMBGFLuJgGAkBkj7odhT/yAYQQD9oabInIIUO850Q6BRQLB0BgUqeN5MQL1AHglsu8BkAUC5aDSKFfiqcFtATA4W+WJgQsp40gA6NQx0LfCzqAwDQiBfQSBO4WBUHX31ACgEGUosWNlEBwpprEyWD7gRPiQhF8HXdbQK5khOQuizU2KsIEPOrjQQCEzPJD69F9h7gh2DRSFtgahCKHoggnA14EeS0g8xHFu/BAh4SUERswiONfQCUZolFyPOrhQj2x0XkzRhmq3QAcYtNDI1B/4sAyCQBgOECDDACgMlgiEWV1QzQAOmFwIhNlHQGAMZFljHrDorCAP7IwOgFJAEMBDCIRZa42iSh1AiB1P/ryxLT/4X6AHQHxkQFlDHrSQUYAQPkRwB84CEvEA+Eie0QTZRRaEgUVQTrdZ4AMJOMhApe+ODRAD4NlDADQYP5BXzj0T7lAAiZMesPEQrB6QoAgOEBgMkwiE1mmV4ukg6g/2vCGenwAxCA6UB0Eo1VlFJocPyaNWCgYHog0FQJmAeouQAFgEQF5AiAQjkkRACYF4BCAgGAeQIxdQT+KJAANBhMIIMAfM3hOgJqE1DoQHspFggBhfZqAQ+Eim0SggkragVR6EVo0GhQRdxYRJ5xQDUCCFHoD3zAwdFYh4DcWNRpRzUO9sFBCH0CQP8x6wQUAACjGA0oTgCoDDAMrC5g' $Zint_dll &= 'HyyACAXBFgFsEgBjHwwVgBMCOCIA4zRIAEzwVNdbZFNHidDYK24bc1CajhVY16ZmAIW+q1cScNBE3FhFLuwRVCKcAmCF6SElAcmNRaW/9CEUJfExPQYxcTKlAPOlCQ++sDcSFrB7iQUIUI2F4OULK95QAold6OgjFWEaCAiLxjvzRhXw0MgIWB3BYN9I4RQs7kDQyFiBGuYe4CEAi4QI4J/YxNCX8PALkDCYH0D3MJgfIMCnA8jbICFOIQAwK8aLzyvOjSAEwN44AE4QvD8gMgAtnwKNhBMKMiELECAtroiw2IXOoqDcA4DoXwI2B8BwRDAYLLCzXwXAhwooLxDIK85AgccuhAIoMXxMqGgNM4A/xGUBOgPwwJin/wHp7YhyWMKwu8EBD76QQFddAivai8I709A5AgkimIBRh9DIAKwCBSJHoNzI0Ew1qUIAkSCknyDPIJwgoAyaIAmfIAAb0Eg7A+hRI13o0uCKDgpMyPUBiA6RAAnyAspAFIPHNv0Rjv2xfICDtgBQhzAgjZseIZERFgiJhsozsQ0SBjSxSFAEnO1FYFPSjQwlNrjhFSvBxCFIXFKCxKVF7LkHzgPBjZ/JILdkiGNrIpwEWTAi7YEADPDMADEkPjWgEgAAobQCAEHAQVhHHKTMAX4xMMgOgrFYBCIWAx0OB4oAEIhF/tUIRf5ViwR9DMdF6KESjXdIAT4MxTYlvQDGi9yiNONFI4ll8DjzxIwDfiBQhq89AQkEyysA84vXigQxPIAAcgXGAULrDSWEQrIAoAjIZOEAiAEAQUp144pN/oggTf9SF/AfkNhEP/HgCOZVEnUI/gtSCUAwvTK8sq/UAIlFBOSJfeDrQg+xWARG7goBjKBIIMDTAFBHAcgXE6BQB9BgLABlTJQRAAGVHk8OPDp1EYpcAVKnADXcUOEyQOfAw/JQqHEGahpAXACBKA+Fv0BRxS4AqIP1UDibkLMI0kfvuABQV1HoTcDyA2BYAVdSU4vw' $Zint_dll &= '6EjwMKDYpKcGGID5AFV1CTxEdXODAP4F60GA+Ux1QBI0UDboT/AHRlhlUJjsl4UVTXVBGVjgNOgfUKe3BYTqC0BvDECUFEG0DpADmE9UR6MTjELnAB0r0EOyzkAw6H/w10EzFossfexGIUAEACYRyw4ogINVt2AM4P0C9ATGRBgBUIIKoBgAwINFd8AjRDcggVj0r5IAi1VmBcBAYhRk1QED0b4fsAO98cDYKyUVIhGAIgYy0hoBgkasUwP/1lNXaGK8IKKyADPAO4IRwA7x4JhdOoK/2AcvbI0jalJQxbAjX5GgCEUR0+AZsKHfgFgV8V8XwgSAfBAdBQAUxgQPYYoUGJIuQ4AYYRUE6YLBFlUM/4D6LopWQDkgdUUX0jcAVRfBCmKsqLKeBSosoD8wBpowjaCiU+cBaohBhphEDYiASPGABECIJhFGeQZCQR0IARLCEA+MNLYAoFjkP5NknzpRxG6+AI72yRwATfCKBA48DQ8gha2KMcKu1nBlxRGFrizSAdI9UPCAfVWD3g4DCSccCRcG/QUUD+sJ/RYPKEDAAyBUxzC4H1B3ULBOBZgPxQNQ1kcAQeAD1WphxFNEV8DAU0WHAEopRiwhRWIIAi2NBLhQANAIw+MgoROtpn346w0MPEx1CVUQKTA8PqCdCS6FL/jGBAZNY+l6exCn8EBYFlkQqGBD2MURXQoKWgISjQAPLdQDHQICHRJTi134BIv4U+glHaI2PAxFD4TN0QJtARQ8BEx0EDxNrQFQdAIIPEIPhfdcMEjwn/Dw6A4Chf8VD47mHJCuwQQA3RIAVTxFdQWD/wUC6zI8VXUSHQ4PIIXGaGBM4MGULi7SEfEBeOCwPpEESYqaBLWZBDRpKyMei88luEwAsH6XvnETPDBGEAWADwl+GlUB1ROYLRB+DS0AbRRgg/8VE39bEixwxT5NACCzvlNOEEtRt1AV8FfUQwc56x3dBBAFAFoM4IAQEVACMZIF8HflgQca8FMF' $Zint_dll &= 'ANoekU9pAcjjEUsQHPUSS0G0k17LElEkSRR/OjyQRKYmDQN1fw4pBBvJABeKyQAT6w2pExdIcJOYHiJUZ1Y6UBdWOWABtb4VK6FSd9UpoUMUHB9B8GdQF9CzLhWCCzdiS/AngwMuIesSfRInPER0AcLy7REZKAHS3RceRAECiiAEBn1fRexGO/AdD4wKDhDQqWBRADMGGUD1r14ARRIFcCI0JPiKQQsNDDrKD4TzggMCgD9jv3Pc54AjwABRZ2AEJMgE9YL2AAB1JYWu7d0BimwLXh4QFpFVMJAvUTC44C+w3lMtkVAl4CgAFQLrL50SFQ0D5D4DEPFQ2Fl5MQCXrlQSjH0LD4WM/TjkMLAOMDDob/DnV2gv4Ke36IwLBwDrUWFVEGx1IEx1LQ0sSE2VA/4ClQP2flMt6zoBJER9GG0nQdIEIcBjPFC3flPPIaPaRKCAFClIQQIIIKrsscEOF4kAdQCwCBatXTbtU4oDPHB0Egs8dVYEV0QfOwAkMbRznDnByG1DEEVbKBYEEGLNAkoEA+VBUE0OQFFOBIexWAex2GdAUWhf52I5B8RwEqEGcOWiBADoLaoAUAWFMiIoM4ACFygAMEgMswi/2MUBK9ATLhIfIBwQ0jxEVgAPlcKDwgRXUpaYAM8Kb+UoYC0Cgwj7Cn0gESAB6NKAdDI4LKBGMIWOVMw36eL+gzL2t4EIKQLorZCBe2YGYGZ2pUZwv55OZMkHgfvnvQB/boiIMoCuiCgfhesAUffrwfoFi8IAV8HoH2oEjUxZAsYc0AYX1jWQS1ZfgHF1n58CUgKgHqy/IbAoDAqYY4RZ+hkBiAlqBIPCAlLoSC9VIUDp5okRuP+AqckMD4+SFlEOQoAOUVgOMt0kBlEOYVAO+zK/mgSEHhtQDlEYUQ6z3RhQDsaMWYHxDKWYUBLQ3BeCG/f5PQONIYtkAgGRjiokFYH7n4ZCAekFAw+Pu6SgBlGAztYHgdu6uH2F1hjB0Bj7FA9l' $Zint_dll &= 'AB3xEPUtEvEwNQLxYCgp8hQBjUHyJRKNMeFlNcLXqrn0A8DRWBBx0Z0eYYAeSxkFuIm1+BTpEQ3psV+UCVCgwRKpAIkSpTCRArWlYG2YVSjPYFQOAhQoYp8e1CiRHhQpyREE1VvPUK+VWig/4I0F4TtFVgKyLWolEMB6QfDgOG0xA+tjAwIAoCIAigQTTQ72gSBopyE6wQ+E/rILUTWAXij9UDiPArIAAfHz4CsMBL6D+C4ZD4dFTOAjF5BAPnJiRYcBVuEcHI4KgiIAIumyKOWRfmq3QDyEDVAzD4cBDRDSiiSQ4A0glcANUB7odsh+J5CIYOASZa41kTWgVuGwbuY7EDQRgcBSdMQCExQRQoEBASAd60E7ITDrM1bpPpDAKFIAD4WfFiQCPxMPNIeD8FEPgAcvlWCL8PWBrlQPsGj9A36SMPFAWB5YkH7FCnCU1ZIWp9xeES2yvkxHUQ90x0pXHeutdOOWrh4eoGTu0gKgpFoDAAHGRf9VUOuA2gbSpt4ZWDmwjQOREqyRMmaMnTE9A+lTLlyBEg8i6Ugo5YDOWAaXUhkYln4CeGuAh9AYtpJuAHhKgHeuMRqAgoJOQ3XRVOWR/kzsbADYApBOjFIO6FQIrFfKWh+NEuju2DkGbWSJjSiSPzAhVEfEp+Mk9DPbPlDwBCjAAyFUZzDkAhX0EoH7Hyom8PBoTBmDCfsffjJxOOikJQCgjUBBjSCDw+FqCxRT6IyFkCdksH6hSBxT6HNg6eByIfTtwQpmJOLyEAMFC3YKA2enIAQ8VQ+Ec+oXUfcwQrjGEUx1GZoSEANBoUiwIIQRRlSgFjCSvgIXTXU20gpQAREBUreQGBKQLpF9UcLTAAN1B70FAzgAKGwiD76IzJoEEEVRbiUDRXdWDDDmNQJ2RTo9UNJRAENQAOBWEjxILDjEkC5OEVY8LtowEATQ0McSBAQYBAGFly7UFz4YkeERAzCTbAVwpcgwoYYQlQ5nKJo5qgzRGQDI' $Zint_dll &= 'M7D1UudRQqRVcVBCpKYRygyjso5l7yELSiiAkCOzXmHEE8ZCAnYQIMZCBAPrLjxjLESwHiHCQ8ZCBesW5QGILBOxrpAdUlBn0aA2ga7eThFSVWgxFVE8FUKQFRJS692FAeSZNDUUHQPry92j6KiRBXB0R2YCMLSDrSQQEIwv+wYRFXFlZdWDBmoLEfY8pEAGumgA4i4AEjJ0BdICgIggURYAGY1l1JIvRAIzwCwEsMYDAPG7AwBRlcoALizgwwC0LCDy3eP+AgYBBgAjwDBgYEDAQgBvUAB52wJhwwAdUO0dAC0QbRCIPSAHAQcAJHBwoDXAEQRABfAABRBh8N8E0QLRANEG1RcfwACJAZHxCxUFkM/sQMwAiAzQZ8oAbRAdIMJ5ASAC0nlSCQAErVyQwgBKDFC1xgATDCDKAB4MgN0iA1ABLfIXtoSAMFUFqNQJFFZXjUIBMwX/O8V9L/55QOHIMgDwjQwQihmA+0Uujn7BUlehpzIOJjkAdCSoAI0cDjvdfB7fi8fOeGG1OT0QdinAJ0SiIQo7130X0pHAQKDIYAGYXwCRzwJQZwAktHPN1+7y5YU7kGp5IWEZmi7hzHDVN6GoJwn0wIADQvHACkE7znz1+KwGELxg0inMwfDgG0ARcAW0Y9xHAgA8ATv6dPM7xgB8BV+wRV7DijgEAdzCCjKm0kiBABCoT2EEAOA3QDEDPGzvGlFYEQW1IIWeIyrwilFxEPquISzwFaqIMFHlh4QEGKCOlwBTOYDSCEewGGXkFAEkUnhARXIRAQHCIpUDwAK1aFAFELXoxC8FFYXOctMuDRskKh0i+AhHgyzGDFpncIwZPADyheCVKNDVr7KVNRydPmA7C1mJUoPsMEkASzhJBVwktg2QakMUUj2iYLVSfKVhCDh+VpCMkMhGwsMCJA+OS4spDb8/eJAr1B+mlYBC4cQxNA5tkchHIsVhHQgYPAADyDUsZWBc4c0I6wgpASSpBAAcjXAHVw+v' $Zint_dll &= '8BLB5gSmMYC+70YXDEBAZriS2EiB1Hh08g9lvAhM6KodAQYORoHmT2cNADR0ANHIUgCzU9/Xkx6AEQcgBFIqACKFDtv5wQRDguTjBfkEjU8BZhGJPFNoADEgDBgAg8cCQjv9ZokiDEMFACB8y9EXVzjoe9DQJtANEACFHuUGMxiZADCL/ekAt50Q/W6m0AmKVBYDA6kgkm0xBEjpCY1XzRBLkKUWA8G9AGaJFEPqzNEN0Azy2wxz0CxHsUoOUP1g7pJJApQO0yxIxNIs1d/nEwdAkYQeE+eYFtHyDErRwhxX6OxOGhAtZHwFeTATLYGzCNTvdQTECDv+fTyWnRCNaRIOkBUVkypEwZUIBkTRAbXQpQBNO3/+pRCVAOqfUI+ihwjFAGkQQCQ1CjSDxhCDwgsYg8EgjrqAAglqsoHGAgrVFzBmfAK0ko8wEL8SXSRSjLCzFpyNkY9Ak4aAAQ3AwcDxwBgr3hJRCbgIR5kmljAJDBWUoHYU4hoAoD8I7DFfGigM6coUPcr+B2BWyjcuMNi/8HfwK8gV6wAUjUX1mYPiDwADwsH4BA+/PDBFXMUKCQE4O/p9AGiNBH+NDC+NJgSACBLUWD0QErADoL7Y3HfTSNSGBJBs0UgDaEaNNBhDi8FiAeC5C0FmiQQGZolC/hUUgcaMpk6CzCfu9AclEscQEoHB4IaJsKPfA8GH5So0OjARDV4AgTDoD6Dgx9HoVI+bCICIiHifPhAdDKI/IOshA9CNRBYHAV7Di8b+AabHCM6/lbOIqr0Y5r/i9SvlAUKAwPA/4FeitEhyvwKEkSz3+wZ+j3NlJZIKxpzeonWnohYJQpHhkjoQ8GAXRo6/DwDwRHf1RHfz9CBS6KhnJVHoUDo6oAhiFZA2INXIARicMC6A7kMUTgJEMBDVyDGE/oID/mwBgL2uomghhQ4CjAOgoGgUABU9roIuAScIcNAQAzEgiCMEi9iB+zIPYTfHYocMYSGmTuHLbsEYkqsJ' $Zint_dll &= '3SarJgkgdrughjCFDrecJuAgB0YAEJxOABgw/qA2IbUILxEKACiIXCQp6N1fgFaTQkSCpVYAhW73TgO+k0ELNDZaIJgMagUCUOi5YC5aQSP8CTkcuzpv0s6gAgIXVo4pACGFvpY+AvG0tAgAX1c+AxwbgwPBRAAiGSMwiFQEQCBWm4HPwade2F6oFCogUGjUmhGI4KkJpFESv/cKEIHBWlShSwFXqWQF7QxGZKButthEAmCmYxUSZkJ30PIQ8JsMyMsAhW9kFUAg5pe0iBycPzBg8jxrYgUxFEo1IUULBwjS4wgepsMA1IgkgDCYP8GHK8gQgwfCNoHHkFYFoV4lcl7AEKhvdtkKwAZ8koTZll9ex0A9ATBBJ4mITlWRiChUFY7MI/57jAAUyI5IDC0JrCSsuw4QVsK/AWJHGfYYMAgOhBAHwKRYxAGFDkRjnQmKTR2L2FEEwOME6CY0UeURIYAtVVEggn6BAwKL2IpFH1BwkVCIKiAC2FGJJfpGMyCgWBWyiC0FF+ymNCCACiZQcOBWGjMSAOjYhNF00gakPMorKG0wSui7ONAGQZXSBtKKKiptMFHoVJ6sstIGBNkGslhEq8ASPaUTjECSCHACAFNHphchCQd5Vuhpgf4NYIV4FIAOCCIRB+i4HIB49J9nIWJ85AsMT/+Lmnixw6FcR6AcAAoFEPpg9c8wqI/Ap1Qguoegn0CbOYAiphlWfpKQOcCyTgfBFJkQHMBi+SiFnMhtCsYO8fCKBoPAHw2NDI02YOAfAB+CrUGoaADYwfsFpQyLw0OJOQMPr4WgxGBmIBA0AVbxAEj/FTCkWnsBncJQKC0/ABh1FyONvfrOx1z3IQ5H/Tu8ORbDWnchfTteuOYFAY00YwJxA2UjD4XV3giRCxLqYAHHegUA8eAoVXsRmLmwLjDzv9gYH1GpHQiOhaRx7AcBEHrLQClrENH44QGV6LEyDaxcChYiofTwGj1wDSiuAgwag8HPg/kIKA+H' $Zint_dll &= 'N8YtE8kDFWrcIhQYsPgcGE4FAIB5BUmDyf5BAsHhAovRuRUUKwbKsgHpAZ0QhJ8gYJP+HUVB+AkDOjJC+AoEYunKTUH4CgXrfHivYCCy3oX3CgfrPnivgACz/oH3CS4aACItDgBCYdBOc7ST/8DIN5j04agRPhhh/hx5BYuNiu0UQAP7egwCUVzxcMKoBArpj9UodGELPZzW0uHXp3gIQSCKGZDsd2G1eJyPcFBg5u4Alq0BN1xgYSMAMRYD14A8AAoxdR2L14HiwVYNkBqgNKiML2TYIM2lFY2xfK59IW0xMG1RTt9tMXyFJQg5ChEbiS6FqDkbXPYQkbGSsABnCwk+nTskQNUeQwJYVGbUgAIIdDrAQSNE1ZS3YOOPG14GGLGoLNosoMMAYIkBPIAjSgJkDICWGOTqETyhKMBmXgtQiUEIGRBMQAUAUCgSegECXAGCrtgQxNAo5KDHIIth+Hak4HoLg8Aoic5rIAEQmF+3UWfieAB4mNq5shgjSgBqdqCUCGNRNz+oKQ4JKkvgZB1QEQTrB4oUkYhE0C0gxWRxBYT1JBUszpIBAKi/AYtCMFD/FSjBogfj/wl1Sos1JDSQascECJ6iAAImBFA4EAERWJzkIYXGmeNAV6UwOv0S+MBBKRS40LERgZ4NmRCNcSBWEGoBU0kEJFP/FUAY5itT+G9Fp/YPUkFBA+tojVU4IWiYUQBS/xUQURDdcheh4QTJiiFRBxQVH4AQFRrHFhWXB1AS/V/BECLDXRAQG0Mg1hJ85kkLIU0BABA/TAAQHQxQRcwA4wwQxgCDDEAlwAalHFDEAQAJlAAcIAABAwxAkBBVwBMGEHGQgOCfgI7+bhDIDtK/oKEFIigxaCpbOgF+mPBQaEEzOnYB5RA1hR6tfQsBE45pUADQ97U4hbG4RKExqCygNwIoICxzDUOkKsgBoI4LxoM+ywFAJ2Tici0AACBBEADQEDSF7qemALqrAW8dB+ryMeAPQxLXBKqO' $Zint_dll &= 'K1uIZOyIqIP4LFoWIA48AhNCz5dhKmsKc0F6gusjLgNF8AR+MYP4CUaqMeR3dsJOZg3hy8x+2hNAv4hSjUAkEaAjN4AyBAAAikMYi/Qz/6K+tICqagf0dAtucWLMYyAIAy6IYIQGgifhJwKgyAABmP9nt4BgTHAzyAJHgOEKf4gMN4RwpOUT4bS0cSyOB2EwJ2EAjQSKnpGSWEbONBNMsAhQRZ5Yhn5lJSWDXpgXoNkDi3UamQIc8BdVaP/XtG02CQDsCNn63Rwk/yQVOKU46AvcAT8YZOy9BUN+B75Djh5xaKoFCX0FvrESPsdlQQQ5aKTdAhKXJgMaxvtClQHB7tfh+wmNRchQEI1V7GaxQN5YhE8kJS8HU+hPio2wvgFoHgmNVchSjU3sgsJwQN5YhR8lMAtTIugSsp9BzJFogCghzn1EShnhi9gJIBpLZYRFYBAGYKD1CuSJddR+YUxNCEYtshK86C38CdECfCCbCNKywhCxqC+xCQgDw7tWog5xv78oc/xLEoLVsKjdNzAAJCzgGUUQRkE78ACJVeR8yIld1JEykGAPmCnyQEgsLxligKFi0kKwWEOTxfQva8sGHeU+CpAwI+1RAooIFAdRUopdgXC0U7DPN46GlzhIgAsAXIt96IldEIsAB4PgB0h0MUgHdCGD6AJmoRABwg8EUWou6yfOATMoTAIiZV8JGaEwAgyyAaUmZJwHoBckchoqAgJ0LHEJRRB1qmhwtrXALbUAxREHRTBayiAMAGKPvQEsNQjOoDII7GIFAPizVKfEjQloaPi8gk8XiNUwgOII4QD22hsA0lGD4iqDwi7GoTL8so0G1jgnzBkEoqIKkMIf2IsPBSKAQOEREvbZG8lQgwLhKoPBLlH1gGhtWPR/0B4F0h6fEDWnEDUQUkUuxwlSUGhIOYJBFH5LUYffGFTQ4UAs1x2NK+8uBHJPsEg8shNv7QuJRfyWw6BXCBQPjnSauNEkxwv0OxjKD4zOeOEe' $Zint_dll &= 'CMYAZwiLRfy+UizSeKUCiAtWxgBki038Ao1F/EFSUJqygE72ZzEHhnpRxB60kLQzkF83MAjsr3MXSoeChG/WB3UaQr5QxY/m6F0UUuifPQuk0ASyHmXRAYBmOBBQ6OfqbhBcJyBiLk91yOlVNlgj0MihuMigqBMCSRF0M0k5MXQVQJSiWBNgDDAGBEAksF7jApQEAiVkUJVBPG9AysaDFmJolLpgmgKijACGnxvgugbAKlaNTVT8HjvwauMbfTESi8fIGRIKxlIFHqDRBS6UkFjFvaN9BI23VICw08felw8AsQjAgBpAx6FPAL640sRPKiUHGpEiEE/dIOs+PagCfBIwETKgFgD6sSLDfFAx4oFKQNc4EDLCHTQgKwzafNUpITAA9gElEHR67oB2WACGSwiIGqAw+C6g8gH+AooHFAtqAA9CWyCWAgkwUJcJICBeh+Av8FApEBy0GL9OF1OBBbFYhS3oBID5gHVxFV0F/QSWPAGFfsArGAzrTgUHPrCwI9xHqsUK2C78MRHg0gHAUISoEAWFDi7qAYtNRNwVLQxDQWIRkNjkxF3SsG5RE9ADkhIgFdsPcJEgVB+CQtdmXQWJzQRKO8KBB+8CynQAtqWTCGIVYIxEJ4PkQveR9FDnngA9EZkTUDbod6EAnWcmWQR5I1Em6L/uDrDu0IPBE1I86P8KBNJ948EJVQ/gdUKqMrrRBDEkJD0BiUhdur1Rxa05Cw+PQMC+cKJTCAxIO/h1H74Go2BVAqAgCiYiIVYADUergu0gGA+vffBWyTADAZx7ZhcTBBeNNGgX2mSQqpBrYiJ4AzsC+X4XM8C7eOMA8fAarEYQ+0E7zyd86ZELiBGxCJIF0IsBYQygBhN1+EBBoTSw4z4LDA+MjGa4oVCFYC/ohzB1Eq6DNscS4eHgCqa5UQjsbQuSCmHgF7TYB20pBb7NAAzih9FVQHADhUZyTkpKFGGTB3zoRrHj5RraCjBYABM04L+DXC8gfgIy' $Zint_dll &= 'TciGVmC5DGgE3FOHzwdCU1AIlNzQQAK/WOcB3YhnBAkum+COAKkFKwEz0ov4ihQOuQYABo0UUo0UVXBAsNYBoJH4YbYoRUBglnhF0AXQqCf03y1QvVjB71oBixTIiRH+4QDQCWCWSBBFoFghQAKIURAGjY1JECvBjZWKHDEIfKCzAAgCq5APt2g5MXKoERXAADQg3yzfAcKZwFhntRyhDUY+3QKwtl3EHoXdgMfoywPYBXQUsDMAwSM5qLUPVRDYHXBA8DMAJrSSJROUXcCGBdsxRfgiFKHWABDYydAwEGXVjY0+I8oBngPgsE6TXUQPmHE8AMOcyQPrzcihux3YDWQxyAxqAFboAMggbAqEdgRhhbHoJF9BVhi96hVgpF4hwg3qdzFyG8HgG0UDikQd/411xkNgQBOB0iHiHBxOMKCcHRCTGKDwA/ofERCNTgJJTuofcBw0PgCCt0QpAY18EQSKFB4+dCC47wBCkHjEj6qkCDMAwOsEi0cQQIkoB4pAIABUFECJCEcEx0dbUSBOg++onQZ95itBEYDQ7hcUMCjM0KhEf7xnBUJgH0BAhyKXCTlHAXUFizpH6xIeqACocA59FIM5B3UPMIs6VkVANIk6fNoARoPCEDv1fMKQ+lMHqegDBDwfdwaAMhEyzAMjp8CTA0wDqiUxzANYZ4CLdUQigyQgJRvDPGAJcgk8fxLSYlcg1yrpOjfqAwUqJsGiaCU4i0YcAO3zFOkBNEIw0D9j39jGoJArZjHAYerIfilhbHgBAItMGASLVBgIJI08oQs7ypkUD54MwFJAVhL9IdQOtQAs6HgGYsJguwpIwWcE7MwAlDCIf7ToXAdobgCDwBBBSoM4Akd09kpBUhYWkFRutxD+J6BUE8h8clFQe7sFgukkAfhHBlIBE3QBRrFKImFk7gH5Cw+ONT5EQQPs3wfgwAP/JuWxQ1dAQvPQ2GGmENYGqBAzoN1TYZ8PyIHhEgVBLEcDGifw4Diu/y0C' $Zint_dll &= 'fglXg/oEkjO0xCC4AVkj5sZxZKkSQgYxEB8UoAD0lIQEDUCeKpFOtsod9o9A+IocUwQyi0sCsKCJDZ7AfFALqaQSFOlaaTGIf1C3RieVEmpMAaWbAGulETFzY1AyTcEWjUYBalehBhib8WJ+MnRAHhABJiVTAAPwK/gr0CvI0zFTmjcAlCyRbuEGNXMBEAAUg/oBdW6LQ5VSAkCH4BIEfDIH8BYcAuVfL5EcBEKHsINP8kDooSpbCMqVQLcBSAoEO9h0E4tMow0yC1bqUAuQ7qMeaFBHUW2gQRX2Q6Ak2AJAllJBYjQICBDpPg2xOFSFUAswAgoOJxsQGrkgyJIrUiH0pJQakbTOhkkGdHmcoDcJAnRwFItbBPEQHUCyLyCfCRAqECfRqMEQ0EOxzieSD9IBpm0fzSIZB7UATgxSQ1ALYNo9iNQ3gE/NGFrtYyRGABXJGenlgyZRQVTLz4AiOQIcgLPIxQCOOsAMNIPLNQhCqhVAFMPeUWNBGwDPg+kAdClJdAkgSXQRDQAYDFUaA/yDx/6L8no2AASDSk/AMfO/PgE2RAVg1Mj34T/oz4Lix2CLDj65Axh/WVjr1iIQ4FgPVDCRbjltlACVAhzZEQP7yKFQFYCCCRVxNWWFhqEBr7iWqjLg7hWUQJSIkfgRk6jj9jX2C2D5FdJPAiPqfZ6+ZOI/Nlfyj5DiPhaLQMoaA/G8mMcwoG/qUAYVMgFAdyCuBAoOANHKEE7yJXBuRUa+LMIRUuDsywJOJdBI4DEZqQx6GgFBR6L4Huoa4PsICNoJgLOIEaDoWB8Rp/DAKQyglFgGPiKc2BdGbncLiswhcYUG1SN27qAhuRfGT7DeoUgY4s7QOYDgd7Dro3Qy+wR9LQW7ThXDoRoBsiaAb4QQHI1F8A7pIOgCYioiZYWR2EkuCgEe39GFjy7mIqoQRunxULhjrSvonGxRhK5bAkIqYMsATeQMO8F/adLWkJiwT0BAl7DTxe5bDfbrwcMl' $Zint_dll &= 'MGor8O8n0thYBBFsLwd6rNI49Z8TMWQCxO3sGyaYQM4WzmRhwRB1HAWLfeCNDCIUAXDAAumwNE+6rn0MgI9QdTH/QfrwqHQfyilQKaCxCpECXolWp0DQHNAsESwp3wBRYUYeH6CPHvjoRPqlUieEIQ7wUYrdHODIbioUACgZAvg7yn0Ri/I0K/F+EyBgBgMiE8C/CCitCyCLdfyJMosJVRSJCu0FiQHmwsCPnw7UQ5Q9mL5r4LAli9AggeKiVrHoMCgMSDCof3DXJG0EeGIAABDGAWSLBkABiQZew8YBZSRWZUZiYSQGRmJjJAYkRkI8IHIPPF8DdwssIIgBSGQsD4ootfhvUgoAwwA6qgzAwQBYDCDBAES4DODEAP2aDl1htSiPsIgQaF4cMWgMSGwdC70RtRRjvRFmiwYIQV6JCG0hJAWmSmJkJFZGYmMkJkZIQoDqIF4OGYAQpMoCwv0AzAxgzQDgqgygzgAIpQD0HOAP3hYIEP5wRLAIbbWIFFNEE6gumBB0L4MA6gR0IEp0EwQCGLIK9uoCLw0QBgCLAUBeiQHDxisGZCRWRmJmJNQHXSlTAHUTYzJABI4IgFNmcB3PIJkDAlxAxQWBA2IXsAfNRf4DgVWe9oEViOCTAOldIBkQUhvwxw5+PJ0OyB6hYFgnwb6eP5F57x8oMCmAwjBS9+kKkxHHlAFgNjZMEYXO0AJDnGAQFvLxF+FKFwRgoZ50EJUV9vL3AMUXEVDoPUlxBAQK7QFtLEDko3XsjQ87NTAE4QmoTwUQeQ5XwKBtBGwkDS1+KKJbwE8IHypAG3rhbOk9AIHEBRDDLkugeR5XAlFqMOhnf3pklfJuIQb4Im8t1PoBsOoBzn+gEbIYqOMTO8UPjNtBEImVAw+PWyBQZ1ATYAGx3mAFEQFGEGGVEIsoFcxBAFPW6ZJISbLtEBQeHgDNBPIUsKwQBwIUUWgiF2wkHGaAAAEICY20JBIY4Fc2RgECRNgsokiAwtNS' $Zint_dll &= 'J4FwfJBQsb7gYwJ9hs4Zc7B4UKQgA4ZxYVwyaKwDAk2w8mvBgCFmibJLIAQSUAQZAEqPsfOHruYEyQAlBDjhQBciEOGICUCEZorRePVfKM0HENLIREkitJhC8PC6PlCsIAAKfkAF/SGD6QRKdeiazJG5m0ohsgPeyQCKGILAovLD0J7QSCAF0UhQ1A+CkrhixrIIlA4wpN8Usu1RN4bQSMRL4n4CEHwoFUeLEC4ZwCGIFerS1rCUUC/hxyC6ABguj1II8DKI7ikN2YZaUWWieQKZMBeNDFKlABEqRRAq0w/ws6iQKVpooc5D6nwgPBdlASiFyWLmQFxNABWFJsQqzIAMixWkOABahgoBAu0Q0ZhYg2j9AZIlMI2MQLISbyMEVpydC6B+fQFMED/BS0IGUZOxnwPRGEkZg8l3/4Mm8AH9IvNHQClvJxCnSICYIJatNwfcsbj8BDzLg2MHIFtfXjPA4VjXKYA9vnSBGZZIlJbnb7bUSFD6HwSEjgIz22oRwGE+BmUSD0IwJDCxYxcWGCZJYRDgZ5D4iRXOHcAKQgLPC4P4MnUqE4P9HktCsAgc1nEPEAqxGuMwhhtFuMvd0YD7BC79VaQLS/oGOmxQ7oMukrKXUkBIgmm7GVUEVmoraIDtBujj21QwlwAj0gN0DAGC1gPhNjeRMZANXFywWAFGARNmoWQUsLOu3BdzIBCiFlmBoocFKn5PwQaQxpUARQkUiwF9CgbfYKyg0EgBKNkC9GEaKgCJK4tqBIlrBKIBChjZCAgD6IEWZgqJUwhI0IBhxBF1aMUhRO528FtGEVA3hKkiErkrKVr5EY0UkiiNDFEw1o0APCCLABmJGotZBIlagf9NQEoIdQKwX8KnIEFEIpFcEQoVINEARkURxJCQKACKFcgCiUoEiEII6iNB7EUJLRUfi85nPBArypC2IbDspw0NBCAydYh+40AAMiPuFO/2h7J1Oxyc47gWK8phCzzwMQBha1RhRRcr8FZR' $Zint_dll &= 'EVfoqaUEi0cYXAD6SQQi7FpCMnUyU2gDVlXpQugIhkLwxQMRQBddI4S+HwgzAQAAyEBX6B2qCoA7xwPDYVomducg/xEJdAmYsQEPhUZYUTmV0FhVFNBTQLFO0E+xnUJQaPtC2AWgrcdFkJmFEP76HfBVBOMYQ2tFEJUEBRVrRSAU5GtFIAUPKikxNaX4BOiRzNYG0hKyLqHJBZ8+IFNXIOh5XDP4g/BQKOpaJIzlKGahODYI8RkY51EVNWWWODCaArbncZ4EG+Lg2gshPsohTocWMH6/CRBlf5wvoCkQUzVguUmNf5fREAEOHRHFn2oAGRCAHbw5ARKFkEoAD1AIL+D3ggxTkr4WAXLlPAF+JNIE5qsHW+ygwqA/LBD6IMCwuwMBkrm7AwKCt4IEZy8HvoCRH+b6CzLKA7mCBMMwrE8m5g3RMrNiLZ8Cmseg9D+9A/d6BEI+vQMPUEg1vQM+82/cIYpMBjQMUehntQDHO0D4AEaD/gh86IvHMTPS/SCxARz38dZYhLAoT0dRrcBgJZWDRtYa0Kvmawh1IEZdacdTIpUtaBIAP4AQ1MAh2LdAoZYANVUjkIIBgJ6o2gF7W0DooTSQ5LCo/L8FQgyRGPADisMDRggQYW5wB0hTfBz4ugKUM9hf0NdkmQQDW+fVQuin4gjQxAMAIoRGjuMYhC5USTRT6Lx8emGDHteVGQQeG0qQU+iZiJRXjFi+ByslDH4UkauyUAIDnlKgRyFGA8Awv2q2ilqRQKw3LVU+VkBIwvvMAuYFg9UReO6UMEEQIz4QUMBBEMnKQqFIkMID8XfHZYEq0eBmixCQpJ8ej5BoMSONgQNZigJ6hSA0IA+rahTVcg6ghAErwYP4W1VqckDZC7OOAMLRC6AeMveKiNoLlRaEKuDteTs7kKjkAGVsAGCHAHkRUzkgVjLoxwaGEDYwIx0bYBKgyKACmA8ipzgNBH90CIHhzRHrBUa5OpyByGhRaSEgGtofxoQ+LGG+' $Zint_dll &= 'FllAPVSmtREbHgCEAR6gM6i/ZiAHURRBBBh+LUBIgkQGn408KB66GQ9Q2FAAEUABGgo7135LQgHAhAKKIQwPTQF3aYvBISQCZoscRaSgHRQeAjPbOBxFpSzwYFA5PDQwnx8hSwp/yNoSkB1C+JIacbSjD8JXe38EsSI/6L9243ekDUhbJCDsbVQJoYTEm0QCSxhvQMCQYiEG9n4JI42cJLeuEIpEguMA6dcws3QuUJI4cDQ4MEyw489HrkwIbwkQgrpOwgfSyEsJHEIBi9kPrx8DwyIXIFFRV8Amg++mGJFpkvvCAvf5wk8AFYUD9ovajZS0yKEeAQAQiRp8Io1+AQGLKg+v6QPF8HAFAV/q6heA3j7UACMlCgj3+faFAT/6ibwgtOxQQAdxNYWGRtkkIHOBjDhgFgqJSQGF9jYdYCkbZomENCSsHCD2AK4Y4Fcj7HgBDRGLAovZ1tIwKBBs0EgA5OStAaRMod4aW9fdEKRJGKGEgE0Ai9GJAmahiIKNEIlCBKCKIICoI2TQA9AJYXIPhCAyGBB8EAVVhW4TPyAs3BjKDEL3tdho7BiDLMEUViARpbYQNgu3qNf5HwbUQWq5ADYLOBoGDDIaBl4UqF8gFOsY01qga1TQ/58DYrQA52QgjtlgNRkBGZNlFhKIlCk5GIqXMNTwCAPGhClKvuGBR10nfggGRHbFA0FHwnc1sx1tDCiOAIJTYUAzvwokqTiAhQNUAgkwv1pnseJXEhCAZwkw6InbW0YwFIPEZM4nwedsCSDoK5hx21WQeG08uOCwXQUvkMgteIupsx8g/QMSGyDQj+AnMNPeofIBGA7Ap8hwEIVOAQSnSCKNFJtHO/4EjRxQfOXYUdgOUEcWuA/LjABA0OgW4MeADn0HQ70nICBXgfsoGQ9MAXbABF0S60OB+6XYXijAFAZMEBOx/hJos09SDsAUBUzQJLG+sDG4rwEUBEAgtBOCcjvQL1BX0GvjFIsQBK04XQY72H5R' $Zint_dll &= 'hrUAdSihWDQwSAMDxYNG2ShwSAMYCBEpVQXlCTloYIxZNMNYpgRAAxj0QBUlNVWFPhRZFRBKBQuLDVgU4KFYwUUBtqbhCyLosIJW7JoSAhaA6E4BjVwkBB19LI081jpDxENAA4Uu8kYCTDwBWIgDUUPoFTAAOgwHMaCXAkOD/yB8ANuL1SvWSnkEADPS6yOF0nQfpUUHeNNbQI2+7gsSryfJU3gqQsD3TgRBKcAX+guLmx1A8XIGmgOQI0Cxkn0wJWWFfh9fIKkF+UsKQY0ErS0YUTUCfKTxC3zxe0538QtcJGB8KRhufwQaFGWFjmNWJx0moVOBi1boSvxs4L8agQt85Uul/qzARZIE5UsVUFZ+CMBy1RUBqCsTVFFTVY1UwAjlg+wklhDSSFMpAsaa/cA/X5rYQDRZQoHe6jYVhCS2TKEoCodyUJGy2ADtrgL84d8BSGPhAjBSEIAhNQUoAwJVjQTAjTSFTKyAsA6TVqAKAg1gWqO0VkMbshEh1Q/BdUo8DMTQyAMJHVEBES7oNA5WQuMuFcZREgAB/fFA+NAToZ0Cbkki1QoaTDHZSoBxJIgZ6xNohTOUso2y2AcHfQ6+wZJD0Ifx4FjZZrGHEXC0w0eClLgHBEhdQNFHARQoiX0MFA+OOYQCJESJUntAAO+TEn0QQEEik9jnoQl/SRCLe0ACxJO4BwT21yGOBkABkohp7wuOX4QCBPiJe7k4oMEnDnwgsBt9CD78ANgpsYdwtHicuEeF4MwPjkr8QwAUfQQPO8YPjq8ZEDa3oYobJQKAJDFFILQTnTgFRGDwC3UARovWiUB1Og3BsjghtANNkDjx8ChfCYF8HFIEIP4nyosTQVJVIcfgLAVMoDMQfNStCX0GACv3x0N3ZBANAHsBBIvRK9fHRTgSSANCA30AAzuSrxCLDf7YcCYEAcAXWBYQsGi8cnw8hMAZoUZZwVEfsCi8ckwGIMdFVDKwRwA0kLVnZBo8EQB+9VBHIYMZ' $Zint_dll &= '/HTQABER4EMPvmbBBCt9GAjHQ7uMIKEVIIv4BSt7DMdFQAaUOjAx0EcQAzCwVx8QAsMGAgghYKGubsEEK30cDMdDS1YQ3GL/G0ArNXsQcmeAVERVBQM1AAV7DAN7EClQJIAQmgJGkwJDstIHIdhIoNyBggREK3sUx1RFSIaUcDBQA7AHYTGwR5EChQIIKWDHwfZVwQQrfRTHQ/Y3QsodLEiAtFKMkLhnadYEFAOdAEVwkgEwILKHUQLwQHhFHkWYkSkr+Ka+wAmJRRwnA3sIgDHgRgcQYNsPGA+EK5xhsjlUO8cbD4UMPBDtw+NvW0pWgCpHJjySCkFjrhxAM8kKK/Ir+rUF6g4vAAxAoMjFgJHIZRDBP7NNAiCJWCCDgJLIdUAyL0GJAFwo/IP5B3zQsK0AHwpXIWghX4lBHKJAMAIjXolCMMEgLnpmAMQUgezMaiwSweqLEXTGtwHOA29MMOQf7I880I4NQxzDbh5wcwKhFhFxhQYi2gLoT2peQ/fEGAHiS8kPTibpxQKSF3bcAAIP6IdpPg8ggBPi2iGobQA8MQ+C2ijAk1DzcCjNAYpX8mMgqH0AE4v3ulz+CaAo4ACYn3O3IMcxgwHpMOspgPlIPCcAtJ4BmC/Fc0ki6wkoFbWo4U0BDwGv2QPDRoH6Xi+BwSebKewgLnigDTgMAAO4r1MnMIsV6WtBdCIe+3OFxtchEPJvfbMFsfHgO61dB3FQQCJhAMZsMKEzLGMLAb7LD77QUVKam9ODRsEHlpso5BDVgqE+OMLU4IMjixVCOGEOE4qF2FYQobkQqCLFoLkQdCQeBHQjoaieSgXQwKpNAbAAiwGw4IEJIqmQYQIJKCEHBDvmG0SUV0PQyACoZATECHFDqkJgeROONzC4H2ErFByLSgSKoSCPE85CgMBHgbzYYHYjFWY3YpwogaDY4HUjUASKC7FSIo9ojAvGCQ4HYeWFAXfeaQDuMTVHCK8w4xsEtYK9iCG4GIJ9gG5/' $Zint_dll &= 'QDA7BlSGggOOIrBo+AAGkqwVCYS6R8IjsGhYUPFAeRA8MryYrsgTJ58warGArv8CPiPBADCmNoDzwBgCm1GfofDweAoCIYuOY18gzw+E41EqBgl1JY2+6Sg9KjhwI66b2RiTFDG88053NgJKJ28g9CKqQ4pZGyUQEGmB+QZV8Re2aAm4zAWxM80XsxP9B9Gi6DjDBUGYTNdW3QHk9CS8HfAEUXehQIh4cH8GCrgtAkNp5ZFUIXBrcVBFMQT4CQ+FpK0DOZw7JDRA4AUK1AhCnQGRoLUMMBywWEQwiG8mwWz2MYIf4kT0AMxTNQEAJSW8AWdmW3xw3JNrcSK43OFowtxTRKABXAWD+AZ/FXJ58qsWJ6FhCLtaiNIyiM9ABvcs8SkHQiY2GjKhlSdDiCBQAl8IISkAAgPg1hR0D1BoZajhAArFV0Qg3gpQZ2sQujKIwNRUoKIIOhGg5lMNDlXlNFBgUwLIDQBXiFBEhghZ6wF+R8GbDnCgVgKFrulND8TACIdAcBWFrsoDmiTg8RrKlGAYEFJQdIBNNzxyLDLIoesKPjlAyCviEo0BTLxQi9eLKcZSwJbo6AsyKTDvMxIqaiB0xYJGWRo2oJkV2PDRGMNKgh1tBFJokCGSOoPFLinxpQRbEFDqdhTS2koO0URA0juhuglrPisAG1gBsd5IoaX4ZA8HAAiK2YPABYDjABCIWPqK2YDjCAiIWPscQYCIBcTPEQKA4QGIWAFyiEhzik/4QKEKCv2g5A9KdKBXN4CIZNdUV6qTEo4+0WqBFwUmKpEUEqG6J4V2h4IbWHD8+gKyWwYiRQ1MAAEsiY76KJE+QAWR2VHoCS8XNLEZur9QkXE1hT5TRKNuIIP4WjG5aDH5BuISGpEzYDMSUlBVNnOAbgKEYakpxBjytKHpEIMI/yYPj8+eEIP/CsYBGRYe8ZfRixH6d7WY1U0CEJ0oGhSA8RdFcWr4IL0xAAC7KR+A4VgiZRps0ZLRa8IWFmwE' $Zint_dll &= 'HZZRaIRhfCTVK9dREVJoSC2GDDvvrn0A7YcE3noR0bBAx3BMiMabHqGVEEca30Cx2CzSSEkkK8+4gkkA4LCoP7+aJ2DeGf9LIFAU6AEnYUmgTDAVVYMewQMRA2iUgBMxMowGyuNRFYVu2pwggB5Q21UZrFUQjUycUAqL04s5VRk4Vak7IgPrrpJThYaTHDGd2pXRDg68bSSLF1lJx1xhUwJNde1ikmRjHeJd8UfJKTEZdjxiIjcSCtETEJtBjgLqEDGLBCG1KCwVGIsE+gPQigcxAIrYgI5TADgOiJi1rxiADTgOhJjFzxEIIIhZ/RwBgZgl5M8RCIhZcxxBAIGYRccRAiQBiAtZdYhBRQm45kehQxI0gcE5GQKFwWGNEnWN8QIykZITYaFoCELpiBNQEK1tiBCiAn9AWZeS/QAUIRCH5LwIV7gQSBFVJSXsAybWFaVodSJFQCs6IPRwICI7nAPCJrjWrwQCEDPSZosQ/j4wENGYFaDJCUk9yFAA05fupjBmCrEz7GcQs4hNEq7+sTPcJ5VQtFIxQpwHlxva0F8x005gtsjSZRwEsPPub4MV4j7QH1CMWiJRjNJu9BCwWLxyDIVGmwUw8h/teR79fSghKaARGZK4LgFMCmiorMSsKBLq0jCzHTgQmWG2mEHQZ98OoAUEfQZGmcBpchIzwFTRLdIW0WdOTQIxKlGBAkTmIIHOEkUSpUIZpSOFzsMDh8+jEO0PjsU6ZtSnkBNxaH5OLI2UjDgiVRhVOGImOulixB6MJGQeK9AIxGNXEgCLGAPHiU8ZrsVRR28zH4QS/ANKLFBRPMAZDiBXBnMmrOEQEMkLJEkYDUCNhCScIBEb04tWaJGYgTPwHAPHKX+EIAPQA/CmZWHlHpIpUJDD8lDYhao/MiDtQ0rGa0TTyGKn0MqkalC9DB4KQ9AlsbgyAKVxwMPNDOkaB9tNkZtGYRJKILYaEpUxI93LdGC2SNFnUVCh9hYhAQCF0n5bi+qN' $Zint_dll &= 'vE+ceRAD3eY7Ec9/0wJQJVKeCRDQVw1Shxh4klysMcHQZ1pukOgY01EX4WVLE5ZbRyBpM/Z4oUIOmOJtGB4OJgAGjUH/ehJxCNTvgAT/JIU8lgCBY70QA2oGVuizVQ6ALGCgRmCFfhURzAJiDqDGYIW+xAIQio5lkQtqAIDJEhBWiCyCTowYDxFW6LwcMEgMFIzgfBAB4VwTagTgwAHeNvBw1YIEAjDAgASuDPGaCFEoKwRW6PUs2MOIXXcGjNIMYGsD2HCADSkB4QkRaQDYUiCV3pMdENgYQKCGYIU+0BsDhdAbccoSAGoHaggQVuibLKBoaEjqtgBqLpJghYgi6BWFuREVVugNuUGEuZFoBxwRFQDWDQOgBrGLBAROEcEoRQFGuUGVYncIjJIMUCmQgj0lAQURhpVSB1DpjsIZAAYEBmoLVuhURhaQG7AAmhuBzzINahpW6EXsLAGgpsAV4CyAXgmAI2gQjSZW6FmGdRIbVuhRlTLFEQrd3gmSF3bqogZ5gQkSFEkQvhElinCAEtgS7xFRBiePTRFlCRJpAGoKTQBT69hRJVECoxAHwE0JQQB5OdjUQFRTkAajptAEYMQBJyDpmxYO0ChQoJpUgZVdA9Eowc9SFBBW6PAsRWKFTn69sAjSLvGAGdVowRKYgJbMUpjQyyJW6EXabRN1CT3JQ3kDMkhxsmGFrlJEExbx4I0xmVNvgEpcEDfiEAkRJOBTF40jRmZkMEgMlSTHOBKqmSNJ2GEQBATSTfkijy1Zh6UT0QBqD00AErS1MAq1QN1ED0EA+Cnr3aTxE7UwD00A23BQCxBaAgMSr/UglQ5knACBPQAFahZW6AZlGBUBahapE6osg5F8MeTJVTBW6JKevVJEsVeBGTuNECyCCXcshQlGayxihT7PEUUE69fYVEIAjhQzPQ24Uxpxq8UbhEVEJQIusRG5OJEA60ECRTQZAhSNIlBpU0UUrIyBkUtyb/sNRUQVal4sSZndZJCU' $Zint_dll &= '2jERDaDmVdEEAIwdRRS1MGlDFbhBAKbY1F/GOBhqFbBNAIm1MCUwLGoV6WPushEgLQAFah/+AVBFURGg9pE4AdacM5I4UUXFMh+JE0i6vgKEJmJG/QpoAaDmgRwt2yyFDCEshQwVyIQTo8hggCZW6I4cEUkgZMgRGFbofhzRAmGFbscROVbobrocUdSTgD9WBOthRUC5dyfRZA0B9ZOfZBCGyjjf0QT1A4LYEU2BFNYOgE23QQBo2FQ/hFALVB/QBKC3hB0dNQEB9VoeQQAx8thkDWDRFEUBah5NABT12NFRExAQGeURBKAv6wH3kYFhFUUhTSDdcBAQUAtjnAaBPVLpQsYf4HQgLxpW6AjCIBBT8KKdEKytLBNT8AHKVQEFlCyA2lwTE0RRiFZaVuhFeSwBoOaCH20stYsPYciEEwUAUmiFD2hGLIUPOixihS68zREtBrrYlGPwihSWAYB1yhFDPQUc8WSFLnTJEVtW6I8ccbZhhX6YAxMv4RLEkr2z269Rkr0TN1RpMVEaUWBSBwwHUSZIkVFgaYot6wVmlRaMwdIEkogdURavSPHjH5Bv2FRgpG4QRRFeUk0gUtih3hCRUdjiUhsEgIM9dQEMdUEuVQBuvHjQBLARGUM2kWEutEEAAZHRjMPSBEJOsh4ZgjSRYS5BAMpkEBmKWhQj1QTSCicg6Sztvg7hIQGxFel2H9BqUNRnUdSYfRGgltTXEcgyA0VqLlbodSyQd4ORpCbUy4BWVlboQlrIpWaF7sRVfjVW6AUZeTdEZRAzaLHNEmUAJyxVBrDBUlkAfQ/IWAbg4BIsUgZAHxnhzRJlAOgs4tMAfFGEgLaNTUUIXUhRhFDFEVEJW00cweOvABxx5a8AHLEwZoVewxFvPgHAEQx7VuglCTBS1GKFHnVBA2gPXBBW6AwNMaX5FEQuBis2EowkESjR62KQSGTgYsCM4WIwK9hRHYyBFCo2ARmBLUDpKLlwwdMEoOcRTSD0IsFI' $Zint_dll &= 'rWTh1KKpTQaZhwyMVAXWBNKLHQ75QXItmnmj2KQ8YJkXiQJqRE0AeobYkZvRJhMZRBQEwCaOTcoDxjgYakRNAE/72NGZ0SYTGRQEUYM9xSm2bTKEbTJNEBhtMmTjpBwZFQThHxIZysBIYLpNIOFw0CbQHSMXGZeOZ6TJAi4U4XcARBGgdhBhhU5GAoqG9EZyEWhzIwwBSYvRiEACEaw/4AQOagGNhHAyOPHPB8MMCsqICB3oLFPE8IwHorsCUCUQYBpE4SsGg8QwSA9AhNI6gUR3hvRQWJTNCIqO9Z5w4Sn9FRGKltVhJIDJgIYSAYeIJjEXWWaAy4CABcqAUVaIvILIKznoC1USvmUgMRFqD6F2S+nv9BCKhoyhKBUmuh3gWYahgMgkYSBNRMkABGdQ4iBAGei7CnzQA2KVIT/pIBUgwitRpaIJAvYqwj0ZDCBSAh8AF+iE2GVKGAWZeenp10Egih0RYZhJ02CFfkAyeiLQ/5sHQrUrCpFJCRSZhDiRSQTUkEkgG4CIoOgJRidpANADuByQhCjKM8HIEIw/gAqcSDBA0UiIIQraiA0Y6JFRaaUdAX9EANsRU8cWMSCDxEiDFukCUVABBhV7xhDEYgzlBdOCEEh0deUFH4hJAoqWN6UOip6XohUmV4EBioZ32ggC+KScMYGBCCgmIJI71RlgAJgcwBAQPcAtiKPcgsgt6EMfAUSeHiCpAZLpqEJY4WhVCOHpuPcFoWhp4wggKQAqJIFojibGIdQJpxzQecEbiIu8gj7u0QcEwQoSO3HYebS+pGhoJxCRZ4yhg4DIJFUgkXcBkWeW/TFQKhDhDwDpAPIhUdDARwayBQ2L7iui1i8ajbuFIMeM0w8QP4uWXOENLMJ8MOzbujqyPBCVsGgIPQgC2V4EdVqqTWBnG1g4vktg5xlELHGASxiozALrDoXAuIAgcCtsCHQYcD4QRcUCblE3cQOhb8AsHOCOgzUA1paBwwEcvyY7SQMPyKXH' $Zint_dll &= 'E9iMSn78AoZhpROKUw8AGWUIAEEQcAgAAcsArIiAbruQCACBtAgAAcDPCACx8QgAIYAfCQBRNem76wzbFmJQE2AkBxeis/BYkdE9ANTn4yosycHlBIsQyLIBlyQQzY20OcBq8/JIAiKu6KCgDFSD6EA8+nKAHRMwXAFB7RslWJNkTQ0zJYDQi0jIYQwD1QEAjbQ61v+PYCWQSSkA1ykQfVFTODPb0jWVG+PPHI0swGNXQQDjNRCNvC5b0xA+c0KCsaPyA30O8lFghb4E4rY76zxqCCKhyzSihAAowA7YdCeKD4DJEAKID0U9jUj+i3/R7R1tEcUOPRBhEY5eoFszCRxDgcVmOhF4TBGnZ48Q2OY1wcfoAo4AocgTtCuMMDvedeEoCHZIQCErF9A8lAPwewHRSLhvDaQIglFgOhUK2kmImE1whQF17tKXEEGBYTcpYjnwkSuxiDz7dg0hPTX+qwKyGJ6yIqyTB8rfUDAQjMAJ81gMQoghtcKT0Z0B4QstbELDUNgoAYe0jwvRFhAH0Qj13wjA8x98TrAorwigHOw/MHAPGI5woMjpEhUhvW7PMBxAl1EMscYC0kgLlBJtN47ggaRUuAH8d9wHUFgR9Y4E5IoLqXbC4GcBHhB+bYJitV4EUfXt3wMoTEAi1QcQv0UQQgTfpBCLRvxXJ0YQMKCG3aHhoCYkg8YMS5YOQ1HXHETw9VcE9hcJQmWw2EQyAyzsH/7yEMFvFQ/60uA6DzvUIGt0EAa5cqUGxGWODlZRiVUkiQRF9OiTSj0DXDBQB+ZkMbcfCdaqPgCgEWwu8BwJsSAJtEkEix/Oi/zDrkB61OBUbhkq5s8AlSgqDUXmsrBYRPKgQ+g89QFyKQhjPAeLnQ/cWFOmFTCoJwVqovH/wAfAM7jzwHez2BcFAgy7/lJxTHAoMRmAFQKLRfRBhcCJXU0hAKqmUSHuDJZBly5VEACD/wd8Ozk7de38AiwJQI8JQPylxv8AUFeqfgLy' $Zint_dll &= 'bgVCf0xw+f61BUJ8UuaBlnNAjPOHEJPWELfQEOlxFnLBQckRhQLHnxCDOtkwqA/x0OjqGU4DAGAw2IcR4Ic3GJTrYRYBdW/HB8ZK8lSk+QdFJJUCa8sQw9cwDRFAsUUQBRARERFC4FEF5pXgpwUDxokEl6nA15U1/sAMaGSRYc8BESb4kR4UBZEGUgRSA/HAIDgQ7FQM9bAxoO6zsZL+2h4Z1x6F1h6dEmLYAltEshhJG0yRyEJxyBOJTRI8wnB42ApJp4WGFR0P8CQIkQADk3hB793xB3QOaFDDlZWzBCHrQ4t1B4AQGTJaWUECMAXyAx2wSB2QhUL2ksVQx71YFRjAgLDYRDElSQxR6OqA4SkUiXUMiV0QqSOiEAyy2gLhXRWuE1EqMItdpt7QBYC+M/xARKgJFY1D/k7hcUhrzAKeSAClCpAEUIzweP72CFGMKNUfaEDFqMkxrCH0zpp0bGg4nLkexwU505AQkHeEBgOpUTeQcw6pDmgo9bO8PQ/geQOOUhI745MORehCunfKIMIPhXE3lCAQgFbesBKcWAU/iA9RwafSMDDIo1gBwhciRg6NTaxQUcx2GlHSgp6n9QSysFHEHpIurFES+A18KbigkEOgWEf7AUu0R2lNC9bmEKVOBpV2AXApDIMFsFjFr0ggA4UOIlEUIcE/CNygCEAVE9DIASiFLvbvTAVdAo0EWGamQQD1GGdKAQ4D1lJocRixgjJuEAAgkE5SCgGqHDD8pxUxgDwwWw9AhaoIsYLduPQ/iJD/wBfUKMEnSPDvGhD9J44BXUJQ+xoD0CTydABBk35sHQEOhAGULsEkyEYgHAAR8ATJEYB5EcQEbEAVIBEQghEAouVRBcEXZdwAjiPgyxPe6eAyCvsBFQ+FY3hCL04BGmUDhN8HEDFQaAw1cE30wskS/SOogHQ9AQEzVMkJAevtTVW3ExAkigUMMoPpf7ndeEFwQQBBAOtfi1UcnptgMMOzVffiHgDyA1WV' $Zint_dll &= 'QCJUmCwfAHRIFfIApQESwfN7EFUkyocCZCYQtcB2URwvkBvwTw2LZm7SIPBA2C/wLIKLQA8iCwUPhVuaAoHtig4GBUH+mgoSlqRrB3wQVTkMfJbSfrOeNe8L8dCOxERFBIP4A3w43RDosNjmOWKcHygJAFUYUuicoExGkSGgyAQjEHWCjshUdWKckAFSVEGbU+ClzySZGRlBFE0Iv70P+opUIjEefgTglxK2CGWfLqbtfqZsgEav/wftfpOjuFH0MA3hgMZOlikRAAQwPDByDjw5IHcKNSSD6CzrICg8QUSgRWQz6w4RUGg4ql2AXjwUEQKw2ISfSNRIHESwGJzYhB8ucdEYGGkAHXXVWETsGAZrL/kh7Qz41RQV9QCMcPNQONIHkhFEnhFqNgCtBAjRx0XwhRmD+gMiD41/YCBV7Lu+HLFCoD24j1CXMgAR9Ss3AEFKUiJmCWJzUj+wsxEhCSCXDQFVCKZ78GxkBakzHR0lhTkpEE0UfttAJz4PFIM8gYkKJW/kIAQPYIxO9/HhCkEA01jFShIlNQEMARDUVQIEhYNukCuQo9AiIDS4L2CQWMVfF6EJMAIEagHo6UKVIo1VACRSV1CNRaxQPOjnZSHOAFEiEBeRbjGpQh5V/FoGdGGUZRVsEaBIESOFTgmEBDDADdoAkHUTEIUe+IgEjRRY4Qb2AKGvAPYAe9DEP+AcZQ/gwUASAQCbt/GpIxofGBAkM9KKIxQw+CCUSKEhEBVArlILwE8mUpG7IXCVLFiAGRBV5I1N/FFWGosEgjkFmQZQlRasrpUGmbUiHLUif4Ig0VIhidizSKCYbdC3gg+RjQNRVub2wC511T+Cg97FDr7kEwCS2IU+k+7uqBJJE4E/e10gPWN4cTzQQGBTAFSgSCSTIACF7oUUTezFFQSNRFgBUopbgK41W13CkdYQBMBXURqAF1xXQu0AdUYCgwWaBTKQPtSnpC4GD4V6RRnVDoLGBZPYBU+3IFwQdUgF' $Zint_dll &= 'OgmwjoICfw+Ha5Lq/eM6IAauAxFgNxCuAwNlgBx0f/gQdSQr8AlOgf75sPDn4N0AE4k0h0YOkJ6RrKK9D4IDqhAAUY1ch76RcDiAMCX1XwGUTLBdCSJYdHDvHqxPsEkJw4gm0ACxgQthHACQyHBJkqsvxD2JExIMlB78LnghHRwdhthBjG4FIVUgDgXwKFBQ/EFA5QZVFl9TIBvcEFHwRQt8ngLZsNiVtwCwyMBHsKi9nlIuKRAKESApAIt1QIGhWgDiLhHgHgEL3xBW6Pn7jCAUv/0T6B0DbiZgYBBOAT+wmAjhFMDGZgBivA4Ou6h2mlDggHLkKucKDLuoGEAT6mxA3ijTDAEKuND4QFfQgouMAVDljxIJpFMksDEDfCwVAFUYQSBhFAOASvAgE6RIhAFIGABMl/DgC4xkHSDhegeh/R+WmwABuK4UZ8BtqhAGCWARAZAA+oUMsd5yuT8MQ4ARAeBACB1g0hUQHw0RA+WCF1QwmD8gNQBbfLUD+A0JSgPF4WogSgNRPAMD5WYhgfnIFQR/LggAaKcQO8J9JukN9uPOpWE5MDJ03FgGeuUDBhhIG3PCEFX4YQzoUlHzmrsQSGiJANUTD4TKhKGqIPZTQREaBaIVEaoDRrqdAqI6MOxAfnYCZKD2g77gQx0cEnEhoSiABB0yi/AA996D5gcPhJOWKRz+BPuvEAZyA+VQAegkzD344y+AVlWs2k6V4D0QsWgT2Pj60wIC0ZJu1NVFlL0irkABiTHgKjGxFwaRyrDYBb4yH1jLhZBI85k+AQYgjRSRLI1EnwRSC4lFEFAggFB60MkPAKC8aByc/tFIKabAH3ksiRSfky0gEGeJGQWRfIN9+wwR3zUQvWPAVkAhHkAIO8N1OTkJXfh1X6oEUYVuGwDuU+MQaiax9ADTFMZQtPAzAxGj928ZIW1Ay78Q7RojgQACAHUdjUUkjU3EiEOTEFHHRSKhAYDe7m9pEbkngQAysJAQosEKfjcA' $Zint_dll &= 'JCoZAb6aC5F5728+AS6E4h9RxJGUKIQgi02YfR3oPk5DMbUCsoI8EIQ9Wg3CX5j8V6wJIoDLvDBNJPfrK9PR3vqt8GsHQ1HlIUAB8V0lHvwiQjtiHUDy0GiBK1VcEPYCMaVOAA4Kggd0OAGKDDBR6NA5lguDrqEgggUgoAm9SELSyDBpwCEMlwoBu+6kywDRDXQhggkiAgLmF9VkfjEUMRKD6n/mCrA+0tYDwd7WYDcCdhe1LkEC6hb2+J/NDaoKAeHtDm0AD4zDoRCSx5xgJD2BHH4M8atdoF4VQL+NCpGcOEFXxAGFRhi+Js0wvzMgHIsKB1BofGRs5BMIOwDwfOSLC1FobODGBNpgEAjWmASQyxkAAGHWCQBRzgFYChzwwgC/KaB8JAT48gJwdwCjcATCEGHcHAhR6PAeCkAjuPm7AgMjR8ADkWPHYFcBBDxadgkEPCB1/ytAM8C0y8rLYRygx/sMMsaBMAWDXqneI0oZEQG43wBAxwC4r0J3ADiw70MnsDWMLs48xeiLE4PsLN0PMrVRF7Iz0+44JOKKsGoAwcQAM3ggz7sCEN6YsS6i9SyupsL4Ak76QTIILKcSdy1iKkD4agUgVRRMLRvrqpoxiwOy7ichLD8kIGsd4pohFhSTZRBEk9tlICwPAtgDPGB1LV+IEIGYMChc0IhkIAkK60CgcBTRECjMwIQUD4cQjAkAjXkFxyQgDQCKHBkQisuTdhCDLDCA++LtACCnALifc1cwqFA8sL5jxgwgRi5wQTHIjjB0BUIUcIBdUEZktwEZB+sVWAuENRbo3de2OoCeCKDyGiAdUugt+w4gOh8hKhRMBv1hckwQNbHuwRN9AAwFg8EQg8etEUye0+AVrKQJCCyhlxRGsOARDRqzCWAHco5itwT2uJ0TdksQe3AGwlQ2cLgIgTwATQ6TlRMwUeL4gQ5B/gI6P/FPDnkUhzAgm3YQuo+zNQkhMgMNACccdB0DW7ixFSYN4Kcq63qQ' $Zint_dll &= '4UsEuICCC/CoYCgZTizggpNIBgrIwAYPIIzio0ogBbirqqoYKvfp1gBEI40MUiD370AZHd5IIxVzz5YcAJXmjRxQUcQBpeONPFBBAkUZ0eeNokKgLgTR4KayAACxY/3HsDP9R4Cwc/3geJsTUmUgigQQSMCwc40F0BMPjlNYMWVAa1hEqQkQjVZYIUELDjsS9w+Mh7YQD4RL4hCNf1e8VwfBC040klUQgJGT4ewSED0ZjKZmxNFdkBsymBNckC6eWFGYcK9eMN59LwNC5ubFAts4IGR+HjiA01hFde0agQMUUtEA4jvCf107wX8AWTvGf1U7x393UZssEPkVgsbA8swCknEBI9PPNRB5AETwABQ0vQFxzwMBaL4Q2BvAX4PgAzheXYoggG2rLUAswzsA6X8ZO+5/FTsB738RO+t/DXBxnfsCJ85Q8Aw1mlQBJQAzwDv3X14Pn1DAQQAERAIpuQqgAoHLAJwMYMoAsOEM4BeQM6MgFDvzV/KeEGgrBYoEPlDoRKcrIMBeLMIDPA10EzwqAHQPPD50C0Y7F/N83IMQEFupAe4BChDoPyQgUx4gURAI/hoRUBcBMKXI4QC4/7elcncALF5rICAWRi3BdYajXlJoNQP8WwoqYgCiThDGJwYQnSEIjRSBdgtQAJgPI7dgcRwGQsKAEJSogGTeDoXAfXHl7AkQ7k0CgWul1gAp9+1RMRxfxxCLPiEmYBRtBsqecNUIh9CIMiXQa6Fa2HEv3gjAkButvmiEv8jixr/hAMLgagQg0EhkUAyw6EYPAyQQALKIbrsgwf0IiWkA+EeJQfxHSnXQuwMQhlIB0g2AsbJON2HRyGACOhSY2QbaEzMYLJDo87VYrEq1AALsCzVBJYsYi+5XgTHl+PDw5A4B4DckFioARQfB6AONFJm4/hDAVd0ACpKcADxwDzCzDchjEPNACTSsbAoIjQxLfO4wiQpyAqCrDDv9fNj4MgDCC3IYID8OOsYxgF51nhP0' $Zint_dll &= 'AwS0bhORmJEUMKUIASNoGn3xA7+uMCTWWbLYBTBxBWUlpiEyM2IaZikQvDuiEBzFAr6Y4K4glRAkiwD499+D5weD+RIBfCsi1MBn4gUeLABWagSKDANR6CbgMH4vZS7TAmJuDgYAdTHrIYX/dD+2uOGQCiCxEcd4M/cDUfCOGFxhsBGvXNMfkjrg3gEQVuirUgUC8ZXYlf4FFxMkzAkEC3ogVjlnJSBAdf7TwTCYj+GXIIRraRteK8HDyl5QUIRrtRArwV5xEwxKDRKCS+2lGvZmizDCAYCUIeN67KEY4VXyn5l2sCKco2FaCk3KTBBPAz8uUMEaivywRUfTAxBEUK4yqC9QF+EZPSCKke4lQShdZzFsMKhPUFdBZQ4mQKgnrXgAtR4hMj0ABL03HH1X/s4gDQPGZaScFU8BEMluqAB+WhaiuRUiI3AByJPDBVBXYEwAwwWkCMCRg8gBAxS049HMVw4E5sjSN731AkMxMIC8E/zQ6O8kQxMQwcUwjQAUV40cFmYJAgSdk0DSyCPdSEEE5NEFjRSSa0QgHI0AVNUAO/OL7n1AO4oMMQAPyKMCQEQnWB8Ui86nmlCEAcLyXyPUJYoICssHghCIAQhFRjvrfM8tLJgLERDCeL+aMJInQMJRB7caG9Mv4iAQV4tICJJDihB1C6pE8GfgwQ9fKFvDaQ4p3l1isOiUwa/G9b8EoeQPixbToRBAwoZd0ch3cFAXPrF47AULi8cQ8D8FNqb1PwW6khsxzPNFAv+yEBXDPH8kwEUin6wVEPutg7wBTKLbAWBg/gGcaDE1k7yIwVC4/eAoNBR3JBC0ikiAzRIsih4dkLDIC6PIRwOflBCNQ/87RshEQKhISDTOblAncDfoH1bXEiZQV0ShZh8Px4Lw8SV1E8quJKFuD3wUTFjOFP5CYLCAr1XHAjZbzmDh6S3+WgFQTLIlDTH44M/1UOiFFVwjThUzySCj2RAVdRAVx4S9IXkgwLNmEHkQKoP/' $Zint_dll &= 'W3QvCIP/XHQk0EV3BjD4r0UnNoiuBeikEIPgAoPAW4mQ1LN+FQ3hMtgfIOPXEAKUDrEOFADhHhgAkT74/1UXw5ZJJE0BdR/I8PcQBzGmEAcR6/BVt0BJdlcCqNIAQYsYO8sPjPydHkkHbRyyJyDAEH4XsDV8qFUWDFOLAXpGId0u7RTgJQuuKDKkBtJ4RdB4GBkE0fhaTBF4jDh9CwMGcVQCskcJgbPTB1AH0LSoE6DHvxOTsOjfd2KwLKiAChGAcJSIyocBiyiJK2j8ys4A7EoQ5cbmAg+BtsTQTvC0lJgTDBDGoX8LigngNPhO0ASyywBDahng6Aw4koMOpgUQYbTz/XECBMGHGKgB7n1mAPUaBMLzZ+fDwwI6Z9EcEB/CEBYJshjRMojuXQKWkz5AbNySY0FJdzwg9A8ATP8Ig+hmIGzXEx8AKkc6lSDrABA8gHMlPCBycyGaSiRTEDUgixEVYL4jZezb0D0gUOjVMqlAHY0ENIBR6Mgw0MgAB1dNoqEAVicBkchgCX5GBORj4D9GEAxTVjP2UVdWLtBkky/ZiwqzmiAgOYvpJ4PBpoP5AAV3I/8kjVi5AAAQxgQGYesWkRQQtM4SYusKFAAhtE5AAUOLCkaiT5oQx3EFS3W5BgxRSLBNtzcj7UUA9n4ANFWL6CvrjTwAGYA8L0N1BYABP1t1EfbCATJIAJC/ok+XYExwACC0jiC0fmBMRBDwLzQjfZMMId21ChgRgGIAKAV0ciEHA2D1vxPt1wHIIxAwVCcByIcFdUgLGBAg9KwPESAUxLCjzDfuMRceK0CKWwEAocoAsAxgywBTwAzAywCB7Dd5EOMXIDnbuc/jEIItcNABk8i5nAFiigHgljIwv0onbEB+TDMzZyG8JGBqCkADNqMQShNBbIBISAKEAbO+30BdBrDkARHYDxtzyhAoIKrSBkDBABx+MKqCy8AMCGhsUeD/J/z+NgmgCAFu4tXUoec3iRGiGbHO6EoMtCTQ' $Zint_dll &= 'NHD7AhLfCMBEAALIEwOoASANKK4LKGwGBLBTjBjBlz7zTzKTzApLvk4Z8A8owEdTYvZQ2N9xBOhID3wQO86LwX5KCocxEEZIHh1gL7MPfBAajUUWBFA30RhF0L8YvKOMZ8J/FPZBRrYKoHvyE7PuB3CnSMTx0cjHAQDCY1RnBvgDAlIXlgrQ3fewOAx9LgPh5QJBDQF8840EABkz0jvFfR2NEHQZAZ5kU98HASTYEgACQocgxAiLEvB88YZBwKcQhtAHxXF8BnHRizCxGI0L5gYAZ2uQQzvdfInlsQPZEnOPIRiKcjFAOFEXgcYJJQoT8GuJEIM7PAB1BjxhdQKwYIPXayC+yImMlH0V7QAJQ/+ElBkWjYwYYmC0U08HIx0N+KFYQGABhV6TA7FQAoAymB8BnRMBQ5crdLJTPwALwWdqwk0hEGIhYKSEHoQkaIygYRG+wsoGIdUTxnVR9pATwEN3BAjdF8kAQAGkhGpkAYlIk4g0dSeJYYw8cnEMckxIQtYDAKxcEJaAsc4w858+VyhWEfkBficQIdIPIEgbjVH/ObCJHXUgCvadAAX/QPz/Xwi62YKuyAgdGYqMwArj9BBDUT7mwP//r/jWAuJZP4aiFoAaQBcjjw8lE1UKUVVo6BpVYc0OUIx1ElVo3DyjDg1QVSBo0DAySIyiyBnYBjKTnF1AMKvEDMT20JC8oUjIgBU8YQB0BDxidQbYBUAAcKBIxQACqJ9kpl8B+m5MxRM0WhBUMVTH4HIPCKSErd4AIAmAGstgVFey3gEAqG9UF4FDxRDyQUcN/LIEEEAQQNcAyMfwYdQBsU4U/MAO+CSwXgbkVgERD4x03QrYHfRYMDvXAfMSKNDK4csZILAkFBnOBHrvmMnSjb3OkCcEXYWS2aT7OQhhD4QBAfPg6zAHMimCHkT35YFElyNUCZoPIW0RiR5DGceEjN0fx6IgibwsshXERGNMAgrp9xsRxEUmRPwClLG+h1hBiWiUWISX' $Zint_dll &= 'XAkRPEh0PR5ItgyQDyyOD5Rk0wlPwIsWG33wAFjxnxah2R8gvYQT/RA8Rr9lGFA3FCvjHxPJEL0AL4mswPM+SwUDQ/Ty0RjWGogpYQDE5gIgJQT2D4S7ARCKhEg0mRSKVEL/IEyXtHxxD1EHAIM0vhexkzwdJzKzTpIKGSWyHtEJGSMCoUhFU4xgVLdTCLFdd1MdRoFUV4JMbxyz/tAafwCoD4JSlyOAETQB8CAz24oERDQgPGZ9Cm51QiL8xoBUV8FdB+u82TGUvQRRLiSGV3f7IAO/g/ghD4fye3HhD/ECJvz0CwKFARYCdAwAoYUbkhktBBatDgL39pJiZLO+JD9AXxsQUWUOiMJQYCAVhf6GWCjzARDUmQ/dEFLq5YEtNhBMBgoBihQGdhdwySkQI4PG/2AQFDu0ZgqyBgHkDD3zbyA7z6Yg4SMCk4xQMhCJtCQ/7RGNtCTmxBgwfgVDSULOAn5J+bkAmgxiJhKiPrGnBbEo4b0DAw+v140ERQEgZ1qwRRz5BxQDwoMyIPmpEJYyDMEnTBa/eR3PchD+9RUANRrCiRFCpGZGL1IbThAzB0FlQF0UixgPjxB1EBdHBKHjjiC8qS7fLxDzjjARQgSg744gQgaKG04gjq4D8IYG6XF3UkbxhQoC7ONHohMOsRBCTaETfh4lQhyEUByCzze+2AMVEVBoiAkQ14vGErURnjdhGg0YsBIsBfX1BHN1XRIAbqYgFGxQQGKCAIGIIW8FdYWOKE4L7b8PEIRQb8CNAbtMEFLeCAKGMX8LJSMgi/8xwAAqEFQMcMcAowwAMBEgMADwCgABfhercyP9bhegRQKSBqAwEUIuIW0pPVpJAdB3p8jgA5gPqDJ3crEDQTHhA/GgzzKIJowQwwoQ61AvPkA0IwQAmA88JwKYDwogNzGI79eXYwxFeIsCIlwBALTuYVxESCkg6xtwwQFHQcNwAZgOhMiII0hA9g3AJ1gP8lVHcYL7xwFeXeSULJAX' $Zint_dll &= '4ORFU13Dv3wgC6YR4powgyRtaFG9yCILkFhJXEwBYhbVCz6PFNwUkIFYSCSAAI4W1cslMgaYihbVW0Qm0piQWMVOYLaq2mj0egtEBTwoxgTcM8CB/uIfIs4GjLaZge7nIpkJihbIVsKoaOGNpdDNAKt4YAiBaDl2CKGCCIHz2CBF6McyhIG/QFFMA5SIIYtsVdYdUOGQ7fMKIjhSkGhQRP7QqCASEUNOMDNA9rsQEEmJdfSKAwCL+VCJffjoTHTw250Qy60QfhNSGSexc5/Qh/NPmC7SyIghBUY793Qlu5UgHLzQocjgwQv2NGA1AWHwACw1IeRCRyy0c58IUEXPJ9tYRd+YVogeRhOA0wjT2JhB4TIVxWWQGCCLGeoQhAFiHzh9AbNxNYXGNR024AkBlcghdaUNQYwA+5oQ0QkVphAzY684LSxQFpf6EYt98I2lJSsJ+IqENSDRyIghoHYQIGEHAQ48Q3QKolIEwCBFAA7rBooIgACiCO0PQUN1DoA8PQ9b5hBh/5C1ACuhELDyD+m0khzgi5IXIP7wAvGl3WTYcg9gahAmSIbtUMfvhOQCA4S1kRg2DWFEBXVm/Dyk0BDrDjxnHxBGoixkxhKJdfxaAPBPQJekSNiTJKHIONIzhAE6wXRCCqC5IAEgSHQQSHUp0LSpuRDrGDBk3RDr2i4AI/HuDZEDUQAQAgGYHybCE3hiSjLAN5oIwReLVfAAigQXPFt0bw8AvsmDwb+D+SEid3QmCpAJp+yKEJ1WYBjQaK8HjdBh+gPoUKKVFnVOgcBwtL4ESaYY8WQXo0h1YRcg3hd4Y+IUSXjlhQUCZeu6CpAterQz9BQRINsak9qa4Zdj/xaO0dJvE1PAVOQtB4QFMRMVAw+E0UKcIbcLzxhR14CbLkGUGARjtFiIEYP+BQGNveL424kQ/GoJ4On2R40MhgkjmjDZDoBghrT4bxzRCI4CfkiNZJWJL+OuEPiLDkyQ1ChEQDzXg8cG5geg' $Zint_dll &= '0bHYhS9/EGYG4HkQi5e5EEDI8miQ2IU/EA00s2PsWAhiesAXrHQGB60gvOJ7QdkV0iuQBmGVQI0MoKYKc5wFYLSYsXhNkIix2IWQEjF4jHBglohkljBmiw2QRgmRKOCTIEZmiUp+BKkDXgkh4yFeCe0XKfJn4hKaTZNYzVCFsCigup/wQAEaLmigrATwiVUIMXzbFzJBggljvXid3gBZM9DYSBEr0FFS6HoJc2ECwTSN4SMr+VcGUlPo8hwy/RFt0GPpHxAPhYktgx5jIbgQD1CO4p6Drhw7iUUI60o1DnpC2NBi5uMDAUgqdBFCHBBEArjlGelkLyRRp5Fe8i8LgrAI9WwxFMjBA+AHipRAGaK10UiToYgsvaUu+gJ1orTiezzST5wRJCJdEXP6F/G76wUEhvaUG/K7KOIM2V0Ut7kxsjDQH4GAkN2FkCBSB5LNMESA3aENECUfQHUACNlFFNlbBOsPZ9lFCBzhSwcGkfDnBIQxhR7qqQAipFHEvk5RFLhTAJKCBzPSwJ4qMGYZISzw8FqFIdhJsF2EgN3ywgaBfVciDRApEAdgsFclMHqwcEAJghQjOweyKRJWslWnAGFMiOGmECjrFYAC+V11CYiUOLKOcYDICCJrPRHUi0Vc5OprMGATGoIB6TEDncYUABC3DBDNAALH8T4PD+KnRD/OQeESUuiYO14gipu9MYPsGK5KwqIgBBGvY1AgKGNQMNgGBLAfBh/wxwmhCAFMLNOsEeg/YykQg2pgKL55qNYEMagGL4AtGkrBomuTCRIAv6CgoDi4tAKxYmKNqlUMv5hA8HAG1jguTgXPLBDuL8CyeD+RA3HOAiS8swQiCQNqEfOkE2ggGAKL8Y1UFBhnS6D94ENv8AY7bzB6LRCFbn8WELiGAYGhZiE1hThIHKb57whDsdUb9JsERNE3gpLaN9DQN0LSN0Nk0jdfYEXRN4HSN/IhRQV9cyQ1vhTM0DdvQNE3gvIYHGLzywAKfaME' $Zint_dll &= 'QNA3L4CS2jeC0jfd0DffYm3WNwQl0TdS0zdgA4AOC29yBH1jl8ZBLkFSZTWIv8JxNWMRQnH1AkNfNy2uLEDDekKhtqHo0eiGEFCFHiciC2obVU5oSgeBTm8lO6kDNkRBgePLmzo8SQbxjAEzDLjPAPIgqAANxmTwcAh8QQ/iBQJqHFZT6N5x64IjokYRJh7w0CgAF6AKAFPyHwVSVVUohA6GZ+gIu28wekJT6JrqHgOwrQeV5QtINr6vJBIzoKupEBQBA/+KVQCIIJQ7i14gRQBQaEiMNgdwhF6eH3ASETLoD0DiNzDoTjJgzzDoX8JHAipXMogfcXGHoUUJiLTOcg1B0siKAcaEESAgR1BF/0kQFIJLgc/BFwqEa9UOACvGg/gkAHUGM8AEMOsLBIP4Cn0EICBAwHCDSPjBHJohYUy493EGBuGkNUIl8WcIA9c9NooQq+oCEDrVAEMMANA8EGDNkEAD8NcGQyTFCH5EYj/qR3RYmyIQtCRUGJBzEAWjQ3TUOkTIRxJjPxR8qtjnABnYYJEY/QiEJGlYaQCqIwCGATPbZj8hvsYa06GhowyA+QJ2ZhCo9y/UIUUG0jtQgJJbgOGrg3tyDgLcGXFpA8FVAwEMsuNfAQDhd7JYH2xQAp+0ESvyjYwEIKEqTLTHwkRgbpUBRdUQJA5Q6Ozkv/ggKmAgyDGU30USghywIxAEuRICQYARghwRgKJI4SKFvgsMg/vdIHQIgDwuihxjDwbM4kADH3TBjhyBBHyuugkMJCYnEADhQQHRqTAsnAoBgFN11gHhfB5ckILOyAWMJHBxE6ocnVKFcYXGWi6gygFUJDzVohwGD8y7jhBXij5GYlUDUDB+Pvb/WwWjSMQAsyjns4C8DE0TZmI+PyDMAZRUowgt5gMiYj4AIwRQt6HIRRIDuI805GQYQnU6PkAiM8RODyYLQg0WeRqyZmAACMKTotfhQTvPD4x5d2oXkWNQPEAfMEF6P9BIL9gVqKoN' $Zint_dll &= 'JN0RjHUnJ76YsQLd2NFOuWbCd1PcbKQCNOjCsgYmgLxLCnJzn+4TaUYCoM8tAhZhjgUIhdJ+BddSEByD/w8BdQm/290gNKDVBDEpYIaeVWGcAXw1g/gQAH8wO8d+EYvICCvPi/iQ0UiRCCmAFA++aQSLyjPAAIPpQXRFSXQ7Ekl1QYZpsq5jzQV8b+BhSj9BMGT9AeICdBUE3B4CrHUl0mJhb4QBQTfXq3kXBXEidQNPUBANIyypGvX04S7gFUBlNQwYEKNVBcJChKPIHU/+jRRbZxEAJCvRumlASRvOcUwYRpvRIcwkxgLrXqEAQBimTZAuRKeQVMdl42E4LwdBIOKp0AUSoijEVGyQP1R3UBay3hEBmB8LE24QC99gFHugBBPSMfM/9BTS63QR62AFLGI3Am2KRDwwCopUPC+pCGFeI7Q0gESHg1Q3lVfSD+JAV7I+YS4HwiZQE3LQWSkhRKcNAoUgahhhVAgxMDu07pHIWA3DIwRC6w6JrDwYBNjCy9OqA6JpQkI+AIFM/0I+wIpZETY+xyWaJMMGNgmRq6AGI3EFpgBhkRJ1FpDE7DAykHCULt4W4j4fAHz9K+4jsBigbgMBEEuEICI4EFXxLGAC+iSQMC6dIFYlUIKAKOUXehAaAoAoDAfKL2CHWPTiPrEkAlEPIe4jZLygyHR1IO4DB2YW4MkpniWRWEG0o0owD4x8YhLQaAQk0LW1GLwivBMMVFeR0EgBM6iPQNJ3UIuyYnwTA0KBgNi8INHIWyiyqIxbaDMSA/Lzq44EAC+aECR+MoJX0sgaEbLYJADQqBew+C1qBg8Ir9kPrwPTEBQDwzID0fKOIRQCSv9SX6BNkZm7ln3B2adyny9pUQOLLaYCYiyQP/HQ8iocgMCSA0Efwo0B0keRQFgAgwV0ProjU/0twyCuIwRiiAAJIQc+UHRhPxauspx0rrE61bxguxf9Acib/REPjkdLER7pwsg/UKBgTEhCXRgQY0IGFCKF' $Zint_dll &= 'KGYwQVCJgAG6+MkT5lZgZhzZBE72sbiwCAZvgQJ74RAMSUqNDFJNPieS8xMgV9e9rg0zM9S+qQOxyFCJFgIgTCQcixSNURDdAD0QiRCw9ocAbGUIxo7ht6ZIGMRCFTPbUOi3lluj3Sig9QcB3qnwBARh7aoe0IcWDOXcSCjgOhJKeOCtPoL4ZAQ1hI6HPzsQ2HzBPiHxQAm8eIWfAMDyDB2ReZcJoWBIszUQCRxAgcbtGTvCYkZytGzVEA+M6e4lUVtjrQoNQxiJiwI6oUEBx2olMqgTDAB0cYuDh1oRCgNxV+DPCQqAkCiRpMUC56cQF4UQFSTZXGf4ISA3oSANx+MQW9glAthmfDCHBxHvfAmE8EOSbSMBJ6Iw0QGAIFgi4z8h2pTgWQL5YhLwUQgRkgLA4Xg5Dj2Fro0HY3QQAiUxBf6oEHmoEGY+gJAq1AAQVk0MAMcAnAzgQ/IegSHszMoDAAobiqChKBWsJOQ4cCU1ATiDl3BBObEL9oP9UaqmDhEdRMEAJAwA48eicRSPwOALhuKXs0og4XqAjRDMk0UQrLEo6DgR9ivAIyBTB5HOYtMBOCptADmDIgggvePud/SZBkEK2CKSYbQB2V7nosIDW3UGAsYBKkHrIj+TYKyg9RgEGGKWmDGzXYGDFbA0CbKsWBTAbgAQgDPTPmO/oqxIGoBWVYDTyEeDA6iPAPPAqC1CEfo5DyCP0RpgoijMk/MHkKBI9BAQxAPD0zfvdAa6skAGNg1yTKjDShN5MJokIdYwRWYNpU1vEFBy73BwBHFHIMER+vHgyHlxDdHICy662uBSCIU8xtUS2kkg8FD4qSCREyF1gt5pbBvAZH6RgQDWrwFA0wMVPD6ATujoMRBUNEJY4FgDaLBYgh6nNiA0Rzc2UWE8EDCAjZvjOI4zwBaBkbAo3PngsXmLyokAV/z32cHhAysAyoPGBMHhCAMv2UWgMQB6hPADDDJ1DqKyohwMgEQcBKSQOPDFL1WE' $Zint_dll &= '3u/uFGVRR01lAQLo6kgAClURA1KNHEvo2jyQEbDsIyp1QMQcdTAXZWBVINCpAGEQHw/CEIPGA+nfw2YQAVgcARh+IyhgGvNxcPkXscEzbEFBwcME6FNZMe7BM2jQPLH8nwHSPAYcgyjoKgUQFODBBNXYwDGFrtEfk0GnXDehkP4xEF3QIRxBgZ0QDD6wEj0CjpAqWqNcBCoZRASxMsK8AUEwgJ1AUTRoXEBofkUgQDvDFibCuJ57iQdD4f0DI88RKpHwQDgHFhEujgPfQRG9AThR6IPmusECTJYk0NMjggA8gAfB5wPoamCACKEShkkiPIfoV0iQJHMkANXIc4V+xAMDU/hJMu9JMsQQpSE9AneUUSlNQkES+EEyoBAkZww5RcL4RYlFOlUCBG/pgjiRGoPdXdAZkU4SGYEhgF6MFJFRPEfod7U8EAoaecAQeZMKVHoqMpCfCjiwvtFugpZCq625AUvnICAIiVE9ycqQ4MsAfS+NjUXr/gswiiogqB/wwEhvlQdzVxCzHxMgK65LIXMJBHTDYBBOtNNXswQG5Uk7zheyiAvihhFNepUAbBoW+LHYvAhFkAgE4awASXX1g/0x77emIDUahiaDkKRwawofEKMiFBjAug4x+QCy09xIA90nsLD4kchJ+9cHsc5H4VMBIJEj4aUQThWBAQSYiBA0iH/ABy1EaLQHyYP6BrueEH8MkE4AgFGgnAD6AXUdwIeUEMwQHF4g1MhrxpAAMecAMr+KGqlMi02Bjh/0wDjwBOHvCQ8C8iKwI+znsiLs2AAotooLgJ0AIDMMtA0g8OIPXAKSBzJoDLI0vwpSx655SBSL2Y1BAv7B4wWNFG71AUCwAj1gnWScAJQczJKv4YQZfiytAteLEIvpiUIIcEXumwIxIOBtBAJOdfiZvjFNEMcBIPf+TYlX4LYQAEQILjP2i/iNFADAjSyAweUCjScEUJKZEA2eBZAroC0xcM/KLaMYG4YNgctKSyABkcsO' $Zint_dll &= 'AS3MEBBol04RKhEBBzT5Bbs+IetMMWKQwSgkWxUmVOdLXW8YUjJ1p5ww+LAY54EgegRwMEEQprHQl6G8eIVPMKD84GvJFA+vbsF30hCrYyAD3hAx3ADh3QaU48SCBrEeA8JGRhESEqAotBkodaMoAIISIBQPhUDnWDAYLQYQBjh+N944omcQagiA2yn4cDm1qHzPDWG2PeYI0UZw654WueUTZk7CMTgHET5AFTONjBjj5QniBIYUAScwA8K1AYkTD6/QA0Dq5WHQA/qLx7+trTD/rTD6hR2tYMdxAK1+ePHbCvOPA1rvQkglJY088p8xcF0H0loEkiA8gO7bA7FYfP8NcVsEIu/lfUUAxgkAchnRbVLMCPILQMmBzQK6WReAVpUQTDBQrFRn35eZJ1InspYIof9AP/RQRsMOQbTv0CHTHhxkDCW0k4ogi+iDW3kgiwZQaMzCMLGzBhJhTPC0swbZVLc9OAehaw0KMSpr0SPxrAmxPzQREwRsAgs6rdHIAhRcTgCYZxCEP4DulKgGwF9H/lTHPfN/sPP94FgQpWHYCD44wa8XFF69UALwBQihZQGOqiCATrY8ygki/gU7/TZcwOgLwlArKAWA+UV1HhiNBL7mbGEuEjPSiwhMhEBqnlRA0cQSCAhS6zuNDL7egxFIB1AzwItUjHSCQFAFf4wP6x2NMBS+nUAW4UBECTSDlIwXDEXwEYV+ddoMYySUDXyIjQCcouQOpSqtwIMGi+hBEdImAuDAAshLARezPxGfGBDCoStAEcHiinHQSIvh0xEAsAHS4AgGQjth1VJOcJIBA3EUGGzIIUT4aofxwIjQnrC+wG8IGyFDfhxQ9mHHAZock7jq6cgRdHJ+HD9wxhQx8AYiyBEo1fobwQEUghwAIshhJIIcsAUiyBGQVQiEgCLIAXTgrrwRpjoECSCSHEIJJleAeS99LYIc8w8GIcjBeXgwFAMjyPEMytYQ4/8sfAt+F3Bg6CIwFMM8QThg' $Zint_dll &= 'hEM3wyg8YThghkNXw4MwyP9/9MBVCXwJg/ggCX+OJAAzPAh8I8+XLk0hVQ01BfZXN/4wii4MOrK7oSG7GyawZMEAQkE7EosQBM0X/iXTC3rIQlQQAcQ/cpqRoeIbiiAEEZbSkMCjd1dQwAKCSBChoBnrzp2pbj4XvRCfxRAVjjwAEQCCg0ARUxfgBQvPfPU7Xl+GneqzGqpyMudrBIUYZ+RmDBAlEkwnQf0Cfx5A3lcibq4k4i1hqwDbihRWYMAhVIUfhd50DppXgX7vE2x6wePDizKfASzACx6zJB4btlbqIJCK8MQRoeFhKFbu4CH0IH4BO8t0BzkQ8wDrAokCgzr/dKcOPgFiBTZ8yQbFFgngg/sBhu/6MMaKDoR63NAzwACgE03XoIgUAIRAmFxHH0rgNbyC/m4WBhB5IhAv0SCNT/880+YhJAN8EW/sIMpSAVEFsOg+3V+43sgSFWH8GSgPzBEEKDBxFAzmXQPHtlCghRAYA3DHDSZ+uKU6PATAi9HSphRgthLwDR2EMocpYAgCXvbSIsqI/qMd5Sw8PHpKsdhbyyG0OL4P0MhwFJBYSBQ1EzvGMn5n53wg/j6gSGB5DyTY7lIiPBA19qlhwQMhjQxC/1ItEE6wWNwPEUyvZytWLbSSAgQKRsYJAVG39+wUAM4MIDgLMi2A3SNh6jwEGHyZO7W5Hn4GcIkcIrXa6ReD+DV9oBZPgBKANQhMPIgvUXRXIQQVnOZCUEJ5jQF1aIswEMkAck4BIP9+TiJxAEDHggAJ9QFWTwJwgj0hwPOD+Hv9MBxa5/0gFBjQD7YAAxH/DFAJAPAA6RDt8AMAh/cNAM9ACy8A1WG9ET3X4RB8DV09KyIRfxHNPTK6VHDVI1PF3iND3iO5DQPhPRL/kfEP8TAQA1jxFLBZAZszgdjHboVe5kNuEIvGBYPoOXQJrgNAp2IPeF4KSJPI5hItIgLQGBTQKi8MIShA0Jvg5QsWXr5wIKFIpBDg6GsG' $Zint_dll &= '5j8ADMAtPO8EMTPJV4sGihyK5NzSAdDdIOYEHosAB4PiP8HgBgsAwjPSiQeLBl8FipQI5N18IHySEHGESx3T+CNwP9DLkujx6RcAhdurbBGLKCFWq+DlArYxQC1TFiOaEBDqQTA3bwMziH/BQFehUB3gZRJyvyFrDX+UA4cRzgLie+va4zBjDyIxBrKoEkTBABA5N35eggzCaIECigQeg8Agq8AQUFEZRugL6hdxCQOxAy8xETF9CY0CtgjAUGcdSxDrbR4sivGgxgB0Bz2GygFypyRIG4lFAIsHdkKOQqAwBDjAJ0Edrm6QWPUwKwuDINAVHLM+MMhiLXYv0GWQNn8OcXsNwqgqchfkcJCz3CcfIDkgVotXHiJXsq8gLwT+P8AQtRKOTTAjAePUFhY0AAONQov2iLEInR3gMpcMiBIPAIEdoPMAEOsBSUbThyDehcEjD4QTJxDy6nMgkhzf7zDYF2JvkSZAInQH8RFQ6zGcgM1ARgKhDQ72D7EO4toFQEKcDmfxMD0FeBEQY4VuWhYWEYSC3aF3FZsT1UABdJYnIUcWP4YREgHIVKS7FlHoxiGhKBFW6LiiI4EdAVA4IHw1I4Xt3PAwshUBoDELa+kwXm0CkfI7IxVBOlcIURIjFgdSQFET4doeCRBS6HhZEFsE0QBgLNEwQUFAdUmLQwoEUOhYsqbDUh0RhYOulA5jgA3pIAF0JDuF7dpTItAP3YDkSQYT1GD+rQbPliFB9gDRAIb16qMQdRvAwG4/oFkHU1eL2I1RKASLmrTwr54PevwLwO7aIPUoA/GDwgxLA3XlX4vGW0YLIMlQyH7P0q8A0HMlGFF38EvUoSkqM8k94ygRD5QcwYPBKpAgbCQ6CgG9CBC/qJHosahFAJDoRbAohZBoBYSgDCz+AX46jVAADFWNQRROi9oAjUj4iyuJKYsAawSJaQSLWwgEiVkIiwhKX9CwCIQ0ZwJhsPNMJ5AIhNMTMAjM4FT3TP+9DuET' $Zint_dll &= 'gJYBYHobD1Y/4FfgMZiPIH0FkR+9QXySRDCYf3DH4EkATO3rngRAJ35pMAQDSAzIE/tMxRH8p44LeQADefAA/0AwYTxFEzJ9YN9I+KfaEhSJdeD6hJDoSAtEh1BN/pZkaf8FXQiJZQTsiXXwi7JQMgieEJBYxL1ZEgGrIk1ojd6KgdC4e7MA4j0Xx6dmEIFbtzBJiU34dSINR7FaK8LHDaNOUI1luBZ+5BDYB+Fqagd/PmJrnSBU8aghfles92MWk1hEL78ICYsDdSpigkLnQk6+47UgEJFw5GlhSHspEZ6FsEg2md2BPY2D9RFXUQFQUol95OiLI38grEYCAO8rAFZNAikiv8xY4rEC0Tjl4gP6ZHNwKVTCRLJ3cL/YRy7PSFf1wMICUyFXxG1FABKOkowAhUbf03ArAOcdCQM8BX6qBrEtCaEdE9b9QHwPAAAx2IdP8TCIOoUSoaZrD+QQUEUcNVgeIwU1hV7sUQI7oRBmwB+yEa6DgEudBVBuwKuIAVCBw66dwsgCU8aunZwU1thH7K1n9Rh/QQcvCyDrWY1B9i0BLHcdHQHsHQFUM7Q4UEd+771hL7AC4QeD9woQ/IX2dTAZRauhIHtgtQABRpVwB1AxBT4rAg7Ar1wR+iUz4JdwXEQPLW8mNBAgigBF8It9AeyNTehQi0WelQEQtdjEIKUWcIUqlhgI3ngCYqEHdWTGWoPJEADwkAaCYHwWXcLkoG8JjUXoUv9qEU1U/A0ADPYrcFU6sbxxCm8nVopD99Ay3AQXKyJl0VqgE1/Yx25eGS4Ci03wjVXoBy0x/IUHLSFqA1dRuieQVggDPiwD0W3RZFFEj0QXAoVkTBsmyo8AZXU1JYI+JuQnEOsVMGGK9tAeQRJsrijCgE4GshdgwgWJRRCJCJCtOYmQFLG4hJGogISxOLl7CgJJEYtIixYrkYhIEYtTBKgfGhGLtR2JDzUiiwiBXfmNIgpfKjIDXiCFiGRMYFlmQIHvTwaT' $Zint_dll &= 'ch6idwlNGBBSUGk4wuOw3zOwAZBuiR18RJ+/0EWRjEgHqxFn0eKCsl7n0DDAfRx8ehctALBeRQr3BZqBAOs4cF/QA3xKDhtwXwCJfeUjIVEB9pSw8UCYOYcDc2wOMZnl4v8g9CaGP7CuEHSqEJTnFp/nFj/I4E82x5Ln/E0QvzDYx4FQwHdCA+HzCekVRQjEt70Q0XcDM/bVJIl1QPjhBIl1DA+HaantNDztFE22E9CY6x4YgL1AjUH3g/gLDy6HRJBDBhkVCGrko0DoWACJRQzpZ+IRg30Z9AN1N90QsjqRXnFnAwIAj5suuujSqETn74c1dQDG+pE49gVCJAB1v90YMQkT0fgryoR7GSFQK8pJlQoDg0Dp5jHgd7AYn54MajsQjVNXEPfZiU0MS+n+uFLEEN6R/kwHkQ1wEVCn4J0i6U4EwQbeBSGVvp0V0uf2MYSHNppRx/C3CK04OQZx1AVBqZOMFG6aQne20hSxGI0FxHBAps7rS/ffQOtHqTHAMjHwBRox8AiL8NEEocoEMxHyAGWFxuNMgJQOHLAD/4EHs6iHM0X0DTvID4yShXEmA7G7mQqSUIQ/gO/LCVCLlkkA8byCHAo1YK1IKaYh1ympIBuLz2NoMM4SjbQZWLH4PDkGglBhsR5RX3ClDwBclqgRVHQAAvG0g98HayYhBRaLTfRWXgIAxGak0q2hnspRxR4VAxSIJey4I8F1Aaa18OBIRq7ZEbcdEkCQI4gYD4yzEkPR+JIgMggg0QSPPm6ggO9CAJJt4K0xNwUiljAAnNikwc63Z9IJtywQ7OYJEVwq2xPHYRSEEE0i6B6lAOXSzkVv4AL7jQzANIvGSi5AGvlCLsOLo6jlYwfrGckwi00Jz51FEm7vlSFzABApBIrpEMS2uhAhwO6nmCfRBz8pggCLig9yMMcEqmwUKTLUV11A/uCI0ynRHKIocACLdfgVAYs0MSDgvIPch5CoyybraQh2L0AliyUji7MUErCE' $Zint_dll &= 'MQBvXwxiQQCCPGNMxxeYr20YdVkcRQsr6riTVJCmqwEQDwiJReDVKpKj7JUAUiWysG6wKKRpCgx4/MMNMtDEvX5wXGTbEBK6wZ6KcK4Jkgbg5RoKCqQCvm4X1w4Ua9AO2K63De0A63NT1fAzakFQDYEuXw0STiHpGhCBwykcjboUITXuIoB37yFemoU+aWcdUKakAwQuH3BI7wAQFfCtDAPNgg4MyFbmfAR3zYIMwZKq8QAQQcoMgCIPAOHOAV5FHLDAQEzBEExhojAPABHGAMwMgF3KAPQMgEPPMN4ssMoQQSywxAGIHMAQ/SzFGCzJVyzhG7fc48AQ677ro0AQewhxZhAAJ18Jwp2hywRy8pXhoCKIYoUXVOuCciAOESiAYmAp8KEYBqDhTgQfbkD+LUClvhFel6BHQYsE8TvGfS/CXcCDwLDj35eBAf7vEFMHovB7eRkx/W+WoAMQNJgPwQc+CCwFIckKPXpTwdcs2QJwVVYtAFguL3D8DQWBnQuARSDWJAzGZtALwPJAmLX6RAgyJm4Gq0MSjUOuCFAuigAiUeFeE7j+7jUCigH339FQRv8CE5ES6ZsQEDDh0BLme9khMLHmDZFeCkOGHJG+h9kGJQABRwcQfgmA3AT0nRCStXc8DRZHEl4HsX5GEpgiJ7HeRRKKF7E+1VgypC+pAHdLAQDwAUC20So6JCFzITAkIXIgJv8k4VMh3ykg8lziQxYbPBE+ZPOHDSGszigWQOBr2OktfwW+ML6uGOHpLI1UhDBjSN6YoSYobCRw+xMgHixwfJkM4R8DEbmheQByhEIFARiFyYvyfFSelqExA7xLFr/EEFA1EK8Bxpn3+4vDK6QAtN8DQLN+0kiRAwp5VZBIxAizIgwyMAwqjDRJebDIiq4hQS3FAhsKIA+Fes2CAiGCFr6OyRH6DLChUgMRNIvRRihBl/BbBcGykv9cDbRutQWUoVSIIs2nXQOUQmtAxAWnMqBdb2E2Zw1iRhoC' $Zint_dll &= 'FEp18T0A0QkjhsCeGGIpjgGa15EvAQfz7TiwtQGSIAByPwKGC4wVEQLAi+oPjpsxGoycTSoz2ze6MR0bi9RQjRRE7cYCwkiCTwgr1YBZC3SVAMHmBQNP9e4oQCfidhSLuRB34hCuTgJQ5WV0AAGlpoAQhW6Q7tEoM8lQMGaLnpPAOAPOM9JFUM5Zw8By4BED4OKeQ7ypHgELxoQE640QMEBbgx6jwDhUEFEJUFcJIZ8DrZWQxpVQoPxQCfUQCW9AtBcJbzDwwKjsG4P5UgSR8As7kYBPApXwBhWelfAGBHUhD+gxNguB/gPadeeBIMzWEgCSRV/wigrCPgZQEwBsTMiAGzFhQSZZYGgDfjeAvPzCEVOHIi4GmgEyChyy3DhDG3EzCLaeCIXooJsbvz4R02OnEZJOQbG4FwEAZChQH8Ah5DvAQa5R4t4EQEJ25gGS61UDCkWRGB4OAA7yFVJX+6UIklOPQCIUJABCIgsgg/0DopTQHoE0hQEh6YQCgcO37CAECV94EQOhbo1BUrtB8lCIqKoX7g0c5pgRE8RkDwreXRAqAMko9iUfi4BdIUkwU1YPUFFoxMIx5rUANl2jbRCCPuBwmQ8AQcoAsakM4MsAywwAp++iBNXHbkLLbhIE7jSwzkX1HNT1z0EJDMARDDHBAFUsLGTDAEAspMQAVFQs5MWLaAwwyA54oQ2BUjXTvlOcuMFGwsAAKnFQpOERCQXgnjVw4wMSUcOhViSFrvmdFrGIrWU6zn8gYK4XCIODWhB0AgED7spBIMcL4JKl4C8E074R0enzqxMKyWbzq05pkKYlEDMI/40sNqcdIFQL/90OmaKuMzCqJqBfJ4dMICMvIkFAELIa0Lxo3ZgoAfR95g2RMRgsYBYAhyEIMJLqElWgNHjsQOxFEGIAQVIHK+cbjX6iVlwR9FECRNNIIF4IQQAz9rgJyz2NZgCLMYPB/vfuAx7WvqA1C56Iog4gGgUQQBBhthgkoOAGT2YH' $Zint_dll &= 'iVECdc1pKDapsfABESx9F76PMAhcNPhu4QcPB4PCDopXo5IaoQczTRGiOn1A/XEBsli85dALHBzDi8UY4le1IkCxE1zgJ7AYPPwbA4J7VxsSpKzpJIPhD9P4cnBAWMZi5TUSbEwS99jQBWD+5IJgigBTi10M6BY8IBY+Wg4TPMIbBB/sjzDQaDQgwjMLgwPXXnSjWR4QC0wQhY9iETkcxg8Q6CEN1IlF1IuJgjxCEh7gvwRN2Apc0MWAYUwAIcUL0hoAyJODEFPHsOs8FovP0wD7CBwQR4P/CAV85Yt9DM4bgKBWDQB9DHzRi03YUUBWbwMQVfiNhfj5sX7hccwh21IRx0X4FR0X6H/TjhbQZPUdrjegQQCVkhhUVybdB38OKNZoxSZlDUBi4RDpfEAyASTZkiYyHhiDASRODpGuBSRkHUCi5hDpSUAwk2yqahqfhkTAkD4IKKFEEIW/E04xBqSiCSHzphAGvgAkqhCi5QAkDkCiCyH9yCLRDSR2y5G+1AeRDyXlG+mTBBIVg/giQDIBFMpAUuYCJBKFkZ4LJDpAAlcBFC4DYSIN+EYPn4cm0mCRWMVw3iEiVADnHTLnRRMSHbHtArHu9xYQQRM+zsABsA4XE0ETa0YQ62LhJRE08SQGQjWI70EjgYo5ALBuNIh/QiOG0kiCM4hvQyMDZBDrDCqD+Eg0MhkFsc6RMYivRSNu8LHukD6BxZY+EiLPAneKEHUISMGOhrFtDkFRhEx0YFcnQ4QckFhFnjhxCuL1B4Q3MRAcRVBFdEFTJMfAAeofYLsOK9bmI5AI0QS+8oopUdHIW8sdduFmCITCEqGeCn4rUGh/8eDIKU0QlWzhbATC3kA4YwXCv0jYqFQXizIeA8a+MhGR12BTCHIToAUvNwHyE2AYId4S0EUddODoLTH/i8dyE2EPD6Ua62Qv9xMgmERRhBmLwuqg1AbjOAHHvEGpfAb/Cf9JeaaDXhBF8BZVIIGU2OQNHg+FL6AQ' $Zint_dll &= 'iyR19F4B0NEYwLJofSk48QONVhdpESS9AuruwBkSQo2EuSID8hYvEcP6rw8B868PVFRzIF0iD74hiNixAw++kPrNE8TJAIos4IvI4cUAiU1e6CTgQwIPQDCiE2VJJIsN+g+OUWop8t4JUSA4ISed/LEAjRTXfRHjdRAYAZFYBW6kEl3kjQzsLRqNBMLjseKsBsEdNI/wtQLWE3B5A2HiEGoKUAMA9+jk3///UIsIQ/wDxrQzkyx1XWyh9BBqRn1QjAclDppAoGFMWMAXWhPkrTVBILZOLgBFThP1EE2+EbFjB7JYTA6GDwC1OJAGX6CWBtWvDAFpYDIT8PgA4hsBafAIMGlQKEMEbfAFDm3wAgR1K6bIgID8Bdve+hLES4v3SkdQD5k8UQ8iCwp2PSAvMUAVgBEjVCidWFVA7VcDyAsvMfZE4C0jBd4S4lzE8EgesnIKqC4BywiLXeSIMnggzLes/M4a0rCADnTWGQI0zSPTdIUuKCFH46cRwZkHehJj0wMI/DlN7BzBntP0hc4R6FMtEd/bER+2IU4vkA5AM5AtbAAeeACkiA+LkczRHXKwVsTdd5DN8MC4d60oESLl8RUmISVhImIwITAEqmoSImSNFFJeEsDvJZGNOaXs6QjOLeSbgLi0ogHAgD7IN+AyAb42cLUI5O+c8AHYwfsDjUPWqm7gnBBXrJA7pR/hnBDwWfTOCcFOAc4JWcWQHBCqnXDYYQN+MIv+1gkCYA/IcxNTF6GLqJwgztP6/pZQxYBAxOB/GAh849IJMsyHVF1GEDVlnCD8jYU5TOXGCcMR5SuFUCRw6p4w/PkU6MP6SoAMiu5Cg5EIKvkOQgsJUHAr458IIHSxiQbj0djJGP8JYLVsZLSeADHXGnbtrhtNhxMwEIld9JJvMcyHMMCwjVS3jyOSS3BwV/QkWRQMARBKQWUEApKqKLHe46BA6zRSBrVSDQJ7kSEiIOAHEhkgwH/EGeF1DyBgRizWDOQ8JQ+O' $Zint_dll &= 'mNpJ0dibGuEXEISd6IehBIsPA8E2KeKSArauwGpLIGG2BHDSQSCKghAk08IEZJNilZkV6zBmAgApGY0UAZErpEnYWAgRaZVSlI3EkZQn+kkcYaz1ACvGIfgPhbZwERixraxLEIixOK1L8ART034xjPTlIK4EUSLhShD8rxCxxosidRDmB7DYhzC7CXNI36GhXARWBJzEQF4ZUURh0MgBNDBtPgAGtqCMkljVtVCrKRVV9I1Tj5oEUtkJ0chxlgdiIgTyYvqgdgDKGiBuEL1UUwoQpeOtAHUgylly3wbfCCSZL2CAegiQExAdPqgOAECHpERXolQnJu27A2kFQu6qQaSgHQTgkt6pUAjl3BSUHUUQ60NAQ4kQVeQDwWBMDZlVE+sgUgcQATAQXGi0DDkxEImEoNIocACm+0EQpRaBhhpzgO4PlO03RBCNSgGFySR8P1IY0FhLLXkBHosOUHol8HwTonQCQiel5qt0AsfY4DQwcOFAAB6ZAQ3aKwCFO1BqEmgpB/oDAOiefRBOA2PuAGkrHgOAFzECQ1BH7zFAxhIDMTEMOI7gYS8QdQ3si9pHUYcPNIoMAXSIDJFJcLiiB1EE38hhpyB6D2BeORUD84mmD/BYZJEUoVFSB+GXC45sfvpCoYcEJlXc4Q2Jlx/FMJJLUGUt1AX9JlIuTUAT3qEgcEDBWQYKArWMEABBzQBV3QxgzgDvDIDPAAcBCQEQCgzgo3beVICoOgKNeAHWiXBsXNREPhAa9HgnoQaq/wHSRZCQWEa9aP0tiTI6PRHoqwZF8IoDPDHaagBxXIRt8hiJdciJAnXQx0Xgbk4GIQahuBQgPgl0HTrIiIcIEDd1UTTxoCbQMIV+2mtdJB6VsCQ4EQtdFFJTbp3ykgGg1QGE+mfCr/gU4NUJMFMjdU9sMIA+wQZgAykxJumiEMCTU6cgALgXAPNA+EYp0mW4IAphTIABoy8xk44g/BAPhEYOm9GEMRicABSVzsICahAq' $Zint_dll &= 'YhCCPtIQA4Wue+3MDiNPAW0AgPkxeQBSwrCcACD5GBgxPQC+Ch4xtghBoHiEwBMjGA5/CRIwdQc3lSHrIfuNEMcwRciqPBIPATWllsAr5QlnSQCtMRkBHmJAOAxs6RkiGVCFETUoDERgJYXGz1JdB5EuRYoXx800G3bNBM8mi/T/wBCL/jkH7zqQM0DAOzcgilQDAkCIEFQO/u0KQTvRfoAO2jAgsFWHvggtaKgB/zPbO9E3WRCJAFXEiX3siV3MgqZK4HeiSBAjugkHATxafwNH6w4KnACUoMAJBf9F3OsBWENjQxDfoKFWBs//uZSCANJHTzwGxCCw+JCflAc/XQRychohmgloEADDR8CT41dgfCygMpSxbvUF/wF8CoAxPjDia0AVg///WmBwaKgQ+gEPhPkpTmaw9wSRKfYQXRS1A2UWOdYRHqptC8wtA0rGDVDkfxF1AkGLTdwrz3UCGrycFMEJVTTaGGCCIDeFIdJ1dCOAPl9Nh6OeQpKRclLEDwQE58UwomgAfpIFsdhELKYWeQYCO/p9VIonIs0NSwCNdwI78n0XgAJ8DwEydRAYIAAW4wEVw4Ug6yqNdwSidDBCFzh1HHQBg7hTIvEwAGMCHg8ENPC7phBbPBBiCaBwBuiD6QAEdDZJdBxKX1CXA1sg9NQYIy8RiX3Y61ci6UE4WLvQHdV/cSsLQVDXYLZY8QkuYZa4UEWxfqKXJxz6VhEKwIDc2EdxrRppVQZ1+ADGRAUUAI1FFAxQ/xVIknihmwIEgxr/H33yFmAUAvhSoQA1goZekIDuSJ1OoIU/SP/eNtDEbwQBBVfoZKdY0BZAYFUQgK4pDwOeG6CIBrkAVfypDQUJah/ohIijcIUYdHcwwAGab0BPBw++IgwwKuoQhQ5GLjCY+hXRxK3HAYjQKDcAU0eW6DB5AhIkVwGYkK91ByFFOlBT0GCgVhC1XqJLGmSQA0iGwQRqBlHrC7bDChAR2QAFEQJ1IKUvDCQ+' $Zint_dll &= 'RmRAR+D4CabHakXT3RCJBvCuA+DU7QAFNqUfF/UOUFZRaKCM3Ywc6y/JH0uhEPAzDPbGBBrdH9E/dBUhi0WaNQAEhUYIjAQIi0XIM0oSELAYUERdh2AMsHUpAwNRB9EntAUMO3XYAHUFA3Xo6weKAhQOiBQHR4kIRgg78nznKQHGBAeB6gURNPiPogtYBIDxV6BraB1uGjCY76ZQd5CLxwTrxoAQFpKLRgJ0BblgGIArmBE8+WDNAK5t8U93BPidCkIeNdXYBC6VEXUFFSywVgkiHPrrArI4BRSxWIVg8TcU+CD7qODaf1gocKAe0oFUN7SoVPQGDVLFkTrA/9QBUVX/jwthRwejkhCxHRFMEKr6FXUPQPhvK1E1Ae+eByZXIxB85C4JYI2d/wgw/oBaW9BEDj3nK+FnCllPcRAxg/8GMH8sWg8QjCGFzgEtKJYpQFDoItKu6PMP6N8F/H4tUIPH/AJTV2oA6xiNAeQBU2oHUOjwz54OAMIAiAuNVEgSUjDo8Bp0ok0gTRhJdAArSXQaSXU5i3ZNA9MQxh7wIweBbtYBYSIdrtOnEApAsOyEEWYFQDO9ngo+swgfGlAlUkKg0ye08Gli2pRWJaeTBUeDfdBQAW1pZiVhg33gboNYQqAGgP6EZcRgVMEqBOg6UOORA0UR/HzrLQnGBB6iA2BAV7JYxGHOEIIdshiAsCgQBYXGadkhD1ZTaIggkmsQEXBoA4HvHGJuPWGCHwrSYM8USXRNGEkPhYNWEmBAMJgf5uQXCocxEsOD+Wwo8MSGEoH5L4wSNIARNCA5GyXx4PjUJhGY7zUZD12PgnGBixJfYhAVsGIowO0iHyhghwLefhEEP/DHtYaLEQFAO3CwQz0tgHtYKOA2GXGRWfAOBVkw/2Ggwv1CVt6R9EA4an0uhWqCSkcTD4CTAIDTBgP2jAJDcSCB+VJdQQMYQQP/SRw0gBE08GsWQQMYQQP/U4ES3EEz+ycQNIARNHBRE/FO' $Zint_dll &= 'AxhBA0ixCDSAETSgh08zGEEahQwPD94guN0oETYEAggKOtEWgEQerygDhwJwmfEQJvJBAxhxHwhBMxhBAxhhMRhBA/QODUEDGEEDAGERZbjvGJERlDiIhgJ7MRBFELUw/xjRDm7NGjSAETSw3SFBA9MYQQNQNFGAixH/PBAGg+T4g+yeumDRBsZkV/or5MIRgebqHwCYB1DgNOiMb0QXgBS0VAm7GOx+Jo00koBSJjAgP+iP8neAezkAc/PIA4MDlwAwgf5Ah6UAfhuB/vtkEFhwCQAzEegfhgMPj9MaEn6cIrBYRdGIFOBgINOgkgUAIZsLwcyNRD7AL6kQXkvAgJuHh4cH7Okc7zBSg/oeiRZ+GwbHBq4pIe8JDE+cEArxkWPA7bQLd5xgX5wQhWw+kACA7+GHs+gwmM/h0cditgKwoF4ViQap5EAB7FTA8/fs3xgUHn89h8EQBUEiiw6RyvKw8mwcJYPpAy8JoIli2tJII+WpEgRyBuCAbd4EIQ9fHq4Q9DRVhd6TRWXuAua+4ecEYnQw4HcrShSmjHA84JQTiQalgt4yrqryAOhrKzAPwBD9ixoQHQx8KVofYBUpVx6Q0VcfIEAg1hD55TWFDlkFHgrydAsTAPDQCYzURTMSrOirPrOCq3cRAX/r3lMhByvGCDHyYwkz3AtwVQGDKaIqeC1r+pAhAIHsxMc4oNQqvCTYKKARHRhgqucGPLamBLA41wTi/DYc8V6t4vEdkNAJcIWuOcIEA6uSEadmHyFSClFX6LTBlgaQEkCzCD+z3VMA6HEEdfTmBBA70zB+Vd+1MaKUgTKID+P0t3swSuJiWWlu65QXMdyNSA4NAoB4hKhsDO1mMBBRR10udhUsdXQckCxTFb4wUkeTDjCTzANEMCo+UEd7TgPAi1r7ZEFJBopZgMMGKKasQ0UHK/o8MJ8KAQFBd3G1FxhBJIUuyacTJ6K3FXeRIP5aYF0PZVc2aPRNBDtRYDTmffFhCcFA' $Zint_dll &= 'cLAT3NdSdjEjHaBIRcAjhQbPecPXgBHrUTBAjRQPvOGoAn3TagljckOFKAEFG+UQBmQzMej/YvchdATex2HPAIMtBUhTUOhINtnRJsBYUUL3s2hCAzUIi/AiD69WYWCFRt4NcR0yMF8LsOPdZ2FOBwxMHDxROTHKCoAw1LDjzafuj4NnlTAwijOQ1B8CgaLmFQ4r8LraIbbvTRwwgL94LakFJAEPr9ZS/xWIxTz/tlzhOgG3dREZGJYO1AjgPUvvK3CCyVVWV1DojVI+IY1qZxvqulvieHspstxIELRtZj/LjXztAMbH4RVuVxY0qm4xxQ+REWDdAfYOfjWLtNE57i+y3ghB2xdz2A8hQITbAhGeYOB+BtP1JddlEvh1g6/K/kRrBQYFMLABYNEBYCZhQUdCM2AwPJA/YC06Bjzw0MNoZj431RVaYqDsA3sG2TCQtvjcSNdukxI6auESbK6aGNL76BLdEIpIQCiE0BvSjADRoh4TSSF19u5n0Uik878kEATKy4y80lgUEI2OgBARmD47EIFUV6+eDXIrCyHOHPlij1BIAiCuXz8w0eppUuiLBDciENEFxi+LznEUAirm0JHQHvGvAMNTKP3tBGNnJn0dsiSAf8DgF7aIXI3SEjAtDlgToEhEsEMITUd4/xSBsmicKT8Gg8NC/r4DwGQUsGg9BfvKltvQGhENLh8LxWaWEA230i5hbQAzBEHYjYQafHRBAH0CKQTezCSuFxRGrr+JEPEO+LOXG5G5kxcB0nA0ELwT1dFJ4IQWxOE1gQQPjb4ekNKM6z9gBWHmAh0J5ydCYgcwkB6RyUAwk+iqQikHFyHZXjoE0JF47QvNVQEUOgPQO9QI4qUQzksAmBSwA1+3UfhfZ3Cx2FwUZTAClRDowDeQITkvEI1I/jvxIHUshICyuBwYDgwG5gyQNJjMH0SHdCGOF4vN1CBVhH7FiNwvyLCCHLINgwxb+LaEQBAKQI0GYgRBXZGNA3UtxxwQ' $Zint_dll &= 'KIvTAzOisHGxgsznlgXLD6/TDPfZ0eGVHFpzsQMP0KdS+M9n0sgApBMKMcijCFBX8YkfV1bFAP69YiMwLnQyHwti4i6gCQvHAkpuQAN8AAQ7+3y6RoPHGAOL1mkASABSaC/AZ7Kz3yeSBF8gF5wESAuNDBuDxkUQIO8CksUC0kdQ+J/St6uzD0f+msCYaNsDBDv7D4yBHLCIDNgD8fC6vEinyE/RyKRoAhIYSUoPrwvDx0QQOmhyrNcsQtWsqwNHEE+dICrYYb8sJALJwWEwCOyvdtCfYFQHV+BeDjB9HREKAKRmYNVYJySrBXIEQAhQaGGKNkBcJQBYagVJjULgzDWzHvLmGcFEQjdI3EKF5OgCUJpNAC1xbDO41hUBpDZghSS7AFQAPYMJQQtcVIClJmDVaYYPUFJcMYYiUQCgNnwjwTkHC0GClAi0GQHxHAzEoxYDYFUB43wWg8Q4g6PwAMCtEsriclWY3AfSSGBEMOBckniDNIiCjC/bFxyjeiEr+AMw1+seCOGjEBSF0n0SHY14MvQQeA4bUwB5BU+Dz/hHu4Sk8j2wvKVJDgIrHs4PvukDNvcgGxGuEDEAINxI4/+VSBOIbwB++UsSCOLdDbLjonYwxdN4pIkEnrDQLxBdoGagCiQBQKIEFAVAIgAKJDlm0ELVaOSvpkEwBZUswAQlTNCoYPSvNgBUFNQhcI0EQBAAFAPU1QXABF0CTPEef2CWC5AyABR33sdHINmTvfEH/b1BH54QvRE2T/6bMxFAoAkUvQFXumkAUkCRmlEOwt8bVxcIGQONTv1TUUADRAYUAo1W/lNSu0AzRV29MUzy0xsYJdLm0htf0KFF0aHSG2HUG2FwZVWFvm/kFL0BTtu9EUChDhS9AVa9EUBhlK02LlSNR31ETFFczwQFFX0kQEFLHQJI0J0SARSj1NVHxBSPkHEFADkDQOEHKX30Ez1XY0vlEBEDBlNQUIAkWzhI0h8d0DV00g5UdKk30Q6h' $Zint_dll &= 'pQftEEAiUBxj5NUfPxV/FwZBPcURTNKNffYFUkjIDCnFcYHsGPTRCi+PMXJKobUROBzQaIQkcPoWknnPM4vYDyqvx6IWQng0IAJlXxnoA+6DAgBqAeb58DEYwXAVhe7PA1YVMNMOfcoKoRIrvFUgM8k77gCLxX0OihQ4AwDDiFQMGEE7xjt88ikAY54RI04QUFOQEG81EYwONJBJKOCoLlIygb6I0dxnpNgBSSGEFBeMEi1BScJDAy4ZYKGIgDHYjyBvCX0GiARcMgLrDhSAvx6BoIiBBIgcMiUVkKPPIMtIfkmAXLSz/vPA6MUVKguTLVEw4Ps+xy1BGgF8E4YdoW8HXgprIR5Frp4BwQd3IIH6GLvcEEgRNqagb+GBAg+fwARIXoPgLx4dMKgP4PPACYx0NQgecDHzb7bIU+TtESGNDBiyc+3X4FwIEDP/QHaXsHP9Nw+y6Oj5G1+D4X+DIfllPj6QT1Z3IlUXmfodYbYjVwccQKcSDyFkRwJAZjsMSFI30O41rIhIRALaOtCwoIhYBBe2QVC/XwqN7tMNW/cREgpB4Q1OII0UAkAz9lCLnzKjE2lAPzgeEHVtAjQnAgGCKD8a6BTGXRcIPSyTdiLg9+EPktQw/iDqSBIwi4dPUxBK3rFj/EAI1bkPAbUNIhAPj9KgdPEovRSD+QEPjMoKMKFkC4+YHKB4YjDSSPVIEYRmUrDAATPAAIA8AQB0BkCDEfggfEbJYOAHEhDE+1oFwhkQ4WBiBTG2iyDJe+uOdHXFUZrSwgZ8vDW6DjJ6nQBhcJ0Atqjsq8sUFmFAGBnAxxCYr3kWfwR0M7MIUtJQQAX6VAS8Du0UNSoNkCINAl5SUVI1aCCdAN0wV1rORdENMlgNVQgsFUUnHgKQU4CG/IIAQWoYpDoRhcYHB+ux5hgyBR5iATEboYkP6VcIM7qUoQL0GU1B8GAEDE4gojCsgR6IBC6gAaSsgR6qF4HIILQRELtVEBAmiBQst/h4' $Zint_dll &= '2AJyIAVSN5C1eIcRaC6SHALQEXLv/ZIBAbK+BNUYtIfUGPmzGdcYkUhJgQlN1bB+6gKibATNDMYEKuiIag0RVLhthSIOaAzHxCCyVAT2R3dIEP8fEVFAv29XIMCmKnFdAdmKl0yAWoKIoeMLh/oDrQLNA+rhsGz8qBAOhhjmLWEXFLYogkeAkfDAqMcsxgVhRTAIph+iMMgLsQgAiLMFUPcHiBeQUpcHAIgn4FM3B4gHMOBR1waIRwCjUHemiOQUBjViYWEDUKcFiGfQUUcFsGgwIAyI908AUKcEiOfvUUc0yAd1GMZFAF8cID1REiZoYD0B6xZc0O7bGUvVGbkXApFyotkSOnTxtWzGMuK/QZcRkXAgOysmNDAZ39BopD0HdQOiAEADACSNBHaNBIONwf6y4JIQJFVTi1iK7QCARbCSvYgwoFw15RoDKDIUwmGfAhV9ELeywhG6YA7xgA4i4PoxPRQ+ABN9uAzhDR9QORBIiwByCsKAdbWo6wMQootwHuCzk+2lSgawoegek6ggDABC8+DoHRoyYBAvsxBFgyD7fu4wAPHHoDgM4w9cn/CjEhK47/8DmMjg0bgUiJtAgCIQ+Nsnc9DZBCgMCIBI4bLu1LgYAAD8/4+bAmEgGAs4D4DELIDqQJSAG44hJNsRCVDH3xDtHwMixb0RHpn3/YES/g3CiBQw5jqANPldIfBREVyRw7OOEwJBBzGEMIVGGWNflVQkSDdX9rc6IHMfEUROGmCQC+ezEKQRAFCe94ESZRgDJFKxSECDE9JPwEQC9q0nAQBjBTVVFYX+9WiWLTDrQm4cgQXgghtqKLiDBDQ4QSLTEWit9EHGBTAOGwAPQoY4scNJIuUXDQARGlR22mE9EpONHkwkwhwQhe5zGXvaENMyHuBqBR14jMYWJHiDCXMuXgDrNiELBBGEYSCiUAleSNHIDw5oZMBYv4Fk9x2GjykgAXUJ6REUcQkjneU8MP5FOn8uIuzAxc6C95wR' $Zint_dll &= 'dTmKTCtiLQFB4B+MyCADjA+EYXiWCDAFEIMEhUaVTimTfoEGqRGFDiCgyEO1snUokWIEAkkQQP7xMqHhMABEEmH0QEjSBAGYvaBIBfOvyAQT4K+UJBWFRtQGeMOQbu0ROuHwcBYtEi3yAhLb/ggPER/h5wiPYiMhRwePv6wQvTUSPS0BuivRElQjqWo9EcKdAv44IfOfFFUkXHReDVIkICMRikRFAtRQtXEWUySSBQDk/44CYWIARbJoUj4UIskDTEUCVDD+NElKKglQJJsumRX4AwN/DcdEhCR+mqFxEEUYI9IhagFRFsJBI5gCRpFNFMQY6UJ/cZcQIovt2jJfRhEXHLB9DAIVZdWDjvVNA9KE0YFx1wQBoeMAQI3ntBKNVMkJjUQAkQGNXIEBi8NyvbZk0cmg5waBwzqe4Q8hLCBcJBS0g8yn0Z3+xAyJBCLlArhCaLI7QFeAC5QeALWDxhMgJvEztRwYem1gDhCMQQEPjhVxEUEBxgRGMZmYD4RCYJCKmx6WnqEgKic70XU1rrJA7lMMooFxYgBxJTVlHQGj5jIA5RoAQKqK4vwCnkuBvuwAGAYOkL5qDEeFk1sQ9GHztxeIYZYB72Qh2CplmwULSAFj3iBFATLh+gptBvRmNtFmVB5pIifBukMB8/+iJNV3XAIX9R0DryDGbdBxtCh8BB7SR+CuATXpD3BMTiwR4bGfKUGhyJCC67EUO1E/c5sRo14RA9grZ9BKcxAC8PfrrwLQkE9ARGJtOOuLync/INHitef0ECBCElCBiYsIVb0R9T8M0YYE0SzfYBFDUM/hEFzbWzABUFBSVejutxMMIMQBBD4KosiA4qsJsv8U/wQNCyQSiuMYIIpMBigBUehUVJAvIVCHHTMg4xGxgBqRPy3bExAVUGgY2ZP/VQDpF1sggIo+oEigggpIF4QqF0DrHgNE4TQhihQpHYDqf83ddqthEGAMYQBw6Q6UYjED9mwwxbNVx/dU8eC3BgUz' $Zint_dll &= 'SwIRUWFjaE4IBZPrU9lAGhMEOT6TGhO77hJ2L0CHEXVvkEV1+NYBQ/HASOq7Aj0GowsSRxD/MzBRaPhWGTBAA7IKBnHsVST2pqBIcSPURGS1HwlhfRAGdAIbBFYBkWgvBv4OQwPs7zA/DvEiOXcLPDBzAA88IHQLM8DDADxBcvk8Wnf16oMWML4hzPsCYbygx/sFUaxWIsSRoPOuKBFpKYszmXEJLFJXsBBdF41VN/gwMPfimzIghhsQrd6Y10SwLgRyxK+TDAtNEMHy7CCweETQSATtjgTBAPkIiAweRogEbR5SE9KYcGJ1DCEVHuZZAKBI5OEvtXgBxQwPlQxonFmFggwyeIzFcEICE1oUEhiw0k+HpNFK0cgg9RYAUY0hFKj/+ICLx4kzg+DwAvj/sRJeWqJJAZoRoCcGAzPtIAPCySLB+ALB4EYCP2UgDA+OStehaSKNBlkIjUgDr1gRyQ6NQixujzPFr7jkwRuAAOIDwOECCtGIABQ+ixOKS/xGgcrBACj+ABxOwCRAikxAYAQsbqCgKusULERgVKpgMwQDoUhC5GO8AD7+7pKgSBXi0y+FClGLC1JhAK6yp4DfMIGuXJAyVeB7ECATg8MQM6wiD4UPBRNEMMKx9REPgvFAKKwWGk1wrCURhi0QKBV1rw8EL00P+CsmMZ4PY5oLEh0SM4JKoAhAgRqcTwAYPiABLC6gtwwMPlCAAKBIhUpgFJwvIAAY/gAsToAlioZYYAQcbkAoERbJdA8f8SIGD9MjI5Vk4dMPmRGAiuAtAKgEiwReqDkS0DlyLl/gtwFu7hAzm1iQNTsQERJRt5USP9AMMFlAEE7QDEfX1QvaCIjG2whpdgQUjWCKDKjcnQUNgBnIUBriVQposOdiBZlJYVgGiTHc4WgsyQMYX4kyOKLdAF+JMBtei8Ew8McJRvXHI+E4BC+NDPfEEAlS7+DdAZJhYRkzNovBTzNwoR6Kf/swtoNiAPmqD2MfvB8AAkDH' $Zint_dll &= 'ALhNAhoJgQgJsm4joAECMNA6uQ9FLt0PhF6M4O4GA2QgLD8T6yUgiork4/4xEgAH9FcPrLUKPlaBveK9RBK4/0MP8acQBIHIQRDjtTVc9fYLMtUIwHYT0Eh1I1BFe4gTmfuoEmHRHAT/WHCLwwGA6geIFDdfch4xWF0AhFgF0PVvAeebKbCqlEDh4wfdABiLRSSNB2cRLIswRxUQ0rwRYUIpCIld+CQakACPvgzE5KAZNItVMIvE4RMLIEp+8BoBUkSP/jZ7ADKrPBgmxq/wyQEDJqPwxaJ+IQQu6lffD42eXhfRB4ahwhhivOBLkbEDPfNA+IYH8fkR83Coxh3KqlDuNAPnrBBmiIHjr+NI6ZvSEIsGyFHFMFVi8O2RLvEbQNuKBdAFYnRMNIvF7yMsTMAQGmDVyFA1wAn3SrLR1IvAYDcZIxh05pNghQYTGqB2WKdCBwAhPCEry2LNYCMIKRBjsikgWQCLRTQTDhDqFxBpJgXoWmcRIRiL8IoKsNKF0gkxobUWM+JRsV0vQbKDHBrQR2N2YUSBSAHNAJm7DRf3+4ouHDm5AAVyF0EFfhegvYRIBFX8Cpix3QqRSgFdBdFKQN9KgA919dDk6wsJ6NP+FqFCChSNBf6CZ0AK4owxswDBB582EZrB0kZpABBdDPAAoa8Pf6+guhCVph0pGlDo/KmCthARq2CfrugADPgCiFUbikwYvhBArsgFilUbVQsCXMBfgUiBI/EpND6O5FELUCjiETr/gel6CBGlDbHIJQD6Y5B+erkAo0iQweoNAUYyoIJjVAjpJYoMAhmA6X+IDF2gD26EV4oRug6Do+sQzhDhcHFTqj0gMDUPYe4Q0JXKwUKIP8YEOR62kPZAeKYCCv4Qm37BHokTrJCjg86KErOhEbHp66ODIH78IhGhqwh5kZ+7EHmBihlLeyvuQ4Sy8uF/IvwgYjADgQnA60kQA1XxExzoBBDoRM76d2DFFgSzlrlgKwxTIxPp2Gsh' $Zint_dll &= 'EaMXED3etBIEMIgPBMI3sMkPMmsUNOiPq7QK+BM4QYlJCk8xhX7LPQALkpiQ7ocUbiKy8RYx2OcAI1D3IGMJaQzveBAECDod6wk4oEgQUIFIoNNZEaRMKjTxEhj4D4Ra0tFtFoWGgh68Fi9hfBq6rgJxXIQxRiYmAMqgsP6gqygQQKFufgRAoFwaRTkHCDkHKosFCccEsxIEYcQBCn9BZdQkoWDqGlVG78CEUAc4XhSTUJBsIZJs4JFsAdQQvPDgq9Tx4KsA1LHOkdmCKystFPgVJLqb0PNACPLxQVeQtJDIMGuUQcSnkQldI5pVI8H2WwEwbpGAX5SAPxHYx6+iFH82ZQECrhCwA72o/cBYdsMGQdZkpQmWlZGYYWUJiQIhi0V+lACfGJM4OQGR7iJgxgIheCQExgJRBr62BizIOP++NwEQDDXdyQBdON6vA1A+fmElBQNPBYciIKg9zgJgowDFDUYg3S+MHpYJwCHqCEEJKidg7lkRHudo0MItilnqCIA5MkfvmAGMRllgiHmGC2Dr2QHuqIEZmc4yHA0PAP+ICQ+Ebn4SYPrCqOHLEKHxMBRVAOdGiTIYQG4lIdTywwCBxtgR/i+ramsA0AxwzwAeFQNFuAwAVzPxYxLRBKE8tRKGbLcdB3IhO8IPjVc7EJTmSVA3YdMRWw0K9tCJPSfB6AeX8xF1NeghocggoN4AD4X+3KHoQCQQgMoCFw0RdqNRtuo5GmB9DVydDVhTVEDSDSDYA1H3pMgR8HYTEQIAuA8jx6FIFQAQAKifczcBqB+Y5GBPFCAAWGe/OClbw2yVxRZUimwAmgTAlASAZD8MWFc1RFkUkEIDGS/IVWVCEyE0IEATGDRxNREAMCD0MXKFUJdWkCpfAUBhpcbQSNQ2wBMN7sMBOn2h8SS3PyAYdTQDXtkItonDYBwUIFfekspgvAVVHgtw5Qzh2yh2FrAz8O7nM2iM5GwYXo/xAegDYLYL0jIjTC8+umDNAx5S' $Zint_dll &= '6JuSoWJ9FkuIERrzUicgfbTTz1fsURGNB1xtANHjtkUhoBscAMSBAX+NBFsz9gCNfIEGikf6hMC3RTAOMkBnMSNttjhwIWVVhYYdcFiG0emKAWaLAoQxXwXRCoGiEACCThNAV2KFRqwNkOuqxoIBUQDASoUMWnHA0DDob8Bn7zZGFzAw6SMB6AofDECNNIqLzaKmTAA3FQahaGDmqARmAot2CgP6ZtvzELaiAkVh7uwcjRR2mu7RiEJjCQsIqGCxA41Cd3MrIbHzugnB0XcC0MijoYituL/yobw4fKUFoY0IlSB+uKTGFqcDvjDK0ihgX9cSUSGgVwiOLoZShcZZHOFPGD5K0A7i5+EbAB6LDIU0jk4p8OAbcZs1hBerjhDi+XqF2FTgp0c0UJnytdVowDBjn/618w1x2AXDRgIFIoERIL5kUthOpyAA2BdQ8ED42AihqEJw04Mw1IPwI7okfQc4ikQ3AUjw9xYxJQRhaGsXFGoAVQ5soCgBUxFXUugeDjFITNIBUIEC2HdxKsHWAbDeVTG9MAbCGgGsADWlLAa/4hLcrNCBQSGiAJ0XnjjAIQWwiBBlNXWFztmff1Jd4XoTfqsgix+6NMGiVAq+PQBWHpTgdQgrjBEVAJUowDAEPUoLUYrBB9voZCCws9zn5N8SfvdEYNoC4JMgAYWukhlA0zKgyHQjEIU+AxkBNOYNGh+cILERA1Zqq5AJ4RxaE0Ii5QIsAXUGmtdQtwUKBYNVAgYFI6WgcxgAwKLIcOOFBIskI+o6AjfWUNIrwRErxo1uhJ6TsrPel5QloUjg9WKRA3W4pv8UjRA6WQGCoAYwUO1vEhxSVjhqBfkjhRVaSEJMAsRWpP4A1SKzQmzXZ4EwxYNe6hwCaxsw/03xDT4wAiJnYMHjdSchIhBKC0DAw7O1pgY/ACC/72KmYzFjP7CD3yfX+OaUF9J9MUCiyIXyj3iCAXGsCsEghf7uLhkhpy0QRutUJ3oCUfAcC9GR' $Zint_dll &= 'XQE4jvWnFgnNhEYGA+sDnWbPsGgsNCw6IaDdAyd+WDBQZ7DDRsIRTlA98HJUpFEDkQqLkSxwEClzgQWiHKRBFSv9AQdHnw8wOoQuovG1iOwl3RPBXT/R4PIvkQ6RauFtBnpGYLUP4sYCULKhIwJ8JDC5GDD1q6EgyShKAgAENOofAOXPJwCNDDeDxCiNDAJJX16NREjW6wAEoMgw2UgwSZgMsEW3YLaIZGBGsMNEYmCnBBAAieERE+sREjCAkAiFIHhFmjSAYVYiUQ6BEdKBAtpCQtNC4I74gfhFEGCWeCWwtA9hlohwh0DXsgIAUr1iLStXOupeQOFHAU0BCwEw9oSwoGC2WLelL4GyLpYw1RHCDQqNQ9q7UCDxcPh3UwMDZqT5MEYB9gQQgHQBRpZoMUI4posmBg+EMvuhRhFMR+kAdwYpKIRgQJfX0VpACrxgSwDHRzatAIiYZottCGZFZhCB/frFAG8ID4VgExnwAHUCOAP1O8tpdMYEEAJgUAURYJRHAdboYQGzNBFQAjvRD2uM84IQpRQczkew45IBiRwjA8Zz2hDobPBqGWKkFO+DHhCBwIUhBHnAz4kQbQDygFBZB8HnVwYVfkEQwnBMBGH3EBptGQDBQPvlKw4j4CdUFAs+MJhfEAtPYMUdCRJ9QVJ74sweFguAeAQvJB4BAB0AjT3ZRAEQKk1FDOPKABtpBQbAHPBHB4ox+F9QdzXoZCf4BH0IX4tnQKoMZTxFFdLHAIXukCQg4xAMtA4JcIIHAgHB4J8HFA64cBBTImCvIXyw4rzzFFwB4idwogVR5Wf2CpoFBDg8LwEzVbWIshhgSANAixpWai6ABTs+6VeiPXHgDOGlEMNcUc5u8hDTKKG/FPkJg/4BfnMh81CoPBBVQyhVPQQrUaFOKKXmThaKFCu+BwC2KYVyuk4QAIVIRcLBgx5JBSo04LMYGAKfiRJYiKaPIK8DgQ9+JKGiZGE5Kko/oJ8Xg8UC6cMYE9n+' $Zint_dll &= 'SxEAwFTiZioCagF6EfHGShfFAxzBAY4goFkGjDBHhAjmVWAvCOicWudwfw3DLFcWpSLpGcyRI6BI8JUiFgJNokkjmgK+b2UCBaopNK6FFEkAtUEPhLtGI2Gb8gUVRenBOqvD5EwAY/Ih4PVlkREtDVDGKSKpJOUyc4++KVuUPui7RbCjnAKwaGQknLJF6VapMO5LkiOeGey/VMYpD1CU7mHNFf6zyinQLswQoihASA4iymIQrDIRVSMUKVLohSb28CrCMDJuNKDkFEILTRJ9FOJUISz1ClUHUVNWVWkJJtY5ERU1BEYMArFdJ2LwATn+mlPTFXG1ACImEF5RoA8BDtwg52q28g0kZiuhkoGQc1GCMAQxuD/QnUKUyf9AwpikhQDpJRAw6B8uHwbzrCAqlEFFwiQlRiVp8RYr4pIQK9xQNxeBD7AdH5CAkGZGE/ExBTUnEqAhBDWhOUFxTIDpcBNqCQFSQ1d2CvCVntfQ64sDGBERLRPRK1oiYSwQE74SXTv79gFjCQudCOItlQ3Aczbk8QaeDqDJXwERlVHOwsaofggBElB3yBAiLjIlVYPuvl0CEQyVbpcm/jIuIH7XL5FRkQ+y41znThAoz4PWIG+gEhi+Qh6hbhTqxVEtAswKxRJIUYsKK8GTNACDVDKBYxXkIa8WivlCBnR0lEDUgyKgKL0C6F7rFlkCZS9WCgI7yH1BjURmOkC1FWimA5HmEqFcGjR2OiJzCvd6OuCkU2sFEswQZDI2VjsABPlOrVA+kUfQCWEsAOlZPo1BwEfCJFC3AgoCyAODspUjUtSQ07Hu0J97QRPJB6EaFU7ZEkCPJhD72Sr9FC8kE3TRrSPlGsMexNGeoXANIZGh8RMQNM0WwWL3MPQlBykDF0Ui23gQOIIjAU93PQYVERKg06BoYFgZLlHgjABxufYyEi+gLxPrDbnuMoKPE9qLkanjLSNBCEPHRCWY/NoXQoBpLhNDURdWKpBA4y2DPkkRjhNQ' $Zint_dll &= '0tv+ECJkBF4K4I0ViJDkLjNqHe4yKIYUNP4yhSAvQwnZeRgCM6B52hVRu8r30XE0xvMnDeEEGlHosXsBEL+SEbWQUdRFVUHR4zUjMJoV4MDywCj/WgHxqAKjPQmJXCksQOE0A5EDRADUpZSoRguJCr5bAOHSFCS6SjNDn09ga61KXAPhWyEQGYPsML5BII0RdCxyOYBCd/IqIvIrRhiL3Yse9YvVPnnhRxm/fyD2B5D7eaoBItJLGHatwPgEDRAKSIDsKBuWDHDX4zkBDFQBEhAz7aSx7vKBKLNeZHIRCLPuMXOfL7L+RgmBQDWT3KPNFA+VwQ1Jg+EMBRCdHztaHRCpABwPjUPgEYPFDP4qUDE4zLBFBxH8uQLBEgLAOvEiQSIBKUySf6JDFkSKCBwIitPaG8ATKC6sPxYaMLAof6cgAhMFAIPHBusuhfaNJE8LAhdC96CTbI1EDgIC6w04YpUW1v0QEDqTCiIgTQE8Veik59cg/kIFMXMN82YXYiodru9wGQKxlwLE0jAAPYC8xAOxSiYB84sNFE/9CwtBINSVIYGCjnj9BPJLzTTU4z4Y5ywgoEAdqRCLPIAlVRUM0ocuzgThtCHfRiC4RReoJDUo60Aqf0Ig9nQQg8Ez4EBAKSiw7jAYfALNcygBksqAFVCXoQG4v9X3YAQQdG0Nwwkwg8YwOgCxLsF08HUVTOH1RpfiEDiNRQOXclDAKBf3wyV+EhJrJZNSVRz9HlxyA8GDE2BOJTAgVQWFRjwj92RkgOg/EIPELP6rAtF4FMUgwQImdQcYfyAUkMPxl/khZAxw8eeglgMzjk+m5gErO/cen0ADSDtqNdBHQQEcfQ6AFEDRh7Aj/8BYuBkasfPch2GoAhSmIBDOFmkBbKD8wBihczAEJDvHD41bTBA7wzMPjT4G0Q3x0HjdAEECHhQPjRuAEDo7sdMbUTsABap3AN/Gk4PU2GSwo+H80OjjHnqKRCRPA1Bh6PumEWbngc/w' $Zint_dll &= '0ChUFIvWEISyc5wSMJwSkAgwnhKQJpASIPzA6J0ZqgOxygcufKDCJyR84noWXBSNFH2MYGQHFLCu4NkOse5KEUUb8xURGPDAx+hSGuFaKiZQyZCuMRhMt/DoDKdSDWSCQebB5hQCjTxwwwH3AOcCKY0ccEMB9wDjAl5rsKxtjVRTLjDZF7bgUTJwQtx5IVkGjRRS+QhIwXviumihmgBiDBI5QdF7IcMgUFy9F1g4AVY1dZXomAhRaEjVd4Qkr2khVUyqt0ClehswJQePRqdBsDP/8IjIEfUPQI91Hzvxf3w78i9/eMpGAhQA1s9wagpGD4teRMG1vk0R6SMXISAhb5MhIPFLFhGo80C44wiRHmxiGM4FRBRlJYU+TiwxrDoiZi7BVXedfn4rkQRCQLHj3/di4QsrOwH9fSc7+X0jSv7g9dESgtMSbQURLSFW0PCCsvONDN3IkP034rKjjUwwyK1wEMjjrooM78iwjgzplQDqusiEgtyuL4E8zsjwLIgMy38nO83IoNyLTCDIbZ0byIInGHgdLEEkeBHgFACRwABXEQyQwQAhDOD5K/5kwvsPGEsoIiMOA/EPGM/h02MYVgBXM/8764v1fcMWc6HqBwZR6A8vKCBREBQGRkcZAObOL9FYB/WPAhrCfWMBha4+1Q1pTpDQZ74aCeOXVuASMfDICqJnBMYEAYFAgKaF4OczZdVIBwyQcDWA3Kj33xhBBxvAEIvGu7cuEJhSFRAorEcSKqbjNwAoICyAGBFoLFURQR1Pddlvj4AA4XcmXHNAIJCC6DADbHUmRcyJRTLki0NTIlbfcDUlPwXoAuOW//8Dx/OMEARlhUqhcc8A0+liewaGxgABkFhG33MxxgBg4PcTimjjeQpL7iGJCAaLDYw0kOhEALFYAQkSVgihlIMcYcSg2IAJAsIIooLoJEQFmA5UZaj8GsEC+AiD4A+DE7cR2A5+B8dFijBRCuA2Og9AhBfbIvgCfGSD+AQjf1+L' $Zint_dll &= 'ju6sxPcisIP8t6JoaMs6dG9o1+5BWqxCVQs1eAgRC7UOH+UHAgcjekEapwV5FUAip8IOVrMECdkcVofQWEUeePgasVhF39jE7JISDVNW6C/IYH8Otra0QZK58gUOEY2vngcDw4BGD0AE3JHYBJ4IUETdSAGQWIUO8lAoyBXbRejZwADcDaDsBBDZ+gLZXdDcDZgoU4QAjS7WkkqAnw1MkNgHgW7FEvCJBHUMjQQ+hQU8AQB1G4vOi0XoDw2vz93YrpFheRBGfAAoXybbRQzYTdDbAkUQ2Mre2budIN0R2HUsvmWAvmjNCAAPr9c70H1gTlZHjq/QlABwbEsIRu7QBwHRx/RzD1HHsE7kcbTonAYADFSg9AE0NEZP5AcaI97PsL5RzBdJAUQG/+ckEPhgANDI4GMfHFBHAHfEAhZd4OIUV1Zo0MgNBC5OFvh/5wzx8Mhn2f4Q6M8yiyygQAMPMow2IGFrAow7IPBg83rvkw3G2ICvbAr5CNFD/8Zx0MeOnqEjCUPpEVL8STkKOFFF/fQDkRhQhj6In8B3N20HIbC84rxYR2+qPfgAEn0K9sMBdTAFg+gJ6w0kUUASocIlIOHTAQ2LVcwYAOk7BjFtWxoQMWpBQ4HrRRAJfcaLVeRkAJAE2EfcVkdgjFFErPYpAuLjBvSNNAQRikwFxC7g0ERuZHSiBRG/LoIC/yAQK1LZBxEgE/kAilSIQLE3Awa3WSNmYdE0QPRpAvEFA2MxhYYaN3G9xw/j8wQQm6etEH4YhQC/vxAWczBQ3k9CNb8FAzqcNhCt1QYDiQVF4I1EGH5vQB00E5KvEjRQhJ1YtsYBolTurib4SGZzwT2jJYGoWFOIsNinQQfgnnACP9iiwA0VFSjuqh3GzzCokA38QlLoKz4iMOQEIuroFHyDEzFTaHARENbEAQC6WDK0850c0ASvay0SOfOsQXDxeDCBbrG+VQjgUmhcySKL84stXdQ+dDEvexfsEsNO8bnSlQHF' $Zint_dll &= 'EpEGRfBXOjFwd+z7ATbhsGAtwZCi8A8bkXlQBD8TPNLIo5C2kG1dNZy7uRID1s5VkCmQThJxxSAlhYZUMKiGBuiLKnUQPgMgpSMVzWUQRUTc9hNCwOcwQwkyhU53KPkCj4AgEl2B6QweibCZ/uDh10YfD5sTM///aTCMEQWJTdBea5Bw4gJ4wCMQUzdi4h9C6nj0AwyagMFQdyG9WAQ9QBb9kBijBRuAP6pTkFg02SlAjdQFUJfaDxDlALCIhAHYHJCNBe6aBGol4BSAffyNRaT5+iJw6zrx9APzby+hFQBoHAkXY9SOaiCvAeiKGTSRPhAF4tMFIekDjTwIPPCzgpw/8roB80MC1T0iRwdCfeHpKBDorfAxsx7RPUEE6JGuy7HYZIkCHIkBmQif/QoQUO58UOyJB8OyEDpyEoH9wGilFYtNpGtLQMFI4MggjXWoixb2RtBRsKjcmXAMAxFQwd5ogE0IcsRRv08J0mAxsVgVxS6pCgSNkI1FtOUS2+UE5aJuLixQLgepgALl8idis/BBhOhyHSnDEdClLAp+gJIyNdFoRUACJVUzXAUtJCFGA1TQnuNQpcYBSC7bUUVbsKiwWIft1Q0GwQK4CSPCCQOrrxLREg+EVch2HFDlsNjU2IAGTpNZBJiugwbWA9Dn4EoAQrRksJ616M8DuEOsLMBXgEuKAWJTwFCEgEZIAl9UIVDrQEDuBOO3sdiEcIViFfhSKYPFB1HrJTSL/nATAPIXAIWG84wBzoQQKMwamokgvzCnG0HuGWn/u/AI+mEEshEK8b8BwQGLF+jom49XEOiOMCDMAtdfEDnN/5sSIStVEtLGweEnFxROHHLYMoU+ZjhhEjBOWQHiUQjc5/0Tf2cSLl+x/DTBgW5oFFpMYXMOAmYhwsHnG84WalwwohoSluf/f3gLAwwNRwNQK+kD6IPIwfLoMKYlAbHoPlhurhMTIDvu/NHnI6IdNjJQM4U+SSrRD5PRD0TQGQHfB8EB' $Zint_dll &= '7TBOSrDjzsfseO4HIr2jXA3trxbIsPJSPCDaExD6DFIBoD0T6QJ++gOAIOkS/imQLkABfuAy9YM+kw6WLrcSDpMuTyCjHenyBnErgQD77iD5AO476BEiHBCL7wUD4QJNUzvvxW0QAUNG/1UBJa26ZjYaMM/wHjDUvtMcMC9gEgMsK8IBU8YBUwUAJItjxX4S0F3z0MhQC5AE0WzOKWbs0NhkGQsZESYZUSAPhdJIBNJY9A9Fq18OU7/CIGzkWpZRFPAuQC/q7oEX64JUgidr9yJlENmIoHIOU7/CIGxSd1dOgVfVA/LgQZEs83IzAVI1yAPcHwIyyAMBO5kljU08/lG8cs8BwTVHbRIgVVhAtEJHZad0II1NAu60M+kZwTUEbq5QX6IrJsAYAoPC/UneNfHAmB8oFgRFO+8PjNogkBwkYToWD6/eVIHQJW0kGAgrwcPC8AAGK1EozYeWggmqCxGiwBKFyXxFGSIxgNA34e4OA0Jo4ADIAxGziBxfwB3zkRDtIDP2qg6CtHPsR+TsMiZ2WnUVJaIE/lvzGw3RAOg2BwSL8+sND68g8+u+C0BHMOA+A2XvciZILmeQvNVIoOUSdDCMQT7oNe/BNeYMATv3fdrHoSEvVlN0VVJu4P8+iRMRfhmwc//DR/44Dp+QM9EbP+CxE8/iIGpD8NobP4HRGw/B0RsnuRpOfKFPA83+79MbXzHIbr8vWRAo3QGCZnyRbExEMjECNsEBsMgniN9IJEjv7CcQDECyKA4tZkIQYdAIRONpBzj/PAQPlADCi+o76XQUgwH/AX4Pilb+uuCgoO/xQKnBGhSKKZBt4udldxONcl4oYb4VQJSfEBAcUkrNwUICKFLS1lNCAydMMPRvLBM0i+YBgL9oZLQKDnkAPnZQZ2W1Cjow4CAWOukjPNNvIwD7i8h8qYpcJIF/ZBI8M9KA+1i4AGzCBlox8OW1KNA1gF+UceIUBDA/gTAZEUhTVQqKCIsClk5E5UsK' $Zint_dll &= 'C1ZWzncAlRnBJYcT1RJX+ETg6QbBEkkGnr6BsngJPpoLok8Egn5AGTwoftAeLCH3KtEyHH8aMNwA5QIA2d4aUCfwMCozojwT9kFq3QCgYEzg02aUDkstrjOm1/Hi/wQrZk+CL5DjJyKHAR5wUSvAQagzVmINQRDcsJZurlc1NFGKWn7A6FsC6GeAkBEr2Qn/D00hRpngU2ZUYYERpIjwjQCyuD/B4GMEkv7jFhB8JDgFD1OO5ypBNBbd8FA4Sgth0h0TD4UdJCLg49c2Rt0RP1xB440Uylah7BKKSARqigBQ16AIVQCoX2NABwGobyOjGvNMEHgwBTLq25AMsS4wkxys5BRWYzWob+BX4xQBWjky3rISUKEmAiOe3lNHegMRgbFuBLGeU0OQbyPwUAk8CCxmxRzrdCjZALKx47k9NK58AIXuQjDYNeWGHoM4EfaP4wOkVi4ihEjgYzSIgk8m5AlspQNNBFEY6GF9FmggZQ4+ilUHBVJG6FI4Yi8cpODVOywGUvCVK1KTYYMYPRCDA8CgUGgAN8YhaE4fQGZpE3wkE1gPhcwvFxLHZjN/Mv7O4YktUmiDnywQVlfoPg7nIiDXNRFuOCKBoGEKLERgWAHqmxBijQj5ChR8QFIAkAAA1RD1V4Q2jQBBDgTkEXxeAeHtBFKL08H6EyUQGlfo7WowgAQ8aMC0ERU43g2RBVLNBVELy1kAPgmBJhAB80sbEZCMEm9xhY4aAalpAs9SeVFU8BcmQQR+XwEmlQZTFZUGoZcGAuWTCnJ1BABsRoP7J38FiAAcPutijUvYuA7hzUMKDy0Ql4pQclAgDlAwEN1IELk4DdBIABQMXjAQDLACjVvg7Yc0GKCOcq8erF9ASgiKwQQoMRXBsR9QRmJugGy7G8KycfYA6irIRgLLgOlgKMUZRRs76A+NT/6SFmCsBDTgChfnRxC3EhAqRlJnvTYxIeIJZEoPwmTvALoZQSEJDGj8ljSQHkACSAo76HUc' $Zint_dll &= 'iFDnTR1MUkWAMZ9qgIYPGODAJKAlCBM8Qw+FG6BWz4Pj7RRVUlPo3eFyUJCJI/8NKwJqAgkDAmRQRuh1e84bwISwQqAmkCAQZYRuVMYTVCsGPBKHUIXOAyRQC0AmEABGg8VXCs0Qf80Q8M0QG8sQNRIEVVBT6FmNUA+Fg458AcizslWnshlZDzUPhavoE1uPEFW6rAAjLAujMTFs7NHYFKA7FkJzoaqqBjnKalAjkhwr/wMzgwj6IH0StQFuigQCK0YsQIvpmRrrUB1E8MYIRoDCYOdIoBMMM68RPnDNK67SUa4g8UB4XbOAxt4ZQcxNAp1R8VsnEGYEEHiAFGUcN1DXwIbOIlULfQFsj0Jigez3YA5w4x8yXzUR2v4A5CZDAn9pBGUzyaZRMzyuneA3VhaggggHkuMEET7rDkNQh4APYAhGReszkm0DfD+IgF9xZxIlAMkLNxAA8U9SiYoBjCAV9iEb4fMhG+IzpjwTPktkpRc8RRLbkYolFU+qRVIFRRLoRRLyguJBoLEy0G0xBr0Qa70AEr3TYhCiQsRQ89SAAF7MuACDBg4eLzYQPEIPhXb/4gOTeJM1oGTfPXY/sRWYKWGjiAwYXBafgdgoMDPQnTkA1cjWUgTQCOHTCFAwg/VaB+N4uQoCVTfeHHgzL5EOEvWaDsGdDuFDAlknfhViDynrjBAfQxonpEFNGvckEdr9Ge0Zsc0CuTd0pTQLFjx/d7VESrWEumkBAu3hGD6VoFROm6yIiM5ZTtJIXU6/kMTzOQSBxmybEdHoijcZIXp9MxkBc+6iGpAroeIQPOUDQ7IQZJMDKYsTK4E21zKYD9K3VBGeQrHi3x5G8vASmjDl0Z5CADUEYD0q8fkBVhoVEcgVEQcSetO+QiP9jQ3jhB4hkRmKHA0L+wMgcwqAw0AyApAx0EABuA5CMlEQZhU6rFFQxRLjQRwFIWEePEEUD4UepR9ckmlCU1VrkAFDMTIZF2AZFzsZl8mUEnLC' $Zint_dll &= 'odJyJXPXcp9RVdQPAdwPISOBPjQmcuLac19wQRu4tDHAC6H6EFW6Pm0Q+HwFkktxWh5BY7kXIANzBARA6wJNJwkQq/iDLYsXsPhRLPk1+GABhS5bW3ZXBCEdElOey88SXOinJxFkY10f7hWgqEOBIhFwkn0gERAo2SUsVEDZJR8pJgxMAxisBpY50WIv4FQSwVoSsbNcEmSYADxSORGzpRq+BoGouhMBfHLTnBBtBF+whgB61ilmCfAR24qYFE9xrRqdABhgCfAUlTeWALb1qe4bqLkRLz0SPHoP8AoKwZ6QUXni7QEdqxYgnRf7AjJ8fPoOZW8S6HK67wIBMLh/sAj/F6SYMA0oXKZ7Ldt+PRJANO5oANXIgNLIRtQl0RFEi9kNGO50sw34Cm8NuGYQgUZaF6EoG6OWCnkdYPVQmOqUMmpq4OmUAlPov9wSZGSbItoIUSUlMNEMMUpWdXkpEI1NTSLLMIUe7kE1Y3GiVZVBP0gSoyC1Vj5Rb4ss4t0RCgRgxQF86JOlOXz6HmuguByCG5LQkiLiFkpJN6GDBpohsK6iQBjlL/da/xIKMhESocgnYAojUKMg3AVwnKwg3GXOeIDzwDi77zEZfvGQNaErFDIWUieLJuYWsd8FkQRTBLCuFOFZFPAiH3G7ABbRpUhlDQJMJGTyHgEwVFdgHFC2jiABqI9VhxDQJksii2CXklcx0yqyU91XAAghDLHutgUXiBQIKIuXERBAVAxkTHCCwFYEgAak3wOdMiMWwuEBBP62kA2C9YUoMBgLNIOVqE0ZNqJBkmiTE2/CEqpYwAUDxlZ7wvHGDyGnkBYAgccAfgxASMoAiQwAQADgAQIAA4v/7GoBEPKpDIDPAP4MMLDG+ggF2G0BEN4MQM4AX+oM8M4ArE/g43J/sTCGVdDvCgaqx3ANHqHuYkygOyYMemXA1GPIKwQK6gmlpUk8CQB09TwbdgQ8HgB27VeNeQE7/hBffRJdDg6AfAo9AQre' $Zint_dll &= 'u/RJH9ULlQJAIDkUPcx23h+idGL+3WRoDgkCZwCsfxlJETF1MIB8AQkBN3UpGIAQ8zIXYRCQAFO3oTUDLyYSUcy/M0DmAGDA5x2zWrvFYOWwM321eFQR8WcLI20JMLQ+vxFh9hui36ATMFAABLAzzHf+5bUiDG7UcnshQcSAcbVT30d9EzqhXQY3ghZQImgBIVYJVVfoKfZFsYiNEtuuhuGHATvKYeCrAsMWZiDo0uXnKBAtEHYyMbMt+wIbgr7ScFWFLq75ItYFgaD5Al1Dni+Q3gDkT5P82s4PaykCMWF+EzL8ZoETV5chhf4K0mdQZFQDsD1wHz8waucSENKhQrHzbF4C8kVhALAY38cTLiKlBlUz6Pk23GHNPXQfQDGhM4GaBvQwjAIyf8gXA8EHzVmu0bVlsUCztSP2LmD8lbES7CXuTr34AYByvZiwP0cwDF4vsdkCInO1qCcotxZdjWgBhW6G4kcj1ZgsIPQJZ76ewAwh/OMqgRKJA+hPMDAYMUzQ1PagX+cdXoGuMhD2vCD8EzyWr7EY0AjCRFjZQaOYMZgOQIDIYQDUVEdvaiIiNDqxcyxk0xRyA8EDrxhr0S1+pqT+FmoAaAOFIghhRLDooAEJyNkACIkGiVYGf7LoMAChnOiABoPQAInKgGBGGxBCFlIAIY8KdWUW7RK+FAFhBQ4PjSV8EBbMI2U6/raibE+/rRCKA05XD6ATRXANBa6wcFoCQ0wAsePuFzK1AMLg8QB1pZbwzRMivwn+VAAK23wgBRzf9z/wAP5MhrEYE2IuBjwPhFK8YZAUhlnw7xVB8oDkqAYYjUtDRhEoD69hzeqMIDkH99oDz5qIBPgNBdHux9RIcWAvIBxQNzNVJZUCdfiSROK/EwqSoUcamgpBsp4xeMQFBKJI4WAkCR5QYaveADkKRqKFHLjaA1IIALQw0D+gvIgVQhIMEQohw1fpLyQdAYvVQnTwEPA6bYTI9OKPAoAcoOOvSGFgtESB' $Zint_dll &= 'SPXm2QTdLNHIgLCDGPVPAogXiiZEBsKtgRjgiDR5Mu2RbRB+afkB235aQooR0UiBIEMUjQw4lmmxF2MHJO6EYfJDSsBEUtMgpwbgJkUUD8AUiApG6weQDRLGAaoGAXI0UC20c9cNAcIXCzR8BULSwHfZONVANDIXwZEXoKCjSGWwLACBkhnQCLPkH0eQHYFIkbO40PzwuswiVAKk4IIZmokSSgEYECzwjw0BMIgXAxrxA3/IUFNWhcAWV3UE2h+AJyck0zgR84A6QUDX0XjlvyNcSCZejVf/KGBhQR1GEW4AELw1TDRwEUSoKhSFwOswrg+Q0ggw57/jTOcyeAzgv3Ncd9A49w9KAwugUDI47L+jsVznIbJn/h2RzSd1ftI3O/EBfTHOAfSiEuFkFOLjcAg9OA4hpht4wpUAbGwAwFD4/+DoZBdFFIoUMAiIwQJLOxH063kzANvGBgGF/35wiJUUM8C910wQigQTRAMjHBGZ9/2qaIBIUeDBJ74OBRoCoFB1BPoAB6B5AhoDoJDlAfoAEaBYaWF11KYAPlEMoSsANTyydwEQ0a8MoM8AI/UBvkWRp+ARPIAGf9BIM4A7SZIkJJmggNHo9HZWAmNAOQ4BtKj8IzrRUzlQ1WjAFvO/4q0jAGKSARK2bi8b2kcB00iwImIfijtlIPmL7r8PE+8DcSA0CCveA+isQPLwW0HQpWMJBAU2IACR3CIEYSAPxYvTxuJbEIyntEYMo30hjiLRTdBIcCEMCY4gwTID7FsrIvBa/lD1jg7ib2gEwywQbR5aIyC7fAKyyxiOoQATcKcUQaFtBAgybfHw4Ar0awBhRA2IARcD+TvwfM5CDIIuLgBlIGKhoAFN/ovG/ZOvEIEQWlDwVwMh8RwDYhDR+9UQWCxf5yCFU2QQOQ0Vi/MgikXKfXEgG6cCLaigDwPpTnXtnklxtKO0M/4YggxOkFCtjgB7IhHAFkjWr8QgG2OFGkBwhRhBlyLnEIhUCQj/' $Zint_dll &= 'jX6BDPiIypNA5BcQgD+Qb4YFiFcF/4hXAV944C9NAMCWAEASiFRB/413oIwAP744Ef+FaPVPg2iBOP5P07O7BzE3IdVjQBJzdi1BgPiDH9QTBIgBcwiKgAhBBSDrFPcPEQByHT3ggRgwZ6EIiKwu8A8nwHRDASCIAj5Ub9AHu5ABkd4H5x0UfSDtfQAqPUeEEClyD9VgAFRB0eN3EpvVgKjr1fAJPfIV6GUwPcJuqJUCPfIeVH2g2woRJRDoU+4lIDclkD0A5gxQJ4AGhgENEZgdAuvaPTEWISKhIPYaBLDw0fAA5z3yDb0gLQBY7z0iI9wQPQJrWBhQEQHQVx/y1we6nB1xWwKB2wdQAiDWI/oJN9EjMAaNAbVl2j0QPqVABWQgGEAVwNBUQNyjxooDlUKkAWCvUFda3n9PMuMhUQkBBN9/Au2kArftAPAYQBVohRRVA0URGR09GEURLQJQ0f33DpIPihBzGr0gcgf1IHLT2bTZWZjZEBQ9orARCPA9NAERCAFIBYHwBj3igw8QfcmdCQBA8Qkgf0QhuWMVuXNuvbnzBX0wof3xAJfuEZlwAYS2TiA30rOFAXccJT07NHHQI/8UdnkgMyxgefAGffwWIPJhM+U0yi0nVQKI0z35GRd9IA9rg15G0vw/MN8IYNX85bQbxRUpVAHUA2cCsLg9ERsqPQACIkAFiBhAFSg41pUh8FTR0YOvTBWVAdDVfgCvsdW7P4CSR98AorAb/Y5NEek935IQrmmBmMER04H7A9UAveBqv733A3i9MHcNEr1wc5YQJR0Y0BoKAR4Kod1U09eHXivQ39df4BtCf2BBdxcg4WBRKB39YDdo9X3/AXYE8mBHMKUATROtfX9A/UD4DRX9oIABYF0iagOX2Xuv0BeP0FOFaQYO630BmnLhU+CYPgWE1TfTF9wCft0XjRgApl6AudHxFam98QsHiTcUiTcdPaKxwV6UUh9TR7+AWlBQHw+Ahw1dR7/SG98Q' $Zint_dll &= '0tKjoQiI8YRfGPFA+IMHUhkZq1QiMtkTgHzfE2DdowcdNeSN8gny0IONATllq/IFYxkkh6JNBZVB8ig9IgDRtqQQSwGOAVw9ABECQHMCv0GwCB2sjmCAGBSAGHE5AoMGESQAczd/EASNjrLw/y8TnO5jDboKEBicADFFUgDg5AiL2SIisIgMgCg0ELyOEJw+gICogagk4OA6fvEf0OkiEoH5ASEcURBxxQHJCRFP7xIEiAkgSAEBMeZkURCwbgBB0CgyAAUB6BcKgeEJEQUNEB0BBQEEiALB6AjRAIhCTwHwoTRQDxIP0ysTAQHnki3qlxK9IhCIUQGB3UIDxgEAiFHtMd1+OMZvLPzq7h29QwEFAADB6BCIQQLGQXgDK6QwvgP7BUmhAAnoIF1hAmbVYo0HdQJew97dgOz7Ij47shjcICGwaJwdQ2CCLgizbhFGQIAY0esvAe5XsHwPYEgECFBS6C76GvpmJRL2QdFs7gfwAVaZOhGAUpqQTtBI04hXJu0WAo4P0bNNBiGHYWQxEcslEHhQiYMXsXjSnpGA0QMsQp9QXngAJokn3oggV9EDZYKKBw70BYAH63Y9zG+QEWwAPsMm6ES5VcgGWj0ATmwCK4kCkNzHUMUGPj0A+rJsAoEB3IfnwwYiJD0AwrPwICh5GD1wmCpR8DDowy38xNdTEAZxgAChzRRmi1YCdrEAsogcP3K1qD8NDhJ4bvwWhcdfdHGAUDINjjQCvSgMECheVQUAEI0OVIIRA8Iz0ovIMyUzzQFqmBAYDhIu70AQHBj+8IAE6ARAJRwxEKyIrEhtfAcDs7kAYTCgDAM04AXq/S4EUwwQFE1o+gQdEIkQSVVC79dnz+Cv4wzwffYgvfcSEpHRAwcoDEiQBxgFP9B7E3SUTwTaG3RsBlds0XuGaxt0Fm0vQJVGG3QTbQMabcrcGnQzxco219xJqxp0owAAzkF33MQlGnRTcRF0A48cdMdPIKFB93tYfQXeQfcC' $Zint_dll &= '/fUMfnqq0HPP8X8AEgTToGwREEFAWcP6h0EgCz7ofpeCqGDaTw53Iew0XbCXQBAEanWXVCLlINF0gWSeHwAhiBA0AyWAiKRaMHFZFQH+R6cxChp0EuK+8OB30KNKB6aR+nEJM1QIAecnCxPLExHyL9AIh7Co4BCF/jtNDnFgXgULQehu3nFMsFSHbrVEMIvFrkPTB2E1iE8BUqfxOgKlxmUFhU5SmKWsJAPw9yEQg/gBGXQ5g/ghdOLgAAFSl2DAFF6NBAmJXCBCV9AVUIezUwJFovZ3ZAmBfuMENAPGM9HgDyVwbAKFbmcebCFfBsIFNkfw+wTMMNUjYKV1JSgBKtZO8qUr0SPJCCCAKkmhyCCjgyxXUKCzfBdQ9J0r8d4jZSjMI4X2fhMFAL8SIDg3BBGMMMQYUW/yhL0j3jkA3TvgdClWqRNO/ItWFPiLBnaOwe7qNAP4h8EDS3Xli+dJcv9NgD8QIIhuRoExYy8VBcYPhPS/ZzC6+KCNHJU1dMszEaCMIwEQa98hGH5OnkFxcxeTxBF/wRHl2Qf9XDKa8ypiG/cvd3HYUkHgqB46RQELssb58H8QCiFrPwPodlJgC3gxAETy5WVMgAIAkpiiTRVZw4sEhRkc4QWzzxDxAHWFWtLmkjVcEWRVEeX3HR6TY9SCflcRj9BbEGF+Mg6SFgO1aq8wpHkRRTv3iA5EKf98S+kT6kdSE6GCAZCIUhPT0zSI/xdAZzKIr3fnEXtAQJcxiE8iWwn4QEB0usqgZdcwiP91aHAF+GFzA3oi0dzo21yhkrAwZXILVlck/Kv4IBjoGPfeD6BvCtyD/ggOdQe+VxoR6wqDBP4TdQW+XlvR2HTCECWcDehRKSZmSmGWBgD+GX0M68+LxhmNZfQ6PGB7C1UMUrLA4r2FGAhQsBES8eXFMQiucRksAnA+RgVwRTsoF9T7ihEyKBecXjkxsx160wUyNnUFQvHXSAMPRZDFBXVIizrPYCHvBWAv/lIS' $Zint_dll &= 'YVG0U1ynwVD4T9fSjiCTBCY7Es10Im5CYIQgpgzYJusXKANR6JEFtvdCsZMYaCkuFqAh1Qmdslxf0DtTEciO8j8SgyBYBNL74iOinwgRADkDiZX8clqQSFIF72kLQxhn8UCD4IfS0AC7OMiqJQvOSvBbS8XZfeELqg4JBSgS0FDKDLivEKc4xAGFDkkF8P+vuNQRDE7AFOU/DeiBOLDfDwGtCDDkAZVYxYwOp8onH3wVxncgfMCtgg7FJyF8FcQ3jSh7Johxggjg6C2jiPFAB1HoInhDC6J4gYIH9OgOBSApkAVQ/1OFYCpQiZVIfLkE6OtMoLi0MopY3IgzmPx/tBJhvQ0QiVW8pw0hg/kGdgEnikMsUOi5iAD4EgJzobjUEoWeGshjBzP/iX3IZpgA9e8PBxKNBIlFtOhEuiCDjR4OAovwIo2VNzgSjYV4FCAF0dgIUk0A1VhFjRDVWAStHQeJdYAw6Nmc4IsdRbSDxGYkjpGyohIERN+lIJ4cxKBUqUIFjQz2iWUGwI0ETsHbVhJUQUHIGgOJZbh7ACR1UCCLk/kVi0oIO88kdEO+vrAYJHcG/3UQFTm9xRZ1JkLHYoUgYbYpGYu0MNIIRIghO/d1B0LHiVEeAItJVmNQNxx4gJxzY78F2QAf0WDoz/Ow0QCLoSAy1cCeHURA+hgNCosXVQxuxqCvZZDYhH5cuJ8GkQVxHFOISgK/3RCJvawkkEAnEai/kRJBp+AhDSGFtESwjpDYyBEmi8HsQAeBR1CASwo3tRyx6Nw1kNirBBui0ctLIcAU0EhAAHhcyAwCIEUBTUbR4ImFxFCikXRcOEQgoUISvira0RjAABgdntiIHAIBsRCYnz2SYJZYK/hVRbEukl1EPXAVY0ZyXEgUBQAnVyF0CYg8RACAe4MJsXOdWFSoeBCJhfAUgLtlBRFhlti70QqR2AtOIZLvsROJvd+yI4X0FIK/SyT8FGJcAhRAQCFnJRERib0MFHBcCEgH' $Zint_dll &= 'iO8sEYm1hCRwXIiYWT5VhH97GDFZEfRA+AAmgVg4cFwE+TMNcVxEaSqrLyse3HBc9OwNgQSckObLcVzkWgCAv8dFgV8uEADZXajHRT9CEQIA62OB+rTIofKxXcTuXQzUwhnUAB/nhgaBO+AA+CvaDc8UEWWA8qhQBhEIUAZyXDTqEgEgtN6dwJ5YhO7jHV14rNEBxBEdoFsQilX0IoqFKR2IlWwUoIhQxYtY+UYEsViFn+RrVhqIhRO1FAPWmgCSklj1gA8hlFdzXOiVAEf/b/4RibVgmSNXZRH/kCAivWgkYFz4RgEAIImF8ykRiVX8D4WAjRKNNH+NRwLBQ+bKWnBMWEPndgwFELAogIcCwRCJhDV82ChABIAYkB9R16EI0MSsWMWtWAQugdhICAWIlTO9EIgghYYUsK5yhW5KqDMBV4iENWyBnusMQ4iBzi46MTjAGkcIxoQ1h1EQg/8JsX0AiChQJfHAeBYsAVMEf9IEoRkNDEAD+ASNNMrrW9kwiI2U8xERik3xAFac0YSPklj47DqxGEDgDJS4VCu4HIm91xERx/8pIj0iMYVMJBB1gVhZ1TICdtUywg5F/IvxixH4iwMC5jIQrztkIEF0lPmSWMmSAtEIA54CsiVHEUNR5zOT3EhSSKpwCusFsJIINcDfGCVwDMAfMn4AEDQIzDCYn8CnNx4gwCfxAd9AEI6BIOsEGQPxiZXbShCJjXQ8XSBzwxFhEUeDYyCDxgkoiYUYeFFIeRwRYoT8TAwBfFz42hNxcCdxbFb4RgTxYxNxXHhHBOFEH8cjhSBxQceFJF0SADBhXIhCEsaFv3oSGCClgjEr2SKVjHkcjVWQFFFnUg78kuBQKQQQlWLMUAiT0cJSD1HoARANg8YYR10AJLBSCJKGQgJhJ5WHQRKJhX+1E9AVMLICFOe1G3GLVcQCjXoMx0f01HIEhI8c2UYE6LnuAAIAiQdR2UYIANhGBNkcJOiYkBUG6KNUcYSQbQCC' $Zint_dll &= 'nkki/NlGDNhZBniRhwc+CIAeyAWAQRdN/IlHBIt2ABSDxxiDwhhBgqscIYlN/HWVDgVzDFe0zwWBAc+VEACLeBSR7mdASGXzEHXAuw0hAEcI2EcM2UXsQNiy6gJUR5NdxY7B3QDtcQH+BcBdgBwNAp4FguNZANgNwFwhRRwa8l5+kN01ZyOxTiDQjX1ssFYMkegVQJB9RIBdRr/HGQGC3kwI6NjtAgAS2UX0DvKAfcQtt6BUIUwFiUYU2QfUrAAVolDRiloI2FsHUNEIBa0SlVzQKnRk5L8HA9NBhQLq1BArQDCYk1PXxwzYZ0IMBWFR2V3wFSHwqhEQSGUQU2Ug8BFxMrVU0RMRhyodUIGCWq0RQQgRQRAREYELRt9sEJcRActAuUt/TRQeCeJnDXPHl140bzhB9USLgik1DUVSDA0V4r7agrt76ynRaBKHEVBwbOR4EAEC7CTHBt0e2F/LnSFAD0SFOi6xeIXw6A5Rxe5OCnk1bfUKU00PbQWsgquKBVGwr2ACK/CwAisK+w75PhKQ3YVOEwcS6PzrwUUEUV1E2pV4gF6OJegJZMVQoQYNJQmFr1Shi1oQrqijCRWlUNBV0WBGqEoVj1SCkQ1QSCIc1aU4fEHGF29UAlJjUYUOFU9QoQUlJClwVTlUQUQlKKhGAhVUL4FRLIFBDuoVg24BSCswi0YgiUb0DItOCInGJqG9HolWCPCLRhRlCYlG+NVZGf4I8TfaCNKkgwApRReq8ungWPESdAYLQai8EfYQRhhAzqJgIYXeNtY0IwAGBSB0B8KBYngBdfYK+rDlAaLOEZSWFLArOxAM86vHhTDxziRxXCiFSQJovRednCSAHhGnLvBcC5JYCIoDIIHmchChptBYyFtKE8YzDBFolDodAOVFAdFEIH8utUsjEsaFtzxRYVyIizG5GLOLARyC6Pz6HuAmARt2EE34yIYS40YdxAzdCoPBdBnHhXSNAtIG0olHAg7f4ImdtwUSYQsm' $Zint_dll &= 'AEGFjA4VIo212RGNvQyIRgowX+o7CACRWEuRCAPou+lRPIUYguVSHAURCHBcCNUFRtUDQVOLVQWTy9HothG4FokTLiCJhVxg0QmmLSHBV9AQTpBBZ5FYiMklU5xcAmpYQIuNchwhPAKxfIDGJxcrEceFcBSQnBnhwxBF4EoM0cQYFQCBWORY6rEMdFwERChoIF2IiFWNxi5Fj54L1eTwAdoRcH8U0WSc1fHwF/hQqNfn0fMBX9oM8F/ws4h1LxdBuE8VAbDYh97I8N9IQfDUSFvJbTYC2UMICNhd7P9/UVsg6ZCnsxCLQ4bsAJ9I2CtEJgUZQxg7wSzAFM8CFu6QEPEBETEYzCASUAlLEItTXi+Abmr7CgJQiUW86I0gEH0EjgLg/xVjMRQ+KuC2DpH6eUDY+zUo8UD4JhEgDOCLfdxDJxEG7ip8HGHET2WIKkyJBp0CPkYIlQ6O4tDfENuwhw5yDGc0vh7S1BDTMYDufk4Y0DNEgD6OAotNQLzlDIlOKDPAxzFGLJ4CEcGQaIRjPwIAiUY0iU48iU5AQELtkGhEtDgFMbI45AIDUeiLxr0xDAcxBt4wYBYfTAJMShYQKOCw2IQuZKcAKGCTA0wli/khBIXHSg9Cr6YPcUBiAyDAAykFD4xyVAKFb6ACuXdYETP/ixMWiY1Ahg7CRAHi49DEwH9cyIMCE/8QQYMF+jmJvUR+HIJEAQB1BoPAPIPBBSKJha9hEYtFsC7n0Ch9wz2xUQiz+AtBggbgJAOLpMcn1GxzJfQBBFA4ACHFgkbWzpAuTh46OaCxiNQxHAbRWBtRsWgAdb3ICXJ5EyL/qRFBY70S8hLxqREMRerAoqEdEY1wIItBPScoFFZqAY2NwiNRoMYW9X9NE5VSHzGhxiDl7w9FDNL1IAsZg1xRBKkGAvU6AMIsm44boYbBDDNBEhC3OEQeHoHUKOsijZ0KG5FYxYBxXAR+mgLRAoEDQGe0wA5qGFMZIM4lUUQE7ksf' $Zint_dll &= 'wxhI50gh4HVD2PEE626NSzsqNDEDQRAfbVA79w+FSUEbsKlTEC7zkDoIAIWGcN4vMLUa87MaBoErkhr9ovUh6T4aUR+SI1SpdRFqHNES1gYpkxeA9G4DIYMrFgGhtoeGC74lBgjNPBH4IhgQNGpo+NADVGisEWoM570D/KJ5EWoMsRMeGZBEkow9MhehhoE9gTtuJ3LEl/ZBv8jouCI2kNGZEBo9wSCRAo2MhaC+G8DZAVGFkBgR92RXDXQ2FItNxFNgIfTGL2AwCLAH8U9XkDMEwSkSBlUM0SSVMO9/EFsUEIPBGK420MRQB03IC0CD+AnJAHyLPus16SFSHJEeovoi9gjgN9Cx2EWcWJQB014A2nUCUV1SxFCXvqhSBMg4uIzExIhMl4zUhCBMEWlDIhSXEyMDqyAXVcCJd04SCGEgwRBHAhAAEI1B/zvYfSvkV/UQXs+xtADiL9QwQpcwmBcDtX7Q2JhIUWCDXQcQBjBUJXAcFYHAx/qzTsIDUTE1BH0wUSHVE6XhMQhRAV3kPkXAUVLC7pMQ0SqpKoT9Iu+gEE3Q2CIF1DvBrlVBN/9AlQT6k4kaCIu+E0DYqUoQJgXGs7EINPUmTglRb5BYxMReG0PYqVIQggWwE1xEN3UIUQRfV8hS6ZQQlREB6xpqSxDQK1HXK0AvlBC9IuYI0StUlSQxKMxBrcZUnFEvYcMBEIsMEYuchWkfcCCF/pXs+ikEGgZQLhC0UP7hLCChagdAbnkLQIPCTF4HcOiQAFUID4xVFPUmegKBokZRbwJbb2JFh/HzX7GJQxEDYAUBKZxTN2RcbPhDAjMDvBhpd0MdCgjNkjZgoA11+L6vxReKfAKWdIoiwWeDOjl1AmsDvmvdA8rAOxA9oMKkAu8fL0qs4Q0fVlE0Y594A5AokziTWAeQiAGzGJgA0uYSlS0AaM6AdAeLQQiJAgHrINlBCNgaGTbehh5BiAWEgQm3ShBOzFIAklhkTQGJA4tJIF5G' $Zint_dll &= 'LQGve7QSxk6ySx4l7BozQtK6TZCsSOAiYwsNEIgEOfKgEDAYLABgtM6hyOUSQIIwADj+gwPA4AYiAthGsYDIlaM6CTlM/1M6EHzKOUD+lIM8GBEeACgFCgFAw663Ar7DCqEOBc9JEAhTihwRAUCA+4ByAUHuUIETv+UntbxSE8EQ6D+0r+cFdBaB/h6GoWYAG1foT+sYIcpHgUMDhl9BSDMqgf5wLnIghwER6J/HAXcQgcZgMfZuIIYliTdfXsPPtPCYAkKM8DoGCRA+W/IrEgEiF+FOJ3MKZosEEUVY375e4NIDpZsWGhE9aBjARd1cYBHSAyN2BnIlPUgYADLnwRXI5QMQZteyA5FvUSKPEYlGceRD9wJ+azDusTYueaItZqxRBppr5bGmng5hRKaEB1Zj430BeADBbDU29ESdhAdWYwkQo2ggllhHBlZjImM89gEYzWyhufYFkEBsYDVmMJprysOjwgaaa2o1hvyElJJlYDX2e+JWY+ySSoH+ngbBczW36AMyAAsh1F82vDKFPlYmGwCtKA+F1GBABGnT1gFCJMIoEOivaRcRD4Lh1BDoT6a4AiEPhx/FEIH+ZudNE4T9EoH+xuT9A0eNMY4A+jXg7gbBvl5YAHBvj9sVxOQaCDgQFAGQOHEfHqyuZGBTD42CmlshxwHygD0UC1/B4AgLyBBeiQtHOkDDjY46fBueH3DpC8IcATBidyCOAJM4ISYFYzURX/fxiwELXl2D+j8bwvVQEDQgvIBctbMgywcx0r9zYhA6pzDTHu3aAQBA0eFmi6locgAGEDv1cwSL+ELrQQ9mi5FqQCEP8mA4i0ACFbBzLffXrA0WTsBxhhBhD023MRANAzJIcPMgKMkZLBHRLWAxFL0C8F5G0CsiKRG9As3MzMxAvn9pEYPCMIkX9wDhi8oz0sHpAwCLwff2iweBwsAKklEhsCCceIBbEBAEQXAfvqLMLADR6QPKX8HpBpm9EgOBS7khvSKL8r0C' $Zint_dll &= 'sG0g8YJnkgWwIJ84A+wUEDYRMJMcDT4jTfBltojI1iJgtjgH2ShRBBAyMeBcRGEOGNoGAtPzkh9k4JkMv+5FsK6x0/NjTAI0wEsTLYQmhHOAOy5KAx89QoDGciCX0gONAXNNIiUfRAyFAB4rEek7PY41vz3wL0YAkthhBDAERgoNDM49PkAg5ycEMriJrq0AvUA00IKHjAHQQxgADZk9nlk10KaVSwC9CDZmi5IEggFzDdBB5q89B0Vh9gvQg5HDbWDcbuUGd19wjgwHUQDgzBgQBUNxHwWg2BQ9c1I63EbG7U47cIamWgwPwANnaXAODndqlHBuBQRnb3D+FVQKZ3BwfjMEZ3JwnocKB5USGFApQzheKVBk4gsBPdZE3LbH7SxIRtyChgHcQ+styg3u6Q89IEdoAiONAWhDZIIA6dNogWeKNpBoRsuNBq4x0cMClIQmuBiANlTZrWjQiRZwtiiABqgYQIk25NNoIIgWEE315TYYEFmEFmdo4coErflBn/nhtOIGwA28GGDJPfQt3PCSBCKsEBQzPRoYEBIURyAjD2ihduiiAElAUUngiXAnlQrnzHA3BefXFXCmxAbnjylwZgfn/llBcBYJ136QP8Bg9cM6c3H1IHgsCxGodwH2BTHrAQERmH9sXwB1B7khglZqsD40I+17wwzRCEBgMfMfjW62iMBTaNkmNwDPdwQJi/DrFSKFUohJFBnKD4JuAaE7ENZyZ6ARB4sEVcxw0gBgZwgRAL6mAfGrLxC6AmBvB2oCYjIQFo0mA3m/6CMvIDoDp+8xoD+JPiIDRxgiAytuACYD500tOjJeX0IhAcM+axC1VRgBMXC1aNBIUIgsAmSCMm3tJxMMFh0ws71owT9lNTgD8SIgBUIdsCM0LPICBoldDHbNUATAb5e1WEeR2KdA0ehHsIUMASDzNwQFiQbrH1CWcLB50QeCqpEdQoZ+sWBpAgP4QjID8B4s8EkLUcRgMwIEckDufKBPArI2' $Zint_dll &= 'YUygNhIUMHKzTQHbuiCJFo1lb/APOlDyL4ArvwJEsNUV4/8y+t4tMVIQcggDD9AnkCeBUBIQjbTtEkQPhEbSsdgFQbDYx7A4EBlhwZ2JBsAEnQHlAtnV5QIgxFNckFgEgb5CvFMFogcCdW+LA6sUdS0Ag/4gdCiD/h0BdCOD/h90HhUSzyPTETrtIIV+iCtBC988EB50lE8nMhACKDoCAMhFGIzjB9UyYMgXnj1BqH/b8ABuzvEQPaA14i4XVS9DEYsRhUNyEHQMng1ThaDsHBSyHICzAgE9qC/bASQkcn4AgPuBcnmA+/4Ed3SKTDiGHQAkB1AAmO9npwCYDwAoBwGY73+3ADAjDaQ4rxidKGKx7vwABHJMSuNxBKg0HkKKVDgCilwDOAOA+oGIMnoQBACAIdcCqO9/hyI6Jgcx8joL4TEjnV+gOEBHQlKkGC0CApsxEAlW/IrLD0kQDuvamSFFsjINkzjGBwJUFGshXPMgaNYVjt+B4bUHX2LfMBwl4UACMYX2dhcoEAutEUAQaQDBBIoUOEADiVH8O8ZyQQcCh4PvGzitEsaBJUUi09wiTvxVBVdWUejJljph4cMSgcPcEjyXdeZeXb6BJukPiSk9V6wVdRFI4dVxDEBqQwHVPyaZ1qrIAdFSFSHYMS0mmWPSQ0ED4dgQycArXscCquywiW1opuoco9UxMAYdoMdxLPyj6hwJb4AGehyH0GmuzjHug6DV4cSc6hwjFPkK8EeE6hy/RzJnIBT5AX0tk2AQJIsH+gBKJa0PUIv0yEMpEfYAEHvzvQLFs/gAuHQPkdgEYfey2EdAseK/aGANMAWJAAQ36xRQjQQ3GFDoInqCIgMYFYtNIhBDrRjZctZlnQguvuAuAELvAvAE5Sz9j5HaV4EhLlJx1xsRF3Bw9w+hjYwV7V+d0Yp2w3011SBlhf7+TBhTHPDV/rMFkv2x0fpgOgBQAhwwXhaB3+oa+kNHb0EiMgCLsVjl6zwAECPd' $Zint_dll &= 'IDJIoGcUrb/vlCDAHlY7yIEPpzgQPHGKVcExsJiyg27X5ioSORwQU4vVXS9yQooMZjhpDjEPoYjijBD0kQoa9AE73CJxf1cBqA8WmvaQ6bAwsw2kKJCvqJ3osb4rDsFhLRQ6XQ4HPwgQOEkOBpEAZJpJUqygHXKdpr6hxh4cGF1fiY6pIbMeMjvw3U0uhubB0OQP4FMCPf4QGXJEsd7jb/BvEjVeClG1iAvC4fwe5oix/zYDcRkAYbUDiwIRWQAw48EQXn6y+TkMgv78QATiZBKEI7oTr6EgJPlhhyZB+WlDlDCD+QhuD4VgeEOStAOQ31c3iO9WV8eoRBlSU+jbVhCyS+JWlyCmyPExHghxsCvUEAPrC1Pofy4FKP7dMgCiSHQQwEMH4kZCsJ4AhR5GN40MAJsDw1ZVjVRIAwhqB1LoWzJxMDwAQmsPCRBqb/DJDeHdE4HvBiuZBFVfcxFTZiCKBB+IoHEC6W9oEIA8H1sPwd9LNI0BamlqClF1AlgRc0tgbHkTlvPgpkagJQUGOM0hrjfREQQw8KAGgG5u0ghPBCDvLRA3kRFx6R5UEhHADGFqBXUZbALUelIXAUudsy8Q6TmA/8AgHzwwfBQ8OQB/EA++yFZVgwLpK2oFUekbRRA8AEF8Ejxafw4PBb7QVlVKtQLp1kEBwBPGN8Gj9/cA8eALHAZwMIh+ADwMUMICCFBo9MQGEhDoF6EgCAUiaZEerRwcwRJ1GTEP6Cnx4YgOfTGIn0ZIBOgH+4T5AiuxdyfSOhI1YVA7caIl0pgn8VB4LoAQxRNu9NFePDEIAwFHynCQKAORKADEEB1TMIi+sq6imicQkSfQkC0UEgawLmRBBwZQaOwZElCAwSYIg8A6UOh06SxyoQCRlHA0pQRBsbPMFYHDGGZQFF+iMOEbLF+JURCmtvCABDCIEaIxB/88AKErOfcDkD7vZ9VIgxCgSIDAs0U3dA4ZFLSTF0DAo+U3UROEItwymQN28Isv' $Zint_dll &= '4jWslhBghdZhrwLo9gpKMN4FIHEZDpeQNoybRaFgIMDzVXBvQSEgjQQ+O8PFtwIQ5pSyM9/3ZwOBYmIJqkMNERT1DWtb+zAsplMRLECHUNhON+1qCc8DRk8783zYUvWwlxOC80Dpl4s6oNEHxdHIUGCw88zHo9EJImEQ7JrrUs4gRQoS8pcTA+BhxLVk8AnoFv5AB/aN4FDYsf2n8EgEX9AfWRtgEgXAex8QAeKOKaoU4SsJIgizU8xCR1EZQh4GQDgLOzjzdKlSfXC+FYqLCbXYP2C4LPAIFISKA3pfgHC16MmpZxRGGA8yr56PmBSSmMFE8hQ8AVPROERgAAwQGxgQTL4BYMXyAyfRAhEun+4RAxgQQGB2v+gR8ioAATDTPlMhvdNtbgE07u+AwgAQPA+GpzETjXwkUYOa64CzSEgCmwzwKwCBocgQsBcHoWkAJH4SCDiMBI5c8EAYjrgqASLM565XcY1C0AaD+CkPh1PeE3MuECxQv3MuIAAYoGhkAlWCjmsICIpOf6tUqjQRYIUigC2F/okCEMDgBB4B8KFolAIBhf6IFkwkI4oEVioCyFLhACnoQHyIdqJotAKFnsaGONMnEEBFDALIlABlAQQkL/shilYcUiDoSYiwiK1o1AF6zEqyEw/iIYAdhU4FUw7ykQMg1QMwgk4FkgsGkgvVkAsZAgWD3u84CLnwA+tdgMtQ/40EFRBh8b/upCKzTYNANGLxsgxRobM+Q0pJFWxAggPrSRX0tQ4BTusHICNMKZZyUNjuZxJVoYPw9V8XUeBQoXMBUpfAARY6VwF0R0ACIzCwUyyJD8kFcCGD+OVDD3SxWCwYD0XydGDSAYUmgFBn0HBAtLL+sGQEoYACTEEpDyIghDUKSIiMFGkWiIR0FO0YQy8RO6IQPLttMjwPLoLpLkKR7DMPhwYR7qNBCUNCCgqWnkYB6CcSAFPnAOg3AiPaBsZ5ADIB0ehncqAXRlksuJTSQhnpGSkAjUX/' $Zint_dll &= 'gKZOAEzXEBSNX+e2b1gBZQR154UTr9MgQ8JAMJzLSiDT5ZoMMTIEIYz2CkiLVD0WZHItjLbXwmiBiuMujAbH9BAvhpOMUCBUSmM7MYFoxBUTMmiEt3QNsthAeEgJZosViBhQCSD2EIgn8hMcdAWxBRw5i1wdwmhxJYkFy9UQ9mlhtohkmNsxkxyCgKLIrIwDzS3EEDygIUQLJAAz0v7IJAeK1GoMK78UkwoQNJIjsEEHHCYy0qt2IH6KwTwZBnQDa4D5V3RmkLFlB1Fgvi7W6KSBtvgSEaFrTAhPrgMRMKWBptcaaIGFnx/wmwizmgimgTbdgoqUBOIcESPhEwtqB1FdAS3SLgByshGCAxYUQKECaGJSnQIn2TAgO8VSHIBOyDw0agNR+m0B0TRWt/gOIRYL/3Q2aCFxAhJqCFIpACghEJCSlA8BKgQQsBIgHXCtAQMuIPASCyCnEI4RFE2KKSSKlgUUfNDRQkN0tY8RwUQi0hmkEGyBjxDVBsHSBhEDoVIKESsQwQLQIPCCDlAwMBDTIcFGArXYQ0ly3UxxnAISpHDICZH40AnDLXZXD8cQcA4dELMxpQChcPVu9WUBSP8JITABGEJxk0GYngFYLAAXJZXISkJYSwfowxYQrhfyd60CAbdYDlSLAjQuq5MHX4CQB28A10TAB1VKECKgIhKxBj0QV2oJO/8VNGEwTIPPQREeV3QWlmLYAOgohlT4hJAbAOHLAEe6ASoQOQwgxwB7DEClygBjDKDCAGgMQC6wGwABEKAAwAJRAxBAwAAFCgY8cXQAEQgKCT4xaDcCCjqAcbVopL0h2zQTVuinxANdMCN1EYP7AaUFFHVABZf0I4rDi8v+wHBWXRsMoDUzxkYdCAjT4MdGYnLxb2zExCF8CkYYlhqAARro0OYc4lwjher5YZZjhIFgZ7GILDA9iIQxQB4SCwBktmOEIQehboV+fRmxaAWxGGBghcghgC4mWHWAAyERi04QVolOFDzo' $Zint_dll &= 'S0VwMzoRHiEhtwIYVy9SVu0AAb/pQEpSsq0B0h5gcAVlhV4nqyFYwAdBR5f3dxFhtmikATn/CDItnhO1o1yHAOZvpxxJAEBmPf8PhwUSdTFW6LdgEI1Av+YgoEons9L9gGG26ISBWTLAYDafFJESkeikIX0nA4EaAc1QfYwHFCBZQ8PRABhXZkA9AbeCEIJsUkeOaMThtgA8BghzDVboWhWRj9MMqN0YThA7wXMLiwAWitgqy/7JiAEMEItGEF9AcoIA5vVNEuanLItIBIuwRDS5B4oRQYfiEEgICEmJSAjOZeKgQ0mC4EEGdAm2ZSHvFSADPKxIGIBCBNAGLlNvgRBNoOjEIURBmJxYTyDsbg1OFCSNkcKzsQMt4QMGxhwEAf/lAL6S0A6x6ETAsBMsN6JXHhAAx78jEL6E8F8Bdd8FJIELGzBADYkGixbUIDwMAvoLgGtFUVOiyjAsF1QtoIMth1RXKbBosfoDYtXIgxSh4ysryG0U0uAIOAfo9n7xogukHwzI/1tQw9hgJpcDyCrYZgHTbCQUgPsIBRlwcqbA0AHADRRWiAQwEehWpMG9M8mAw1D46QYVogpBuG2nEpyKUgLg1NHIIwAeIIvR9TDK0uCKDwgKyIgPqQAqw4g4Rh0DG4B+b6J0AGY5UYolClaL8Pf4MED+CBAX4GG2E4Qhx65YpIG/MHAQV2YPtl3KF5AfOeHFIgeKED7NJJ8lVuj/bxGHVIBYBIB+CVIiggA2WUAozxFGCIvfMQI2Vi7oCoxxxSiKSsFYdWvcM4AgSQCZ4y9gHFkA7SKpwi4RpTADfrWAik064SJgpDEjHTie08JoBpPTUaqgsWgmDtKrwBXg5WGWSGnk4bcDqaEKGo0CTrprMGBmQQxBEZjx5WWWOGFKZoQZTGaLjE7EsqNsbl4DMuMAxXXr6KHlJF/4dVDuHOfjI00ZgGK2SKRi5CHWFiIuFABRCIVjRdn9QqfwAIRVMEUE4mRmUjniawO4' $Zint_dll &= 'LJakgD6t96vcAYLHMq8PYZkZKRJ8gChTiUIBDpDQheCXBGY+q6prSTLWjbC7GaG5CUPdEnbsFsFj+QtGN7DYAeCJBIllj5J0gO5pbBQPcNKqAAdBbnBRBJFYRj/xB7LyfGKXAZO7qhCKU6AhajaBkAyoj2zBDKgHiTRN4MeBMG57Ea2kA1JQoDokwPwZCwJhP4QB0UJ38MkftNgSsLUKUyn6IhoCD4wbkCRraRHaILCYtHguBNG4O7kK9MAoVBHJD5QQi9oRioOzqxCNi4NpUVhP9SKA3gEwmBY38OBIZy03ECLLc8MKo/OxCliKbFStyGeLVfRap2TdClUMDA+OUea14lIBBItCR30cJIP4He/DEeCA3jsQtfjEL3UVBevHDezb5TCX8hF1OusakGyweIQGUFPoykXrUjz0UGjxCAXxwAYqg8fWiKBoACXsv8AQRQ/sfKLpjsDBA2pM4Mo4i4ZqsEik6AADJK0B4ozEslhkCAgMwaFaPHDTYa6yUrbONusKQp+z/AqHnD2D9gDhhwKFBgwIYo4cPP8KhJuJffCBu77RQfg3CwK32MCKbYkLEIsVsDSQOEUQSkbLEX6b0ICbDZW4hMCgWMFLA4hTEJLNsWh4VLBOGBtJhBwbV1RchC6wDI1N3IieQIAfJdU30NhIfYwHOEAfZWUQBZKtIe84WSCu0okSBNAC3sS9pwIC+qUCsRtyEawvsKjMgEtWbPDXKZMSMmMPYLYI578jzycAsJg9iC6Q1MOUiQd/6ZajAii4gEAAMPNvtojnv6P/SgnxlIJGKdKHcTY0coEFMWhpDg1/DTvG6sMQqsHAN7GILQgBz78gdS2ft8Ag6zUeRhRcY0sRWLERE4IYHjm4L+BWDvsDdXAFmluilSq6VrDjnVhHxuC8DUyxfgAJdQUni/NIsJgoCBBHuBDbPRABfws7zovBfduqE5QhCjSboxARBjpf0IQHmRzQyIAhO9d+ecAuwiBPABo7RQx+FSmD' $Zint_dll &= '6VrTgLSxF+JXQAQlf+7swWAQN0EDrgDWfhKD+w19DQCDwQoz9kNmiwYxO9Z/7lY/UAlAQxVQCVCXB6RRNOAngYSExX/pXQCDwP4guSG/WRD4A3ch/wAkhQTLARC5j4RRAusTuf21A+sMIrlrGFGQm70QDRF944ciygSVNtjJU+vdUMHWGRCNhQ4DYaMVjZXdFxBS6KcWodBIsNUIwbQREN3RRN9Ik1QYA7Ho/8Aj8ep/hBMSqSsAf7q6AkC9+OzuFQb6i9G4MACgVEpWolekQPQWW3DV2FgIg47nKbEKfQlM8L8LAYXuA26ZClLXoHkTiUX4D46Wz1ogXfTa2AHvJkXqiNAIQGG7EtzIYJcISQ5VDFLS0IQ+cE2R2MUvshgw2l4wA0wwsL/YxQAByrNAMaoXgMhxgJiBCJBVADTgPIhfAMLXLlIKiF8Fi31g8Nd6YdAwED2QnTg57kvBv5QCUDfrTypKmRBzbGAxFjLDAP/AuGwUQlQ0DRVhnwi78QqY1iiHOO8K4mga1kow8HxvHtEkqgAFEBNmFSCLz2e3M8oYjYQB864g10Ui44oIHwrLiNaYwQmuenM4SUENMvxJ+sIhaQr4R3PrEYCgVo1AoJ8OTfh8oNsMReTZWJaS0lyokFwRABHBABgM8MEAsT6JTPEcCeMJAQwzye4LQUZiCQKSEkHnoWUMBYMCPgF1FWoAB80RCj7ozfJMoOcIlqzAB3QQZhTFFQnotVxABY1CVl+vERSL+lCyLzIlafsiagjyVUB+oUQgUDjoi6TACMYlYEQwJYCkRgCFntcE4cAANZWkphAOYjKAjsYfCbTlCGJ+Lt7n8QEQchkJA7OIYkUwYwgB5RQfU1BVYuihCT5FU4e2OIwEwRG4HFHTyNYIwPesCyVCwY+lIpn3/r8csQIgv2icef9fKH1DNyEgAsJKUG/QDF1igicTQFcxFRWFxuh6APdL1kAKJyChEts7IIk+QKFkEb/LIGg4dlZgoRUw' $Zint_dll &= 'MqABPDBDPBIMggDoiX1hF4l9ANiJfeyJfeCJBH306Hu3DQtdFASJZdw73xpYQEc1YnVVQMCAPlcQIEcaQvuzERB/D1BXNykVXopQs94CxQV/Gi4hMPDXoCaAbsQFhBDwsL6gNoCeAzMKFFPoL7gCIoEETVUc0qmCIHoF3KJXUaSMAjiLXaoWcTMfYWYb6A++LAQCWpxB4ScF0RjBgwb4VQ+HQCghXxaKIhjWY3gg/NUB/QwUjD8wJRMPh3MjEHSAyDhLN3AYECBikG5UEEvHEVpCoHOPA6CBCzqgi6DTgBbujAjp8gpBI3fiNOG/GDQyThNXPBE0YkVOE6Y0VU4TJ+EgRQXwSHQdSLfXEiN6DsBgTIADY5QFIGNMpIETEGOKBjQSQxMw6kmBs2ASSRHkSTHMSTEKLmj7xQTpF0UQNCLVHen7J1URNGI7ECuPIDTiTxPjlBDONFJakV6QLWstEo0QEFHXjSD4jTAFahwOUpOJEh3pUqWBIh7ph1oSjShwoMa34w2CIn6HWiLrUYAPURBREDxRMCQYEBBSFx8QYRMTNCJvZBB5KFI1jxJuKEKPEmMoUnWPElj/uiDgn5AQcPpfIO4OB44RoHtKjUG4ggxwN/UjbRRorSCVUK0wFywVWR4cIqAgBRwxsG7UCYgcQLBuwCEF6LFlFQpS9c05QbdUfXZn0AgUioiU8TF4GIAGTVjFsB6ChowRGmhEwBgxgYaLEQxoR7AYUYCGGs5mvBW/URGtGsGAnpHVYZgAlRHElTFyqBggwQuuA0EAaVMhdlJFzQDMWicSmO81GXwQFoH5F0sQfw6NnABJGP7/B8HjBQID2Ot7gfmxFHwSdoH50+MQf250YABKZ12+BZC0E033BJo1UDcCMTHIN0mggFDnsAtmNQVCiV1Q+DNNETuA4DKIDzMglzKIn3NnvQw6Q4ARSTBoPgf2X5BzNxHqzw5CnNDIGRRlAQiD0LCe0IgZFgCAAoapMw9TaKC5gl75' $Zint_dll &= 'oNbQMIUe5u0NPQTp+30QBDtNFHQTWCCg1gQgBg/oRmgT6oGwoCuCkViEfNkN8t4U0ViFDChXTY0cgY1EgQQix0VuNJJYRa1FHwO5qREZqRFNBOvCEEKJlqYARGAbAolN1OteigQLUWhozT5XIDsB6HNlDYN9EP91doyWwFCFve5fC6J9kbQTEdznFQPRUHclfB8KOgp1T5jyFFLRhEMu1AQhWw8+wkE+OOybYAAvFgFgYGQsnvFAAk1E8GAwmD9gAQh9EphOE9DXoBsAqiDg9EAI7FweORB0c4tV2I0BQvOD+CF3NhkYWvQZONgYoNcAJu4Wso70oWwk6xiv+CDrEbiW4uSigHsuADJg2hCOGsAZBuGlEcH0BwpT6PAKWEAYoIS82MS8uBYS1DhCAXhAW8EIBfOyEEEfzqIMIGoK0VIJsJUAFRBQM+iqFQCqBASf7n0T7VVHCe0V4OiKlWBnBxLNCQz0ixyRRqfSc0D3ILmXUdTWo2cedWY4tAKJMySLKqqghhCMnivCAEIdMCefML740IVf4cG9ywziPgvgT8kQ/wMUcS0H6HAUtHB2BtEQUASObqDLLiwCY6DfTVXzA7hSNLIDMHy1kTwYjjAYEIwQNYXOHCHxHc6BBh62IRSUF1MPkGlBX/Jg+JA6EgwkWwvpes9UKYsQBILNGAXNCHbhCEBBJKFl9zCIHxZJEnp2EABSR5QzE6BIEAmFBs/cj+AlUwqBXRZQEhAnUF1PYOAxha7DCZkbY6UwmgJgf281EH4poT4h9QCIzWClQFUhAooMglFoMKUayMN5C6XwDwVT6NCcUArBfDEoIVogfehHPBKvTxFNCIAeJMC/yBAZtS5XHS0YKBkUKMiUDRGVDV+xlJUNsz7SDJTEHYIOcWjnEPyLFIouBnGmHKHuMCFF/PkE/IH+5wb7QPPwqC4kF9EQ/IIuwPgv/EUIYWwA+U51Nh4MIoKBRBfxnx+iv2Aw6zWgMgx6IsOQ6xmD+ULy' $Zint_dll &= '8jhQiPY/QKGAMI1BqgaCZNnYAYPd2IKBAe4NAl7p3gDrJHEl+g4JkSGvIBYb6xFIAo8UEggDoIHO9lC3FCDj9zYoxQuqA2MYET0ydBFXVmZWfhWojxFlvPJKASqNAEkARc0BEBLPEAEQbhxQ5hwAQaXLANIsQMcEAAaoAO8SQCICDDBAUFBINQOL/2N9AER9AFVUDEDGAEwMwMUAxM1w3CEwQEA8BcSqvKDJALYMwMgAqKl9UQUAFTBAVEVw1R9Q9cEALQyQxAA7DFDLegEM8EpU98oGgwxQlckApAzgyPoBBKyjInDABdh8EM8A5rsMwM/6ABtREgBB0CZ/UBpasfiPywSVDDDKAFWxDMDJAKoMYNwxX0AwKB0Aoc4Gc9QAARB+0wEQx9DYHQEcgM8DvC/AHx2gAsHNAOAMUM8A568M4M4AAx0AbfYBsTUAotgtsfifqqUBgAxgucoAngywyAC5DNA3L1Dog8mD7GBTQidgZUkCJjRbygwQbe6pEBoGYEx1pakymHqAsLiwPsnuS4YX7GAObjPAK/UxfaAPO9jzpbENLiryb0VxPh9BUMe9brBoUwRdENGUUgnQ5xsN1POr8g0gbtAM+gXgMQGLBrniBLETgLyRfJ9dl7MTD0EFMmoMoW/zBvriIFBn8mtMECiWDiG5Ad8VEhoqoXAGigwgLSkONgVltv4fsk5mGgCJC1XgchMTIRAO8g8AG7tok+Q+AGoPgBZaaKH1E8Bo5CwBf4lV5Bv/AfffiX3UdLRjCRAIO9N9rEoPcTroJ0Og4IEHoFKAe1QAsQhSBfrVJyG8WMWeSFKEq7sAgf+2CdHIkQFhPGDjAZrKoBL4JADSUCcSypg7AAQNQCRQMAgMM5PsmlB9UPRODsHsMAR1tPfaABvSxkMFQoPiQDCmojBgPSDcWAUGbTIBzmTxUAkM1LjRhD0gSQE3dBEQhgUwVg4BK1ES5pvZYDYAgL3YRIoygHyCDsLrxALGRAE5AU4J' $Zint_dll &= 'BeY/4NsCVdSSJ4BAsliFigUCTIMgwk4cMFCVWAUMsVjFSgOJVcSLAVWwg8Jg61FTGBADdeiF0nUEXisgow2pxOUBK+Rg1seaAAIweOyR2Ee82LcFrs4ED64wgAEI8JcEkECSWIVMCgRNskMAqF8ASDvIdSKLy6AqRZBjngSLkCDOBgAQi3QFuAPyicAUIBAJQYP4GHzinN5M0odrXhwNBGYZMAIIwbMAoFQFBwMGgCA8ExJGsENUiTsn0pBIAYqBcIyAOEAwETRojGFQClpuIMHXLKQODHy7AgpRhYSfmVOHW5oANF8aGpXRJM0IBIPCBuInIcafmqCsBA+MToqBkR2i2FADsVgHirgSURTQWEW6qLDjLJAFEvGKiKUgTQzX6TAGCHzmjXOSE4DQyCNgF31eaM+njwMMIlJojIG+k6CYEOxQA2sIEU7GgTD4boAIQOQRgFjEUGiP1me7ANEVEz4WMCWFNoTtboAMjWWU/qYv8P8IAujbBYPsCIsQVjsEylcPjGoqioMxU2C/g7yY/ygJlaiEBcBLo0XKgNLIgdjIhghA0BhEsIPfp1c06DwJA31z8huzkMVBYvBfBrDOpLthgwiDuhu2UGhfRySqP29RIQBKO/p9NIM7DQB1L4N9AAp1KZF4UHJkrhHFBL5WY4FuBhNeduANEyBctIPPB1ZoZQfCcwPRVQi85VS3KwUB8iUWCgCxVgKBADXcerAQCMDwtHMdVKfED40UBgPRzDAEou0DiRF1N8NPMFp+oP+BAXKNFKPxCuRBFU4y/PEVMWhuDyaDxh5s1LjZA2GzA48OmjXgq4sf/0LLwCjoQwXodh8BwZaOMyHiLkAXg+YUcBGDnw1DJ76ktQUEkh0AFaU0oJYghZ53oOwgfluGwGA1Yz+JC0GwGA+xroE74AHx4AvJgCgnFNF0CApRAMT3HrMuILo4zhNhhYbu0aGAf0BAUFFqBlboHcRtMEpcF8jOqRwRhCRjrBggxwWsJLAg' $Zint_dll &= 'YFYYgRzRyIA6s32lTAAEVCn6uUoeU8FLMjiZJWG2yFFFWBDg5QOB+mAwv+r3ssgLLIF6VcDzEFMnseuDBQMA0/sAnAS44YQYAkGD+Qd84n4/cACwY8yH3WgUYIxCSMMWAA4FwBHrJ4AaQJeAyEgr6xgIxoQg4lcQfOYPBL6FF8YGrpPAUJmEwyG9BxjSeYIBiTeTIEwkMPI1UJlDSUQ6HNBISfJIH4GWiK3+Fq+IIHeWPGHAEzToSMGG5JA1wDKTPDCszSjDv99ARnOB8eAoAg6tKMMBGSEZHDvIfKdAFY7hgWvIGDA8wQEqjsGxsh5sIggrRBAgi82L0X0DnMYy0UgbIOJiFEMKMgPFNPOknqBRCACiZAeEJEB4lDAFhd6NHNAB0Mg4mjaSHPDfDhF1rh1h+H0SUQWF/hkaICkX7QN+H4vNjbRpII0AHHwkNGVwXTBzmRB+FhCNtBzKrdHIxkIToOiAyIAC5BRAgFVfGUCRL4AI9n4bwl53EWaiokhFoDcYGASIEUADy00F7znQpQLD0CAYkPTwaqxowMQzM1BsuhZYUDSyg65MCBQPjOcpEE50Qx5/8a8ELEgaM+0u75C5giC8CI0rJRXR+itHws5+YNbI8EUfMRUWou4LAVZXjRTNPMcRBtkuYREhYd+7IUEWB1HHmzEEQwGKDENzKBEkUXlVSpIg+wxLtiCL0SDHAneMIIa5AEWDwTZpASTAp4drbRoubgUQfUwMnmuBwVSlUh8MSU5G4kQqjUQAAAH2w0CNTAkQAbIx7Q/pD6/uAAPoiFQvAvbDQCA8OWA/DEG3ANGYFgA0FC/2wxIIdAw8RvWSAUCgDaQFAAJAmgAQkACQBSDw8Oo9gI1I4bVTFAASDwAZTJABBqINpBkAEECaAYBQEjHgXxIXDsJDCSDhIECWABBQvEk8AQTOA8iK6TAwLgrI618hIMbCE9WgXQHLN2DhofVmReJdAYZdoB0Fw2R2TAakzkZQ1u/AV2QQ' $Zint_dll &= 'Es+DtHcBI9AzEzEvE0G/CR4r+oB8kJizbrGIvyKgP3hcEHhOOE8Cg8/8R4k5H0oSOyjGfvUZIBIKkNiFIajkEIv686uN5/k0A8UGNmBtHxh15gcWQYtSaBCHIQ4AglAxow+yvDj9YyACKXQGjU+5BMsr14sudfRAoGQjBm/9ETtREuiB5lSw04fxNzcAByAQQ3It8frdyGApWBfQSOO5cm0ABYkYdfhChqsgoQMOiwiH4mDQxb+IYOcAJKBnAgBdEMHnAivPiwQ4iXwZ/GjRh19ulgDmUlA40MiQGpOvpwSZShaRr+REAQoSUBcr3gAAi1Xoi3XgTwMAzot1GAPTRomX2jtQR64XAU4iS1EWJcAKtJ+WMGIKxXG4EIHgbAyNBFh/hlQQ7acB2sbRhWEPECBAh9BIg2McQGQREGMfEABTMQIxbQDHDxHABk59AFp1YvhAYb4BBVT+MhYBAYYUBCCMA3W1jWXU3mIP2G+CpxYFShyg3SG2FwCMKvoSVRL1Abj+DtIHMQgADrGIfb+tsQ0AON4MOLx1jw2A2EW82ESsAQwQRcJ8RdAlhShQ9I8u+O/vMhdA0q5aoJUhxq03m58VCMaqOxtkjDjEjDN9OESMizNuOCGpHD5aUIbsBzGiyKBRDIBzVIQAyXR3gPkgD4KMqjABmP83GhhzMArR/VDma5IHHh+gqCDkAoQ2D2Gs3hXeOuFL1OMuSepd1bhW+oUDoW1mCE8fMgyYMBsZdH6eBIWZWrvAzRMC9ZEjDKre2QCSZIJKa8Zf1w0cAOErh8cJ3aCcO5MsVAH5/KEJul0g9wPKIWDuErI88OAItlxVYB8xVewrwokgRbxabgKviLE4bG9oJD544OEBTjGAbiIKSQ5+oUZAgC5QMXUPvlVLqhDAjkGgrQTkSjvIiVWBfNFEvtME3scBTOA6+8CymATgjAHBO2nHbhhgOxP4I1gRAQGOM5CrIAgV7iCh7R4marBOcrsKQcoN2L0R6xYK' $Zint_dll &= 'FSAR9L3mFGKwDHYGdaAmFcY0IPcFa6pFAfiJXewPjEpqX3I75z6hEj7hPCdA4dMHEyAtpU7o2SI7yIJlkEFgACkUgRn0DIN95AR+JxUWMeg7FfYCsJpTBK4fCSxVCFfeMSDmIHCTAFF3sLV4V15B1wySXoKbAtAMn/AuOAS4Eg2AFw2sUBS4HgyG81B4XhpRWmJnQjv+fkVosx0QRcwr7QO8piZBmFbAsNgFX1QR8w+wM10HlEiDMwMg/eBb9K9I5QASsBs4Ak3HMOBs6tcNijuwEXX2S1sQs7YR6Bht+/5+PeAaBAiJB0JCkthRRT8wX/dghOvCAKU9BcZ7oJYnwA+OwDsPIqtfEsyLRcSLdUHIjsbRxbASvVJ8AMSsdgIr8ItVvI0ADAKLVcyLFBEggfo2SMF3sJgwCBBcsD4xqE/GF5GwGGEnAokQ61BCMJCIcEwQMgGwCIGw8ywGCxQGjTxSCjfTEB+qA7DzrIAEfQAQQokUBosIAwbRO9d836kC4gDAQ2MAsC4CEh0QZD0AO8qbWmZhuB59EulClVLRe7QfSpNGGh1QJWp8IH1CA5AkEMG92OGUFyv4K95xENjAwNvYhDhgrPsEhBJ3QIHT2PRnGwQxMKV80wUSJKlbdXD4IL8WKQqL6rnAExCwPiP5AYjPYRAEdCGyS+HQWCWHqMcC0hxw7xGDxgEJUovSnkGxfgEd9IodkHcg/wES4wMqDlDQBPFAaOUM/6GOgUFosAv/x0XA6nTh27/RJMcGMsggigKKKGAyKn0BEDPbM/aF/96UonxANRPb0Qf/0AsRXPJzzETntAF9/xwgUQQUQxqITAPc0AoAX07hg+rAAkqSLJDgxgVDxkQBE/9bjUQ+AT/EIEb5MgaBMCNtaAlmM0BA4OcxiL9AEhR+0nNfEytlEB84QeIHASl+ddddMh04B1RDLuKhzQYtFcY8BAsKpaCMML4V8RgHQ3Z8KGQZAA+NUnKFcqMN4pkc6xZqcDkH' $Zint_dll &= 'IYIRFKZlsFO8kD3AecIL8UB4ZhDRNmKyEYP4EAoPhBPQFYP4FQ94hKMHEO/+FQoHEhvU4KcAMIj/wDcyiB/R93ejCzENEaKDEaokkAeAEWWwwjKRB0VREG+QZ2MHiHPkIa4VJXRK7jYACz3wA0bMsLb1wCgEJk3wA+W31yUkFN4oEQEfcP6SLUIH7D9QkhrB/grLEHTT854C0fLQOPgb0fPgEVEnb7AdMGTUY7gVD4Qm7vkxQlrxIEO4gRJHxBEPhL5b0dO1jyIFKHFQAFEwb6BQMJTWY0wZg6oxPadMEQ+EQsRg898z1BDREm/wgF7pGQ82hTFWB9AIT2ANWovhEg9SjWqi0TOsA/FAaMgcPWaTKPJKM9ETCQG58AbgWxcVQJKQkwo/sKTIJ5AwpAkJfCU9oRgQg8AaBD/wzVqkASE6zdFTihkQn/CWwUtWbkE31kP48FtBx9WjihFVPYTWp0EH05OKESk9TatJEIUehhDQGU8w9AQIYtt8b1A+IgjSfG9wRFfsP5Av2YvUA2JoAH0085wgDy2MlCIL0KNhDE5UkIgCtWHwBP4BC+gC2B3w8LAJEQHQw4ECfAc9t3oUCn5cPSY0s0ITTig9MDRTQxNAPTqiNPNDEzI9RDSTpEgTJD1ONDNFExYlPVh5EIwBSRFdKFHzaL9pEFEjP7Dcq0WeFEI5OAbRU4gSjs8VET2Kol0wj10QeD2UNJOpSBNqPZ40M1oeg+pKM63lMbI0czI1UR7Aq0ozweUxxjSzXB4DrUoz1eUx2uUhR7kBPVrf5SE85REx9AMR5VFIzF0L794zPenlIarO0ePO2AWx0DNPJN9nED34q0TTTyTuuwUQAuRABFIHARCOm2kQPQxEE7FMJO7V0WNBNBtEsq8FodIDQjQlRGJKFCqSKMEYKdAAPS8okJ61CBWsWSH2b9HThCpV2AEdUvBzRSTGRJHFRTRhRGKnFz1mRFO1RiSiRAFHNHVEUlvm0bNlEUEEf0Ti' $Zint_dll &= 'RxRbhESTSCRSodEzPElBBFWTRKJFFJhE00kkVEhEIZoeYu0dAz2nzekRUyISPRCdCUVEsaiCBbxiAGELPx6W8eDoykoUwERTTCQTTRA9yqpE80wkikRBTTTZqkSCRxTeRDNOJGaxRIFONHcbEQ+OVERRJZ8V8pMVcZ8VkQMVbXRZIYkpFSiRmKOBArUBCB8YkJhAQjMpNEGh1uNCMzM0wdVTh0Mz25oUiQlCNHNEExRAPUw0E0UTMj11VjQz5AuRmABGM2U0IWHRo5YOwUjqeQg9TW8o8ZiJAon5BG7yCJUEat0AD42eeNHDgwKhMQBFGODn0ANFExolPVkYYEHwBmkRUEar5PNEPlrkM0Y++fADUW/kRcYaCz1nFREkjntWF9DjhhKM36woMYcSj+t6E4+YIT0w234C4IBAzAEADgjUjCIOCGJmjSIC49FzjSK/xRA9VuAo0oASzigQGiAdjQGhAdg0UdLDjQGtifIGdqIHNR0B4sAv3SgCOe4N0UONAnR6Pd+MGDHX450PI08APeGqaTDjafAJ+04IRU4fFyI95RgB0WMeAVGoOfgdkT7k60TsD/BpefAL8dk7HiGWB28wkyTE/gTlFVVBM7wbsRRnwBA9WShgtvAGTcU2CtSjBTlR8ANgQUEqPVsl8Am7JVBcJfAJZtUigQApXSXwCYGQ5VUCn6DFnkDU82YhUQJvcFcCBeZaAp8g5yhRYSXwCTbpASliryXwCTiQxQYJ+QeXVhH59wZqTN8YIazwFgSfcKrlUHaqQTB/QfAJ+61SgOUWhW1dOk8RBT8gMf0VAgqExQUNfVU9PhjQBnCEAbht8AYvMlNgtDCQ8FAYgNsGf2D3chEiVhGRAA+NNrX5GEEokEVvYBQGJcQbK4TRegrBhCLGKPGiR3HZNm+wK4JORH3wCcIKASlWRSXwCSF5WkblIK8sET1kWigyMx7Rc9QHn2Bcoh021QefEDkrCwIJSSXwCczV7r4AKUol8Ann' $Zint_dll &= 'kLVUAp+QIr4CSU0l8Am9LJCEFgUJDhsghRFOPVO1XfAJClZPgCxUbROFAuNR3kNfAEoZ8ARDLv4Br1BbZVW4gwzR99bj2iCfkF8CtNLzWh2fQBJnBQsZR1MRmyXwAY834V3VECXxIEHwBi9TOaxz7G0Ygs/HCMMwEweD+BJXD0c7NO5SoFsf4c9MIDZW4KQPV1NqEgRwAKAmUYWukBVGsKCfA3VwZGwVGmRjxaVarqjSa7cbPudcIWR3EgBBPCRk7GfXAuaR/wYAtTYLoiAWjlewQoC8o2zVZ+MKXsPgMnPwJ1yxORGBMWC8owzkZ8kLjRQBO8JzGRGKCN8RcfpCIPfuP02BJQAci9Ar1seZH4wj/CBCiRGGO6ATEyRSP2hoFkcgHQ6SwTRUAeZ/Vf0gAcFVO8JWfQX20QBohgN0JCyF9g+F+EZJoYYc6rSi/ApcwDHQDOwkBTa7cC89KB5wBRAt3kiH8D/zDzGoHGDvBhQzwIoIAYPoMCNcE/iD8kMCGtggx754/LACotMKjDMPEcI7xvppsNcdETE4oA6zI0xns7sKEl4A6W0HxwL5IdEr1VBQQjMnEIpPtxAsUGiE8/0BvuugrU79AV3DvwAxf6ng09ETSmcBEQoQ3HfBCtFRcGsCDAIue5CGcLylDRGAgQhUJDJHMEcHbyxAMACirDjeE/HAk3O3AKIYhBIEPDl2VO3MExWBJwt4oJw96w0CEY1UEHMfERyJEHBnGDAQFLBe4JcjGRVQPmio7ZHtBNsWMH5r1p/iANqfv+BAAABqDlXo7r9uEP2pZCZgoC39aVym2b+iBNKfSGYHqxD9qWRmS2bF/fkPP7IgAXwygjjwNy8cIXtKGgFhOSatLlFqBQJqPwBQ/grQwfbbC9mPm4/RrxMDTPdpGtGv47wjXIsAINxIgbCjPNcRGEoQIufBo3fndA2QtlOBe2G2B1J0DEENO8py4y1bAxsQ0S0L+N0lNNCy0LHSjCGFhhzesk8A' $Zint_dll &= 'ED1lBld1Zi31BEEGBACgZlCFLjUOr5VOPFyK8k8XUSrSRURm6H8fMV30Cj1DEB7fQmG1MlB8tRP8wCiqFRe5MBcGD4zvEUA0xoKgpC51HcC/vBB+BKEm0EiD0jjgJTCFPkZusgRi+ANAhzb4z/A31mjkZeMKU+hKYPA5ArOA8OD7CB0/sBP8J4Ax+C9Qx2VWDXVRV9recII4qAN0i+IRgifiESyDxQVTaT2JCChoAD52RsBEgqPepNcgRHsDtIdeS7A+Bv27AF8gygcIAnUjQRKH4BD908Mg3gahAAyrrhLVA7JFgC13DOrl9wAA04/I0Y9PwNGPJKnesdaPzU8e/E/gwU9SrvzvYMD/BAb9WhXyA68SQIMw/g2mgTALBDHo7/HA9ug7F+EIJLsSIPNqQWoBBldTVWoNBLB9DEHkXANSgvBAaFgQ4RCAGWWCPg9YdHoyDIF2UhnoiPklUVcxImoAYZB+63DCHZcsEnDq1wxRYCWrUVARjQUNUQAz0WrJ/wutvfIBGb3yElRZUb3yBgO98gjbf8wzvfIF+3DSK1/gGjPWK9bF0Cs0FAXWK7/Qd4jQd0/QhdB3JO9aCn33AH0bBn37BI5WAASFjkv+AwDTD/jQ2g9P8NAPJFcBP9BbRtBbMOjwEIP+Eg+P+2YhvfUDfwMEkEXxpxdTPrE4QlE+gjYfUegJoWBfTxLFRHDzOwRVX0wTBYAWgREDSQDRPw4i4MX0Df4DdSgHs3K8E8xXZkUMslMwwDdpQMFi7ABiSkBwfhTBoDYgCAdWB+g43/7/frSgyG+/wRHBlyAQLo2BYnWERqErAI9WFAOVqKMscN4HYatI/YDQropxpjKBZ9UIfX0bigaAqM8GEH7WIP9PIkbQQ7AV99qLpzUUfUYE8332BK7E0GcgPA3Y9X32CH1lCQFXfHDtD39rXfUE3BYCEkHAHUGSq4Z2UehYcUVqJ111cCOFTqrObUYPz+C/YBE+Er8Q0f0S0VGFztcm' $Zint_dll &= '4iOBZCZTDNbtIyFcpnxoHuIjgWQG0wL27c1AZGZOZj4SL9Ef4hcA/fEJg4Evag1V6Lw1If2Bu2Qm1wzWH8JlCv3RZGYH1wLWH0RmJv3xF739AQy1vf0tWY/OIb39GAm9TSG9/UYqiNu9/Qw0vf0mcL0d4OxGE9Dbj9B3NuB38QdpI2oDOVXoz70QfhfIZQjyfhdcT2YSUtFpz9BnNtDr8tDrb9D30GX0AxnT64o2vj4Q3+sf8Ag3Uugkphn/ADAD7kDzfFIAGCv5O/h+CItE2N6bgLFuYJYZi99IO4kDfCFbCRCD/wN9fBJ+sB0OInMCqqxwTwWBolQyog4YRaSmAcB1SLxAFG/vBrtcEUqZUCfAMpCvnSllHJYYIZgOVVL+BUAwXyoxgKI2AHUV9TM+1BxxRCtdEoPGAwaUIY6xPgt4NeCz8AQDPgsklq3ms/ADvgTDNdJPbzDiS0D99AFoE4XeFxAI1k8IN/30Gf4jOCXgAgZWO8JXfY85UFBAE6svB2AVAD+ZEhSNNPPjEBAkO8E6JBDcyAITsFM/R7TYQSWrHgP9K/6APiXGqVBYIKBjNAP8pGhhBygw0Aa3UyKyHxFnNJOM8KToEAWlXEZPHjv1cm+QEFMOUEE0Eh+yghRPAzBGHh8Es1gRhNfV8JUYEcrHASReXbeyFRWAKLCViBCFEEoIAolBDBCKFYggMAOMGCUG0QJjFBp8JDAtICxrRj4mo/UCMXJ7AwULGoRybWxpfcVGffUGRn1F29sQfcWMaBOFHta3LwA3UujeW9kQPgu/IdD7f+ApQj4ozmXYevC9z2Tmg/IYfgTo5DMxAt9qmuAzMUIuCeEzETYT8mMZ8wQCgetF0IxeBB/hQxCGLRDERwTAo/UHpJgUAAiQH8SHA5iv9Rcw8+AL/OCbfA8DEUIAaUcgjYRBJbPwEc/vuhHrsDKAULIToEzQANpDNhbQQ38wGAoBoBbQQ85lf4izECA9hGTWQ3/hG2N+ONI4' $Zint_dll &= 'QdvJ0MMNz/kRBONMEDB0GC48MfKOIC40HEFWxB07GRUoiQg3giK+qPf5SQkkkgDTJ6bgDwESl+EQ8woHClXozO9eI2YPF3Tja34RBnSxzAjSIyL3DtRoeP9EAVIwIbMPZMrXA9U8UwLmR0VszUNk9h8H0zxv0I8fkJXZj0PA95cf0Y/wUFgekV8g8c4K4tURFjJQkgA6rREjqT6F4JeSzZ6SjzBonLdgYYU+Bl879rEAn4MPxwNoyPg/4IIdhg/tc/MyPRjqPje/ckIFIbQkXrBB4nUT4y9rJA9nMbIfQTJVJaAQe3MhE1HoujMmVnUFVgPiw0AYQiv+uzQhijfBJ0OQcIUuJO1xQ3UnXRMMV4PGBWI24kgwU4k9dQBho3v8MAo27h8SDf4hT3Bon0FQ6BjpfinP0Kuv8a8CM9urb+Bo8GC9upbovfoGP8wQt736AmTE1qut0gjWq2/gB0F2BH4QT6DGD34QIlAI5oPzBQyt/E/AwE/CVWh+ET9g4Edj//4e4EfzCCEjHgswAgzhR/MDpSk2C7A3ly3mR2Ps408G5340HxAGdbfDbYIMlgQFwG2CDAg3HVLoA5n0CwDWO6jQO09Qp+DvUxX5A/wowP8EAv4+Jc//A74kH+DfA74kv5Je7kvyHBu9viQUG4TmS/IcehfhNyNXPg8kRwUEER5+M4XhXPrSM6imG3Q3UOjI/iFi+PAC9uYkrwEw/W79A4WHLxJODo8wMKNG0NvQL/VAOLIAY99QlWwASx4wxcZVAVxRhdmJRsVVAlwByGXefg/WCILGZX4PSCZ+D8/CBcsNWCxwdDozR8DTAlKHYYgFBDxBchACPFp2CDxhTPBVUEfAo2e3ACmBUYZxBKJTMI1BAc/ZEOAgahAOUGgIP0ZYq/9QficaxetzE0wd2ckXAhiSfOBnXl8qdVVvgSa6SyEQ1zCGZt/9/A/+WSZICf31BC46Y4YFHoqx3l/0XA9BNwUEQEAX/8AWt3RkQ2fp' $Zint_dll &= 'Ggl0MVovQUfXhoFRdsdAF7J0J+UZ1aAnluIxQg+ExzkTRgZHJ3fYTXhKZlEUykV+a7IQ5KNPZ5siIeST7FEbKkJedH5uli5HJo/qEBU4PWkFIvB94T1p3XhkcicAQTwiXNXVwBW+xObv8Q9HSBAra9Qh1rUXSIBS6iBXF8ECGMFKJxPtMmAMhW5iOgn0bg/jWBHCLHEjEmLU5pMoA7HYQBKQ4JWIsAhSgQICiVAEiw1ULCCBRAQwRMJgBrHYQEMCZolIEBGKFTYkgAgloS5W3Bl/vfsKSHUBZ8cRvTt0OYU+HFDDk0PXtu+A07Zv8A4QfWu9CYz2iuFbIBfQFL4FT9AvByClC9uHEKVGrrThD7UBvQsvs+ACDHatWDeA6gMDrSXzgOIpISlNgVDz36FoAg3mbG4ggBOF/moMISj1AWkQt9fsJSjVAWEAGmFRglJdHfHWDGeCUgYRtdEb0Z8W8K+A2l+vAMUOTD4jAciDgAcjoyAqI2P0QtwBslhhhJV7ERHKhRFKLwG2DRJGL0AGJEYvgAYCRi/z32EIUP526n/xCGZq428XqSP+Fx8w50AXviNMbVbe/hdMZne8ZOJ/oSUgJMTmf4Fk8u478hT+Zmk0VAQGUuJtJtOmEA0SxqcnEN5mZoXupl8Iq5URCB2F23VvPBHPfDH+M1BU3sOqjTK0ZRQqQ2kg0RCNfo86B3CFLsMOzT72NUEfy+QUyZKYwj6Y7EBuDDvYfi22NuVqE1dWGEVobIAQaBOViLLuW4cGIF/gW8MivjVvIOLD8who4xGFHluxpoOBcOPD8ywPYIwDlRDoYDGIX9A3bxwk5OCBV5o89VA4/jcRVSF9eAWhyyMsujy0WC/MIxwAMIoGM/88QQ9BggvjEDxaD4fBHCCiaKQ7Aw+Ctkjk6nrEBlK7kyFVd+IeoUYSkTTWICvVJTZCVokQaAJkQAgQ6WgNIAKE2irAA/MguNs2wZPz83C4BnJRBoEE524RSPGCLyFp' $Zint_dll &= 'thJJxKEGxgJm7zF/aPQec0uKBpyxaB+hEwF4CDUR+5wTNRFvIxE8QY0BDL9yDo0UicJ0ItBIBJm8noBCSBDQmbnvjxD3+UY7APOL+nK1jQS/iEDSSACoQw6Z9/miYgVQZCkOjQSSz4gRAQGNDICNhIpN7iGQjymAQAawppIQuGJcwKjeFw+EvyIE05LBMYhSLKCXEDR+f0RFAoNUJc0MaDgJA1CJCuCh2IdCEOTEsmi8MgxIPUAz0okBihYbUmgc1BADgCNxd8ZDxRtLj4AfpiAtt61QtRvOK5BHbxIsQbU7VokKaE3QvLCuWazdq4bgV/IUfQgE0K0RUuFX8gMOEoFQr2AfbKF3wOzjrwbZegcfEAa1xR3ED5AEBcZtQYxwI4WuNxzET+HgGD+WUDZN0HeIBOJ/gcBHlypAs1QKUVhSWiFtVw8eMgMjND9QV5UA/dEdK5UQQ0oCYLRy/xQlMqkrEHQ4uv7gF2x4o7oC8ipoAwd+N1glEpLrlfAAfSG+9SEoNEL7O/h8Y+pQULAptAd8WhAg8Az/qjnxeATC93DNGzKrEXEEDMIO4gSBYWWBXg9si2MrFwYgVgNk9TXkiqMaKYElEX0Q1tIgnCNwsglwHimRADc4PIDWhxicEAEPMC8CkiPgJ/UEMj4qT9Ak46NCgtp+Uh/hg/YPjMuyILc+aD8QJGxoPmgfQMVtPgWP4Xe4UDp+h08wItIYcww8IwB0CDwtdAQ8L6uOJHlneSjdlodPAasGEJaH7ds3zNA3b2BZI74JT4A2/lZgXZ/HHwA3vglP4k/RP/SwwwIIBFOKGsrpsFXn4lt2QDdJC6EDFEpJES6ilDQKvn4OAx0tsLMLob3BANYv+LDHeBcH4d8nb7UiHfMDGR1DKzsSsT0yfO4BBzdR6EclI7Fw8eUeUGgjhc490QtyGzlB5B5wUVA/UWDzaxJw+hCFLl9diC/hr/kH3GDyDfWHuhFdB7YO10bBIusQ4AYVpCx/El6b' $Zint_dll &= '0UhxOiXBIUIyVwCNTBD+M/870QBzJYvBUyvCjSKwt1Zo8ODrYbMAAhAPvoDKkfHwOjwAgC/ktBMtd74F7rcJ41AQSmPwtSg8KA7wEYxf8OArS6nLLIAYUZQhqg4JHBB1ELBjTVemVBJSCoM2MIvRDQPqGrBSLQQVrL35DYUaK9WDwgJWCvC9+QDSBCFFKrlqgpx/4MuBPktvsGkxaqDTbhvKZQhc4raBuWTmRmw+Kq/g6/MUotK+Pt/wl8H/BP0n/mbRf+I38A1+YP/Q7x/A6wdWAYFgfmAf4M/2Gf6nNrUChexvBsovZhAYD4wmw063oIEKFoP5Fc4ZLyACQmnnQMACGCxAuM0SyNsWMDoNQbEoYCYD8FHgXQFSRcAQjRQHaNxAQ67uYHWVSEdCdILePA0HQcwipSIowBuZtIQGjQlCUYCuYMwrteYRMokY5hUghSgFqRIraMSYNFgCx1YCijlVsJjEhXlFNUCN4g4gWAQQpRaARklJltA+u9IM8hEDgzKYXwDgJzOYn9DXsggDfWyUAZIYcT2TnAgxoYg06wsBE4XGht8lIWfhHQGSCNESM4AGZVgIIXWFTlMIsO8RQRJ/TA1xRC4RQaFDFA+NlG0AmiUL6OFy2CDkAEZm7lHIfTQI0QLRaOUALQCPDCIsaEY4NQBWUFd/pka9IW/DLQBSVIAy8PB45HARi0CpOBEYVi2DKA0RUVc06FCo0TKTgwJWU6NxADBWcxCABkEYthvB2gag2AY30RnTMkDgx5TQMvDAeCgykgc2gLaCL5QGUwV93tbAE13SFFBxg8aNGX0APH0Acsp8UTJg+xqEsTCQ3jc4oglhIQ/z4VEBhAEyzPjwZ/UbBTEOCBIg8roa0SqCCiEC29AQZEIbCkEKxakiPSFtTskxEYJzvQABUpxlQa7lEpDQlwE9JWEhUoCTfSDpNk75MlB3Sw6RS+IFFaEEVxrRM3CfLpFrxgzsZzKgogYgNbVyvKkdBYPoxlKQ' $Zint_dll &= 'PqHjDSDVACHp7W5YgU9QNwUrxtYM0K1jgEZWBREY8I6dPlQFYrcIDQMqagCLBdZRUyvXXRDqXQC0x04Q4t9SI10QlV0gBXVVH220CW0gVG0k6ec3EenSYcAIRaIH5RJoSFUiQekHMBGD+AkPhb8MEIlBUlJTjcRQBRVP4IUTL4SUWdJB8rcrEk8iQBhPUfDA+PE5CGLw0Pf4jCVRYFGoUVOQkQESUxg3EAE30x6RqCHw8OhMH4v9eAFoDP1I1S+jILTC5dUFYR3pYh0RoT74QbxdN63REwVUCxQSXRABDzmPzF1A7ibQ1MHIZhcK6JZ5OLFcUfDybHQCC4pQCf9SaNRFAOnk2NEL9wGwcLD3JJf2BfoBjKBvscQGCut4ZC+AlAA/UFcB3iKAS94BMKDo9B9Fg0YCC84BD+BcBVYIjJC4gIsACXwFuGfwahbg6gBW//IA4q7yAP+gcKDH5iEYDixifLVS3DiAF7Cz7/eifBAfLyBhVPBgCWxAaEREihBwrsHGFQEKA+E965MDkQkXMSCJIMFnsOMtAH4R2Sj0d2ER3gghxhSWA5DwER1RpwWogyXIK80DzgPKHDvLfss4Fs+WFQJJgbMSVK/vYjxRRmg05QARUokw5dCNDDDowBE/9+AlE9oeIDoMRjse8XLxEyNBQRkNEs4t0ExqsDFBg34QigYyWsQD5RGFBlIGIQXjARPgUGgE7LFEOrgInJBGQN/sSwBGFTGTbDgIeSRIKhSJ/5MCqNMhWzEQuosjECH3K/IejQQe5heQSOFsEsJMwSKaSEdTKhOVKGNuwlMJV+h8stY91PdiOlO2ZggR1TkGD1SZ8wE1IiQgA/uGDyCQGLB4fE4U/oMv4ifxCSHMfhIvs+cD810mg7KC7ScB2X6KV7hNB7AxuF/BVzC4P0Pi5yjxCFcMEIXbw/wxSkLB7gIZpSRSMVE1JgxhGwcBAxvGaLihA5OsEFdSb6VAV6SCE0JnLQABdOeHFCgrGca+' $Zint_dll &= 'mKwgRYSJRckAzB/wILU9KFcGAyA9QWiEvV1An46z4qsAXXCcEKU7cb6MsO2tVozVAuZncJwxRdwC7GYFw3QiRRBAvndkbfEJQjnss4FGPhtPUFzirxZVyj4c36DF/wRa/CTB/wPAXSbNCPNXg+YBMwHt0eaDzgEzpy8QQB2tGIoMB1HoOQKv/v8Pr8Y6QzCAgD5oLzCBJTG+WHw9NwKi/BPBl9gR+X0BmMAI4a2MAPHvAgKzWMWw4AWSsViHkOqw8QLBv7inJgKy6NgScTUIHjAVIpX4DBVBj65upZQICPiNBFvjrZC1TwLCSkIwxwYBkFjGPuMCEyrIBIvHiWUQOCMJihN9d40RiWXoV1MHUFbo8Lf2AnCjJjLmCgLE8+UKEYyPMAj+EJHYRC32AIlF3GtqEpGjhxAA9kPRJQcPha+HEKT3WRBRcQ4Pe3NrMEX0o88zIOgHuBJS6DlDShCPVxAW6FNXYtugpVoRP/kQJKARAQ0REU34i8SFCMmJRdDuOZBfwDe4+QpWRd/YRP5vCtEHMMgOUlFQ6C0HFhBPqxAAHIv4wf8DqAcQdAFH2ykwD1dowEBFn0yQVfjHRQxVoR0AuBNUEY1a/7p7GhAEg/sDD4dC+PFPgtAJpCOQKWC2qDjCGC2FDM8PjB+MEBNPNiBVEI+ZQ4XbiVXwIA+Oz3ERg8cIiX0B4IsPg/kgdQUOQQEKPlBF3XjEXxiQBO9AAEf4cQIteF+vQIHDKBBLgz8AdW+kAPCnttgEv3iFrwgLUVBSvslwt/gK9lLobBE/IHQf022SkCECEcdF2F0f86WLzQAGdQiLR/wNAB+wEBRagckFQFUBX54QDEUBDyKMaPcgIOzpg0ewIAwQi03s29QwjQRAiwNUgQhSaGBBAI4NZLFYBH2TBUK8JQMWMEAjJB0wwUeyzoEj3Ik4U7HegCOE0zhCZZAL0TSHc6SVDPDwCOQaDNHEMJhfVfcWEiC0YAOC0gvwpQpUCndhM3M4' $Zint_dll &= 'IAJD5adwjCMAATa7PggwUAiQA5A+YCJuBuO/VbWHLiD4iQ9FQKRJgLY5GxCLRfjlAnQEO/ApdFsbJxAaQxohTY5VFh34f0g5COUWDQzrGpgxilc2kRL4fyl4ILcgingzUIeBN954owCOBx0VeNDIlVCxmDCc2EVtMgOJReELkANuQklMk7sQDDP/iwP0Zos8RT6+oDCECqXmghbJDOg480Eq7BSJZeA888ATTfwDM8CL0Yv+o6hAfR2Qq6ggTeRj3SAni03QTIBHCBIWiy90NfKY0MgTIqPrDhnT+ggXnIB62Q2RXbFTVBUAhUbOHjsw9QkUGUB8iTCTZqDIwOAThcYNx0OZEeRokKMPsn0MBQtXU1LoKd0TsypA/DkeV1EmC6CimYEU9GoDkxU70pfYLAGFhlwGNmMfBjBhlkMDJnYm7BAPsScTD3n4BcJeuzIQ2g3BW24SjdhgtsiAKOsYEU8uYYCxWMXeDCf3EPYzyQTB4AOF0qtDEE0MIH5B5QGAPAoAdQYtO/B9NBUQG/0TuIC5I/iLzsH5A4oJDBGEwZkIdAeo8GBMoBCQtLB8cKFKBAEAKny/+gHC3f8AdaIQISWpNgDoFuEQTQi3MBDbKomZ56sgmeerIGoJAI1QgfOrEDP3vxCJRRCJIF3cPQZVDPYEAgQBdCCL0MUFA9YQjbwK12tisgHS4gOKDwrKiA9FAEdcEEDScgPRxzCwH2gMr7odvysQ62tChQXcSIl9hFkA3HWq2xdvEdjZIFkE+XqNSQCANQECEIE2AhCQDBD2yQB+T4VQNdNu+CSw5QY7xiGivhWNcQSLEVYEi34lMYUeEwpAMIC+aDAgUAYQjTA8hw6xs8AtglGH7dWxWPyl4xAU4j+J7Po1AYShPxsz/zP2O8dgxtoKMDFExEcCQfchMIj/93fgOygJMpEwk9zz7ywED5/foRIK+IPBHIY1wOacIRxIiuYMoEiwOHCRU/hv5CcdFBRQ6PvHEtoLAR+o' $Zint_dll &= 'dRGKBA88ZnSHzRIWPGJ1GNDw2Q0RCnIM3SiAAQCCpTAI/DyIgD90V/fKCQHAI1D5yglBvlMxkytdO/liSABKDwo7ayBNi1UAUqD+e0TgDwERi0UAg3TGStHwsQURjYFNA+snyJSwnwejvGH8DgiDwgQIA/LrEW0D6wwAg8YP6weDxhkUR4PFp64QJByxg8/xwIiiUBARIr9cMgQD1fIdsoUGsloUUMkAsAxQVcsAVgzwxgC8DBAEMGoI7xFgIGAwwEK/s4AwBf4YvL8H8vAGIx4xe5AQPACkxXNhcgqD+HqZNGJXsKwRw08PvkKrEDEY/JzXkD90974j0RLJ3UWDjAH37SDDWz4gUMMTmiDDD5ogw4v/uqp0AMwArgxAywDFigwAAEAA8B4BJCaASyEDLTrVB/qfQlHYruUnDBIYvxQh0lhhEdiBjvmSF7FokKHQomDM0PQYo1AX7hWe4kMhv48SP4MwQt1GE1IEvjK/fRfCLT8MCrE1CDIFCCRVAHpGE78gzsLbWhBOBePsywXuSBwDGIlV/HeDIJIZ0dhHinw3CCNREQ+On0cQi3UMAIvaiXXs6wOLOHXse3kQnFEN0Ac8H7DaWITe2ARuBCC0bxtBErY2svgGMfKUBVFECjAgbDzgllgEHPYr/D+6DpEfUBdkvAEWRutaO78RUEUKJ4QQ/wCLBg+VwlCL+iLofpIxgjCTDAUPAJXBhf+LwXXHhMAwvNhHXyS0PiPsLgOvsSEWi1WopCAMrRkIrBC0/zrRBL+eAE0FM34gxHPCIPzGRAcIAXSLFv0qi0WsgAkbjU3cg+IwxhBDAmIPghDQjUXkGolVyH4DVSNEPV8RVhGxWEU+tQTCPyCsngEBxkQPBmbrYrOEEdDvtRDP4TBTQghRhDsIjKSFBwVkcJBYRE2DDriuDjUpBQGLCIPACEiJRcyIMBCzrgdSAHHSBEE45Q20hAUNSQgEMh/FEE34jUJL/yOBwDzhI4EgwCOBIMEP' $Zint_dll &= 'syOBEBwjgVBJB5V4cQYjgfAFQ8AjgSDAioFUjDASCGPFMRIIcjASCHIwEgiRadMYVddpQGpbEeyLdfoaEQTEGcYHg8MHi0cgg4O8EHX0D4ziL4FAQRAGi32kiE2T8DD7fxIOAjvPcwuKkGSST4NYVQAwAShx8BII0sgDeMQOAbDiX2jPtxKZTQCFhhnorqTGHSDq1hAIP4Ewg+8HLraACEBkEYBYBFFoH9JX/RMIVYQANfUTCH2F+RMIX0Aw2BKB8A0LMyUeoXcYIXYQl7EwciGB+ZMgETJ3GUJ0cpYfIhfyAwRyR6RhBzA9oahM0NCDB4wBxgAlwHr+0YSO0LNoURByIz1XshB3tyVBjUAeDoH5QSDwzq9PQBFyWjPpMCz88/gLAaQqEH6+7NXj7RAxAT3wCL4DpJoPOQZ3BIPA0LYDQgNatDSR7DogNKBHE8PDGIPI//7cD8APG3Y7FYP4IKDxAhr82FClQxNANCFPA1s0UQVGE9g0sEcTfzQB55sErUE4pi6xUwfA5/I2ZU0zzj8YIXoI4LQPjQAUsDvLfRSLAqDZEQ3ZEQhBg8IEgIIdgL4Y/LVivMVTx6DDAwDh9SVCG5DYdAJQN20jwYFrUxomyjBYHISIFIPoAtcbEST2gw7AHokBAlwPcOYOExGx43Zz9i0owwBIuhwgbxS6MgD7QLBIAftPFKGuIKLMsZ0HAcQh+gaJN1/HAEvXWABOx60bAJ9Ggb2IQSZbRe1GPX0oiRIziRLCtXE9ESnBaR2cVMFpxgr5Uw+Y79siLjcRIaLEAVckEhh+dmWBfN0S42MXRgRWNMARtVjnoFwkQkagrgEyTgjE4YRw5f8IEco54oYAiQiuMkJiiQAqiQLBc4N/4iIo2RAoopovAFMNQVK4rRxRdEJTH6ggCOgkofYuAQExuP/3wgyCMIUuEU40BzIW0hMBdfX3cP87AqIPav8NV2oO6w2IPp1ggL6OMxVT6H/hJLDECnOYKdJU4UkE' $Zint_dll &= 'DjjAAMCiPbE2CEGjSIHQyBJpfBYsiQ0DjQyBcABAAagvVlcRmHN6XgvSQAkYQ/ragRuzSiGgMECjLQQwfQU4FAIrdNIPvsKaFPMgcziRX6BKETRMSg9CkYwBEhNhBWV5G+hQQQGg34ogTHIqQqeABmoEawwA12IU4SAEM9sz7ezLXhBfR0HkweJjISppoMiABelHC578cKNAgdNYRRQgWBHQfWeZFYB8DygBbnWzghPM4xsRzBHABEkQhb7cqVwkCDiNFL/I0MgDRdFYJCB/Ai6ZFYB8BykCbnUjhjZRMDHCNDHptAIqik4rgS4JDqKHAAwtw1EVJFZSagpXEOiLnxGyEFdXaHCUGRLiA5UiMbC+g87zwHj2BSERIf0kO5NAw0gAdBxIdA5IdSlmVm5m8NAMsk6BInPNEOtnCSgivxboIaUAo7wwYlkgav4UtX4qMIWG2DyEEJNeygN5ZALo8XkTpHmkgHlUhduL8xAAD3iO5zkQ2kbiOgGlBhyLFxBS6Oky7UKwU0wXrLMUNRAGaj7oozUQAg+L8FHoyXywKHrDKAEl4DAOaHi9ggQwg/1jZBAdANH6//8A6wiLB1DoB/uw4SIoxhsSJGAwhU41GhcsQQxTaGThw/ILYegHEhwPhWLCG5MT88ODTsEPS8EwG+cQ1gCBYgV54QyBvt9ngwJlpRbQ0MiSUYWuDhShpRBcCimzUIUGlTzlaT0Ejk/qWmFzFsKFcbppQWLoIiFWO8hSNh6lggKk0hVQvUERXQJoSLmBCIapAUt1vul2RbEoEFGI0U630BHRhPAvQ2du/RPBF5abgJ6VAtBhSAdmggozmxAoikwo/yC4OE0AgPkydAV+uEfHE47h0Bp5BwQhbBDFDBzO0iBgSwfGi/fzEZ0Zc9QSBCAr+IoM0siR17gb8Ov7/8/X0aPPEDB/FtPPQKoL9GfQuIsU7+EFgfryDOIQqM9ozzCNuSl+HdAVBCHVcYWGEVTam1BfwOCPBtVa' $Zint_dll &= 'yNAfwuIUEMWNVWmNFaB7JTEQUurRyCOwsz/uRAEZA3YlIYPrXwdQJhD2HwkRNMMAhZ4UAzWeRuOHCpPIEPsPhJMkEV0jMgwH5JI18EAomhrp0LM8EZHUMZGEBej0m6qR9BAxkWQIkXR+pwYXFIpxADSLC30ExT7eEIwgTrACPdQG1MgLVfMAW5KSOBKVOH8wFxBTuVskUzebNZ8QkzVPIBMA8J81KkoU3ODxJElzERLgIgUgG1Bo/FJCkfNi6SI2PRGOas6ALq7ZA5DdkfPG7oxKOQ9+bYEh5QLfJxGLYAOz2GBuE9BIkfTnABAsXrAS3UgLtSIAGuXAQFMBNJAy5LBghUaeDtXZYUgGDxpW6G3RUKEnw6E3dWSfWRFeT/CANnEOgY60DxmlksZHYWczdRHpGphRCeShgIYdHfd1dKNwKlerMDQJjXyCBLqzEI2eCRFqgx1WYqlxgG6emRECcMQ/I734oEhNXSYjIQMUap0A5UwD4gYzK9CxFilMBFCX0xDFIAGNtFFOQeb/W6UQIPAttY5VU2oVVjLojl0QHWvHCHkyhrexQRIrt6LJAesjs0O5IdpeAwMzYPIJ1ADxwPgGhh9DZqUWJFBWVmiv67Ui15yAFAiwhjSi+ALq74Bo2QVfiTI0VHokIAChkCQAYcEBLwhKAhD4DBBMJEABAWLkxQJLXiwQcFAI8BwCBwMHpxlXBRRCZuAbcftBQSiLA1ESJA8Er96Ly1dnvxCL/VJWSkFUJRQk6PE3uxB+OflXPlvgRw7SdwFwRQJ4SiSAAf9kEiv8EM6DxIlKbPDy/yv2Eiv++QigTzcRHAIiNgM80N8IQVX/DwUgjX74hshwnz3Qf2sKEm7QaNB00Ei1cr9NsXEVAQIFZJMC/y+hECzGARAhxgckwWFMcMERABjGRA7xEAPOoISFgjcUxgIQA1jXxPEUAWD0GihPgyL4CCyAwtfqDhczBMBKjU0IrSBU9QgAjXwW34QS97sRoXER' $Zint_dll &= '3h4FgNLodX/0CRHUzQIgjVz1AA0BcQOFAGTQEGNMMEETBiDGRDHv/SB0w5JhPADRDmH+BU9LI6cR8kjgAgQaFCCFBA+Om3EQDxC+iIcqTPDgC7n9iCGAL9RbCBG/qxA9AS+pEAMsM9s72H0WrXG2CoGGItcCXKDUQGE/HBBT9+D/E4LxEFCXElEgsG6BGlDXUFNjFWjPIhCNVv9XUjiAd4QD5RjCA8EOQwP6Azv+fKaNfuvvE3nwCEAQeWAqjUb/UOtbFX0ADyRRaUHv3iKuvIALE+cw0AfVATC0kt+QdzqT7Dgv661AGKIPQC0OEEkCOboc0PcQJQGzLrjWSwGBNKgfkCqAAis7A8JaGzB+HQGwrjBTBswSNhfi9Y8CFFjRrFEWKRY71wEAImOwruMQERCNehZ3EFBXIs8GSgd5ATvYq5QiKHZJMMXfFvB/VeFzEa5FsDcQ1wEgtEL0HSpAkbcqX0oYAwzKRzvOoRjJEQ+Mb02TiSABHRQ+JekrBLqkopAjCVawV1e+QgDxBwFEEV0HJBJfEDABBW0WFAxQwQAWM/++oK+0EIsGPNBI8THtTyjEAwQQhc7GNDAYLAABhKgwUO3kEukDR4P/B3zVij8GYM6vAjGybDPT7kkJMRDCULCI0DxQPP3pL0ExIw00oBYXHAPBD76KZlhyMhAHJYRo8RJSMXB+UDTYf8BnPhbKbNACNtD4ld94FNADT1AC4AVWAo+A7BiGMYM6aZLMoYYSUaUlAujf5hKNRQEmS2q+ZnGFPu0V4XAwKNXCZPG/JAFCSmeki0U6okoDgCJMECB12FZ74hfk47YCjV0CK8VQEahgEo1D/2oRUEUCIOglyKAG0Vj0v+gdBlfoF9Yag+SgMb0KGMs7yCMMIIolwlAojcVnhBAIPiDgFh8QhckAfBw7yH0YD6+AIRQEA8GKDBADBcKEyXUGVkmBmFMJ3lMk1WKXsTBD/41N/63xAVHtAJvdB10REF0hRo0009gU' $Zint_dll &= 'gDdtCFx06E5fwAexUWqXFCBQanMRaRX/LiFGIKEGAScVGVpDrOdDLqAyIwsycJ7oATFVDvEda1GbIIC2gULsp/ARi4QkEA0fjMF607ABDGF11UhJclIFoTDo/I82ngUhZTMJJAKNfIj76MtT1hOczzkLfwIQ/4VGATCTCRGpENERDwXbmzJmKOBtAkj/imo5AOgCAUgBi+qLwWpkAVUA544QUFLuAYEOSpwCcKgB8e9318Uxk4xqWwQxGS+EfSBCRjtD0DoR0eewyNsGIjEdQDpbSRCIRAxIQTsCzYgEHnzPOoZAomg/CEhQUXUABHUAVQ5S6CZWkQFefRJf4Afg0EjEMKIIYRSAlIRI4VFn73MUrtJR06h4QhSmvLDPKqFEEBQTD4U8aU6BxG0TAjYL7v+HnTudAjvWi8J9AA6KHCiDwA2IMRw5L6sjtj7QwGcu28awvm3F4ocEDQDzD6/zEzPAV9JCcFz0ikYhigRy3DpHoIsE86xQHjB7rBCLi+JfkdiHDwQNQKGKFA/RiWX8ugz00A3jBAdLtBBEjmODEw+v+xJdUYVP+HoNgbAinGtKIH30wA5KMBAKgW5PgANfBwSnkQaNcgGNBDGM3gUwAPigZQrCKpJ5D7XPBInfFzRd5APTLPbCfEKwCBGhEweL+p4appDY57EEmxogOKLIBgMF+wP4A9es4SB2FCNdDE5KAPiA4HwAKALJBEdBCQGNUf87TNOLmEB98K5yEB3BuBSME0d4EXQLjXj/BlqA/JRDsgsSYe83Ew+xeLyC8JxYxzCNNCH+gJio+gYMQEr6W1DnPkIQYmxkHTeJEVfonqECGHDnq6cgII5HYNVGiktyVAq0qgnzHDEtXmjQBeR+Olf0IAD4K8iJdfCJTUzodkOwghw54JQEdegAhBQGihB0BYAJ8gHrA+EQFAHNA4zlEPB13k0S8SCLVWf8lgqQDyCF7voYSksg8AVs9VEcPnHAoEQnLRFEDQHUO0QV1H0G' $Zint_dll &= 'fl0R0kTvYwAED4xwGSNQDOkCiwOgJWWFwLhC0D4gUFeAS4wBUBxXaLR2IAYJOycwL40xRdQWD/DjDcG+GCFZAmSsjHdrLcFw9IIL8U9wkNjEzsddB+A5hg0gUQRuTlDUAdAx+G+fBgCLfQiLzot1/OCSQ/CUDOLkAAPzpOshkJmDfheNE334K/gAhBQ4dAOAMAE8QE7OSdAdcF0P8d8XhHBlIAU1FYWu1xAqDNB4VyZxALZHD+ALEDxpA6PRIDe5EcGiAKBzKVCNTRRqh1MhFCAAZiYAEKL1ATGO8eY5kPKwRDahywMsSFKzSxB6G1TwBBUBFdoNACWgD1Iz6AZQ4IEBi/gSDFDWAHghDeEQUxehyEUAAqF7sw0xrS+gjUgKA0FSnMA3Lro0A3xA2O0APGoTUOj3NFABSmFTBEBk/AFR6BUFUQHNEChyACG1GCsxgKU2EIX+TAUeeQDerUIHwg+gSERDcUVojAJQ6IONvibitEiBn0ceHUDWF5ALQwwAgjxRCGyGATh0YiRgcMoXwkjCFSWDoegyBVVo3AooSMEIVJRwMJMsBgKUkSONaAD/994Pr+iNfAQC941sKnIZAdEIwSeMMOMMAcjHgAEQUyfRyBKMyAGh0ojmtwHoK+mIEFwq/2AAElPXMNDIFoCP+EEFTMB0zwQpMX0N5iuA2AUuAiMYAAUxMXUcjQMcwYvoA+sZI6xB04impQEtMAjAETSAgT7gXwxwUldBMeC+LxYKL9AwCn4gO0BhFsMygSEXAoMKCDBjf7VjrX0A36cUCSAPjjIhEkL5bpCAbN4ANmXCKKF1MUSNHABSjSxWi/6NHBxejQx6aCDnIZ4rwWEJM4B9Y3nEAyyL2gND3aAwgL6i3A4w4ylBQDGgPuDMAiSNADSWi+or+gPYAwPuA8gD+G4XMUACQcsBGAJUcP9GgTNwLUIBCIMDcPI/AwMkigA6dkU4MHwNgQMobHJsSAHYsAPwUHjCBkEFLFTSb/sk' $Zint_dll &= 'ShkAI/+5IRUCdQA0bREojXBKDYHhFAc2i8Ii99gSCMCzeCxOBXOjtFCnkRI0Q06OQ0ECLDwD6tWB4YINRQF924XeEUAzQLcUA4QTAxN0gAMcO/B/OekXFjvyfS4RQZMCwwhA3JvZFC8pEjS6W0ABsON37ZkCgDPgCQjuDPBRLfFlTIHk+6RNRwILQAAFd/UX12khA33yTGL5GK4U4VUqOQTaXDCm/9sX4aIuA8pAjMAXym6TEgU+oJ4DhMIC2vwsoOQsLPAqPhEe4acCA8r9eVAtEOYMkgahfRTb8RMcVQdZO+IJ4OX2F6kHRjviXHBryBHR5QUmweD4vzdRN6XzAHswvIADH+QQgsHBeNob4eEAhYJNgTMQ3Jttsdtskh43wADNEkjKXPKLppwBtKKPYCp6A0wGx0R1W8DtEPkPTv87y3wZoMoWcKPnADSAPA8ACnUGQEkGVMCe/EAHINLodDADvNMc8udBFzvKfRGEhGkTAX7whFBQxUeCNGF0NFTagFQkNAFpAIi+GGEUNBQfULQD/x0oUWeAVC2gWTFBFlKeIBERhE0TMA+FFmAwsw3eL3GjOxIoMAM8Y7+IoN7IsyBEAQ87zgV1A0DrFxoCsaBMFRiNBIYSFaEfMvED+hhNddlsYyUBjQSBgGwxtKPNd1soPeKXFL5AtKidA6FUB6CefPASA89wtKPPh70YAz2gvvT6IgKhFDKrRReMABLIjudnIBYgwEsi6KAXM+2D/yCJHX53LGYCILEX28ZASAvFYJqFcykD5BJIHAAxrIgB2nshPwwwGuhIh2fRID8NIIwJIL4+3EdbxbD/yBAGlxQAtDxQMtNgj0hI8jAPYUoCPEd1EAA7/X4xigwagAD5LXUOxkQEPMCvxTDiJiCxU19ngGjBRMAzulNBgBxjWyfTv1hwACpX6iBc4fACJiqwcxMxeHMTMphPQcciWgBlIpwOMuHL2Ra2sQwXFgjIx0HSQ+PyCDFDmlbhi2WODD/J' $Zint_dll &= 'sMDYyJsgkgy3CBBPpzPoX0BXAzDon0AHM+i/8EK30jVF0TVcBxEQkQMpR5kDsr06YY8A6HtacMKAmALg11AlqgAYaKEDUJw7UesehQBEAeiYAGihhgEAUusCDDv1fhBVvg0SQAGFPmHAKwzIoqYAEYU+ZBs8SFLoaQyE/v+Z0gsQ8ACFDsaeB8AYNGoFUeiBrsFCRVImhV7EaA1IUOjIjBBFQFcogjFIjBMpcoIPk7/jj+LH0gj2DQqKVDSojQAFjZCICSIcRjsf93zUEv0yxgOzRCgSxLC3AkIpABFqZt4gwYMEQOhgRBEJ9ECjdgaFHoTDAmoIjYwk8xQQitZPQEVCJBcGAuYX0MhCSPJKGQHlWysZETxoQXwkELWIjT7TLyIBk0i4PxfSSHspF/IrLgsRzTOGwCGF3kABiYBSX8Aw6E7wVFcenllAGyoEYRa4D3DxLiEA1kiRkEiJJXIeCQWTqocBFakAGQBghVuAIIsCPQcdAHOvyyFSeMIBsC6yGEV6JGAGkhhwEBARLOBUlz2wOD2THCg+9BXhJRGAYSrT5oXydApmAL7/H2YrMGaJADBBg8ACg/kK0TZy4DkRPPIhYbZoYbchANPnhfqNPAh0ABYz22aLHH0kROxxAMeEXMsSEAEAJusSVJjISiUuFNBAw0esLALaZdAj3xJ8sDGKDdEcsjIBgMj4b2uy0MhJYpAk0Os6HhqNwJEz6KclAHYaUAxhNoiyA6BKCMBSFmAn6L/2LzUTFQcUFUcEnQkFEIAxFyv5g8MCi/fgj0wRdPB6Stw0T1pHut64ABvsYc8HvDUr8hBBXoJgXQPSOOBXZxsQipxLBJwBuH/Nf9TxxH/h6Agcjaw5wozi7hg+9iAt7qAgjFiEAyIlYNAYwSL4AxKNwIhDYm4BAz7HCqv89wh+OhI0oEgJlgPBB7C4eIRhTwxCB9CEVo1XAITuRqDo/5/9qe8YaJQGGARA6F48csZ/gTZgj4IPhO7EEwKC' $Zint_dll &= 'AKjEAmgAAJxA6D2DQMFBcoVOrxAOGQiRtgyxHuIrElfHhx0QiZ4BAHR8+NZ/hd6MOZtyDeF0/HRE4popty4E0fAo7KOCKirBcIX7b7MAuoDhH2YPtg7B4QVIRt4tgH/vCit0CQMQwDU1agKwLhANDlQCGtHhSnXfv8hmJEE7A0aWHLKYPYOAbX9MwPsE4k91fNIStQWAQm/hP185Cf+NAhwGO/NzNWa68gJqpgsrrk2iBjCIDiOgppC5iH6lghBRBovq6DMiJivQ9TAQgTyh7tYf/XLLWRwAiQiJeAQzyV8AXolICF2JSAyhP5HwAQTJMos5iwZykgAwgJ+Ys5hHMAGhn5jnKinHO8J3ABFyCIsRiwY7IdBzJ4twi34ImTosAGDEsBiHMCE8AHCfGIewGMUw4QD9lRi1pioEIH5xQgXuTD46biABCDCLcAQTAPGJcAQ78V53CBpyBosW7iGxCAUoBgYBiVAIi0gMGIPRAKUBDTCD7BiYp7gTJFWq9uJbEVcz2w2LPotuUQJ2qwDlJAAEIOg3IQKVHyBT0fYvINMbHFjBgg6CBSCL2DwxkzyAPYHp1ARQVRbSgwco6AGweKGv3wPqwTChL3XFAIX+DkIE02QSIAMkyLgBGBPQMACTiOCw6MSw6ypDI7VYYYUAZTMAxKiBXQQVxOFeEVCL2uitWEGtSAAVBdplAM9KMzGhDcgBwhPYiU4IiXNeb3QhQidQODXIfpcvIq8DuG0CXKEOIr1gWkE4D4eBHx8Qcgg72A+DgsoCwEeCZTW1eMSAsPiGADVtGwGH3lTyIaAyDVJQMEAUJUCBhM4SELBi5hFgG0TCIrVShZ7RFPFEMLKIrv4E6RPQuLByNBGBgx7Bfmzo9DDQyi0o3BaOBJJXcBA/EIE+EY1t2h4CPskBGi2wkDrBtSBslej00CzAM7XhIlFH4HAXKACJRwhSiU8M6GKcERAGvIG+oeyyCV4UXYvR+QJEM50SWIsAbwyLRwg7' $Zint_dll &= '7nInKXcymCA3IvUM/gyQB6Dp4SFHCDwRJXLNFEcACIlXDFZT6MqgXgGBbsUVzYvDi9aaCiWBblkJIJYnXLwABsgAPH5Dix+LVyMEuS5IMrzSzAT+ogAaEwOhrhUIi/KLVxIM6FxItIC+QR0ClSyYCi4ZgF6EBesTqTTVGQACRHKgnUE8NMCkhQvDWgugGARV6MkdKTdBAOoyyLHPCZI/IBIiw+I9CVOzUIEmDAm6AYGeCDZbUBNFKLkGdzJy7l0wZ9UQQyzlFFdR6GeEgAMNRAPBuRUp0xYRKCL6ENF0Z2DzBCR2RQMVQAE8g8P/g9b/mAQYCzGRP/gfcFfiWQQAPLd0NaEVIv0kciNBYhmlsoEsHyWEkRdowNUYITCFTh8hESAB0hAhIFW1iI8ejhTOtNYscCyKAGUCK2JeQbRBkT8A37aDL1QNVug7yxyVFyELcECmKgWSEGGDboIOwiIEohcPjStojlkVUOiLaFMvo5gFASd3NrUB7XMy2aG6Eg0jooEMY/UQTCRMDdNk8A1Dg2IQjs+RIMEyWPz/MCj9P9CTYSghPTOAMDZhpAi2UwFzx+IgAEUB9l0DIodBH10z0DEirEBC2TWTfmaENFiWEzEj/bCQvVCtPQ/lDm4B0a9QkIhFkAglhBBgNBDABSUVVYWOmzAgWl5iZQsA6uipRRN8ACRMK8Mb1QPHjfVxEOjPZNDvQ+RHaIl+UAW8eC8mAM69wRkEC8h0Cb1CJrGIHys7IhTeGSIuBNfojHEQAMgLynQKg8XwhibbMP2/qH+VGEInbrp0iE9Xw+wgdAFFh/zrdKWFIXQhQ4f+dGUsIq50QUFXDK0EdJI8gIFZ5LBi7GSkfvFhNZgPAdRnYnogM9Lo+kAbUgSEcB+9CDMCFC9wAEgE99IjypRKCUAwvFYe0+eiHwiDKMHA0FUMHU4I9xzQI8jaA2CJAMAgnDhnZIaQAOMIEYPsLiNgigvRSgFQMrEu5Qggfgg4Ad9A4moF' $Zint_dll &= 'lRQyUzCo/I8OtlYGoTcFM9v30Pdz0tawsAkSESPy4Li+KRG8QijJCo1MuPwKSzHoDwHUV6OpCotVBIsczugN9JHFESQBMQKiPHSlAsIyiE4w0BG/860oId5T4gwBwzO7E8GHKRAFAHRGg+5A0j8QMPj8v+g8fd4CYHF/PWJaGCzm2gAUziAryCqsEQyEvqpBIQAw0hSwgBcki4AGCIGyeL0yncgQB7lFIwElONDIBJkXsS4AAHkhusXAkBfgBg95YVIoefEBKHmRfRt5ICRBK7KeEBwusBgtwJTwmNVL7NsEbxQRhfZXi2bG3hm0QREGiKHXGw5HgMCyyL+WBfLlRS0zHhH2fkISrQB9DIoRLkWACEGBA+T0BPONZfjmlQD+m6y/Guwkxh1goATo3zLDIcYNWCY/4sQifhX0OFniGyEQ6HoZ1QBWDIsekuqKYIQAJuhmTGGHKUIZHVNVDd4FAIVGBi/IAp7kJnoO8hRRaE/HwQlIaFR8KTIOfPI/JUQ3dieBcYWGhJcQy3hDFmhAYMkANv6WOIIG640CagH/I6YjXr4isWNc9yQB0ojUDnCMBGBaFsdA4QmAP4sQPVxRYuAQnahjBrHYA4YCZol6BBCKHWIkkIgE06iAZIKoZTwHVIyHRcpoWoxC80UYDUyFMIKzWAEFErCm0CGSCDueEJEIS+DxEbBGmE0BibCkFLKRIbGFkQjFM+BNIy8A/8eAZsSWItIVAIiMAVEcx0CAgwsRzcxMP8eAhx/jEAAAoEAxHT01XmtgMf9AOM46sXhKZCIGA8MCV34kVY2uFiCRmy3vHUJzIVSHwCeBxaa9MbADzUfelbuRAqFPAlS+B3whnp4h4qnXEfOrnC0mjb5XgxTgER2x2EN4vRqxM4zoqeMSdAxLUB54kujJJoZBEla5oExlPGGVeFIcknhRHJI44olKAegH295JoX4Na1v/GSJ3UhI0fTBXgTDS2QEeARMFw3NW6MraATIAVizxiiES' $Zint_dll &= 'yH4QZTEFrlcDukZhYQFrBIszgxL9blfGmeWXYiYDRN4VE2bOwlpUoGmjFiETATFMUGWF3k0nRQmMJIB1E1FVVmoraERK7ZqpcFknbBMcwjaQcm5GAzEgd7QQvmQxAGY0GgM4UdiOOxou4TeRA3CuA4GwWL2Y084wcKwkauwFzWIoULEY7Q4cK4LmJ1c0T5qZO2clsUhEGwlyn1/0txqhKAkYEZE4gEjFMpEImidgcIWGMgjsOYjP4PBwKBFzIL0DiMxNcEqa0YiKAYOqEVWa1SAAneT/v37hGY1LCASLE1FgcH/fb6kTFBxmCwI3loUWRQEgzropkMBglqgHApoq46gC2ZUX5ESLy44qtCxUJb/k4Q8mnH+gdiCsUTUoDAPOzwDwaCoH6JKodQFfuBFA8TUa4RIx634AP7UFQKFMHmBSZkDggoyffEDQ0YiMTq/99oYQOVHl7w0e4N/9/REWB2HyU9lQ/wWUbwIQogzw0jdQBcQAUQwgxgCEDAA1xwCXDAAQgIAAIIAwgECAUICQYYBw4Ld6fgpRl1BqMq1UEIYGgtjjQkViPRXWd3EvahAiOaDjAaYQUYE6AgYP4EsmeRR/KyFm4yHPG+ZbsAOvYwB0fzoGI60NRgbmqhQFi13EOgYgQxb8dQ+xOGXgoPrXVRQWoYFGeIWAByGhGT9pEWqzAliF9n8UGmhodBRH14H+hZIA4aeBBkRIT/wPgHJcZA8QAEZrUATfSHJFIOULjULuEbCYA5LoY5kCiX4Ei0lwCIYP8dYB8tgBMagD8AfhsIhv93OJCosCjtqj1YM/9LoO4TwblrjRVwfvGwa2yyDWAMfrSREMljEgVtcz4BkO8HyUumSwKBT/MVZEV7Z45LgFCgiLyHwFvkXSOIkDrPEWlp2wOIURBZUNMITQOGRi1bgUwQG1uP1SErW4mK2RIbU4GUVhsQfdHHIgEDcYXYEGRgUhtTghggIQaExWrlpHFNhHb1gY4TeHBoMFc2cR' $Zint_dll &= 'POj+TZA06poLjf/3JFJoDJKMALUuKQYIjUfxJFEZaOhVGvom/x5T6D9TFc36YIJfaMyIEAYxTibMYZBxIYtPLQMLQBF9CEh06sNAd2NRBitRUJ7JMGiY8CCqT30A0qzQCVoBwlFcCExHkHiAsG6QuFgDshCFLqY5PA4iFAIPhXfqJbFDaBgCfQpofCkA6SOAQDD4X1C3cDwASQIA6bEbg/8KfHYQA8IQUKChFOnKFAAFD+qQwSPDvDYRPCHCE/uBgRT/E3UnaFxtEggCU+gHbTKD+AWScxgRjeXKNHA8YDwQ6VjPrKLBbqo+Mfi/oVCngAbUEwFLCoM0/yF4IV8Q6WcmFIP/YyS4dt4PMfh/whMGfKGUbkws/ym9ES29ESirULEGJS6QYcUTRoShMfgPwxMmtpF+GBzyj2XTDIDRDDHEAPK/80BEeN4PMfjf4+k5g/9iPsDh+g0A6Ro8AiT4/z4z+B/0QLjRJDEo8+9EGHUEAOmLWRCDLP9TPCHFE6cNEYP/ZFgdYsbV8r+VDMBPBZwMMFIAMfjvxfcwOPD/9aeABs4USkyC80+GHENFEEfdJIP/Zcs88WxXkV7JI2c8sU1XAZQ+NRMx+J9Wh3AcNPAnBrGON/i/BhNDajCxNvjfBhPLghIG616D/28wMR8csQ4QNfgfR6cy+A8gR1cy+F/HFwEw+P/3xzD4n4dAh4NGnBGwThEo9O8xGH4paKg4UWCDxogBTRYzix4gTWYRkDhwPOA+ETk7dSIhaHiUkTCF3kA5kj15xwPTLxDr2qIs4DeQsTghhb68FwJyygRhoYBGFC7B69EAtndgD+gSDnUIgz4AdE4yiwN+qoBZD4SD9xeLXwYkwEgS3x0hK2oQ3x0hLSaUGgtAKAQiE7P8QD9Cag+aALALBrFuUw/sFiRSFAJxNJ0Zwre5CJ/7QIDdwUZvsOMjEvDgVii/FEyCxkSNBnJPka02aE0RqBqAhWS0p95oaQLZQwSTP3Ko8MxU' $Zint_dll &= 'ZmCctx4CkT1oYBGo2pmOhaekFbRkiAWLQ5IGAPHASIcCg/hkDzOPa0ziFRqMWUx1FgIhsjgkLwsPjD5MVYMJAoG7PhZhaBF8WGhsJI0V5gCQZkg1TgFIPwXaUUDTAFHF38jwF3lhG9G4KAwQUGjYaKD9IwNkDDAr9GIkgIv7CSWDB+IHgPoCVvMwxhsCEG6LJPLdVpMhEhDDqyHlRqS2xRDCWnvRdYCRAAkHcLFwUQoHCXABdS2NJ2cnZndxoykUCrfSAFRFEGha5O2XAEX0A86BpOYbAKcCDGBvRAB+U4ECwtaguQ6QdnzQKCTZDgyJePwBiwiDwAyLMv4kI3gxFYZEvwgFr7QNxhMEEQAwUYVQByDtByONfMbs0ASf1APgjw0Rdbz2kSEIdGoa64LGLwQHygvEZTUBDo1GTQQqfYBebDQw7QItfn4CLDcdtgpRhMC3vT5zg8ZULKB7EM6WmZJWKPIDPlPoguKherBmC5A8J8YZDyWNR50A6B6ZIAg9lP3y05DDsOE6ksMj9Sc5BZJIM3u7AsLmqhZxDc5tTwYgmQHw1PKTQaN+IJ8+E4t3BI2Q/8dVFApVBA+LxFATVlFTag+ATqD1CEqnQVfUU+I+KT0Afj1QdFjyiguj9QDKRiD2ML9wWhqwGDvVUAxDJWIYF7x4L8Uf724YgR3GEvCkwRxmf2fPAL45MDOF/lgS4RcwD42rXRGWARAvNwi9gJYZEj4QvPjDT+S2RlAAIp5BVfwuYqGfaKNEIJgdVuUAu3sC9K498XBXKPEa8vqQJ+GIEgkEm4gSqXkyfz2lcQFAPxJRE9/68qD0H1yTCBBQ8ON9UQWUGkC7oQeh6CghFn6C2rpRxaBrCFEoXQffH3AuEyWRoBCVg4bBBvquZkEKU+jWIUGqsBLwZQB9JOYAgi8LqwhAdFvnIKYHgCSkBuAwhV7qFlZhyQKuFlkHkLtYh78ujMZOJGVuAChovBgRgkbEiBEaaFwYMYFGRIMR' $Zint_dll &= 'DGgMGFGA1kcuMAJRH/7pUZjqD4pkfkwRBvdzAbHbCLJfkItSaNDQV5BLgwH6JgHHBARXfSeDvm4rIVAX4DG4T1B3sGtbEoAmOLA+cL+9sT1oML4/ONwALkIdwMfYl2DQaCgYIO4eABFFnTikIAIYtl3EUGzTaDkPGREYLusTbbA47BRCdjTAQDa8OIwh/jLbGJRoPgdBdxWmz0HQZ/osMPx88u+gVi1R6KlqilEqw5DrUBDPAAB/AQCKwwCPAAqsczBU2A+zlm7cHf0ghP0wfBjQD7WW5b0p/QBrUBDHAE0H/QDvQKi4P9AAX5AGj1AfAeA3MlLA/u2g9X9Uw+KnkSIk1xigom0bMBDCAFYDERX/AN8RbxASf2A6Iz5cHNAIZ0ww6H9155NAYAnA9ZdAQl8QoM8aelMBISUQ9U9RSPCkoALEwE5CQAQMi3IEixJrVlzstTsMlkiAbiQWUKPy71oCUMwA3U0SArEAPxGA9ADkjwAQIBAkput7Igg/ZEHn2lH+BEAZu9BYRyDHGXIKoNMp/FTgRwW8vidBbC8QliKiewZGs/BQCDhcKVLFAGUlhZ6EpmAVICIC4UMVRQxWA1DoZAv//8YLoP0MsXkgNSEQlgtQBnElaAA+6JaCB+AXD/qhsXkAYahQVqLnERDHowYgTRCDuvGwgqkxFEf8tlpgTwlR6E/VUQBSB4Jf3JAWCpDIBgcXjUQQAU4G4bFAbpeAcMywY2xtEk0QfH+2igXhbxFbJSDqCHIZC2JLAKkWuHIJEydzAvII4F8CU/8URpW5RY1l7HoLNfIZ0kjAkLTIpHiMJjES5TlvHYPG7akC49dB5RHM2cg9Uh3jeCOgmDB7FZMEN2HVdtUKT9AagL92AhIWAdMZQZU15AsWMqMBMXHvHgEQNQWVGl/AEEhSsxZI0Aia72QCkOXb7uo20svDGdjLskaJAb1sizAQyQDNG+BxCwTls24MixaD+kAD9zIgCIA573UmAIB5Abt1' $Zint_dll &= 'IIB5DQK/dRrDriFmP+CwdTECgNC/aAG0I+zXID9o0O/uJD0pHH4KwP5THPExAhF7gJCccEkW8b84QD+z3SgkYN4PnjEB7ycK6lJxMwJ0RxnCr0hw4cDD9VB4OR6iGgqVCQm0C04Q/jwgnxkXdhAAPUiAj/Rw2GwhJIqQKLiF8S14GGBMMGM8fCMjggqLTfTLuiMkUMWtOQrC+cCvawpEggP86WKZQQC8QLDuTAEHIuvIFICwLkwBCSLrvBSgsG5LAQsi67AUwLCuSgENIuukFLCx7kkBHSDrmBTgsS6Z04RA//CY2LhCrsiwheNHAWAdG0IOgN4aUG4A5cATTTJjUZj8wAhuFQgGj3KDEwEcTiCAPLiuHYLIMJOupFwASQAgXOkqrpHTBP/wiM0YAjeB7j0qBvvArkjQEAGF3qvcBFIV8i9BAdiRI2gmigatIATB4ejOtoAONhEAtKUCws7Hy2nBCj3+anFw1Cizti7Ct5DW8zwmoj0iPRZIwffy0AEDxCB/CiQ/gOogwQD5BogUM4DhPwhDgMGAoQFDBIATiAQzljiSbul0Afr4AsAHsghN8hOs32AAKP7xEjWCqW+Y0EPyh2NBA4UDPQXwSADZZ3AEpBIQRfxCQQ1AiVX0whuw8gJR5O4IGTgPjY+8EjUE6edPABAHTQi+QFmyhzs+AtHRdIZtT3NY4gvBalKKh4mdY2RR5FgiisyIxQCseHCu3fgAxeBY4YvHasVAubCv5S9AufAMDLnAxnnxcwISAvfE4D0E0YtTzCQmIUAGthFiY0ywBDphJASJomFAKmsKggIQmwwQzQDXggygMigAEcoBp6oMsMwAvwwwywDFqgzQygAzfJDLAd2kDJASwwDwAPABAQ9UAjA3QGIEEFFgoPDwcIBARAkMoDDwsMDQ8ODgl8W++dao+gZV6F7KJqL0EYUbWBAYV41975USuh7yNZgPqgUNKFSgSJRSo7hBlWIjTBgscHOOHWGnCgqIVCQd' $Zint_dll &= 'SOAhuQQfCQDoRF2yJuKL3G0AKLUkEIrKOhZ1HAGEyXQUilABMFBmZWoLOohhLGAyDODuy0GwATyI/a9RABxqTWQtAQLqAg6iRidmSvCixGA+Fr7ERfAjeEUAsNVSI1AERVEECFwEH/IxzV/SGgWwFQX4OxgPEgXDGwU/Ur2QFBEFYBAFqBYFiBsFP6LtAxNRALGWOhAFVREFSLsdBR/iNQ8yeg6TA2K8Wg6SAzMG21c/YvUN6FDBPsZSBFJFVwTIWgQ/olAE4K+GBKpFUCJFgKhF8CMeRQCsskWA0J++IEUgaIxFAGoKCFXovEwIx0So8EznRwJybOG8GjPbV4pCRgNFEhwwqAgY0JEUAwEeMhDwMQMBJCA0EBBSAwEiNpIQMHIDASQ4EFCSlAMBJkEQcCIEASQoQxCQQgQBKkWEELBiRCf1ZiKDBiLs/jWrBBA7ww+ORhjReGfpBxZEIPAtizufJA6mMPcaAeR4zh2x6BB9HpgP6ZUSdUMGdQHIEwCwQIe1XjVUIsFeI2CGA8NDJSIGDLGzXud5vANkhxE/vsyGBqHqFFpcYzQBc28wRzEgCdGKyIBmk0Ap0w8BIq2uaQx0AUdAi2DINnBx+0lad/HgS4XDw7HlQ7HpIbRzHDE084/4jh+hsWNYHNHnUYWjBsKnPmRAJg+MOvA2ecEiCjRRBYA0iMwPAUSXYWUnVSvI0wPnD75EPCAGKYAfruhQpSdMXDUQ1y8yerABEpZr1zJpAAP5A9G/xjbjVpUzqFHRP/LAqGu/ABEGBlWoCHQTFyHC/RL/5gshskjhP0Z1B14IohwiDEU985kQfw10t1YQIGYlQEC3sX7QM6QtIoE2QqLVgGGFTvaoDqIjEkFGQpcQQBeyaOBrA0Rb+jYlgQYfi2KFzrcDWs8SML0gxnsh9gHof9EmKbKgCkFhDgjooORmk/Eq0gUHzILhVxa8eokXwYsXsL0BvHM9MQ7CK75cP8DvyiXWXOHJVd5cwQPj' $Zint_dll &= 'qBMEUoG+B0CgFhAFhS6IEvje8iHNlYMWMAkx4o9whb4HPZ0M4nkTfZPeIFZSV4sY8OhF4xghZRECi8bOS5KVPfFP6+M98QLLcCA98WNbqT3xAzU98QZRguW30+/yGDJ1C8daEGkRW1liLMERsFNdZ4HGsCUoFBhX6O2z4yASlZI17AuEQAWLwooYisslOh7SA4QVAANe0gN/ULG0WCMTEL+WXXF1DiPz/08LIc8fikFj3AJa/SF0B6lLORM0aNjVGmol4JYPiUa9TwVdDwYBItQDGRw/V7Bi3nohuHMjZr2I0Hip6DWoxdCj6FVX6BpNIBxNMByLHWhgcesM4fNe/9OhMQFkuANgtYj/4g9RwFH4/+B4fgAR6GsXEn8PhOaCEfhvNyaO5GsjEv1BOgGBxhgfUQBVgx67QQ+ipSZZm+ERASoqAAUGGU6eaABhHwwSUEczgG4fDPHnDgZkaN8RO+99fIvXAVYr1Y0EK1Kis+DIzHTMiwM7Ugc/wqr5sJgAIYVGVg/QeOjKI/7mKyQjAMcFQJV0KQHedVE0gyAdGllUT1ClVg2h4HssFPD55OPkR2ki7ULtB2hA7RIPBlLotTvzIElAP53QbT4WV+hwzi+CkJ7z0AwR1ZueoWZWIen5AQDCnzD8P9CisM//FvAeL8Lf+qMrIcT8n+BLAH4YPdZc8ReRtmiPM+roIK0iD4vBR/3gwH4cIuEiVsYDAOi92C4/EweAcJUKZXkzObCQgrJDUJeziMjIAYNA+XtYEM51KleLuH6IfkwjtWRyQ7F6VSiPDHJDMZw61SIDGefC4D4N6FKpYHADogXgBS8jrxESV+gozEpXQgZ0BZa2MvwaAXEFgR5EJe9UA4POAtZbsBFQwAuVBO+wEVBwtVUFhQiHsRFQIJpsAkVvEB+yEVDQPdEOAkW3siFQAISDn0D2w4B0HRKNR/OLnWWUk4ozwgiJAYHOSRv2xwF0YhO+9oBtBoHOEkBhT3MsQB5izMAn' $Zint_dll &= 'TzQYlL7yMAKBAYQg3AA2sEEIxlODu5tVoITSiEk4HQMU9scIhFTVAANQGdsAgk84ZhJgfwxBGKnKQ5DVAANGKI1YGABMCBIKYH8MskWngt2D0DpVxwvO/7B29/BaBEFcBMPLO46FEL7xQgVx4CopAEHLAK5DR3L5mkMjefQRMkovAfUC8AOA3g/w594Q4bH0EDkhkIisOkfvUCGvcAXQMqBQawDBADJNX4H5AazmSs/A0gYg0wevElOvALD48u/UBkDVB+G89ByyPlVDXAzQMReL/4R9AH6NIP/MUQaLQ13zCfnVMANEDTHhTdhU4HMhVugVUu1coiqVY2QsBXR3EzkbcFiWOStoGDA1C+Y13PWLA2EMUA3eqkcw3XANEv+0AzNwVTZdPAVAydLggOlPgLhsgnagVICB7GT4hwEg/u+wxAkh2AweLmE12H+loYEbWBIPAKa6JOfqFYDx4cvTNfIG5HBDhiKjVG01EHvDvsfw8U9iWRB6iIBmWoAaWgVoWgCD/RbzpH0/Q7r3BxAr1b/Q2iBAPENcxHa/mL54oFRhJwZUzVqN1EwOSorJ8NxLKN0V60R+Sa0BfUQwuhsV8CV73BCJrCSAgPESTCRoVVHomXdLokHgDw1vVjD2334gwgQQIsEhhUaSL2AdZsorgFZlAoW2uCaBPk8NhmtD8mxxQvLZQs6lvEPW15c40wrgEIXuqJSBIo4b4kRBPKivFvgED4+7IOD/AAxpUuhshGNpHkQPIYh/gDLw8GgHGAJEJGpQ6EsJYGShCRA7hOLw8CgDAky/YvRS9z5+OCGpAhB+ACSKRDxoPDB8AE88OX9LUOgPhOzTyLB5NHF4gcTHBE4ZjX0msAAsFH1oY0L1ABwqwGAChY7nbVQJwCN3DcBFsd6DdIURaKitAusKVo8sgIFGxwJa+FEQsOwaA36NCZczkjJJxPK1yATAMqZIxXLWyKbD8qWJGhK1IcADMAdeIr5raDEArQQophyv8Tdi' $Zint_dll &= 'IuJCBjb/B0EA/RNMDCAbHFQRD4RtwpdB+H/mpQe90rOAbpYf1REMYFIcIAwAQLKi3kjHgfIA4EvgMohu9EAouCFqMYhu8EC4cRsxuIAu8FC4EgqhpnYdajSAAIVOmWyuAg5RaExcqQHpy2igFQ4vIBB1B7+pG+tIgPoNIHUtimIx0ELg0UKQOnUmocICCyxw8Bs0IbJOon0t6x2/ik+xLnoKJbECCAk8ORUmfmEFM7wSDvxyJYVurBkouqpxoiHoEm09iRNQC7QxaHhAHQHn2HDJ1N1BFFDoKtzI3TEo7RUWXKRBAYVOzEUMXIB+DJltkCnVDgADJYUOpEYGg8QgQ4P7HwkPjFvnEn/HINf2QILvYtcb7+a8kErRTxHgPhzm96FBJX0A3QwAGiSa/KDCAVkASDZ7QDJ7rIkhagEFEWgAA4hXQlDo/0yiZwhVAqiKiPoB1Kg1gKpwXajkyBmoALV2CaWCnopaBKgqg0oggagDPc4Lhe6HWlgFqHqASrUjaADUBWUMUOhTqGWAqjTcxqgCCkhUQDNjYQ8VJXgMPAwgXx9EigyAhI7LCFa8AASABhBeXyCFjrSeAuBPG59OE0waYYDPB4KnALwTVhFOMLhvYVWXEIgLOGpkUusKZQAeOGhAvofg/wLcI3ADDMi1BTMGIOi8bUBEag8cUujvIRD+cGBqPlRQO+iedOJgDDboEU0XT2syqLEmaLEGfYBCREInulQAAQt4g8RIiWBZ41hhTA55IQz2gr4Dc5Z3NsQvuQL/1mj0GJICYAAEhX7lbDMiJQJ1XRWK5rLrOhAbBRAfzjMW8qqBK4YQu9KUIU8TY84jjUcBE4vzOz7/QcHn3A35EARqIFHo+YkkDIgghDQu5+W0A9/3PVD4v3jPt4EJpRMIHlLo0pjqlFcO7KoAxy4SaiVQ6EYK9yY28FlNsak2oXAAVjzgOw4eOTFMCWqSIdW4FHBccmFcGYhZBhULAUtcMIPEJAE76HwdjYws' $Zint_dll &= 'L0gQEI20HHEQihGIFI6S+lHsVx8f0TyQ12E/uEtYEkBnhEbeMiGBIBCNPCs6O2Ff+M8X1SH/AIxtIVFo3IB2OPQLsXPvNz4NASllHg48QQoNG0IcQEkAHUA7DceKishCAqBLD4PBH4GbjhYUA+s7xX+QuVCsqIgKqZyOBRIDwLHtlxNUcooegjtmixIMRei0sD4BxRQB9QYQQImUjN6XsbAzzHf8TRTy5lQdiQPAUHHSSrKosBg8CM5EYqQAdClKxDA5HEFCB1BgfEC1LmN8YGC03rJo/EEQ4RQ0/gFAdRrGB0HrYrwADJW4EbQ+YHxABHA0kNyUqFC3+vipXTLP5ymmDLkA3QhpJL3RaM8BAYrwYQpP78YnyDWEQAxgNGO/gj/TDiheDHwkRH5wipxELFABuG8kkB5BdWEeXUC/iSCwAY28D3k1hzbqIQ2OcBBkxCM7iBCNmDIQrKigLjbqYWSjflVENupI5JkARbkHkIITABwAIqM+SWjQgUpAMOihBhAgo063jgpAMOiRPCKjLprmLEEw6IE8IaNOSljPQDLocEAhox4nZ+ks61YlIuoKKKKeBIhQEMB2jwki6l8gdiDqEcmYPaAeQYQPsKsEJlSEJyehL5yQIIxf8HcNiehUPI2cwEIN8r/ibaBIMKPo4PMYQ2pgDQdHRoP/CQcnEEftME+pUMD2SVA0AKw7iN9wt9SkzxE0ovocAoIB77MQ55aqYKYQztVBAGWpQI58YdowcesbsBeMYH0R6OFCQ+xAMP91U+MQOnHDHSoAUYXOAPQMANAEoMEAuVuEMAGLgzBfs0MAFcge/SGqJBWsF/ohV7kjfsHDN0TiHhU0AIu1qRk+wQDUKeYqyf9mq4PmRgEPQRCF26rjPFCm9PHHoddY6fgaH4MQxmBSd2NQuF1X0jide1NE4asD99VGKNBB+RDDlp0BIIDIRUKT/mMqEXlA+s9lIIX/fli+yITGDbBSryhw6SlEwAMAUqcg1Ehg' $Zint_dll &= 'sUNwzKe+nnOcArIugygHBQ+MNPJisW/wAPK4AiICdA6D+xUDdAlZIOjyU9GbF0O4XQB08MAILkIT+Q8yD49DwRPVAGoD30YQjSGML6ARhQ4AJBcMIZQvywARi/BqAw8zEAo46Os/X1Yw/ka+weLxQIjXAKH/FmPSEDkOtfjsMekfcsJHoqc5NQHzpI0AfBQYxgcAdWyA9gAg7YehyESDUQCYD0LXsisZUbMrGdEFs3dTgX4+DXIBTXJYKAEkXwBoeFYIIP8I6XsBEMZENEEYuRQki9br1W1EsuZsAtRGV0Y5qK8fDCQJHgB9GgkluCAA4LCivBh/mgikLi0nB0BRoGUiCFEJRAwYPCAgckjq9AKIS9BvgAAR8Kfj6w8GfOT1+3Igj9YQKhARGcGTrXAYGAIBsVg4XApDR8UHE6k0Cn8rFhoBs26UGcSb0IKQcNkZyEgmWYLu5c8IJBHiRShiQvRCGeFJHiiv8RActgNASwuiCKQlDcqDckBXMYWGimVNAlbgot4XcP0h0QBA5qIajCexEIMJ+AgPj35ksdh4/yZGOIUFsYP88PhbOqFYWTj4IUEoTTcSIQkXGEfYStnI0IxvpwFIC+xi5DETBjGtAUEhqwFv2hFWUvCOBXBpAyGxC3YUMQWFDlf+nQCj6BqcUGeWukmVCKBYBwsVWGy6ISBkUHVvunEZER30ACoCAq+uEh3kWhYhEoV+JmExuF4gaznwGIPDOHf9Ie4QsYgfrfev3AG/uRH2EqF5D2isQWy7tyVhIzkx9yU01lIOMYABwZTBQxP1XUIzMUIS+K/OFTl85goPQxluz/WL5NEAIDP2P6UQB41IBbgZq6qq50MUf+0zi9p5AEDB9SKZ9/mxBSoFyopUHDOuYNNxgQQBsGgcjD+w6DxALIQJFgrQSIjiEibiCEEQLwgSg/4efKcSR2ESGFwPEfhfnaF2HHwIj4qdl6CgWFmK6FQBio01QQOKhQSAzQuAyzCAygyABMkI' $Zint_dll &= 'DICIiNNZaYoFiKBTackSuNMIeikdgQgtsBCAywEBCtAKyIqFhtYIUISILIqd9Tp5gIgsGIqVhVyBLIqN9tBcIPIZarUABIDKBASAyQIMAlafAAqkU4UITbgDGohJIMdlhY4KYYIQx4XeChFCAj7oZa4GEK3xXwQUa7uAAcLqHmsRxo/wzAFCyHiED5CNgoaffGdYsL4Hd7wlYfEZVmpD+/6DkPggkgHq7/BXAfFMAyYxcG92HW8yIGvVNLYoYGlsA+YYoIUAEEwkDbYYQGWgADSUpIcMfPNegWcAEH2Q8FUW0hKgXhHzghBDUL5EowUTU20QnCSwdGCuIdgyAyElBVxYEDUwuE/hUVfgO94LoRoBn64SJu6yAxDvd9EY9D8YDCTQpqBI9SARjQ+w44xIRcDCly5aFsAQE8ACtbhMQxFVE42/tQHkAALpSSAQhhcAUNHI5FPRSMQRsLA4rwiBhOhiDgkCTnX1tk0QSFwZoRwd0RszVbUrAoEqWiwURbu9EXUFuzURViUCzmv/EK0Tkf7pQcY5YXsOoeM8YM0AnzMSjXMBEQIWUaBh72fhkAG9QSm9UTA3fOrFFL0BMML90BuWMEHeG/BVCNEb8e8lrw1EKwUUjUw8C40EEJ4w8JP0lBvQYJEb1RtgSxwSYHEr6nAVT60gO7UVqurhskEFUUHgfL4KqHoAhCT71BHnehC0ESK+nwVBF36PwklCJK0QrGkkunDgBhzb4rZASHKRMGE+vAghiA10wUjykzDRdQAx/70IcshA4VobMgPBUlU1sJYT4e6CAGq4cTYOU1gQ0RJgiSv7AHy+g/0CdH2DAP0DdHiD/QR0AzyD/QZ0N3EAvgwybHgdEipBR9KR6HEHamchgFTQiEeR+1kGgXgClbBkEhVInC9xF36BLcSaBYM9SAGKQgiQCOVQgIiUQB5K2IHdlOnYgibMQFE/oEfRwgVMKP6ftFhEMrXYJERhAQoYixhXgpPQiGKUIOo5TM7A' $Zint_dll &= '0MgwY5FYhu9ZN35DR1KGmVa0xiGxC6YzURAEEET5Be6TITA0iP/xJzIwIcFkMhHAOQ+O3wsQrNxz+YQI8RcDOgLZ8AaadiAMCQwPgMogwpBw0Cyy2ASC0fNXB/F300i1QDEQqM/9BMjkkM/QKHcHgMkwRpKRAfLTAICyHoQNBNi/IAEYzjAAmIyDPZKT8LPIhQwOQ5aToDgJVEHyg2glCUOLRVZ08E+XZVggwTARmP+WEVEED9CHh28/DHYQoJkG2mPShLEYUEexGD14nOBRMfZak6BSET6ToJALRXBg+x2DFMAJiSzQNGoJkewHlKOGHTwzK86JTWAURqLwNgMBsVhFoUiUKIMQiAw6TAV0lIoE/kjw5EEJGDsrOhQAVQiKBBONPBMAhMCJfRR1DYAEPDMNdQQGnGF8ABbQHeDZJTvWD47qgSAAyHMD8FA4xVBC0MTQSOAhhxkcigYAPA11Lx0AbQFqAAJoBP8GEFNSpK51sC2TAItVjjOAwYNQgEhwYxkGSYPhCQ2ICunT8hE8HMgw6GUaGGoFaAzIceAtgYbq4iy8VLh3I1LFYSwhAJL+c0fB04H8AnWkyHqDXCHpF/kRPB64yC8ghKzjXBDIIpKeX58qYNkB/v6BzA/IFIAM4OfzElEhRwYiTRw8Ag8AlcBIJPSDwDsSiAHpoqzBw9IziCDaM7WsAiQYPALZII2I8GMcAJOcwuNSJ4WC/ACYyFjnhSsxCutWPC+sL8DGmjKBrCKzrsKjU7fuVdHKykCsacAqCp2A8UAggoUhChTQ1qEgOAE8Ao0ANBMPlMFBgf6SMRt9HdqYMDB8fiSBALBSxYDIAGEMIBECZAQ3fPDqMQCMErgPKkSG1dDIgCEAyBMTUKdy9CHBoIChyBDj+xEcvh9xASA0qJ9QN9HIBHGArzvmC5EYkRgVQIAYhTAjDUQKhKE+fLzHRVpzMmNvs7jfojEuC8Fx/ikyHAzywEV4ZFPBI3oEPjuhNQIED2CH' $Zint_dll &= 'qi5hdBW1AhCDfWIc6kegjihEHgGzODONgdsHIEUUgHwwAaay4DgTFdHI5CEGQHNuNGggQIwGogrRSOXR/tQXZYgFAwF1StUKVuZR5IIBtesNoeo9Eh0rWiRhTDBgTIDw0xw0eKwwsFiE4jIQ5Z4IgGYGXeewiQmWLo0E89kgCA6NVRhSp98Q1/ISRNAYRFECI2BMIJDDD9V2F5AAIZoAgZwA+pgAcfgFKNLYhBGlQAu/+zNEAWhKARCNDB5GR4VCwELRgPNAOIYfwP34+lYF0SL7ghDSIhUisJMfdGUCH7jwOpEf/ptPkR/GXDCUIKCTPgQ3EVIQUEc21UlgakB9CjEGgHwHMgECdD0Nsb7K0hAf0PlVH4EG2y+rkzsNgR0Nwdl6DtEQ8NMA9BoQgYbaAFpo9B2F/3UjaQEDaTGF4grQd4FD1JwQQQEQAnULFDBAt7OONwAGHn1xEH2BBP8PhdPiJNF3INB389C4lgEBHvBfpzLwIfEwaQKF/1B1ak+hMpESdeUlFECgCEAh00iwACics4BIAWMECkcRA0ECGVHoUohjkASKDM0KCAyAwTl1CI0EE4ZVCIhMMP2m+pBuw6Ti8T97DSFSY0LRPaO4u5hxwVAFkIFgVQv/DQjFCpBeQUABkzKSWMVBF0TlgwDBQFFooD0DK+s+HbTVOgNCUYAQAxHYzMFAkINIEAEvNXQanQAvchAxS3glmD2ECAhGR0YCJPTA2ATupwfAM9Y/XUUxY58Y0cWRqBQQCIA4ttMQ7HIRxQFqCY08C7v3IjRDL8YfYA8rGKIMIf6DYExw86HFEFQ3AQ2ITDcCbGEJGwy2DAEj/kM2YQM3BIhENTcFFhHRPgBsJQAIcgmAMGhsgKtKECvGgwXBBivDiVAB4tQEGDIDUNJV8F9OsdgEMtTID1ED/lICDUAki69oECCD6MYMgLF5V5EaEMNhZBULQSCBfRwWDkHz4ChYG40yEsAAhWbHGDOp0AqmLUC3SQ7S' $Zint_dll &= 'PIAB0EixMKhP5SeBqe7QTRjORYEJBnUXtIzSpffgPxARF6EHg/hBTWw+kL3YRIIDoH63kIFEkG+wAhAD+LECEJWyDOe/EZZqlBL4r0YdfdNVEDI/4AsJE4sdzRIr9wPHGFZQQOfQEkojYNVIAJcDMyI88FABgeAVtBWRiPClIhMUX/9CHcLvOylOG2DQExZekAcxDwpBMgXQyHCgSBTxr+bwX9VIY5MLTiCxwAoDAXRk+xI7+X0fik4nAVN8EIW+EyahLBCSE5A7ewJBIfQPFIADdQWZCHtFfi9iSEKnPCCiICJh0SwFAgA4BBF0C0E7zkN8sxwQEF7DXt428ssLhzykCOMbA/Asa6wgEIrQJIDi3/cQwOJKKiCAKBXhfhEC0hYRFYASCMUoEogQrO+AIgMoAUSBIgSK08H4GpD4QPJADwrCiEGCj44QFIrQwfsFAAMogONYol0ElmWAGBR1n4WiqB2Mj4AHACQDwOMCwfoEIArDeBGEgBiVQL7oA9ob8Q4IQhEgnBOKkoCeFUIV8M+3roiEVmAzJ6/2FOEmLTCA6IChCEVABeEAwOkCgDUS4Q8K0YhWAYZYMgCsLuCXEXP8VFYNAopQAlhA2wNYIhVA2wRuqYAUANsFjLvhIRCKyLgrEhKIVkMG2WJWB4rRvRLavzAwACwuEJyfOlDYQWCEgOiU8HQCOsge7RwGaysUBcPlEA0z2xRgFaEyFxneQsBgWQKfABFs0mULnibA4BwCIH4bLxBkG748YFpzT+DZLVQimKHDFTX+KopI9vRRQaYKNAzsgH6bBU0tqm7BOH0g4v8fACx0D+dhELFXqAF1CAGID0eDwP7rdlOA4XSEJKACYiowXGcOKHMCDCv6T3gYOBhMPAz6FnGpbxKDaABgZGwgY/SUhw7mZAYTlACC6LESLxhfgSZlhZ6akWFEPLMHIRMVGlNT5ycYgEG+PhUQI0k+dr6RE2FcCQLlMvVhhV6CRiZN0CcTI7FIGuJH' $Zint_dll &= 'LgwAMfIDPjEl3xO+J6CTHlUbM+1Wxj/wkATB8KkBMtAAkatGM8BNc9f4QNEMgcTwcT5RATHOEaF1AK4pPWRnGhD4wptEAplTISuc+GhIF4zjjlUU4ELZLnQwJwDh3BtTuwql0G8sM7eDIF9jETPz8xJucgBgJ6VIxILBIwNAR8AzU/exqJw51CrSSDspBaMxAgfSL20khFKQgejAE4MpF4sZwovKijxAB420q1IgRLAXARYGg8ISV7Au1+VqbwVKxQQ2VYMAAAupNRJbdCii6gIXBAEAhxACdIVOq48AYwIRegKQXCKntE4gQdZWgC4pmBDzbpqipBOpc1ETvmg9Y3k58akVSjmFSv8rkBRWV20KEAiLwe5wknn/PwigDkBHokTHoARSV5OCMRjsv84BYGwQY5SEa1UFVPU3W6EcrP4xoFywfmFsMEMH/VgG+HoN8TGAXJhcJwvYSICwEt/o9F+IkcyX8b8D4bUECIgCCUJJefYGj2AsMHEmIUUhthckOOBlbKgTFB7DgewHlDAyM7BLIrFuJtH/x/OCEzFwbaFkEShwWlTT0rG0BtGMGQ04+GFLa/AGTRDD6jJw1qclGMDhy8wKWoKfACzAYQcVFlVX6HYn/hD/igd9BzxBdDcAPEJ0MzxDdC8tPET+30DZDxORwtkEIezovDWAikQv//hQ44oPMfjQgg8JG/gHB58f5wiU8KLKE1FVV2oTFGgU9iOAbtsTMH8MslMXUxDEJbM8QkQhAPp8PyCYAlPk3/gUIO4EOF5AWj/AUgLy9gbTItRCglHfIh02mh2zqAgDOIMQIjyPHgEl4KEVdVMYJTvuD46xwxAjhA0kdQgsK9DHghD4cPCoB/GZC2I5I/PTEAYDyASNBDo7xSeqEHVvGovBJWu9EEpnAr/CB8HRQdeg68ETBQB3mhDCpUGFFmdF8uALmS8hdasIMcQCBlFQaOwBC1ZSRLz0CqEeAAzFLIywSBFSDIMBiQuJU39VEAIo' $Zint_dll &= 'g8MIiwZslAixsEhAN0MEigcAPC90DDw6dAgmPC51Dit1u2QU/0cQFAyDxgRH1OBWFRQPP4Ux/hTReWN4Al0zMj1QmpGzku0IBCAhqwLoNJ0E6J4+UBehrB9DImfxQHgKGCWAFskWHYROCddS4yLqFs5mgLFjTCeR0Nik+RUU68drFBRJ22wQhX1CaoLdMOtlQaQtxAfYBfC1AdgNq/sWWE8RANkqPoDtJQghAO0i/POwFZJUkV1NcNsAWDcIhGF73Amy/i4E4REGSIslITYUYRVgFSU1hQ6z4hBQAyTrEmoBVjIH4t0PZhhcI1WKjZNLLRDCjj0/QTq4G3chUPcsFnEVCjGZOaEY2VqBSDmvmXKDDAGByLhCH8aEKw38NkOSC9CK6FvN854Q/sdCNKjgj3DlN6kZAVScg4UmVu8uDTwsy4cQRFZTBmog6D4k0o1WFAD044vCDAbeD5Cqwh1XZSBXySJCK2N/GRiLyr1zSyDxyJO95tvsNTPb5pJPME86A2TPDxmKT/9R6CCKIi4AcDEAL4WOBEgC0eA+CqLAZwDQSGdwvy4wAC+oOgJNddWLxgMiUVI56Jic8DsOYRMBJFJaEaCQ8l+BJOhB8LtPEAKgbQA4JnyyaDz4TgDODGdcELegQPKZg+IfgTPZGAVNi8h13iIAAKnGGDi+uAIxiE5AEOSkKMlcVBH1n1PnHkYw7y/hIAtQVqUAAiLofKb9/7rKwSCqqwxs7sQCQpdh/CCgqKoJAar9AAlSDUKxiI4ceWH8YPMoVGK22DBHElbxXAN1axGRqDBSA88wLAAD/5A8UlHhD7t/MxFVVo1yCRxXi/7ilqNmcuUHQ9G/mN0FlKShBov5AXQjg/sIdB4CAuPpKz44Y3pVaOUh/oXACf+4nMzfdcGpRQJxIf4y/1c+2YABU1b62oIe584CozwwehZBYVXgTyBxwPRwsQBnCGbDV1XUU4ZLLRVZFFUKjkSIDf0KjohtCkyTMSS3BH0F' $Zint_dll &= 'BBkG3SpPse4GhKG8AnIiQQYoHvqwZPVzGbJtJIIcPLOJEO4jwIRtHwDZGUwAAhzZBF0A9kYYfrKwbQRBgR2AFRTYRQCcVLBttGYMMkkNwQkQ2WgfQDDTZLLBCwZ0DqCgcUAVFNgD2RulQgBAcwk3WFeVEoBjKQZEDWCSgA7teg2JBqJQwANlD+i7UAUUCgUOUNIEgF5KVUdEqLaADgklz72w0iTh7UMSjwkhHPESIQfJAe4ocACSWIQLiQKLC4MBwfOD+XsPh1dtFwIz24qZSMiOd9EZhoIBRmiChGFfrA0MxJ8kEAMuFCBBxzULgD/ppQCaeOQxIEGxChDrP28Q58RmrBCsARLECuhD/ALYVheQlrNbrVGU0ZjXbzD4H/Fw+JgloYQCh0zURSGFxEURLgcBUTdlkQMBUxICDlQS6AYH7S5WIXMVzUAwzWDkw01+YqDkSScPhQaVQuB+QIRvIMcR3WCoUw/XLlTHsdKIGyPRJcIYEEGPHnfEYHcTBq7hAGM8EQZvYYn9B3dw2AFRQlELn4FAYjdTC09QF4L8B3cG0VXki+EQS6UACA+EGgkRHGcyIDOxuNG49G9SRDKH87CQf4GTnH+Cjh9bEG9PUBSDFBRw0Mw8wPzzdVwEwBHFYATHBljSS300NGB/qX1Ue/0Q2oWw/w+BAREZCVVrgIhGBUjFUEjFYOCwBwA+GOBiEOAFAJ5lCq99Ogd6HQAUFcERUXFY4klFxwaMUgEBEhWAnMNpIhRwEKwcmCbCEetpgtEAhVFAhZFAhTEYEI0YhVFA9XISiUSI4YshBhSBKCCBWCkTP+KBYrGcE+9CCXQ3+gtQd+GzDlMMAVwMgwHI8AVcDAXcS2q3BL0UVSAUMF4I0ganGj7DZMTehsAAQSYM4FIsAMHJAFIyLIDFAAbGbAAAOesNFSBAUgcDAwd9BIcJ+QkAgS1P3zAAZgD6AuKMDCDwMkCg3hAgicoAzAzA0BUAMDAgjAAAEjAwIIAA' $Zint_dll &= 'iyr/P40BF8EJVRwwpXAsAIHHAegccKzKAf4c4MgB6gzAqMoCDQwAwwCxPJCmygEL3PDKAcUMsP3LACM8cBUHAiEAwgI0kQkSExPSuIE1EwIYAzAwQQBQAFAwoWBgcICAGAkIkBCSMLHqFjEBsABAHBECEwd+FjAxoQADIBMTHz0QExMHEwgwEwYUkAQwMeHgkFsCoRAEEwhg8B8TExDAABEhgTBEDiawMBBX8tkO514w1ywgTq4w8+/0EMFQM97JYCCpEX5LvfSQvtPQaHk9C7HiPph/UdCX45oKdZbvcB8GsT4MATADHKQogEiUAfG/XrEJKoJIkBEUsK4AqLNSV+DaKsDai/AqTUHBJ1z4bwxAkAFAt7RoMBiCLyKrGSN0JD1CRQFvygf7WSDP2BA+RMDgV4ArXNohqRKJAesbcJUQD1deLaG2EtYJYDCz7RMDUByewAVjHz+NPMDBBOcE9oQ3sygQAXUCGkOL04rLRvBxrekDH4QyWDE2ZGJuIz+LQDZPhxANdGyD/g4MdGeB/ookcSmbUUSHoDXoL2LtBv4jdBA3gf6tIS+D/iUAdBGD/iZ0DIFY/g7d8XAkIKOKAV+NSxQzXokTyRQQcuOTqMD9Zg0CFl9gZjkYYETRKCDnP+gfcWfDA4oXhuDLdgoCjQHMLnAYlDFgXl1YwrA5AbKVGKdAxR4eQRWNS0Q6E6JMp7jyn9gI8MkAcL8MUMsAIQsNCwASsoEAlj9a8ADk+MtCJQx6e+BPCNvxS7wggSr2kTC+C8HwQHgLVpKrzASBDRU3VxD30RKNuaKckbIIjwkcf5SjdTJuJBJxULjtXgIQdShDxBQAD90FCCQHEOhqSyZ8gJoLh78g6zooQTEweEzgVFerrRA2K4FuuxCaJqEUBVEdABzZQJnrdRYU2IoSIGcSch86nxIHEQcgeRKaJsFEwsABWhylQOEGAlAKyRIVwBGDXbBEA/GDBfNfgeOGAe89EAEQSQAfSUA44QkB' $Zint_dll &= 'PRBfUe90Vn4HMxASgNELYEkRQraB2jgxQxwUuECB7YAaD0gWD/wRD6+AkO0R3AvhkgVH2AaLgo0UklYssINvrhJ8pMoSAYWBPuixfwEhLwoE2VlkBAd4INbos9g1fAcx8791bJoTAIF1Cj4R+MRLs7MOAW9dLkt8VgkCVTEE2AnrcQSZEmXxAFUB6B+2FhkCAb04kBMwIHyUqDTQEjEIbEscGFkFO064tRB8pPEBVj3gPjV1YgihPVLjwNboGHgCTbziZ5/wBg2hVOctkioUdGk6Wi4Sa2IUa1rYUVZDXkGiXAJVRehtXOFFkB5c0xDlV95TygJgVXccQwGuqzGCH+AjGDPSiFABgHkNXAEBiBwwQKiQwPdMgsEhvgSKSQcYXogIeCA0AvgIdWI+A+UgXhzBsdj8fg3hC6ytEkpPgAgB5FR3D3mqCIN4pRQLilwoBBCIHAgxAAR8818zXV6GUZAAwVB3RVBRD8/QUcA37+MEaRhUYkBlxFJCQQaKSQtNcQ11dz058hIOTxEEdUCVj3xg/Q4kgew/WhBTi7/2E4uDgLN2EIv4g+cBA/jMPhuwzTTRB/8oAnEEFcQ9C2iODfTGRD7/AIoCQxxQ6MwS9i2w1PhgP4SA3osDNy8R0A/2Mxjg6Kx88mA/hIDeic13D/YzjHzyYD+EgN4nyncmfICOzsYnJ7F81cV3B/YT2OhMfKJ4YD+EgN7Ddyp8QB6DzsIn+/VDCOgdfBNhtri4owcxAG0WLAOQWEU9SAwzI51ghmSWOH0+Ypb01j701jhEDAEFYBhzfREhsykyIkDUe4M+YVxIRQEKxiGFVRhQYFxohQEQAcaFy3UTCGaJlUhY2FKphQHzq4gARZRmi0XwZokwRZbentIA0OdpXBRQOWB2XIQZEAuAUqXJAJzii5FTxc5Ax7TY4Lof40YzUTDcBkIwbjQYIqr/BwJoYOUC60ZAi9tHI416IIl9CAfrXY1DOAtEI7Dgux/OFQCrTiB1' $Zint_dll &= 'QR1g+vd61TuBlkfXAXBOA3PbMXbkANNYuoQ+sSo6aAgu+tDYMYKm1x6JAJl/RxOLg4kUpvhyXPTuDvFrVwao7iSxPQ4TTmP+Ba4BoNwnIFX0kkzhp0S3o1R4shjz8FrE/xUVEWzPFSI4ixMnMSh3FzgAiUJG7cAuVBigWIQOgEgQs66nWEWtsi7H/AUjzAHKPJCBGGBMEPO/jkQBAgDrQopF3PyhU6BYRb4u0wyvwM0/UMzNIODMYaBYha2GaOYGKSJBjqbAOLYYsYhQBa9o4HspiEX4ATvRi/l+WzpCfgCAMJj/0zcQtA6oAQYBfwYkwDzAhzqIUIQQGCwaOQMRYHczIKM7mkZR2xJAigQ3ZJADsJ4FEgjwwAyhGgIfsji+FaEXEIcWbED/wHhnBRjFAjUrgjcSEEX8D4xbUNF3KbsG7FfeFIDxIQHYbTojARjYc/svLC0AYc8AXfwMoMwAMh0FYAFKEaHvEgEMQBIoQgIC3u4g8DbNPfyhwALsD8A9vLHOLgFA7GHDjj7sPwAb/QyTDAJBShPpvzEONFO4WRECh16xYAB3TmwwuB9QF7zIDfF1DANxTBAZaakXABhDM9KJGIvrgIjAoUgxk0iRGrAIY5QIs2i8rxsx+E9RE8gPhQaeA6lGIjiLw5KpZYkAT4oVIItVhBrOckwAySnPJwBBgX4L0ARA54KGneYR5kEEihhxTKBYyKcUDmjQdYAEcQzbD0KOMt2xOLwSrG4AD3iCu1kQynRgawc6DzDzvxs/TAdxuA+ioBAGeKAQlEkGACCLy+iDrwEAAAvwi8ML+oPruKEf2U684ssFXoZxZYUOM+gqcgAdMWoAA8uBWJRIoIie30oGi+SwtKjPDc3vnhDjrhDE5QMOETEIXOCVA+swQQPGlYBUKE13YhgX4IupFW6tkD2w2AWQSAH0GTAgZISUWAWwU2fOHW5a8QB3UfN2DvRrBans5wBr5xCLiL4poeu9EYMh+f86IJCP4Pei' $Zint_dll &= 'rzSUErdDSSYwGzlvwCmkdSQIXwIc4jV8XQm3KI+yiOiLK8n04eEHM01PLllCRo9mpfg51wgGjA/jgRCFyXQng/lGAw0QWn4dDUBCTYJD3ADgsprDi5C9INJ0QCnQUPLwqhyYf+moHX4a5ZAM1IccQlF0LggYKqGhPSR0ArkEDwAQfvIhQlxjRAQ2rAFOpTIjIp27+WLESwKWBpAYQUnCVXxBSwKOCY+6TcBJwg0CVqKCCDq4kY4IOmNhWCrYbGA1tYALIbwuk0MCQIPlAf5UQDOBPkChjiY9lm0CdvPiCBu+XGYaYCtXzHERw/dSt6GhCpUQzryBYZkVORF2V4BEmCwQJTUzBgGFLmH9sgYiOh48wj4x7Z0ZtyIhhRDtdEcdE0lRaDycuQD/19IVIbQpc58gfiCjZmMAGAKwOCH1SBIDKIBsYDQ4TLADz7dxjoaDLeKCwZkd8mkCNEdxn2ljUwi80PczDV4hbwBOf0ONNOsr+yEkNKB4LB3qU8MjNFC1sb7jQfHFBQ9In7KsULB4dQLBscigUIiGdOB8GyjGfDAAdJ8dEBEFZYWGX1SW2AcR6F9sUrIfBeTrPCvcgCBc1uEjXlxQG/II2Ymx+Bl/sZhe2O543QHxQBhBA2YBsFgu0yhA5PKfed+v4Ab7GAF/CoYk8scxMrjvAeCHMdiv1fdQxIiIHn/sDRCswFcCCBcci9UPr9OBZPppIaQa0PevdwGxSFD88DrcgxcPjt4fghD1VqzlUX9DoAWCdQB/QRX0smPch1OkzgsO/Vp+9EkgtTjI4puH1wEgnvYEFVDI8bfcGSjw57uT/kD4SA9R1RGFRsUPD4YwxQEvxmwQLiYCRvRhBwIs3A2QVQUZ2frch/qzuiIBkyoeAArYjUQzuQL7klbQ7zWQCeIg4y0oMW4IkxyAoRg90PcwhIpaDUT9ewMNBHDQQEuaAw3U9Xt4IP3zAxHHt/cl0Q4jO9gDdB9TUGj4gQ/rujX+pqlkShnR' $Zint_dll &= 'C+5fEhFxBWVy0QpBAbGojKtZEI28tHyGfQsD8vOrZgSwKAzBMtgD8CCFRguiqpBWW4CJBSJ+lmay3guxqNxIRJvd0shLGAAiPH9XqoITeRz5G0jtD1whawMhdz++MsAILgCxTQ4isj6jxyXrLL5XbyAlhdPrIusevj4YcTEqPAKxDuGrnwsA6wm+/y9YEKe1IOELcnKxHA8hYhnJD3EQ4qfAEDvIIPvBEISMWDoCoeMxcPxrqxmidaDXC/0NVAAkNH5IjRQwjTCMhL4CwQswjTRVoZc8FjM/U1YGg+4C53wUQDTQsBjEPxjMv7AiPHAMA/9Wu+AtCvPKYBAQIEcSyEZQ99ljA00fxyvCGGFrH1oElBRgVw7Wt30UfvbyoPEhSe/2IDPhEHkJAY20jKDRSNk/I3VcP+JgbwAJuIkQK03BZ9cQiQIRAH/mIORpRUda+AGFxl1q4OBmmzogWfaWLEAiXgA1EIsPD/pF7ISpogzKAjHuyUwGzFM1FYOGmwKhwgwQjU2LPvYA4IUE83lRGRCNBEAD0A8zwDvoYHDeDyIHA/Y24cfYUyOjH6UDFTAOWdAB1AjAItXI1goQXV5s3wvCM4GyuKwrBkg+YgBeAJAHZewRQ0p0IEpAdcuzFCyNVCv/A4GZEESJbJxIvUavAZu6gHHoS+JYHSSNFCn1fJg8wSdjthEkqsHwzwcnM+18QsR5XIziLQMUQJ4aMLAgMuZjV2JgzS2L8MBrWyGHJxMAfEqNQwHqiQHssH8NAuMEDZTcMkBQPJNsJeXtHgwsAAcQahBR6OYF8RoosOMMEgGQSGBMSAMaZjDOEQAPdcVCdRDkMWihg0P3dV8B057AF1YAUItUjEwzwANI1QN4FgRVORBQ6JmJMQDGhATb8BEwQKkBhSABFaUmsfhjs0cHhBoLsAi/nlAJFGMU3Hjg+yV+M4C8BEiiaz4GfD0LHgCzSARzPW0YjbB1cf0L0dxSshsA1Lj0LZQiYQERFDhB' $Zint_dll &= 'NLJjix06gIHy2KHxwDii8xF2BaMeFuhABGQQEYX2iZ9JKYmQmrY2QRdiFT22agAkqA8GeQp7gUDiAYgXgFaeADhA8IAICcYtAHGmygBuDFDHAHwMMMjKAIoMEMkAvhaEMYjATjOTrDQIbCRAY4nOMaHRTQ+ESftJIN58EVmK8MA4LgrR82lo/hj0Xsih1I1/+RFK3WHNAYqFmkrd0VhLEUNeE7FmLbENAMjjAUBnMDSYtj/kNWG9ACG+3Ul1prPGCYPENMOdCnm4AkAQ8p/rnAT/K8Urk7cQ8DsMEE54ItFDJDBgvDOc6gAhfDgB4W0L6AEWjiWRePAwUyHSM+jGEI/lg2QgmjZhUAGD6RI9MJABkLj0DoEx4HxbLbGz7FYRCHypi/qWGwCGW2wwKxp5PKCEEKkygW7B8RLrWBO59/gik9pkrn5RSEsYBYDR0VA41WM0hTDkZ2oQSI1DDOro4DECAIv486WNSgPHKQSLnwAVQYkwBIsWKVJUm00RaAyaABD0e2dCGQlMsVhWU0AomfcA/kGJVIv8i5Wd4RA7lWRxuyjTA6AZB3GTrmhpEL7gSJJJF0kVFzECJWQePlJo4B4WoB5u76gDWnbixYqYEnCHGEWWcXjeGZEKrGQJM/+JHguBBaVJADoz3BCZBFiNcaCig8GFBVSLTgRSG4sWU+LQMO1aUfUvW6QvF6rCowG1owkUfesERSPYAbhEwBrWgG4J6tdB9rl6lf4bYD0tliKi6QjYgDA/s5rrxRFmBoCnQhPmFsBGjQXqpACltBCv5TWD408BsxUQ6KltGk6CMJYBsokKgQCQSMjAHTu0JEDc1NDH0kjEAAKwyMQAEmSUiGCgyOAShf6+HIKsOZjIQ7fsAADQIbQT39iGQMHXOhMM4UEHIMIgUAYXDfGkFUE354NAyIUF8q430NShiwLmT+CX1Ry0CPCIWv3/H4WGK004ro/R0ndBt3HEMkEHcYAGCwbrE2ioixjBgAaKEQVD' $Zint_dll &= 'aDE9UEZDhRrYfLXxQk4EwJ6IATPbiyqnUChtYBj33jKgsglQoKsGCfaMQhV2IgCEzhTAdRb2RxgkEHSGLWCZqdcwEELkgCJ1CdDyQKgnHYH5RhefaBNAoYwRASYUk4hwsNgASQOJTwQQixWUIHGFEIopyBFHDIoNnF1ZiGJPk8FAURbDgfnVHX9YErkAn78CMLtjNetegQH5k18MAH9A+Us+lp54IMwA5q5wK0oRvHAkXLyw7wDRSCXwL9AAFFe+bJFZ3XJkHwgwwAQo6xno0FkGFRjMFgI673wfEIkMhmly6NovYRZFNQV6V8cQi4dYwEEF9TQySHQYSHVCRxOGECQQUlPXxBCakY9uIBTrC8QVHIsXoooAygYcZAHv/v+/noaRSESmFtqNgrG4yReRqTEjA9q/iBE7WzB8jjkR7tiQW6GXFRHG2tI44tsiPAA5dwo8MHIGuEGGGQDDPH9zFIavIqCICHN0AGGYIYQPyXUFuG4y8X8U4SMmj+ZAYhc2F/FjC7HIaFglsQjDYqhrAQEBdAmLvDCGVERgQAH/jVr/IjvDRMBoyEU0yWyBkjBQC/Hwq1CSdlA0mKAf8OB4QxMRmF8MEVBHMdiP8NAo6BEpiY5lEOneqBGYHxHh8lA4XwvS7wEM7xYQfBRI+O4AUlcS+M8vB4MA/Qd9cOtjgf+QyFFnhgt1YYm8kJUh61hUFLLzXKfkYAsOfUdk5ZMPZLNIFTHrJDVAJ+UwVRAGBX0a6w2U5AcCCA59C8eE7EIUER5AAYsSO8IPjOqeDXFeOeBWAxqUsfggeBEnZiBbFyBmnL1zrbNR/7KZ0Tq5D9oKItR/4LMjXPcg2h4kUyTRsg6CQwu/KQIPdWFIYi8SdWFEYZoQT0CHhxB8gGVBsgThrVP/WDDcjCAgCAEbqhD/tvcJRRCNr4+FEYHHYBTQrWJmAepgEbCIs9MHUNf0b3tOKBAQR4mopBiwiBL5b3tvhctgKA7otpp+BhUrZAAw' $Zint_dll &= 'RKBpULwkcPURGrQkbF4GYmlQxM4GMlOQvOPut+MpACzEgGstACgYYH4BcDGgPwMkXR+gSHFjtFMP8eCrWbrx4CsJC4kBiZiFEolQ/HwZ3IXtXm2iX1YPjge8EOBfchBGMxAMsThReP0gVOjDHY11/zlZDHQAFYtzBCPydA4Bi9aD+gd1NA4EgrJ+o7gfFNcoEA/HAKRfOBBB6QDpwiBgL3yAQGd9DPA8DMEkQwIiBPoMdQW6cy0gd/8Eg/4HD4eatfFPQlELuK6rBvKaJEBnBwgB6wiL8k50HASD7gN0VXIiUEcncwzw5hORAXEMsFkMsU7mRZQksc6EHCdOAXQ2g+4GdUOYJHQDFSxOdBdRAHVsLjFxzIRBlPER6wbWRCc6AZMpGEFL+SBG8kBAJeR0E9X3bTDdBQz2wQEBdAnHRIwUyEKt2BktNSAYARH98LcA64cANDQg1ggMxwSX4hUt8gQw9hRx0hj3bTqBARDtvqjEv6gxCCRsyw1JjQyJjQwAS4sYiQyfiygDRU6JKHXiOp4UASAw/KUuALHGAO60DODJQQw1ywCB7MUm4/LyMXOVG+NIX0SRBtir+hByDyHgSgB4cUwQiOkoEIs62QGepHE0kxySqKM3IAwPjhua9VOyElx3NYgvYxIUo/YgOBQs5ydAGjzykAcR0IjGF1CTMB178TEiETKBAQPKAI18Af+KDDdRGejT9rPdEHLOQMORlADDtw4KzRCNXCRMITP25xQRhe1+T290EFIcASNIBgLTx5A9MDNkDA0ARusrPgvilxGB1he3GIxIRcNhriAqmUb+KKDcBXQU3hDLabUQiQsLLxP2IMACi+4CdZOLx41IRrThEdBIxMgUtCij5AOQRiOxiBPkkMgzuxigMZSUqFF3rsUqpC7LQehHIgPPmiKC8RDDuB5tkFPwFUgcSpEwjIvd0t9gb9nfoZsCQE4DGkQSTsT7cg6z6m4zJJckMTkH8JQQ42BBJHyNUiFARcKj' $Zint_dll &= 'OQTaFUKPBqk8QDNmEMJhPiTJ/uUTEgg9br0AfiPmPgl8l2buY8o2VBMxfLQNo2wTsPSrgySUsDH9AAoruS4bFBDiFQEWdd8CkUIgBaUWcLVrmgq+54AgcjEx1yGSpssHrg0SKMAAjQQKg/h+PbF5eD3xBWvdIFZD4mcOfjrIdKvJJFTIILoEg6JL5DcRkSGY7HU8KLxUESHtiy2CIhhB9yOFhkMO//znzhTuFmAmM4NTF78FGWYyQZLBTodWMrQXXlQtYhRZIDPt4BoIYHIAIhPUyCAwmH9HIXIDfTE6TIKQJFEeERmv0JO4WgMxiwHS+SJwNAUYApVTClL3cidBMaA8OJNf0i/WB4KN1i+v4fM6VwM1cFI1sKg18BsRMwkTiRO9EhQDwhZx8KdwVhmyl/5SG+HVAzgQIZG+3ASh+QjeOOBtEunu92EZBzjgYRDpaMMtFKKHAOGjROnpsZuAIlA3l0cRBoLACiaG0ZJ+SSYNOBAWkX4aM5ExiD+BAyqGkZ6HI2gYONCcke5+H4P4HfU4kCdx5g3SCRHSCcLQCbA9NkRh7RyF4ubSCmTAC+I/QZO+Uh022AKR3vUxiB/ngAOT3SDr5BKD+BI48BvSka4DFOkw5+Egp/kXcomAA6aijZG+qg6C74IDwygQ6b3vHTA6OPBSAOGqIGERRmEhfxZhATOxEeLLcS07EjGpyhFfICT0/TPD4CBrOBAlEQd3VCDrd5QZEQe9Mgmy9j0rcdC7q5ogX/uoFkN/RI55YMMCYkPCcDSIj8QCNiixvpMxiK/FAvqMsf6SFCHElhQSspi+/sIRQUGGWwVxlnMBCaOlBDvRAnwKD76oTCiAxJG33nQYFOE8EK440EbYQnTQ6ZJYurMgHdH2mWpBkjjoXxMPr1hitghA0cZQdACxIgyoSUQYi/AzwCv33bCxnWqxchNksdQUYhMARjpVc4MGGZngSAWTHRAJOaa9QOmzAmhsYMMkRyUsUQ1WUmgwRJLd' $Zint_dll &= 'cw0FDEyDxCgaOjDICAGxOOeshQS5HgYfMr/qIQwVLp6lAB9+1tihGTAKOcBJ8zylA3hwew/lARfyttHI+EYpERdXgBE4/j0AGkZigQPgG0AX11ARwiEBsgiwGKEzIDxhadUYcWFpAsYHKJw2KHAyM7RqXyBtNOoGtO7CLPoWoE9AyJgR4YREiZRGjLyRlAfqkSBuRRF87nkELOBDJIVm/mDh5AwtA1werxlAi0Z1IHYUdSAr+TCJOLIRMGRpYfVfKI3DZ+I0EqUCoCHUSAhFWykxsCkVAbEYM0iTTnDAahZa8+SJI2gM//EUckclSWD6RyFJoISpf1S670vw4NvIYeSPEYX6h00HD76V2Bgg/SOeL8ALBz5woHMkERhiSDFjL+zmMDkBO8aL6p5pwI6t9RI9UIsJKWIysWP8gOe4LJvBApVY47cRGFFoRODAiNBIocIcAIux9gOy4igFwh/QSFdpfino+QN7FxDj3SFV86gWagBQAGoKweYFUQP1Eugu8Pa9wMiruBNQMQPOqLDITDEjDVVf8DtfaabAGIYKYroAXkVQAyE+CBv5Ag+7RiBuZlD3C22hGw9shAcZIKUwxqUAnQBR6DfL73YOoa8CvF8aEpUwmHJbCUuKCZVQEJWAwuIgAyAu+QSV8AtllWB6DlEJf+DjWAlfQFAHgw5ycIH+BwP8hTDQZvkWMbFxFDEh2O75lQAKSDHUGCGZBMARYySOAQZ0JDR0F0FF5mLAy3bxkQQ4pRFC458EtFJXoqyVJJdeJc6ynlOQoZ5k0u7L0lY1AAJKwSzyFAkujiUApBJ0VOeR638EAMOaFSTzCjGABe6pMiBtQpKDByRSBUICHCTC4ZkCdVPSFt4tH/rUsTjjCaKvREueMFjwoMKYN6YLQbdNA0JjjAGDwL5KYaqEAEBT6Bzz+ZkTpkpm1SCmSgYY+/KAg26qRIDyOwSKo8QdVle5+H+tEmoe8leRMyQX4TEgZquDBv1Bqn4rxyMQ' $Zint_dll &= 'OtlG86RmOPYDgcQ1EJcNIVUQKofwCAfoWOwJEU7aFQFiZSxy+C4T4dftDUCh7HSwONIATwEz/1OWaOAEMnmJvt+AASJf4PMRfmeWGIAXkQuQGiFKCt5ZYIygOELwsGgOYdDIMUoaoW0NBSvDg+gwTtiAqbMWKk74JMBJIvwTpxABAYhK+4vI0ekkIsQPHgLB6AM0QELIA/2IQv7mHtHZCEbh9hIvJxDSfiKKRAA8EI1MPBCEwEB0ajigiImWdAAhAcMRYCUICXx3YCHeAmaLPSgSCN4K0MGF3h+R7BcN5l6gpweD6AAAdAhIdQtmiQAe6wNmiT6DxkECPoWAwCceyp0rEgROEdaJAqDkIACRqESgnl3xg8YJD4hCCFayHpAqIYYAFRO68u/A1kbQL2DlJYa+rFE1EQVlrK8CFUyZKru+EN5NdL0mLH8uICUQimXx6QKBFJyqYbIqM9uD/0FGCuFu9AYPUDC1Jpi1BiZrnQExnBx5MIoRcVXlYg1y6pVWbyPspIAhaOzxYQRKPiJQADCYv8DXMJgP0fCHMJgu+TbuemOw25MyLHkimGG2WEEWAcAFYGZKRyEIAhZ3f/8kCI30+gLq02EBdZVRZYX+6gRR77Bu5g4CHhZRU0hhFCdiQLDJImGBJ4UkbmaBFE7UYQGlJnUAJck9Aesr3KI2cbCeQStqCWjy+1XRth4JQ0QM+/kwTQFgTQEAi8hmiRGKFWLjKGD4DwkAFCvB3iLhmgm9nwISz0kz/kwTLuR5CD/hAVVRDEDGAHcMkMgAWJIMQMoAOjlhNQN8vVUAYuQCKQJnMeVOA1kK1ywRBMGLHNWY0jThhY+wSFHNSRJW/Hwx31tDRyBiDsEQVVBx0XcVcTmlEhLtpJ0l2+sgID6gAn4hBrGWUBEIwYACtHNcsUjRHAhi1bnQHAgC5xQI4EkNVwgRithXDxK+01WwsEjQEWMUjgkdIdaz4sTfKJgPgV4Pt3oAY7YeEyhAgcjpheMG' $Zint_dll &= 'Pjhu4KMdIL8C0B6v0IiGJ/IKW2UgLe6iosjwUhCFDm7eb0gGttJPkUIApacHdN0MA9nzBhAAD5TBT4vxedl3XS6KoNlNnxBi6tSADE+ZEKq+1UKkZDRc+RJcRz4QFBQz21d3uBkcxTFWV0joN44RjU4qNEESJcVrCAMsP0AnsQq+EsEDLY0wTgKeVOCUBsuIXDQQEn4igQXFCIpUKAQQhYVdhWVV/Hxy3jZWYSMXHIBllVgvUMzqWDVEZRtYFgXQ+9AY+SzATBbiH7BYvBEPBD3+jzivE9EtkS0VOBiaCtBn0RfAsF0T0d5nJVcJfUZNfQb1FVLlAsjGA1ETwBPkJg4odSQ9oSCJBLqLIP0NINFkEwVyGCAQA+C2CKEcKLCOQPHgi9wEBrBIANwEYroRVleJRQSNQZkJIsUIU8YDRXdILJ0/TYrebQCYH8RQF/NLHOgxBQp4v4gXvXwI9TYWliyoFi2IjDC8LTgwLSiTu4QA2INZ+I8pZCR8KK7Z0hihSPFQIIWeSN7/myGFrYIDI34FlPKU512D4SAQujWYnLBQg9eDgaSvHVSj2kdDtu8YQTEFZaATuVIUTCR42/0Qc/uiIBg8AUF1EI13AcYKCAAUo5EDEDBG6weI4TDABCtAEFZS6PqXGxAcbCR4wpwBCLJsUGh/SxoAmQgZJkyZGB32BJkYZmiiNWH4FVdTMd2diEi2CRRcnRimxQFpWlyd+AxIx78zET4/QkgCofVzdv/CE4MCA8AAFSVV9V848l8AMepkCAWOX4DQ55dQ8LIWBXykFuFyHPiL0XRFgAB8PBRMdReLxiiLzqsFMLMnU2DjCBgni86jBjCEKabx8esGYrwAwuvEM6IMgIgg9/tiAVI1hj6eGFE84JRYKzkRp1Awo1UnXrpfILA47E8QgjyC3Xf8BwwzM9AAocIeJWhnAGZOQOiW6/3/INmeK28gmpkJQOhyhjwy4wbRCLAeofMHwBNAiYZ8kWhIFba3QWmI' $Zint_dll &= 'i3PZVIJNKFHYZb6IUmeA7aTpKzg1ACbYFcK6kW3ZBKN2TyIY3djZIruijQsMUcfGESAA8INdAisWv7AQWgoRvqZJ0Y2NDq+HAPaVMQUAyaCVENJ0sAUBQgCRbUXQJhGEXUECwnSQGBJQ94DdEURnjm8p6wLd2KoMYW0DKfoooGHvkMhtDfINMkwLCccmCAYwUcIAwmGlMdhvsrwTN8AYgQE/ZFhrKoxPkPX9GOJfBXQmgwD9CXQhg/0LdF8cE/SQKOAQBFEUQR12X1FSFeUJAQrinhDloZqTfPieEBwI4KgASqMgzgLGBgJMRjvqfjbiKjFTlOwZD8YFim49kO61BxSJHEq6AcCJIYkfgE0RikAEA9lCiGZHWk2BA3zKMWIdL1+CIS+Lxo2UkuiiAKikBlIEiFAEZqFH9AkBZolGBx8Qc9QQo7gg7r37FFv/Er37XASvuTC9+x+99g74gL32DQt0H4P9DXRZGqmWwKmmoWYh4KH2A2+QtBBqLwIVaoMRofYe6GIcat8AQIPsdHIcc9kI4j9icCUUBTR+KAEH4k1h2ThDxXY2AF9AJ8QR4GFlK8QRITtBMf0CJ4YegB++ZyTk8DcAf0A3PKwX8jcA50sJumsDIBRrA6D3IBdRCO1rA/ALHACKTDQUUehu3dm2CuKsCAcqNdEjwGe+YiNIEL8ivxNvogL2VjXohKSj/QAa8gqwkaYBel9DAbElABKwuN9IIQDYSFBFuBRCAI2wqJL48imW8UZgBrIoZRkMVwiKQAjl77MZ6jdwPAKCMGBpHxAyigEAURfcSGC7OK0QDd6ISC+wFJEYILMYR5AoR9BJgNg1YbaYlAGghKCIA8kIBzfREhoNQDMoDmrUETQWW7ACPTAt9avRDz9FBEZxUTCSRjC7APQyAHIfMv0hDNNF4wOxDJrZYakEYpmCxZBkw59kLyApIg++AQCDwL+D+CQPh8WygCHiG8AHAyK+gYoBCGoJaPDosC6iVrGARg4S' $Zint_dll &= 'GSCADRIEEGoNaMggcaCGcYAGDAICnGGFzofmbWVAsycgL5ousCeH7xGEXq4VAdIGsHEAYyYPQSLo00Rjha7vOyAUMYv4QQEPHoFW6OFg5K5kECUi32wggCVy1xpQziHxr2AwAIEQHBDBABqqDDDCAIcMAOCzCwR/BQCPwCd+uvmKCGLMAcoL6zU3Q9n2CcINHIVtxTAWCjDHkCEgwEA04D8eJWDKHbYiDPOOAyIM/Ou7EDYMsyFrwxAoxgpgwwAQiQ0gUSXYJUCxbqHBkKkVEE8NhgyEvpkIIcUgNTEPIzGYig1mkn3WfOJ2DRBRiXe+gBLKAB5i4JIRZNOQQosUEpVoyFEhhLMdDEFjKtzhrx9GJnoCDy2JTr4NwiXlLVoQ+CCeLdqooOAwII7fwocrfIRxauUwHBIOidJW/iBIMHvNIBNfi8MKGhLI7rQcVQUltCQCL+QvcwMLASFsI98eOsE/iPzgZfAAkgeAH2avkUwfAiDAnZ3IwEiiyBwBUVZXaiRozJIfsIFuqZ2KIZYYKA4LUAWSLyI5VREGN5kEN9YZwWGVAnQDFfU7KdLegNLepSYn0RDycgtSHGETCapF4MdmvBWKA1wUHID7MTuSMbYLqDwSqvHJB3WxuDMZjCKJEQNsxQOYEDuT8QkYBhmwMxlFuVhWtDMZdIAJ8hWeYtB5gAnX9sQjB5hwPzxxgAnpAhQGHCRV6OXr1iDrWBEUjTuTMVXHhReYMLL9UHiBCdbnizmPpCDODaM9KQ4O0tU+t/xrDazrIhBX0gbw//wCIXoJhO9YEhBViwrCO0KwCMHSyGy1EG78D74QLE2EKPDgy9AEVMgBA8UD+Ut1GtddmT5lYmwAx6+zIItIyk5QkKQkKgx1BbmYOReD+iTwanzSSJAk8NXIILRIkQRjMT0ArSO7AATGIxPI/hkQE4wRaMUaM+1Xg/4Spplyr+kCAzAgf30Q0Tjo0fgDahERAUH+xBqRAOGFBmbX1QhMJAlw' $Zint_dll &= 'UVZTyVgj2MlY7mc5EE0gySi0yfgAQWDyJpCR/QQMMeQTQSDzHhlSV/zmUpDoBBH2K/jys7HTH49A3AQhawQYfm0TSCBcDK3FmNbFCPrFGPehECrFKPDjoRBuSKCEJMehII0EKYprjGYikoyfMZmMy+5zAMmYbdw8kozHzBPJmLtAcZuMIfcFDpKM/7CEOckooTh+X+V46XO/goAhL/t/ECAw6PBP5nfSZDBSFaFfMVBCbk3GX16BxMwxTF508Bk3YVkIl9U5JhRRAldWagRoxDkWVF3WOVYnOQY5IJOjIBQ5AM45xjlAM/aaHFEEYagDa3BTD1kVznXynxVBR1D4/5/1vM8Il/V/YBQIjUX4kViYV0D48h8EUfe5tX0JM4gvJMMDDHxWPTpg8Sf15O4LDBvKNNlFYzyhB0HHs3kSAEHYTQTeJYKkYUIB2ZX6B9JGwO3WYPkbWDGAFaEmhgewPkbRWi8QYYKuiR9c0vcf4DMD3Dbl75TaHmE4A8EFGK6/hiBaimLAYG8g0qkR0sNaH11tb1Dw0dFBwQFXRy4QLGzU0hmVIp0BBRC+fPWJZdIZzF8OQZKiTx0YNp8AxSnLERQYkmihmAQksNSdMRguMBgs0DIQf8g5cd0FNMsEIv+tCNG71lVBlnygSkRZUD4dRHaID0LG+yMbIlgH/xQBHn4mzt0FC2dJYG+WAE8w5hMhPgB8gEEJBtP9/1dWaJwScoGuyAJGQrOGJoHni0eCD3mSWRkWpkU2rItGBgBGG4Bi0RcUs2P5Hmdi0heOvSHNA2O2IAQyOpkAq5UJdovYEjo3wEARtC5wwqN0l2CMAmECLBHrEzxUMCMGwLKxboDIxUCBwlKCCRVRA0I71yN9B5p4wJe748YIp0sWc4q1ACKwsAlfYhbqERVFBkAuG5EZLDP/ilw8ChRTaPRJHHEhAo1hjIUOvQTWU2gIwQQCZosBZokC0QSICEoC6FGhIhAD6KceqDDQPcA3rO4B8nGh' $Zint_dll &= '7hEA2SvaO9l1CDMA24rDBDDrHoMI+wl/BigyMbgvpjDdgNFL0rK+AAVWdIg08xMNgQFS+TDy0somGpBV00hYEeNsGQBmoJaKYKw2BRGKQAKICEECioeqgoEaQIeA8eDLCCtRU2h8DMkEIl6m0gSSVHFUBGGWGGdhOhUOwmDRC3QkeOpCYLClyMXCIkcAWgQRc1P3cYAGs/QEoxPsIZYbfl4mhzfujeFXML/ONQiRuR6AIvsz+GOAEJnsMQgALFC0485XikQ7Ygt4OOsA8oMLw2OVEEBoBWZm5kCJL7cgiR+3IDDoQG4TINkRt22bQCPoMzBzha6+rhETfPW9gAv6MhsaDAp7yEB5aTtxGa6x8ocdySHQIK9KoHNJsb78dWAJsfQTwYAwI32lMw82tOKFAbJouIIYMTiOsCPMqJwEiVWYVvmgBwSJXWSUS9xgVoVCSyfQYo2lzl75Ic5OjX4LUTTC/XBqAmQAYFeiaMQChX4C9ix3IhJPoejUEoUedsFjGu8xI72j/f8tE6x8P10BjVogaLCZAFBq4kFAhwSJRZCKQEa2/uDt3P+v6ATQsYgfFXxOgA4ETRNWHgP4UokIfcDowjSwiK9IYfQBxRa0pAIyEIAfldhHjG5KKgohi/hSbIFJAwOApHACldgHi64IyR1N8OgQIYXeBw8Drv1AF37+0AePzobaAZJSDORFA9tFwACKVioD+Il9rAhS3A1AOiCQ3YUNsV1EzFLI20WwhCzFvV0Ez1LQ2yJFrCzFi05RG7QyngXgGwxFIYPEOMkAyAjAnF2Ejd2FnB1QxP0Njt2FLeUBDN/gdXUGIQMDdWUG2GXc63i9AzMbIY17Ro+HEjcJIetbEEsKEbdOpfFXEF+wuBZFJIVGGEpgJcjfXYYF2GXY6xPRcAXREAAD2GXI2V3o2Q1F6NgdYKGiMEByI4RShg5S2CyAHZ+t0gUOVMhAhAtU3IBARNuNvV5xXITvNRiK/VDAgQGKFAGQXRQA' $Zint_dll &= 'jd3Fm13EHDEBBR0xU9ETyryOgY1SBh0ZzBwZwZvdpUCeXUQeGT9ADlLQ1SyQEIEKVLxARApUX8xAxBkZ85oMURew4geBAbyreRAAEjDTr7D7FaVNDX49QL+LIhAr/ooCPCgJchA8KX4GwFUnpg9B/AYAsF4x2IepoQoaPIByBg8wPkEBAAZAREIK+9BIcKGcCsqLDE38jUHyL7CtAFHOBqr2DZZ9HYlloItKRBSW7pEdxGBvkgnHdEVXcBHHcSHHQyGLO8MUddkUizVwloOBVmkw9R9krQcAC2oCaEw0w4KGwkEYHKPND4PEESSLh6EQ2UAEduGierdQJZkQ8UgWUDrikA0VAKd1cACFxj/HWgODzjGLj0sRE/shaLziRPOwB7IeO7GARkV0l5BREItCJvCxgIYvJ8lVaNwog8bGQVC3HETEMS8AICDezOFwE6q8gAFYh1J5MIEBk13ESwpS0CCDhlIGBbKu9tJ0gFecIEUKUqiuwEQAXChFM1hQLgEg1u3DAXUzaOhxSTHkyRzTBhD4Y2EXdGk9UVXcVVDIIIXdEz+AjldWtCCFC1LgPeGRMA9phZr0UH2A8KcAtIgYQoKSh2DsH8lAMPgHwfH/UBjBkYZgSwBniwxVCPZCXfFJ3zZE2UfYI4kQ4HSQFUNDQQTYImcEITTYZwglJEei1SDIJdQwi397jBCFzZdAEkVaRfgFArVSirWCjUYKkXMEMWsVFCsCs1gIAoQ/Iq0jtRiFASVFgu6mnQCNhUABhVZFHAqFUR3YVB0XWR3IJ1QdX1GsEh6VCeF0BwiJBEX4D45EMLDetbwAChFZR9eUDFGVDHfRTaJKQ0DJ8BZ/yjcA4xMCs/3xAZ0DTgFjwh8YMFECAVAig7ktAaXH0DtxBzmRXURfg/016E8j1gdHnQH0SFBpDEJd7CyC45Eg1CxSBMMi+ItHoR1hky8h8GbnEEnQB9I4k13Fnw1QxI9dhJ9dBU+TXYQAOFKGUwfYCGXs' $Zint_dll &= '2V0cQp1dRQQ8MU5xkN3FCOzYQAcfDxDIiUXEiU0CrNldsOtQf6EQD2CJYg1QNbIYnVgF6xw10wiAXZQXQAERAMT9gSA1MCDABSAABfhlAJ1M0EUcC9EPEAXAn6JVDUI4xYqzsDhLjLNWwDgLH71EWFOlMwBov/UWnmsSIEUFDSX1VPFGfRdihJIh0WSAfcZQUpHdGFLjkF2VUKfVJUdrbSD6x/Uk9X2WAj9UkyCEkD0ZrkVq7B3+Bm0pB+0QbElcKP02ztClgh39JUnKzIdlPmA5i0fbNCDDBhNVCPZBpQJzJZ4B77BrSiIZ8B3rf6HyAhlt/8VRHf0AofIFzS/Y0bGS+xwqP1Db9wNQeNN0BdF0QZhpgGAPhAFk4AbQiwIOUOjNx6YbZLgMTSMgjHa/UASO1ALg6RDgPIggsFiEaTMqVeBSKWgscU8UHAQOxzFVvBzEykGkHITHMRSDxDwxAGQwsFikALr4xCHEArOLphBM+3iTBlmcYK8CQRI0cJR4sCt/DuwhQmU32XL8riVAGdCDxhkuD1Gg4RoPi1WgHFJo6GhjhxPpFnQeImjgsHRFgbs5L7GyIAyFRg1ZFAkA/IWRgsacBWieDgK4yIRAQFeAC4wBUGhBsGVwTaBRaKSwFa06AJYQgwlYCGiMcETzB0IDXRX5XSWUU6SggDAPArNusAQTVAT5GVPDAGUWUswguzHmMHJvAw38NwYj1AIEU1aogFcFxgIAdXMmPIG0GAABhDPuRCEyAPHLX4dYY/Dyy44RKL/ciBgR8suMERq/vIgYMfHLihEMv5yOGFHwy4gBtns73QZf8NvFBxxz4qkyG3UTDUESDVGFFg1DFQ0DFA3DEg1jhRENQxANA+92AdEA3NwYEA1PwUz6FiJR4YYFAyEVAxAKDBDBABgMUPXBACYMQMMALQxQhccAfwxgyACNDFBFyQCbDJDKAKIMANlLykSiJR8IgDkAAHRTU1aKEYvyIIHmdt4xaIwd6J+0' $Zint_dll &= 'CQJ3JtIx4EncMIDwT9JJiwHGAFwAihFA6xSKUQEQQesOFAEoDLQOUACoDzg3gAgRBAQUhNJ1tV4afFCyNQwBw4PQsMgAX5EMoMkACi8A8B/IHwLwISYBAv/NIEBT/4YSnidwhbDYx7A4xBEyNQgOF+DuAnIJIu4A6KRn/gL/iUXgjQQbrKJugX6psFgEnliGTjWqSLCFVOQ8s8RT2Lg8s8MTR6Q5K6wy4QczANKA+QKJZcwPEpTCwTusMlXcXhOCDL/DKjE9C1EAMLsqYYXehkwo0xLki33oDpZghQ7n5DoN06wQ06cRwA+NSPz6FfCEYvfVJzGuDqJ2FbK/8ajiXA3xhmL1wKhIF5b8sZkEoZj7iGLSuNCYAw+7OxEzwD9YIWMGkhVgyR/4A37LpFKmTzICfSeofI1ltHlOagOwg+srwCwbOyCr/JCgwMd7Tz3xGH4lNrlAB8osI8tizO9oRKzWaNgecSsEUUUPsFjEvdjELrUIU0XuCgAxA4t92FIEV2oo6FsqvbDomPmeD0JMkilghwHHRVZ4IQGgy2hGBHxldqzwBwA2mC5A95RE1+CTVFdFB35IoXsHn1GwfgSFhtMRkG6TGLnpkQSt8gPoIKcTuoLdBDPrDDRgeBe6HmbEcCEiNLET7PetKspsJ/ppFXAMi1UMuZ8uENvXEHL/gKJ1UAe9PrBYB00w6D9wB+XZDYQqAAMQM/Zmi7LSiIIYEGw+IGwLOes0kUQi0kRUJ+siRKIkR2QV69QjTGQDgIUAg+oCSY1x/wCF9n2di3X8gwr+KHQkniew+CMqwQ4FVYkQVYegBiA15QW1u0fxoCgMFQQJBFq60IjCZCOtA9TGGDDoH0DxQFiuESHg8gHQx5x+ZhoWAbBMDULcBDBPWgUh0oddBbhYRR0GITWCbutBDItN0IUluECBf5flGwqUnQKLVUjw8rGhSJgqET6wU4DMN7beA1XUUGbhtI4CVSR5ElCSk7I+AVV0UEayeJQa' $Zint_dll &= 'sQZvxQIpAUrZBkjuPUEDI0X47hshn/5inhkdAkd1FQKLRcQhQk0BBgWC3TiwygPh/XByJ3UMKH9aIDvGKl3QRL9YxW2fJlCRodIDJIDek8EB2AFSUVCL2OjP6sfw2j+Tc3MC0re6nrXPCRNz14QIsnjYnoL/T1ewY1DEQNe0+GI/IW4LXYP1JuIDO8p/UQ+lKK+Sx9LVcALeKsAlPRm8Q19ywitlGRsrIAMxAA++EYNjUNKZAb5YJHkGAIPoAmaLNF2CgHEAdC9IdBZIdQY9D76T24QQf0FzWQGyfgINs0iCDVTB3AxhphmTi6CWF5FYJRoFQG8kHI1BB/bIkwkxKH5w4wgxAIVGONkr8H8dHSMU5ZYLZQcADA++iJNXBxCj0kkAhidWaDgcokQhQRwoMkjM0mjkaUMT/VoB2QKL/A0QYRq7g4sx51RQoaKvAtwiBBAGcMVeUQBRU4DOAkU1G/cRGFfoXJ4fUv8AvtgUwSwFhQRR6Bg5BZwlA8REHRJlEd9uFMQPLa/+U1RQh30Q324kEIbpIBE9Ayz8N8pTjQdWh8p/0AdxhX77PJEEkCfDnhbRC+DrBvz2CmBYEPsHLnwLFliAvql4oU0RCRHIBYtdDFJQVGGh/QS5INLgMg0XYCCqyJAY+18BEhfrwBQitnABKyOd2NdegMCQWIecMdAHYR9AcBBAB7KIr3EJAf8DA/qNvA9evScwrvigsIx4AStjfHoBK8FgqQAD3hq8cwErKCECCMhIiV1ZAMh1qriiRbBoeAIXsBJFWZAHJhUDEBkMsMIAPQzQ9M4ABCdMwAAuDKDqv8RRt+QQVXkLFK49IQQ6Z1YxMGdWkdiEMbMNgb6T1ULQR7JIH1D4j+hBFzV14ScDUKPb/w+1eGAFOsRGggIDi08EUFYDSWoEUegaNGDgAhaNVwiSEwKlPTFsgEAQJYXehKuKIFDoKvS5wsSDPYcMw7G7BjEIgJ9i1UegRrAeIKA2oFaAHo14gFY7' $Zint_dll &= '4Pe0WMWRWBRA0ahHsFgEkwvQsViFUhCQejBcLIHRlvHoOA1TVugH5hBAwAXkEHIwIB0QiVUYjZvEEjEUg9fPFj4AQVGnCwwAg/hJfCKD+E0qfR3RH8uLRLKNF+d0yzKB4WN+EAt0IfhBhyghKwj5g/8Iqofw30gA99G8o0gl30cQKHUFOxNNEH370RBS6NdaEI4cgLCD36cwaBlRhbITFa0TCfjn+xAA6O81AzOLTc/HEKkB04GvJJeRMEH6kRAEM//rI3Y0APWRCjDVCmE1IHxVXNiwRkWBgr7aAFckkQ4hdBVe6TCFhoJnDm2wbEHRJ3DADsJiTIATrIsM+0QiD4ocOLp+OBEwra+gjciBI94rXeW8AOQzC8JF4EwAKAUJihb8MNynYU4EC+zAHjk8BbJugAIRM8m3uhJH5tkwO2gQyWDvERADJhFCGYq/4QOFhkCGCB9GO/Oi6AVbpQS2IPajAHHZcdBnIOcnw4UFKCA5EAfDjYQAce4G4BPC898R0LNKEBaWgeKcKkQz9jtY/ge2QBTHmkWqX5E82J+QAvXAKesNA1Niu4CBLnebhzLsHOEBNUWghnCFDkY0i/gYVeg16+cgmsqyXhbY9D9gKTL1p3MA818QavkPVDSsl8CKOYQAACwAoIZxhS5BeOfQSw8ghHORGMBShU4Nj4SuurF/AvGLJ4EzYL0IYDzT3kgTq6iB6EYmbCQsHtniDLifIFTHEDgDEAFgd2cHgfn0esFT5K0NtQ99BTgNHCp03WdqEMBAZLxKgVspEDBXUlAPvpYWYSZSDJLOkGcbFsQFjQFIv4P5DQ+HvwAQi8JpEMk6o+IomBiwWwPCRRUAECUKBK8CE/BRhY63Qw/qnaBtCythIHQPVTZo0H2WmvnA59gX4RGLAAM9QIEAAHIOEj38n6IhcNBCE+sQEz1AVlMgx9DzO7QOBQUtQMEGA7EcAQIQnI5w1UiTFBxibrDAAsICpdbgIwxHtcXAVmjIxZCg' $Zint_dll &= 'oRtHGSx1jDQwNCtBiD6dC7GZiZpePegAkzXBkjVACoRW9kCTgo7mMCwIUBRW6F6pEFyhMNuLVvipEKxxwm/0ECdBBD4wBFED8EEDAVQIvCgDQKcw6L9VV+CLrI8eTICSGySx43zVsCENNXgZKeNbDLTpRINSoQBhZYUGGgd4QwoRGwNBpCJONwAQRHWdm3sQVBwt8gAJOw8wQKEMyXRgFl0B96QWEIvVgzkLJXUBRhN3IPQFlrLd0BY4iQGSKXGXEVAHwNNEekYYKrkLAPHg6BwTesRxAAiEVXiTKQRkWxV7BxL4JXUoE0cW9uK7az4xWEwQeO4dg79Vd+BrEvphpIAJD76wkpFREkCUdIQIO/o22PLQuH0oEpioAMijE/RQKCoZoV0ALV1AGY0MtmUgwTcEELzRSJdskr5/CIFaB5JbB4hYB9FIYwscB4EsjQzxA/Hrb3GlAcEw+cEgQSEjuTBmFpD8NDBRDlKXFGBDh1IOdEYRJNcOtV4SDU/QLpMIwNEY66piEkU37yQRgAGVA/kQD7Od9AF8nZQ7vgHQ8cDIaVgT3Uk3BBDpk1ISsv2sxRoI0s+xK9sEXvWDBtZeD/DwBiI2AE4AoZwv9gcQoEgRKIWuBtuoAMBEgrQI33gUgKiWEMF9XzyAAcgHkRPgZKovOI0UH9ha+nJUKpMDTKrJRAPVOHd0VCoxLDMBHQJOGnEATcOiBQENCFHoBNAAbMKFHTkSUI1UbSbyYLWBbh8bIV2zQVWzWq/wM9C/0izx8AZSN/LJDq5CAP+wEIJ/GSBMJDwDxVKIwtHxwKhqaQgin2H8FhRONQHABjMAAfoyAAGg7DIAoSQzAGFVZygAAHfJYgLfNGGuNAFlgoapqAHoIZEBVQAMkGorkZ8i+AAEhRBYAgcQw4P5STACQggTjYyI5PUVBI3jbMIf/glfMAh8654AfYBgwV00fVAag/kKfAswg/kbcSCANRAcEARZDPWwSFHI4McBisIZQaTk' $Zint_dll &= 'qrMAiMOoJAQ7hXDhIADkMydAThixlBuxWBJw1UdxIw/xvyIuoakRhOry0Ae/bqGMLkXSUE5dDcF8sBKcWCSo/AaLXRiLwV9UEPC9GDPspgLu+SDPAedMJ/heHgP5Rhwj8iR2AceJZfSlzhwzgRNFFHfxYgM8ggCfWIbPM/NOAYmuZsDdWLnuP4HWYesdLOgfhhugJqAFSHEFFYMOgwMum0Gxg323G5IA8eA4G7LRhB/gQt0Y4XIB3BxBfbsbAr4DgNxXkFiHsW5wGxaQOJEPoa4Pz8vFEs4eJ/k6ZH1SKPAAEROyOJkPQT4Q6k8F6AInAKRIFeA/AXb0E/gQiKAtAepSKyAXIhg7UlC1MT/6EN6iUaSaB/JRAn6hCdIS0BDQhz8QPDB07D4yUGgQeS4jckYPAWtzPxslACKHYSCFhqDLhkZ2LmBKAfYkAFHCoDCDRsAmRQpo/A0blIDEL1YkfiMxAYlF6BONdAL6QKBo4EIBFUCVh58RTkhoUCdDQdcGMYCeKfB/B+L5Bxy2GILfyAMWEScQKYDwj3gxoLXvBQLwLRODyRHgrQIYkHNMJyvRLvhQRK/IYARjyQKIDAJ4UEJA4rR4W0jBPpB30Cgg3xZ8ADr/ihdPiBADD8NJdfYZUOofEENgcgEkiVXJJYxiVRl1FNACUZARMOFoEsIryooPHAGIGG+OIGQwKkoRCIAy0fjtD8E9ChVBBfFP/vAO4u0CSpNA1/NGcIPGbhszMe3dEc61gK+/HX0GVUoIjxYRFlEpM9M1JPfGa2VWOEDQWKqnALJ2NcjHXrwgnSGa23NgD+L1HyyNIFcGujjQyGDXyBAooA7GBDkhxgJi2BCyzoACIMYCINByATRg3TxwLSEYtiZgkBgNjV75UzDy6AChZgoZROhPGRKNHPXac2L1D7Di/fBqPfA9AHTtYApYjV74D68U3ovOKhbAdLQIAXwvkD0ofDDwbWYajQZPB41s9+9qEn8KEyhAQOeYUiTG' $Zint_dll &= 'ARDGRTAAEEObIlCFYSwAUTDgPDDddG4KAS3WL1VG8QHF0RArdyQSLLIyEFweAAz3+BDGQs6icO30I6YJcGm4AoUjwBInOhDiOXEA4Ke3jnAuB+JVEOkAI4PAG5oWEI0UOTB2uMDQyFEFjA1E1shCySMzyfoA0SSYCwOLQNGZEtD2BDoQdRcMUVAZA0Fa+yOAKbvmNxoQdc404EsRFLqeg0LAh9hIcW/yDU8ICI1cFv8O+9GohgCIBIAMAiCKEYAEyiBAiBFmDWE8IAWSMABSLKC+pEYEfATcikz3CMUCgMkIIIgMx1EAJMZAYAhvQhbZAgd8PY1WAfeNXvaNbvVNAYi9BA+v7o0ATDf2IAPXIQX9xgQCICDGBEUABAcgxkFBAcv7FcZB/yBA+6wUHgZ84ZYHo0BA3lbgAzJWArJ/sUGwXbkXIEKIdqiAyEQSYfMLEqoMMMEAFDxQwQUWiFOW8gMcM9LJC0wkJAIDwQ++TBQjlfIA6fMjlSLu2TQYKdkPABtRELFZTRFWwAC3cCJVVrEf5jbAGBMyuC7QDtBpQCLhVgECww0QKBEhuroxQwaBQpkROzCcEC9QkBBSwNfsuEAJYYPsHhlhzh4UHopAhqyoBOkJCFPfchRWgwfCA1crws4aIScvWkFQ0sijPSQz0r+gIBCoYMQy8QNTtYgecKIUCs2GTREkg/0Gqk2gXx7/UHTvoxAQfSMgjTwIAIpECAGo8HUckR/hETBSf3AqiEcBRhAhnBUwbAQBswi944oJfQIg9gfwdRvNFlIeUOhkmNE2QYlSHKAh4DTo/18305DSHieQPKCwAywws73uGBGw6zQXdbtVEXCSLtAIFztbKgFRI5II8cDI5AoB+eKwIRABRTO+DSG5IovI9jdAcTCtTw8I8iygyOGAIDK9NXo65luV6hEBAZFEB+GcFAdJdQpBDL5cwICxLsBwOg4xOIcNsUhTyEAlzgCNBODmxBCw4BsEz9Prik0IAIDjASLf' $Zint_dll &= 'gNgEADCAPvhvwHfe2MIgDAhsaglA6E1qLwDCh04XwgWNTwkxi954zh9I+TMu53CA3MgWgdDMANmVEBIHfOYaAKbIhQl8JBEIGqiQbqD8DwrZgCRxgPihyCWMQMgDXwrZiCSgyAQgfNBIJHywaA0QrI4AKB7gpdCg3IWIIIA+flWCI1MZAAxXD6/2i8aJJnXwAg8jbyT0AOcga+T8NDE6KTLLGWPaANLw4JIEZfTeug1gKgTJ1pXw0kTx4DAhMAMCsGKgYK9eA3ZlMHBsTwABA/9wsDTSSOCACmjuAOx1Do0UN40ABBqKFBqAygEgiBA/DBYIjQQ3AwzDgAgCR9eWoKLIUKTBCoDJBLu6FOxwXzCBgIjw0AbjvvjND3GND9GstwBvAyEDyH0QsAlRAuHG/w0JVQIMAjeZQCjQiMIgEBgJZMgQ1gPRbPZzlRIdgoAnlBLFAgxGCAPRO/DxAg+M/YJyDBA0gL+D3DbBiChwIXXwM64/QLEjnPlWKcSffv4WYawp+IlP+xZ0+BdBIKOPEsoS4OfoAAiLCH30i8thBSvIK0H4kkhQhU5IETBCKWt1YNYEQCOUIuGSgeECEQyuijxA/7kIkXHhACFBETSAzqweGGObEH3sOmuwuwVF1BCAvEPUg9xnUBFx0MQuNKjvRw+9ATuUMvxFAkoZMCQysUMpzyCnNjuUEsgz3C5eoK4GDDuU4o83ETuUMgiJLk0MO5QS/IofaP4wDQAo7p0KeqqwQilD7+ljmhSh6jO86LoPtIwPc0UpE1E6sIJN+EGBQbdEKcUJpykjWms400sR7H8CVQ4z9lc7xqo1gcgAFH5frgLANJOMICM9cK+1CR4PvkTqRv0AFTgu9SLddRIDQeu+HlDA94YR0hjCpODPIIpUJFDWEHIwAP9Ut4znwtMhIACZeRB8oVPAIMNBIH52kAA6NxjBo08AUDP2MtKQ9u7ARGJtA+qKDDkgi9nNcEbrGIP+lFFQVDIvvhIQg0Eg' $Zint_dll &= 'itEQhNJ0TjgBdLSDP8MnDDlCD0EVAynAYPjROMEzAJ3UCBETwGNSZ7n5A+K3FA/RjSCk6m8AUH4V8CKFBe9CaZAF8b84jwEcOTvzKnUWIJDBAQ5AEWAMAg+FIgMDyB/xEKUBQkVJRQBQdcHiKQCcAYBA8eAYte8AgZZfKNUeKQC1zgTCOOQkElyArQAsQIv3jQxAjLoo0MjyprgTkhG2Ai/o6wDrA9MD818/EI0ALIeL2I08hwNB3YonwDTQP9DdBpAF8xwEMfCXKOL1GQP9JIDHIZEM+gkxByyxVwzB08hzcTTQDwQovgkhNgrCFzBIEoA/AA+Eq0shQHAJE4U/MINCJr/VETBwxwIjz3gRMAADI/9DEMuRIlUPVENDJQIwA6WPHmBPGQH/iyI7/Xw3ixDo992COLHoXvgPwFcH2AcAUMehWC6AM/QUF4BDAkRIA1OjIDv7FMDTpx0wyEeCQ0DH1AKkADJ4fFADwFMD86em890CYY8ELWiA0wLEduv9A0eFAO/tEDgu40AB4JGw0+9n3QLAQ9BXE/pfKQH12xAy8D6QDQmDdRAYA+kD8Swwy3aBRcIC0SywFyWBMpC+TQLIwUIiWi0BQyK3MhNWNCRCUyoxcCRokRABwk4iG7cSH0gQUFa1kAWGPkCEnQWGPgAfBoY+sH1oEJEGg96LkQeGnl2RCIVWVAgFEiAZCDv9Dy2OOzdeMBSBCokojE+WFfyPMhBbBhe9U7OAEMoLIHlThclxD4toI5vyIJkKA8q70Rd1vb0nWjTAAFBRDVCnkTJA4BotMCM9b1r3Bbz2CBJV0Oj0v9PMR1BRmMz3chEpI5QEsNPcBz+oT0AX5PEZKSG9s/ynoaACg4+RQkJBO8t+dNFP1GmZG8UDR5AgkQA0MUwTwCUdRBJkVNQIlZ8xtKOs5hFg8eD4YVtCRTUFCEIT28MDBzQPKoUmYIHsXAxANg/ATdOA3xoABkxAwOSNkM9dAs8D2eHcJg3oHICe' $Zint_dll &= 'l6XwRy0DEfDlFS3etSKsMwFxOMICdBg1MbMSwlAI5yABcFcDfEAfNyB7YDBR941pGPaNeSodYPgB6Q+vGPkD0OUF84gaGI1EIAj2Ntry0ejkPw2k3zcAKB4koI2YqB8fENP7ahESJDA9lQG7pwoBYRgBCrxgPDC9D6iKI+NBABkAUP+AlgMAAgChCBUggDCNCBWgABIDwkcJRUGD/k9/IHyfDvRz6qeOGDocwVD1vzGjTCiPQSCwqQos3v+AARApfQW7Ej6wnkuhwBTeLJDUJHFcEmHEsZcHQ7NoZJ0Ra38jMMAb1xQwACIFdTUVhftzhTKwzTHkowHbHBMcg8aH2xwjHHXEXjjgNxWDGRGBdkYBIQVVhcZhnhKOy6FQi8Vfmw6AUhehlC8Uh0IIUAh8VeeSHy9pEh+AEO/j+xDHxDN7exBTPimizQACUMAFnVjAEtseIJQPyx2T0ssdQwDCSoPi+IPCHDOL8okSqgTx4DiabFHKYaBI8KETPP8iUw7xUOILLAoEUu3JB9DPOBAcKOgmLBEgIeEDA8YiUlOSTYCAHpWtoMjA8bGI7AEFSu9BjJEziK8CBbYIYfUeQEgqUALGggES3NBIYdhII6KQvi0a0UiQo+UDjci6eqE4EivHUlJUMGiMBNFQYIwgsBR16unAr2ES0SLBhdJ0GAMIzzv5fU8zESQrzyqDOpJKACTrDUkyDoAM+IOtOpgOQFeRVEfWN6ESc+s4QeFkPwMG60BrQEkjsL61GIyoGySZ9/3XkxA4SnQUHUp14kvgv18J28gQINlI53SwznIWEjbOleLRgPUANE6K4yURKzMQnPEVIEehAdYAQAMPjGGSGgEx+QGz+P905A0PqwxQwQCqDFCQOuAU1KA+HMK1ABNRRJpYhAqQWMSaWASbWPSAm1jEqwAIeqChlQYeNUDRhWE19kd05cwBXbSTlhzjt2PJEYv8PjskdwGBSjvWWEQKhe4nGQQwizDON2GhB8yLeASS' $Zint_dll &= 'zhfRB+07BotIQhRADbOIJIsGyjqQ2IT9AOLo+qkEMrif9EDZGg5AjxJKKGJdAwwOHTBughGOPOCUA4lF3M4/4OADlHYcEIgTZ8LkTQGF9lZ1OQDw0hYAhgRykmBQKCEVfdQDx6jC/3UBASMgYKkFThpQaO/rRAopvpAxEE8GA0sMiXXo6WsIIIJ60MS70ViFK/1G0wgQ6P9LER7SAkBHsVjEu9jFD2h+AHXci3UYxgQPHk7rBkDAAqpC8A9HcX26axMBACylARAVAM8aI09WIPJO3VHboDUXfSF1A5Z4MDBwbEzkERAkUSdgQJ4h9akJkSFVRY0IAkKk11cRGDkyjRzLghbzMwDSjX3cO8p0I4AXGSMdi0SNpAMHIoA+QxkjjdxzwuHQOMGtKGh0FIgGE5EQAgeAwAcdZKQtCHzEi2pd/h3QAoD/8waymCPQFwE+oB1W0YSeyAYGXRhAA9oyeuA6AnVbzOEVTeZDYKgMGK4cUIoAo1iRBSE/JIhVDI0dVdCLf6tkvSB/q1QEFmYAqToHXQg+glBo38hDeecVAcAnNAUMqklkoVkriRb84i9gDQSKk6sUBJOrpNzNE5Or9ASYFpisJjCGC7FThwHAt+ZxCE4FsGi8o/4zMWFlGT8TE7HCaEAh4w75hj8TE/k5dwiVEabbgG6wiPy14vwzMa18GABgdSPvINNRKV5diQKLZMGn7iCJCfkCiQmDwB4UiQKLljE+mm31M6/PIiAXOzd9v1EQLIpG8awGolcfoaoVsaBTNRhJO/Gqb8At+gIOBSArLgcelWL1BcB04B+RgkoCcFAx0j8ITJLIF3D0D3FdCLLvDxT28H8UwVJlsEgxK4X+NisRAFLHMpEoIxMov6xURxUhhe0BdCeDPLMldZebFqU/lSNGFSCJN5gQ8CcEAX4PEJIFoqkASDvwfR8Ai0yzBI1+AVVoUX8yIHExCtTS6CRAs36ABokBzy0AIImEr5kRJIvI9z7h0j8oEkzS' $Zint_dll &= '6aBAp1ENYOEwyLNbkkRgawCHF0NdO4kBkQA80OcQUCP3CwKUYIXWH+ZzDRCXcnbynjO2UQCDAwxmY8FU1uXwiwxMsYgEITAVegJT0GeCsVgBWoxgPgsRixVApCSQGEWwWIFaCCIIixWsIMJQbTCxsYhslQcVsECBClS0qIWLWryotFhRBcxIxIyFzFjMOWAGSX1Zg+nO5bDcBEEG9CQaCMIDjRRS0TXiiU4WwBSkTAnlOwC7UEEOpfbYABUkioTgSAABwQONDEnR4eOXEgCDwbpWweEEgUTBZSLQizG7DmBxCACJcghei0kMiXtKvjjl6xnGPGBjABFRGR9ZEQQWQEE7z4puQGGQQ1e/GwLs2yNGFaOIqZcZMYqIqpnxjQ8hDbiv3xMf9sEHwhqhTxEuEOLgIBoS8YQiPRDdl85FNekToa0jm7VAFCw7z04YwKLlE37gnK+vIFgI1keABH5FsTgAMYhP4ZkB+QF+JQCLS/iNa/xSVmxVv0IRAi+w6PwLQq9ApwT6fyox50cBKAF/bIswU/iJHKBgVSV1BYNexAkyVFKHOLjzQkG3A3kKaDcBCh1xZwCUDHKoVgbDDI0M5/0S4hkRIYJrgE8PM941BZJU0EgBtPolBQNpzRMgn4dUUG0A6zlx/oZf9bcf6L8l3tDhAy7//SCCoJM40kevCAqJXfg6mvGtFVE28oQEZgEukHt2j1i6CV+Ra6RXhuEaTsW01QjBKPquBuT3eMVu4RJuX9MwFRDKnBQB6gjpIyn5AT6blR9Qt7KwE0x3IuiZLPCn7A7J/AoNdCtGn1BnYrmZPfh6wMirJoegKzoz21+T0tEBtg7gJ/AF8Iq/XyNREqgHjVfsJY1N/otQp+WgLCip8smwngTxIlcKV5Guh5A+KdZQHY2VsMJWZLEBupkABCZGXFH4Equ/FkVqkeDOAUiNvZQBaBY5BIXbdTSLB8BDJxOms5Bj16EGALWDfrgQHyV/G7rmsn7NqZMAgLtI' $Zint_dll &= 'BhRcWjBnDqOfA9mJTQngiV3czsTQhC4GBELBqllApzCzTTXrAwo5TfR0BThACMRCNxA58DCzLTQBXdyGgFFFvq6gWBuAVAfAkNhEnFjHuwhQB5FYBzxj/xu4nQmRw1TLTVcjuwUYjUW8p2sTBBHQ2AhYIQHVWEUZ1WiUlOS9A3HzUQJV5D6JgUFUy5wKIIsFBIl8ALXMRoP+BHy7BoN9zBR+O5obJqCBEhxJoPcFfdSD/1RQQCYtNAlnkTJ+KH6P4MsNH16xdQ2ebBwi0DKYD+Xj16a8BT+DQNgmxU7ELWBQBzToD2KhGt7hMijyTxQPMZgPlw1QlBsBRBoBoIevEbCF0uNNItziFTC0BFJ0h7ixMR8z0gIxY38oyBz+iX34fxxRPQt7nBCvPSuehTt1BqDg3gNOFSDQDzfrkNcncOUCaAkSdvneutvShfD1EwUUAiWYMJ8tcM4HLUB3eRC+EE1Q3fsA/3RAeAz/O/58Muow8A6xGKgo7In8dGaLzxFCNmcwiIMPZ+QZS/ESdAD113TNAmvaIES3LpDgAgHQPT+ggicAO/h1CIN91EQAfxDrC4P/AXUCCYN90CB/xqTAP2hyEVUQjXdJ+w8VzTwKUo1NlNYZoJ2FQeXRyzxVjlKQkI4KBY0ghSw0YAWFDmENmr1BNFkMkVjHQHfh09gIFtqasCExI5RSQQJ3Amb/JL14VxKHUKSB0FiJLwEKsL+xIAwi60ZulFGEEEV2ZuourbG6dYOVT56sUYHlyOUn4SBam+EnKrGUCp6ErOCJJMQu5iHwvHhBXbK4P3weMSXgGfOq6KcaNZBl0Nwf4/kZ6DXDzRDebQHv+Bk46KY4ILopKgmAMvMPgETng0RHglQH1BTNgERHgUSnIIFUF/TjHbKuM7sdMyP/xR0jigCAQAcjvwKlwvHuryMJAljEMMMds9sRIycCbQrAPnCQJ4B/ZfXgG2lpNhpWQLUItIIu6AwCDACNFLmLDJUUVQQHEPbF' $Zint_dll &= 'QJ5MwDRfEBBgXwxCIgIkoOjOFEzzAySAQCIEqiRAQCIFJCBAIgagJBBAIgcB9sGAoCSCQAJAdBaNBIDyaLJirEiFgdAoQYSB4DBFIHQeC2AX0Eg0haBINQVVQRBQQDCrSGVACmoGUJUNMpsDQcAccxaNRBbMYIFXBSFzxnhREDKDEBCyYCz6B13xNifgTgKGJ2BwAPYEOMaij9EHb0gKxqIfsJ8mYSwKWQD0xqIBrkIKwqJRvwn5TDUAIVXOAPwMMFHlKHqBcuwXDxB/HTA3fhJXv+42seLkf3YGMfD39wtBFbYR4BBgVXU1hd7VKNg4UvAXHDEXfGRVZRQKACLoP3S1SEgyLwZhv3hQHSRxVRXBwKrPANFWahS2+aHnELi5IMbnjxANwF4godgSVlVQ63SLdc5SoKrRIFP4EAiOh1CluAsY6NKMsUAJcH46gwjA/DP/vqCEHbwvNGDJCSaL11YSXVAl6hIWajpdUBIobDEcUijokQEwR55HAM+nzZogQFAFwFcFFVfQL0sQY0xEAOHoADgUCQ91C7sun7KP8FEvI4DApw40eKwSHXwE2jLAM8nuaoFDpZACUZfASQoTkRoELHzrYNGoDwJOfgKFrrP05OQnwiFw5LnRRQON2K4YAAgkOnzgEgRqA1Ew6CdOTqCxAI18JBWAI8ghM9JWihdValAIPhmwmBfytLQIj1OXfiIC01/hV3GB7CiO+ReEJDhZJqINsOwWETC86ALCABR1B72KcuHcQOCfjiDlBlNuEIv9K/6DAP8FfyA7+3QV0wEAkoNhZeAD6GnNMM1WFRaLjGwTNXcnwQRXNYuUf3AgT19RGQVAVxcnE3fc5bZO0xBnf2DRAVAHIqcACADo7op1UMUz/ykrxmG2LYlAi8/qZABkdWKwAhheooYQaBTcZxGFHgs/fTbT/bDwLQehvxD/gzFLtiAzIxAVKRPcQ0lgHEDxrAIiXgRCg3KzqMabCZJygKF2Kg9n/TIY7m6n' $Zint_dll &= 'BwNFJ+PQUXWh/gfQzTNPEc1GV02ukNNtQuM0BH5mQPEADmE+BJwg3AYkQFTrCwItUjYgOxvbasnA5/4DxIUyQn7wYAUl+Aro3V+J/XbiE39QxRYFV3+iMtz02G/QPrPdb6OZCQzQb1C2+2Ub0W+0S1Qqwfu3KRKwOL9yP+h/0G8QV99vUjtRX1CFntYMw7OIrzkp/SZsInkKVeh7THDVXVCB0W+1IQQQWRACVldXaAx8/YbreAdkEABhUQnbjjHDK8fA/W56cnFlBbWut0j33O9/wAf9HojlQCvfAIP7BH5FjUP8ODP2hbf7gCBpEsYkAVRXsw0rJH0HBXkXUOhhkvzjywqL+HzWTUHeAykQbQB2bVAdA5ebEdUXEv+FF44RUXgVfvgOCoEVkRHhNwqyMY1pS7EQLNlHODwUDgYA2XtjAAAmsFDMh7ZdD1QLOOIEQCI4VCIOUE4ALyCybpIPEdLKSSCcAMT5AvuAETA+kAT37NIEHUlGVjAFhe49DxTuKWFbBZzAEjU4ELEwHzFSutSRR8cx0kGkyBgSV1JqjqtQdRg44vSxtIjfkaB5IuujQv9XwL8LM/JhAi0XPfkEyRHrFjESBy+7cG1JA20JYmIRNjDHc3K17xYQCW0J/W0pgwgTbgHgUIXebBj41JbHJlEHaglV6LBwlR/QRZHuFpCU4RYgPG2Zhe1uAe9wXQfiFiBSdWDDbgFPgBpuAW/gVwE/bgH3wzBRiWYaGDlY674GhiCANcrUgRWSXBGPMeAfj4MTWIEX1gEaEGEd8CE8ldYBFIpkHYBI1gEACxTp1gEzRAhhHTBY1gFwl2QdkOYrMBAHDzPWAXVSaB3wAV0Xw+1/TzDJAQODMPZKKaI8A9cCLkEtxBvSkIcjDcnd0pCklk1rvAIUghbSCLByhFrxdMAycC2lCBCijyChKAd8CPGNXgFSjEFx3+hC0O1yIcNFAN0AYowBCJTgqjgIfPGKBN8HDBSIBN+/dmCuODEE' $Zint_dll &= 'AzGpeDpK/0KAIOev9AkqDADw8Co8YDwwbI8BFAAvKA+hA4A8HwAxD5TDiFgBR4HeqQDSN2EPAO/sApBkiHFk/wMDSesBQkG+v6Aw6C7QIzJz0L6jXLdAA30AnSCa9MGnaTElflJC4vv3AsJfIr5/SUsTvn+rDhpynmL7F/OOUWH7B7pl4VwD9oke12D6Vzx1d7Z9JfiHan52OQy0qKxq5vcFAvJ930Ag3/cFCPJ9D6CW75kD8n33IhAhKgV+VEKHoN43KOtg3njQIYkSffQrQsviB7BvTxCg1hcCN/bSUn3gkAfvdSIOfCE/Amb0pzcQoq7RyKDcJPtCIA0A3ItUPdw7wn6LZqPAv5gvByPRoRDCnZT7ygEhJs73C2o7Ic4nVdzifFA40RrBsIgQJc73BgTifB8Ab4QFJnz5FzJhwhcDdAmKFAj20WuZEAgtAu6NPWXQPnzthyZDYTCz7hEIASgidymW9gA9NqDuEwhl66tHEaICAbBe/YEgWiK008wQCHYJIh4Z9h7m8DIF04jlHBYZCthVjWwIQv8D2uZnAEFYBQBAF3BESLFARxBgFDSAbgwO7V0AO/5bfwvB5wRAA/Yo8OWVNRxsLkAwcP+1aIwCkFVe1QBkDODGAHgMEN6b0yOQnAFxtYhbEkE5Dig0eG63Oui9CQQggRJs4BWQWMa/KDcGq/6K8lGgMOyzauM4EWoQwb0Y6MkTx4HQFKDfIqHKU/8RECY1McoAE6jLE4MM4AeD6D5RME4GgURnoIL0UMhrMnPvPiDEzbYGYORzZdDK6WfYA1GKL9BAgK5scrcPEY0hIkQTe5TEMCIEqjAT4FfnrwQFBkBXFofCv4Kd2AUPaYwY20LtBoocBkABiVn8xkD/QpwgsGPNV77+Qisp/7QhuQXA4HECwK8QFkAJLtOAemIG0aj9BVVi6oCvFgDolgRqD4l14MdFhCMiGQDoNeDqMUHSc79MTKEQFAUVxTJs/RE6ORkfGFIDL9kL' $Zint_dll &= 'D74NmkpNAG+9D7pVYJMIbuEW5hEAYBIKrjQLi9zzdSVu4bMUTgXyilAVkFjGcGX5FaBaNMMdFWKl9jCFboNMbBcUZl3AYMgAQBA1gW7oTAQ1YB4yML0rYV0KIiQT7EIyOC+NAEIyp0b1ICFAVgoCMKUkA1TRJv//MTFNDDUhOuExFYDeRv3/r/YAAi2E3vI/gS6yAnINIAAEVZMyNgIEM4ZP5RBVGuGQuoEQISvVIrJSLeLW+DeLArlJM5TYJWUG9Il1+J8JAU0IagAhzg1anTDzcfaVIMQp1zIIH1YtsZUCIb4YTQwyA/5KLagzDviBK+4hSGCJ46YSbi2AX4e6XfTGnk+g1wJaR5AQDRW9KyZgQdi71IdgBbXLD4bunzVi2R/ki0Uylv2GzJG24UGeWCYaA/rVUVZQQBGrjhVetzDKchXKE5dm/dIEBmEXAWpZUAYPqC+g2IQQZSWl7QVXIv+xDkeoHgb+OyCYBFZRV+hhzHEFBv2F/dCo6I0Uy27m0U3AP1VrAG/NIPkYCkjowN1VBI9q+bRYBW0KFlVy+cDuDhC4WycRNXUh3lHkxz99uvvILM5kUgOUy0n5BAR1EQTsM7hMAR9y7wDtB10e+YJHBh15WtB1HhL1wLgaiAaD+CYPj6IgEDxJX6KzAH0MD4XZKJBhFipp6Qu+vtEgBQKXEkLw8GrAC+hNB3fLELKPQNwvH2BDHoPAKbI9sMsd8v8/XBthtvgIiQ8JZouXUBjw8Op+L4Q+96AvUHdBF5fQwFjgHx/QfCU7TegLfSDrFVgC4bgFWIPngBX/phcWTTAxKFHFMCjwLqA0+E+siAAPOY12XvZiWA8CCYA/pWUe9yUhSREmPhAT5BITEJzgWD+zQyQQgpr2tbJm8fcSAENvTkj4/L6NL6UrBSCKkFZUE/LwC5ny8EvQZEQdJ/HL0GQ2HE4NUQTAsJPvd9d4lfKu+xtWv2HlEFN9A6EzDvgi0QBzlWUQcz4TgvsgUGfN' $Zint_dll &= 'ByZfYNJHWTRmsW47DsLE0JefByGqP54HEBLBD09JGTLhWQPlAE7FspP/J2nNELllBU1SbJAMUAsFL5UiQCrKBSQpwoO6nRn/dXli/vjhJB+pMJ740efUnGBoQRAPvo8kErahOgHkwoQVcrCI3EhwhguS01CE7xek9jSySUOTjQfsdACxaX3sAnWzDxe+hwQxEMn9DWUSsRKXBQLrs5pO8BYRYIQPLvhNqf4wVewpM1SlFL6Cy85DsToM00dBBFFS0SBABGYQ5QCqEIUe5Yg/+ERu74lPdKWLH1tAUI7abZDxwW2bJ0FiVxZOBnKHBbL4Qv+RWAZedyF9F0kESgHg8x+EpzgX6I1HKVKEYIXesu4rZxDkYQBK+jDlKg2DtQRWUuikyLsuE+r7McfRGaKODwUii/vGBqBpIC2JXSbLlFALYY8v8Pb4T6ABf4X+7xaTXwAeW9JE2RoBJSUDHHsvKiIghRbbx0UzkTBhQhDw9ArhB1RkbQz2BAjwdTTUzoBV3aD/ORuh754x+IFA5yaD8zT47H9Uh9Cw2IfuNQIBD5ULwIgEDwPIEb7tANCBU4WuCBKSXmDwD+h8ouHhCTLz4RAAA4PAIGaOQEYpmgS60EBplWQB3giwtP/w6txIdJMtYQrhDQz+hSDoB4PAKgPQXRhiqxd9VQgxAr4WoJ4lAKwTBC9NI+iLz4PHBatIQY40QFYWwGefDN7LAMCwGA004D9gPW1SIFYBwGDKBXy3c8sTukYgcL34HKz+wAzBA+kQiFQwC8YXwAQAfeiITHALjQwIcMHqET0QVA4LossJENeogxi1jxIQsijCjxKQEtWvmhTb3apJdOk7s1YhYZtU8QBdFQW/gQQuukki2P8Zynugm/QCZtGhmzQL4HWm26oLgS3YLwFcz2YG5A8VvvDCFYtYPr95mAnTA/thghKPpRHXxxFGKMRh8Qs4ERHegyHzCxAwESELEeJno7TIdBKNTWT/fihRYTCAbKcc6w6I' $Zint_dll &= 'RIBIgQMkiBQ5qzkSyo0I7UY4cGx8GvQDsDS47D9Ep2AMAABiTGTwD7KuYoAYU2CgIALGWpqAfamXQsvKeilQ5Q0NKQ/2xEB4/wzRyKWz/0MbMgNMMq3/uzajTKd8DwMRMesEFODSAvgFfAf4EBQgA96GLVDAHHzOBo1V/o1FsrkgYAzGGI0cOnkjRkbAYTwAEWE8ZLQMRDgBEQnGRDf+EHDnjwMCd/8RjUcHcQEDCcZJdfg6xOBX4TFFJLkgALBirIUICIkBSASD/hsPjtcBEhwzybjFHbUQfgUBsQMgT/cwCCwQ1IPkRQV87DrBwtBM7jJ1YA0TJMIDgSp9DQGhshsg1jdi0kiBEzgcuN1RMTgcEYSo0cQA0cwX7rMSjQw3jQIUd8ZEAf+1AQKBEBEQENHY1B9MYfdMBCUSbDLARiQQcBZREGGbE4PB9svAArvUEBIPhXujtBDF+zrKgFDopQyNHC+9BmYypWkAOsYEJsogpwxZLPKyy2At0VSXHg5ys9BccCewAPJlTGSBAkNA+wzAD+JlPNQfBmKMvMr7QjH4TyZhLpz3lkAEfk4c9sABtEQJQUdiwGCFzg2lFxBOtPGDMOiTU2cNL1dRVqO/sUAMnGGEcfWVBeHhHE4Uruagl0FmbiVgSADZYBxA5atHg+xg2UEECNgVOH03rkB0CPirkhA48ZIbIxgDPjXAdAW1lq1FCU41AEUDHAL2Yu8TViieNULHBHgkcIIO0wj8FwojohNR6ChR//9k2eqiMNUXRExymRSG3gghEQCABhzYDTSttQCLcrSBgjknSqFmmONAgd0BgxkKqFEala1UMM4DsZ6hQgogb0oQDW4shPCCBZoCD3Rw8xexaPoVScHDyOgIgGBZCegrK8te+ASFC1CUExMsgM4dEQCwcjKygfMusBqcf9ANEYsK0TENFH0R0QaigQ4svhyA3YBCDQCNPIDR5yv530jgojBAHFQEwEVXgbseGE9AFgOgxBj4gBUM' $Zint_dll &= 'blKwOCQKwbJCESd9IQML+gP4K4K0QQQOVqiBbvwKvrrQKEfCP1iL6IKTAUBMjQwDA+qpgVSKC0igtw8BCviZAAdID6/9V0uCQoO3Ee5BUFVSAECXmMOYmIArGRGGf2/QYMOLz8unIKY30G/vcK7NBaINkAQFXaExyQqBU1P3khSQBQSWBVCVrvOdBPHSJ0WQChII5+UQkSCBQP3OrBEJI0g4iqdQWCB5GhiqhEH4VTIhhR4fIYIAjCTnsgdhqR4pFCQ5f4ghD1QzZRX4DGCNG6KmIeEa0o6BsbJfMBgeMKCfOkA1IA+xtDi0IRGN7wopXGKpEFXgsDI8s+1WBHED/ABSsiioqhArwSp8sKYEENAqAKGWL8MqFTAQrLjse2YZArF3CHJmGTE/HLHvFGFxGDhXV9ERSNERUBYj4YsPIgYA73UEQ1kQq0YQFThUA8ZDhamQO9h8nViAJQMewtqE4sYKA9mLih/nMMewH+dgJFEH+48TLA+MFr2+HsGlkQ82iOFfP3K9AZQOwYSTP4Ex5VMR1gAAdgUrWQUk8iMQo8CDvu3Q3XfwPBRDdCoWcdsIYSUFALRgUAWF3jTRSPJQA7GIw0kywQ3RHvBhFzFIzOQU5SkUUuhXOxFXDDOP7CBQXlDi7MFh3QU647FCLaEuHHSFr7QhBHUGVXRBYB4KSEGZCVzaFnCAXUES7RlQ18AQIDAUVPexJwWyXZghRygwEgQRl+Sr3yliR8IfgPGPCynsKsbg4+cQVg4SuJ/8UgnS/PBXwjJ0C1ocAHAwuK9Fx7GuIum8G4m1j3sRib2jeBHr8sBQNSCxGcEIiblkEitOFqQBDjqLx1IMANVernMNAaPOGB/HPUHlKrhBXMEpXKuJMovLg+laG/00wCDyFQ6SrlWHNNNuazwBOhEXMu7SISAAIuoRbbNS7YoESu6hkWehPg4Da/+aNlCIUGTgCu6qDhMGQm7rG7kXZQmB+cEVD4fLAxQUFxEQtHjqr8KJ' $Zint_dll &= 'AaLPIKoyBw/LoCOLjZhNEjWA7RUz/zvPdBBR03M6IY+oIL1s0khKAWSdzRTSQ1BIKBElWcPJAVqFLgFg7SsBwp2hLQ0RTFAIWr5B4nIhC4oZiAocKEBJZhNQTxgDCO4Dyk90UQee3teztwThqQPPihBmwBCigW33AAD/fiqNR/+L7sApADEtJPfdA8KKAhADxYgUCwKWwAdHzwQBHOkiQgPfO0LWARB8xen1FnpRdem/Lus7uQUKpQXeAKTKGekKDVEcQAifzkewngECAhZA/v/rECDQGmlkDOsHIEATza+0GLxufkE3OxQxlhjRAJQsBQmlcDcAEdREMMYAWqsMwMYAdQwA8CsLnwDwNlcBnF8hwPQBA+xf8VUL4fcGmfKVMbPd6uABDCRmxgBQVQICJyCBAgIqIFG1AgItIOECAjAgURUDAjMgQQMCNiBRdQMCOSChAwI8IFHVAwI/IAEEAkIgUTUEAkUgYQQCSCBRlQQCSyDBBAJOIFH1BAJRICEFAlQgUVUFAlcggQUCWiBRtQUCXSDhBQJgIFEVBgJjIEEGAmYgUXUGAmkgoQYCbCBR1QYCbyABBwJyIFE1BwJ1IGEHAnggUZUHAnsgwQcCfiCB8IfISSIdGWaJnD8kghyAA8YTgRNyeYED/ksVEThhQBE4IDwQOGHWLpx/JEY9gRPT7hI44GYQOCGLH/84MFckgRO+B4ED6zEROGGcFP84YLQXODFAAIEDdmuBE9NbEf844B0eOKFkEDiguRk4Mbg78YsDpTgkcBs48BwIgRNnkhH+OHClIYETw0AROOBxFTjx+o4zD1kROCHLQbpNwRFbhRD/eLDoPoETlh+BAwLygRN2rbGOA/oHgRPBODOMQyYD8YsDxjjkbxI4sJkHgRNWVbGLA8w45EcTOPCMQ9NuEa84II1D0zjjQh84cUcdsY8DH/gROCHhEziwjUMmA7GOA1toEDjxjTPhOCRIHLo4QI5D10YQOHCOQ+ipOKOO' $Zint_dll &= 'MesYYEw4lx9y948DDw8ROOCOExww6BGxjxXfMRXsMR1TgQPzOKQVFe44IB4ROHGPMy87Eeyg/8tO+1QjeR6QcbMfgQPas9GLEwClDTggsh04MYAz91s0EhiwBR2BAQcYsywFwRh7CRzQByBUG//xEDx0s/sEQU8FkglRDbHpFVJosRCKTUQd6QycJBNE0EhwB8QGZxwQRGFBPpq2gRNfGTizgUOPARFBACpPEATyv/gvgQGLAREYYBQfkLEVOIED998FETih7B04cIJDGgGBA/8LVhA4sUoSUQTwRDERRzECFMERVy+FQDCYFIM5B1cQePEttBB4URMD84QJQRn/LhKrWRGBRhTR2MeBfknmqAQJ0IoHUJaugZ5IE4EiD6BY5QEMTnAWYIHEGJ2CDoc5RR/AIuIEqAGC7oU6IBmKVSCc05uBjsRJRCGchIJuwzkoijJVJ5yTmoEOwkkmiJABgx4BOTCKVWIo3WANGuj4Y5yTwtgDhINuThROdaBYVabCOfkZ6NCctMJJE0DovpwDNOhOB9aOAA8KUs+xTgYy1Al0olglAiGFbskZ8IpFI09Q7l2AjkgDLgvgbwzqbECrDirrx3MR3l8B0Y7R2Af4BmB8otjEEoUeFYgNilUti/BSERB1QxGAN4sxkmDCEQCxqAIxqxIYsvNnM9dJJYUKEUKFljyxWKhTIT0CFfEzAAGSDzcOPZACslEmplIhFH8qFVg8+AuUgzG8M79qMbM4ibvi8fDa2KhxrmZSAhIKUfc2UgIkYCTkUhbXAVkT4w8OasMTrhCXHEC0Q0cii00gi0nB8m7QyCPJDjADYhRClHOLC4NB16UuAvIrWPmi4mLkXizyH3G/Eg97+zBcWS0SAyO/Et/IwCMwAP9HBBsMtC5mXg4VAwEsA8iyHxCg0Ad0dGoBAdNIxUDSCMCgtHhtthhjJq++C7gz5QqDB4D5etvBEX6FANMNI2sHA4hMAhUrsdJ2kGsSE80yQjvQySI7' $Zint_dll &= 'jBQ/nyCaxNE0+980oBAv8DIJ0R+0uiQzLAFxPSDciEAjtViZNDEgv7P4m4gBQceiQQjwSUOjUhHmFh2RNNMrup5jcheFohAlcyWFAghAhVLWp68QWIvSEKBTJ1MksRMsd7etWBN9MfrpFtYf7QNCojCB6CkS2A08YiGgTUYygqItpQ7opQErjREq4FSH49gCxkfjVBIwyADjz3Jje6RABCyL6A/YMCoyKueVAbHSA2G6A8C4h5oYK0jP7toRjT+KEfExEAycBWBFIizR/jvwfiACK+cOJI0Ut4vGKWoxUhvCoWYSHFVuJgGH7ukQSCDAHzSNDLdHaufrJzhVU0JUoRQRNLBGZaMD7EbFHlTs8+8AAYoEcETANkhM1fjDcIc/aQD4Ifgc2uXSJoAwcK8W40YSQFVTqPaooVIGA4UHTGowfldQYOgHHq+RAaCUJ36GGiXpVhIgi1bDwXFvZxIYG1bR4N4EUQaAohkHEjkCN2W9IlbE1PoSJbUyj+mpEuhc3iuj/gdKVYsJ74X2fHIdwbLkDQTyui5xKQSSVHFqA0FyFANBEhoDwxIDwTJYLCDRAgaNdC4B6KO5ECEAOx/7fLqDERCG6uV/InERnRFUFHbUBB/MQLHRK0KzoyQv4B9/Tx8dQDBcsFJ/lBhxVBghExLPSBAYGmowZfwMxCoW0VMEcyWFBFDo63ogoEQXAgVhFGTg/BgE5BUTRjCZAPIDwm56gAt/fUOBEHFQGjLhilxxUDNxMOPLNhBxUHKdQkQCFgdl3r7DAOMVE4XSfCqc8Os7AS15LUL0oKFFKDvOXn3ZOgRwggFBICYDsQCIDCszcPYAIgITmQUuM3BmylK7CyEo/nLuYUskzsCSMbHSoTG+ElGc8lGgFtNI4BJRAZJowt6MsZ8ActUSgjHgAnGEeAFyNDewpjWS1QADfK8FAkfCsvj/9xNBAGUXHk6yIhHCslgMsGK84rwivKI8sAh9NSgeYBgMQQT/RmuQ1SJx' $Zint_dll &= 'IyksNpyw6ybhtAW9TcGpF4Zg0EgR4+fwewORumECAeNKCAFbixE0Ub0Rlbs8IDBWNjPxl5IwYPkffFCGMiCfAHrb8fED8Swp89CILNkRm0BQA8pzmiGNPDGauioSveIxEAKgweG6ADsA94vGfSWD+f9sdAfLJ85IEJMDYbUgCYABPAIxdQONSMcrJ2nbwRS6S7ACC3UmWt4C8YwbAwArzo08GzKL2cI747ceNFY9VvSBMlAtPD+SlRU72Isdyw+N6vySMlEXIaySAJUlGjvyJQE3bj7A57YEDq/VA9d+ESGfIx8FEDwBBzF1FY15Aeo/YLGCv6LQDwOYYLME/w0xQDvCkoHQBhDkTgYBujvYfVOLzYUcEA+vyykQK9MDz83FAskJO/WBACUAAU+GGZAWPaG/UkBB08j3ASwkE9EA/QP4xgQfkUUAxXwWQzLQrPQOBYNHfIICCjBOAfJjArIYvJIxXJXpywTiTTCjn5CRsKK/k91f8dB5xiJCODwCE7xSnGnXCvIrAPIz0vfeO+kPAJ3CSo0EPoPiHgJKAyOdEX+nM8Y9Y80valgxRgMj/UkRcUAZgrGDHVBnsMNGAkN3ijoBQLJjvAjN99AIw2CjayBdHRAD2DsT13+6rpJC8FOg4yYTHwPo6+o25C+At9AQag1xowkieLAWYn+EYfBw9TOyeHAAha715U4BYR6bBRBh8qUCTQR3FIvNkwkgnG7wseKMIsYAYQ0YBosE6zPJK+4RAAR1UEpmzqH0MAnhVueziPqMDMMXNPCqeiBqMVN/V85qEKYgMQDiSOE7LrEBL3MTqQI/wUMoVXSwXsId6yEY0GMECFA+AsNEWUgAF+UjMBpJYL4H9kIYBDN0Yv42EoDBsvJYbpEAgfzZFOFZI4XAD4EZC40EETaL66YOALKC3k01WQRRFWUNBFLof1kjhgNQrYRAsSBVqngg9YMbBPQTAEwuGRHKBVEBMBBs2QgCi1zCansQvxgA8cOKcaES' $Zint_dll &= 'QjEAMT9wL94GNCvBVQiL6A++jgfDoYgNorhfrjC86B8MDiuQBsN2SmrWH/FNddLgcgfxAwP6dxJEdZVthBDBDZwdL4DdwX/bDRbtpBG/1RNAckSAhe106QkR6/JwbzomwAVg2I5G23GrLSVIZ/hAwh4BhQeTWRDmVKAGpMAJi2MhLL0VaERAo2pVJVwfiRJk1qTBhhN0hT7JYYV+eSNUBYbPPzOLQ8EQg8Q0NTEQFSGFMJY6CrBuQ0kllGJHBUwmJGBCEdqM3xWgBBUofoXftSFeAuH3DvEF+pBCBNvds/Ei4IAlMgFXIiJCE0IJHo6OXIMykD5OBnKqc2HYBfirhk+FLW4U254kALO1CKbXIW9Aeh2Z7EMkDYV6mZVV8yUv0jMD7GwJqQ33zjMkwGFIAdI76xFNESDv5BHoBD0R+Jln9DIz2/p90MHgF6Z+IJvaTUkJo90k04QiNBEAuQjKk+QQJEBz1QNA1gMA89gDAIJOK9QC7RoiUVK4sII+W5PCUQgzZHAAgQA8fJ8CACECIJ0hy0XRHA/mE3sqHR5hFehfURADZDBAnmEQFFWWEYIS7ggwTwfRjG/WDf5MYF8hL9swmhQRdTUlIFVlhQ6R7v4VPA6L6IX/qknQheCQBAjPul8gyhQKU85CN64ScvES5KcOrOkAJPQgrgoDqQbNiwL1D6/N996mn8DEQMKwU3xMAiL3AH9wiY4MMgB9ZScRi9jalgCxU/83U3TB0shjAfipBGE9ML0T/bfSm8OBY8YgthWRfiFfIVfaF0HjeJ8foCgxKJYOcbSTUe9H7HcfKhQBdFQL4CzFGyzg5zk1gmF+rgATuMKO5OoEU/JQAMUB5QwlQwi3RhJcMwZhwfW5DvMy054AADegARLE4Owl8gGA3dPnfBE/uJHbgtFdIHswHyIWT3DpCkhXQQgYp7TAV6qBTmyuBk+qESUAfXwfFTAVNT5jsLQnYR4JU25iQYLOJZ8EiwvbxzhRiUGEnj3S' $Zint_dll &= 'jY1egzVxDrRCZ+JHRmDRHXQ+ZKHxEwNRUlPo8TroYNIFh8PoEEQ5u8RZAP7osJAh8q/DclkhnQJ/0WD7eSDC0xOtIVYGisdfIkwkeEEfeJkORN7KWJIMQKRfJro88UkXwRFS8BUCHMEVzjsRJXU1VZTYhYMuNZMTYGwLEBMPr4QqQDIQ7PIH8hPCMoThvi/gQ7QXa4wXAAwVAYP9xhxBs1cSUSBdDcFvUCNOCLHeMQgORhYh99C8wAAVjK43FWVsWgNk9gx1F90BbAPqOWfY9gMgayV0BoZpgAhaaMKRvLiaQ2HXBvkMdNrBhTJSAII3kJ7IGkDSTAU5Fegc3jugJyYcIhDQ043tCkBOVfdvYWUKIJimAP0TSFyHIRAW2hOhEKb6YKXwFf3jdBBDzDAr8Sc7XyFTImASDoBjAAfPZQRhF42TQgABBzIdISwXXDj5C2jRH2KPMGkcwbZYf4qV8i0ZYVAUZIA2pAWB45QB8s4ZoWkqwQ/6IdDnI0RAGA4Dz42Ew1ghrhGkRAWKRgR6cgGzE6z8BoQgRAO0k5BCG3w7UBYk68J/HCCCYiCjGEkhyRbOKQ+v5CAlOCLXVfkNxeYn0nrBNBDtKwEC64wQ4N5kYcgNiSED+jv5DzaMW8IBYcwxbLIdoRIWURlVi817nhIFFSvI0hzgrSYAW2wg/kplofo2siiBSAO8hioB4xsKeR388EACQZU7HEQhQAAD+QPRg1pBeBAG4jogdvyB9sBo7GEFcekv+hgaFdFLNYhvEFDz8cBo1kGxxRaBCIEK+RT73y5QHRPfTCBVI77ukOPXE7AxPxtIoZcQprGgcRAzycigThEJAIqMGGqBEqz4+yQxMI3eqBSweKmWopkPRTtLzhNMfULhAWhGJtHq5xnK2QWUVSWiI4CGHE7q5iCwA+0cA6JogS5B0RYXkcQRdIUCgsYnnCqDKEATSTvRGADyUMgqwxQ76/IwD9voKOE1D4XnSpvRuih5AOgt1keg' $Zint_dll &= '/UZqFNHAIlV1JV0WcSmv8R1tTIYkYjsBc55oYQMXVEZvo8gGYCv4+40QHI0PSJEapJDPoIZCMHQW1j0QQxcRzyLBMDDow55JcN+/8Hw3Y8olFRZMtQNuRIEGX3SrxxQgWUg5CDkR7htQhfM2YJkATQiuOvDQO9GEUTIRXlPiXwvSNwHywEj3WQfT+2MCIVMhoKcgqTjOGmCclgECVKV8CtUr0CvRSCviAzMQ7JknKFDr410UqFKVEVV1lZTDGK1JSSBFGWwFMdPSEjDtNLf3CiQ0AQGqa0GVM3B2GiHagMFePYIHOA+Muv0BCdoTfxHhF1McUIlvsGvKIRH9AR7vVSAiYiIzFaX4Fo0Yz8EOtGdjEjgSkeC6CPkqOsD44Qoq+aDzLjQLRvKgFxMkUEEtGSShPTvRfMjXvRIZBC9GHGK8eAUiNwh5I+LBDF0FZhDBMfCcdoHx7zAKVZX1IVUF7iZRVfA6H2EAh4M6EQJUtVgdJRJBNRWHu4YwKFDoDC0wW9cUfVRr+l0UqU40ffQLwP0GhhnCqNFwD4VfDyQQ4nrxb/DxwCgFA1kZDhOlrAGFGScD0dZAgf7hRgWYkKDB97CQbmPyEbp2YfUBLRlWVzhR6O+GFa8sUB0TjQR3qZq+MYE1RK6rMrDitAPXiSMafHAkCxL0znBQA/CBOgEoJwJIjQx2weEEzEkQY3EZUug3ixXBWo0ECLZWjQx/NhA4jRRyT9UKnxwSDjWQnjZ4CPHfh/DkJ7MMA5IW4cYC1BClPhdyjxVA5hNRAsJwFweBB4w1q+MUQIvOajHBK+EF3VBdWVHOUQFFAXsDeJDMkw5g0xM8gGFMQSCL1uwgblAVNQB3jRYHkhVoQLRoHYwhXjDABnfFJEyNBIp+2xCVTmsqEP+OqlAA6hcwcDEXjUILO9ApD40/RxCLq24ji8rqAkDTyGMXAX6+8VykRpjxvPAYYT7wA30+7khhNCvGAwIq0URgPPAMGMYDg8FnLC8T' $Zint_dll &= 'vaZuRGELEOYYgAjZQkjXfSFfHL4tISTmAEUaqGFMIxTwADcYvNAhMaWD4QUnATV9FNEGaQPZFl070Ub/Hvuh3lNUbFBOQVBONc4WjMEuZHJTChFUNRgM1qOyAPLQCOiEENBaCVM4Q0awAwWRNhIMrhIRTAP2ulRQOb/Q4xEfweSGcKXzHcKrpQMpTgVO4VTQGiECnfMB/1e8E50jE/oR46shlk4SPGFCAXUbB1ZXUOjd5uGQhxWAYa2DBGkYxlhDZLcPgq2w8tmGjH6KF/IpgAQxLMkcozEcUvd/ElHoiHijwRjeKZ0OSnBYTnHxGaK1Eg0tK6/FWkzFSkp4EAVgc0BWC9FE4Rehz1A2BxTM4MUqrJo2QXU5AQHnXQF2AIFujZXeH0LnSALCERK8uIRAMXBceDE8weL3MGA/hGFAl+CKGb0W50IEIRcwFoGxaCxuAbIbIQQE7VIcoO8RwkBCpXoARgEBpc4RilQh1bho5hFQzruAcEXjXRIYDRCFPmXhORD5QYC7jxAsVoPPIFEDHMJVV5rZpNARd5wgK9bvsQAFGddvICQuBvEvb6FVIboUQRloYAVVToLVQiDV2EXhJxREAQE6f+FTEs60QRxS8fkIAtTI0Aey4lzuZQvpAy4Q0EjQOkGSCXA9hBkRCLGJDI2KH2MVIs5LAOnpNekCUkGQPvBQqKaSMeF7MDQ1BEgJEehghGprUAIABjUovNSTnjP6CdNNQTgyRCFGGIdSEQA1GNwzNSqiOiC+bEHaMkQjjxBWix4PAlN1WnwgZcYD1lfBKRuMESETtVES+UIhYLJEVCEiUE4FcnX1FgRBcJpXQZQjUDCRI6HHDAs5AhkuOTJAOcJb2MIYkyNba+wGOUJb6WrbhgOTIztJGDkyTeYMExQRQTKgrFkzUOhS5QCe8QPp+6IEdTVYkV3UhEHTYtXo5CEg9Rbt9hMA4RKd7fYMA8JPixEWaRE6AC1XHLr1NnTdAh0e6QGLIh+CU+h0' $Zint_dll &= 'IAPGUY2/HiUkLQrYBRfhEZkrnTDLVRA4i8ZyViEFmAAEUFUKb3ClWwoQVImkXhdBFWgDriBAO418KlHgdXaBZPrdEvnTI1Tm+WN36UdlMxEng4QSVSWFLkMIaREOZIPAaTkRvhoRMjCAFuzFIjkD8U+sICDpmvn0EWCUgCLgJD1EVVH9Iz4gVzVE4KHUGx1UsAJ17SEAbgLA4IYQQGsfFPUXKRNYjqTBZPUgBRSNBPbRwgGgRCQwKggEMhCcBnFbv9VldhL1+wVHNSO2d5GL7mbkiQe5SHcaBpEr4OMCdN3pOokUBa1CngXUQotAH6gtNGkp+QPHg60gIOtz69IcZWkA/gGQa6oc0TrKoOoK99EBt6ER6gnhtQqEZn4ipwIKAgG+7BiRKEAUUVKq6DrpBgGjkhCJFzQFJFxV7lOCx8IJqwARKRMqFjFIjIIqQwACIwMyg0YQEvDgmKrwJgM+V2A0Iw/0QFg14m/7IalGpxQxwhxyixskgRJ5EX57CzL/4f8CmqMhOSIItn1gYgDwph0BGOJWES4Qjb+CD7eokAuCS7boEsHTSGE7MmDcrIPRSKENLmEQDyvW99r9Bk4NYqUhGiPyaA0kFH5SRQeme6HrEelF+5okYf4E6UIVHv464mXYA6UbvqaeESCwAiYr8sUF4bpByzQwFPhGbGCZCcIJVNcRLWF1VTW8fA3R6jOFPnyeAiAtMOvq82GfAB0c27IsEyViFN5BAIDer9T/j44wXu99IsYlIIgkaCSOFu1+BDBs1QrZNg+v91a+M7WkQrEH5GsChlLhKlnqM8mmPgNtBf3iMyRBI/YzppkhukUzuBWyKgYPRfbvgBB0JBQONML3PRqB/pSXQQTWWIFTF0ARhZ2tEgphEUlhAWkA6FFtARkPr8Uel9BSQHckY0I2O8Ie/CBiFc3OclBJ0fhGY1oKam9g4qIhGmlg7SBuWYCwEj8gbz3H+utF5gfCME4l4PIEfjdZE+Fg0FxJ4TDY' $Zint_dll &= 'tntQBiHOKsJGJTv3rKFIMbILgWM7DB7/fMl2IjJ+BqEwEE0HA2PHTw8U8RZ8A9fGZbBPFhPfKyEmMp8mF1kjrCRkdgsBQkvyWitRZSV1BYUwhZ41re8gi/iFV/bunFPn0hoIkjwgXiTc8Se1jg/xGQ+RUkAixwNAvTRFAj7rpS4ZkAZoBRJOq7DMAaH/JJ0HVjdRfEAZYkfSB/Mvo9llkP9NEHJZYz8lTQlyRuGiOpv6ITCwbzwVfiYwnElgPOXqC642qSV3ZDAcVnWg7FMFypY6pbII7YwD0wZQobg7AwDXjXABA9U78SB9Mr4pMTxwPFAss+LsxkpXZBDpi5dpQ804A8M1NmxwpgcBUtct7wV3PkrgUzVqCTBormUWV4xedRO9j7oPH3H/B0J3AbKIfmwFcl89WA4CEtgsuhjB7QXrIhCoIHQPs0sVqEB0PQy9ap/xiB2zQLuzlxtCYl4gJAPq4gWymG+7BCvK+A4qIeUX/1AQ6gMhBwDYhfYidA+aaDAoPiBZHQIL99gD2IukIHAzGRBGLTHfEqELFoEzehhAt+DBESppg++9FYoMIl0n1q1CYjQDw4/aXaNIYGEFAEMdEE4y4gEQgceVICBGA9UD+SEJmuIhwBc6UQT54wwEsuIpARizH/LBADEoFPIguOYPAACA+39yCYD7oRQPgl2qX4OjCAN0EgKA+zAPgkt8kkPxcCiEFnTqclD/4MJoY1QwRDpssibTYzYgI2LIKQBtBRx2C3+DMI0KU73rCSj1bSECOAg7/XQ5CywQGr8QWnxKx8JSS8EBOB7m0RgwBb2+9ouvRza1fxNAOLLlQRZR4HFBFuCxFWRBGL+sbQcQLOs1yy0QGz2Q1PEL8Jellgy7HSBoEWOBphIi4lEFMUnT9nghhxI4i8gW5WCw093HcC+ZFbcQEDAwi901HX7NIOxnsBKuhxoudlFZgfLwCm8LAIFAMDA/s73oDgxBKPa6wEZC8+B4vDxx7RYCtEAk' $Zint_dll &= 'dyPVrkYhECtyCUCvVQQFENOtEQUR3TcEE4vVkD9yMYvwNQtjO9NzYGt8cOIHQbSIPO0eaOcdTQAj8TPJZAC62yeRkL9hLBCznuBQ+E9XAAJmSGCwGkG6tsvAzQj6eRKHwOCSCwiuvDCACEK1IHkBxgjAZ9UJCQjsQABGdg8B9DOQbj4VUmjhUANbRxIysCKBEagtECUrRRMgYr1Qv9KMsgLv0QH9pgQ5gD4PRwofrhzRnDE0KCwwtiMcHIsNEkQPjEKt8f4Lhe9nxQ528bggcY0XtCIYU5jsN+iyGBRTihwoH94QFRgggerTyhF0F0p0CgCA+4BzGIgcPgHrEopUKAFANwUhjCSCSOHz2oIiVQ0+AMFfqhGKy/JlTGAAwALA/6BgenoRjF6wSFEsApF4ogVCUEwBEkEsBMN+cEAFKFYAsKhFQGDVKITgDyhXixI6iYqW9LHj3HZhfARwR4eBwWdmkBdvpDGRACABTh+zEIoMBoTJOHQZw9Ayy40genUCMbAMoMiQgshgoMhEYPAPw2DACn/UoraJsVhmoMjg0wDAATCwXKTIlPKPCB4QoeUCNgOB4Se66IxRmHx8WhkCEHwwjUGy9p3RmBawAs8fEIoMOVUQGDPJhBDbi5qY8UAZvJCQDdSUCCN128JrCn5CJqGqAM4DoUSwKLB4pxolkZMxHAuiWAZBAtdeIYfGDCCEsJityxVOueDPD//W26CLR3JT0xRiWxF+N/L0DSFKNg0oD45RWipzgQYBk2UAkKxIMKHI5PJ/MxO8F1NjLBUIdtmAC3YCEGxSDueJENcr740MZ4ERBjwKgDwvqQbxAx+QYiMx8B1zocixIyPABfO/TqBIAYgBGUhJhcB/1I0g9KEZbQEOGxEGcKF0IxSKAAwCiA7rFY1VAv+NRgFSVsYKAIQ5mQVjbNAaolw2KA+MflnmjhOXEiF7ShjhSBABAtIEigQLilQBAsJ0x6fSIMkVEIv52t4wcQ4xcAniQBCz' $Zint_dll &= 'Yi2dAJpsACcDAM+KDBmKWP8yAcuICEhNdeeFIeA6xuNvIEkAEAPXihQXCogWlQFFP6gRlnJQGX9QR1cZ+FsO3GOoWWMi0GPkxtBjplAXENsORlEWC4AoHPxRJiZ8EGWzzDMRZRcP8UD4v64B4a4UN5ATKRbUYL4U+jbhQwQLnvyLAEUGfWTQLLOxmN54i5ex+Qjh53ckWhoBrv0HMnshUAIBjQSOgAQ8FwB0IAL7sK0IoTDQrPMQihwpiyJI/AUXM9mJ5hCBgbJeAASJKoWiNAh8xO/sEDB1xj0Q0RO+fCJU3QshkOiwrt4DnY//jxCNVgT+EpA/9vonYZpjQzQH34A0D4U/KYRxEvAjBBIm1lQ9MREO5Mk/IyDdapIm07g+z7GYrxQMDGCGwUia9DCYTqBIAYQh+wzXihwqixEEM9pIiVn+IfDXHS0YKHtuIIrjBRUQA8fJKimJFsEBFMExRgRVmffBoa5bERxlpgRrwYH+f2GSEZCDdCBqBNjT+BVwrGbkJxEjWxKIgtaEIIUBBoPtPo0EG2oErQBo4azqMWpjIVFlcWG77xCgMQMm/XcBIh0BLovwjTwAuIkOiQ+JVI0AANHhhct0BDOGX5EwIEKDxvdyER798H3s4iZmEuGSaCRHLPjhK5ihvuxF4WgAdQCLRerOMOgGEI1VCA+EgrOR/yG8whCSI5DYiwDmNhMBJmbHDrLwwLgKD+JPAbngT0IgnwApVmICUbhtdhxEILANfj+NTBEJGmwkY2ER+kKgUQqx6wCySBBgOHBstkhUKJ0XABxmiQFmi0H+NGYxH7sQPufg73YYJHVCyW4MobBI4GinIcdGR+b3EGiW+BaAIaoPAsBG1VGLAdK4FLCDHOJnaMQB/8eFDIkBgQDBJ7Mo3Nh4KFxRdGSvLosUliYI0IkXgDyQA/FAKbygTTjkAQEs8JSIJXXX9nvB8AA+ktKI0N+kGjDR38IyaVFQjQxnyCGNgqkQNgUzRmFT8AOe' $Zint_dll &= 'j/JAqGgvM1/UILDZLYLtEEEuKA+EzvxBTmM0E7EYzUrCU2EWAK78EDMBdI/rFxiLHIGGbgKz1MindOwGobwEjsIGE4AMZoM/AKEEDEACCRsDy4tMjQAIi2j8My0eHIkIhO19LIPvAvVNLHXYVkBi4CQIHtrgXBgEmYkvBuvaotBa3+0JEEGbxgOxHrRlvxFBC05BaxAFLlbDIV8j5M0osTA1AgJ0khuBAShxAIXSiwyBfieAIgjRSGC54r/IgfhYCgExkJ0YsMjVCQCwiDLTrZSIpUFQZy5aIOpKISDiKBAXiwyIngBCURqT3V/gHyrHlUG2BIHyUHjQAGEg6X9+IJ0X+UOLBi9+EOaxEwJkdP8SQdeAREk+h3mwUX7rM1UFa6IHCCVvvoA00z4DHNH4JZBdwNFoqdMfCDvHdAbqsyCALbC4bAgSzOeODRBzkhHGXEms1hXDkjHYjL7YkU04OSgZgk1II975sivgpAcXoTr9N5RRlGDSGCDJNzIax6QDAD/H7DMTMDPz0429rtMFQfkyGYEdHgHDFQGQTdmYB9NBLDnoAREB9ECO7ubeERG7rhfyURARgcASE+Qs4CoI+JDttTMZYpTdSDrYHcBZAK57QxEBVdLBy1R0Hu6ISWx0F/Jje0AKA2M7OAYCFsj+QBUxNVE1AywgALwka9kQ6gtyOBNCATL477DtCsEAn+sRXCQcgCPzAIp8QAm+bH+AT3CwvRACuZgFcbYXoe0XZ3shPVIxM2xQG0kQCRDOuMPTAQF/2AYyCQcVAFgQUBem1gAwhU4I6P//4AtsSgF+AKC41LATTMflgxVtWOBfHqzw4BsAPQMspTjUsB8rwwGFxhAGIAwB730wGLjviiNRBvgmggHg9gfoIQkDPRERiwY9gjlB59BjKxMTfik9JtLxJ/JDKKNAHznHhCuaIeMFEFADlIghVFffPhBTflzgWhNASAKs+helAjvFdBdoGMCzJxE2UYAGACrnBEWB3vo6' $Zint_dll &= 'wwLBsAAEgoUmUa9T5IgJubBMsgim7SsvBjxBpQaA1sOfNKAiBFNlGqbr4j4FVLSIPminCWwkUOiAbMBERlPeA0GF7i/8DESJNYLOxR/4gf1ePCHlAgBMfwQz0ussgSj9wBZP8Df9WbPeEYjT7103gAOXMyAOM9IQgf2aOQYPn8KDM8IDOivheRyB+ausFlu+ImF/rxkkXjACEpi/0IcA8mfgWxDrEjPAgSD562Dw8Ak8CLw4rjXBEfiPHX8aMYQDobjhJ84VTDPJgaqGcAgbwYPBB24YIGgEGQBAJKNeMgQz2+spPcydMadcMBs9mTEPXyDrDREz2z2VMcODw5URTEBrEyBVcKoiYfQCD74muoQosIK8Fg9xfw9BNwwiQkJE9OCLixdlAl5k9xwgRdxhwgWMonUSTKNogAcDD769oCIiGL+BEG2gsRUEkgZEK+9UEs5AYQssu8BRBdJVBQMPcKgZUXwgMiNBF2yF/zQPhE5FoXYVhCrZschFxGMeBjx0ajkKg6iE7PDguwiJAVBqXgRmm4HjJxY+SSEkT8UjjGQ811cgxRGUPF8hIL6TSrTFEYQ87tZRVQLAGYkTjDxeN7HIyNMZcSclPAHmjSGeBMmaVCM5GuJO4QfGDSLzohIFzGB2HV0ABLZNKjBsIGId6YcqIq0RRCo8dIEAi6kxk6kRUW9qC5YjZ1UTb+ZZc8YI4b0SjQPVqTH/yBCEqUGDqSGMqSGr1RKLrSGUrTGUrSHxQl1Q8QIdRRA5O5pWAQYO9a0hKprADK0hhK1hjK0hg4ujEP8QD4yQki2gWhLCckogLhIPvrnw0SGZSPgY8arn9QRa/AMS+4PCTIGgyBRaFPQD+zAAADPwA0DYf08QjQQ7fMKZKLlPujyRr/cC+Qh8UAFcgEQBuDmO4wU49+nR+ptHcNqr4iIYmff5H25DP8sQdBBSH1No8GYF8C0KJu0I0REY8CgkIqwktBijixGKUCCgEPj+WGCFHPUBdtux' $Zint_dll &= '6xGymEYPMBgMkYjGvKgGwJ+IspgGn4gGALKokohGNajOOCIC8VTnvVQMobwAjCSEBm7RyLsJnCrQSAnSShwuwnGQmMUaAPTgq5GYoSRiEQD4BXzqiwaD+AwdD4R7jQ0uA/JAKDilM4L/9EBYlR/Qg/j7K/FAqDRXBQJFt2BvOCDWjxDhkAnAGyHjBAG7kE90E4sXGQcQUlFQGFboFgd+MCkFS3Xogi4Os+jfSJFscQziQQRCb6EvG9DIe6MuA7i+AaH4IS2uoA2UgfgB5UkwCQBDLD4LgOQLE2oBHQCLx4nkMOKFDNJr0Eh4lYaiyMiIIYDJAYowMG2cImXlg64ADv4GEf0halqpAWDXHJAZ89CxAPFiAtKbkRkm7aYgrUHQtQEMyaEAwXH64oGQGOKtAYqcOqfrEzCNvBhywhihoD2Iv+GC+KEbCNkhv6YH8a0BwZDIa8hw9A9RA6ImoSi2BWr/u4PIFFEOo5BK3qRRG+K/Bf0Di7MQvJZQCLgGFQAwkaQWEIsafqj2OhjBawlBGYSGpbIz3GfwDUIT6IMaVVG39iOB0w6hJqGWF6BKGjdeEm5vUSRjENRegpRII3VAyhNbh5FtUwAtBAEqPvGlDwHWC5cdU8DM9QNWpQJCZxIMQYAGAEAoBAEEQg9W6H0vnp9yiw3hzoDzRRCdlJLeomcA5fcBSXXcIl+CX35bUx/QUFBucSMZ8qCgPAGE+FB+l6BSflBOAxFwTLg0KgIAAAokzjdizAEijRTALQmKYJxHsyMjR0qAywGIGJcdYMEpIfgXJtWhASDGB0IqAGHg+UCLzTZ8s1gdqI0WyIPiB4qcDSrgXsRQo9CFgchEciFDkK2oLL3uGAR1DAiKRCQXGw0QdSjrSBoKIrCYrekKwfsDBgPYioQzQnzBJgwAsAGLytLgCIeBRFE02O/CB1kwNZAUZYV+j1I0kIFioSaglLhwzhM9IWovA0j5Adc8wSsqXdCZ8t490IphLiEGFS+B' $Zint_dll &= 'CHZHEIjVJRWIEC4wJoFYVSlBdtuQjyNxeQYAoyIQZrbRQH/WCdLdd1x069JG+19T0UaWkwmyXAfAIYE+zgFRZ9wSZRFDP+kqamBW6KYgkRaBa3oxi/NsKRIZ4JYRUUVSXFY3bTnoJ5oRyhzyhhyxaHBD16YwIHH7Ashx+wXR+wRRS0EEURtQQVboaEYBsh61HQvj8hU8ZiMCtqAsUbzsO54cg8I/oSCI58tSylMBVDXlqQBYdwkQBPM+KRASoCCrqDM4UxciohayAu1HEkjfK4MQvpEBI60OkgzgCWj2J2DRKoL+3zEwPX1+L/EcNOQatPByC+FMCQvvki0CcX/wvRLcmDY0DnGqR+GFCFYoLjiQZO8AYQ4to1sNCLemgMIkTwZyMpEs8AGD5xCaWAAw4NwYFbAzzceXgQzEYCcfiCCdCQgrQMjZAUyLwYP7AXB+y2cR1lvhzxRQK8EzDNuNDAcrdilOG9BIhAIjYB8FN3aBwBfjH+h/ShiL141B/w/AKAYYK9BKUv/gIg5RwtKbBnAkNzOam6ErFR46wWSqNVgY1VDrQ1cUJoxBNdCc6ugFAZYsgQQnSHiilNHcTqH9FTxBGklgb0z3h0YUxX8EMQ0XKOny9p7BpqElXiyziTSJSkqwaw2iegpTsTBQFkBLSREESJ5rMpsmgYHxwGjHHXIW8JVIgyWoxyIw3kXxYCIBtJUoQ4HIE77ZyESyBgZBB0DCsGh8tRK8ExDsZ7CYv4jtgQMQ+IvZUm4zv4jsFyQhpBvCO89/BCoRIBDktDP/5w4DCIYwsfPsh+9wfH+8IA2M/78aVo2wm7ARr/0hiQgQihUQTLDojAhFuosLAWGzJokBSlcQRICQGITgl8zBcNUI4MSwqN9IBPEveMc0kvRUd/81VBOBDCT3xyaCaNRgbOSABjCUCyvfFRACPIGxOBBgVQh8RddUOHQTUS6gHuo8MYgasujcY0Aw25exqPoQ0I2E11gwzt4GIGwgAAgK' $Zint_dll &= 'ykZNiAh1HNGLA2NuEHpPsCABkbgA7UAGMQAvMbBWUFfoIfcjKili1FS3jvwAI4sDsDGT/IVFVCPv943DDiHq4zICO4Jx9e4JskJw3MjgsXMEKIHhVy+qCXoJ4fsVQj7CYf0M15KjAStoMCmuESJkQBeNDPYhswG0MIDcSEgm/eYFsG4fEQJwRw8xXQLRh8EiPgNAULY/0fjV0HilYOwCD04l0Ge2I1oGDvZA0GG/+Nw3oIEAhZPPhUMJCBDrC1MjEP8i3SJ9R1LnoLUmXRiqdOBYA1N08D+WNfHmC3PIFME0kivBBD5p98sGA76wDHV4EWHlLY1ODQPHJTvxv2wQfXlOFTBlhhnq3yAgujfQMELizgvWDfMBikXLciZCuFz3NFYB4tIFHB+NDAe/FIK40jUPsP7gKX4H6DUlMp4mERShRx6b/yrkcNAGAbBdGY0b0Qlr2xO6IiCj8K6MEMo5Fchu7hJT7/Iy4t0Sn54QDlkALS0XvyGfbBCeMjSDErh+BiwrI/4EkAAxPC0BA+7QcfUHzmEG4ipTF78RngUQvviaMja/BsmPqjJxxpm7kfmmKhMyMqAqE0YNCjvQdDxYIYglyMF+MKTLBFYNUVIFLRA9aMhtAM49YCqzXVDHwANcYtEotF4w+N9QNzTzVEdB18ITI8UJjUFkmI3xDjlDgTjnFhB1ImeLgwoqFl5xTHiAbeL3IFACE5SIIWYzgWMlha5T3mk2I9t1E2YzMWw2A9XBLKCkEmjYe1EvfpCA5GkxI1VTZteBNpjr5GE2A5+f1GDTFuoFgQQeRGKeJvZBkb+IfocAEJi/iOcBIHeREpjOEb7pEYPYPrBAsoj+70JSCIwYxTXeiMMRvuEViHWjAYE4TQHAFgByFIHpHIH8zgKCSOtifINU9EDPJxyxmwvCV0J8Azaox8AnHGHDLHwlwjcYPcsCfMIRvmTCVwIGdAAlTQj7HSIegcN1K4fh8RoYKSLSsyYRuSJ56WJKQio5' $Zint_dll &= 'IqSwo0w6+EUipCjTGqRTJbIROMwx+5NOKmEipLfeN445cSKYgKsLjyl9IriYaIU5jSKYAMo3744pmSKY+II5qSKYgP5D048ptSKYKBwdXvAiQyMgdRBuLJC5iC01NVTlUR146Ky9roEjshTOc9sgGn1AUEUpSubheikcR1CPShk46BCsI+cU1gxBL98f/sYQCZDpMQYHD740jiDkgARo584gvoZoMDjgdBEHyohQdYUO5uwQA/LRwQWFPmxfrgUo5uABBEi6ERyL0z4SAIk5g8EISnXzozEAOCIv4WuJ0gTRF1ApeA5qB64ygeUeAYP8dgXHfzD8EcM/CgkiIQH4ugJSAZASURQQGDElpWZ18P4ItdMBxOgtPSnxBYa6KTGOKSHGtKF5AgeSM4HlKTkD+PUJUNMiEDXxBCYz8QDhGwvEH3yMbA8QvpFOljLi//BKCcXoEy34UjLg0EhwkcCHnZm71EBxn28CI5CntRGNNBsmISvyjRQgdVwhITQCiTFAjxIw4sAXPw0ChAFXxxAY8O2UHBgAiQE2AXBQHRGdkWcgQEXAtshIkASRKEJJYF8Ti5QE8RCJPIwESxwQULAfAZEdMIjPhPNhKNFIWwajswC/L7i44XDZCeN4HFuDEVDorNZG3WD3Ecb6MhCulwhKBZFDflA3IvkBHLLY6AQhRQAqQT0WApGII3XTWRIcjSIO0kghLXICytNwbBorMIPgtgmxsRzRSJOiCIQs3TAUswGLyIpChm7kMq4wjEgiRwSD/0Z8x1/QMJQkwyeCEa4FJAVVhf4TYNEMkO4gANUgnh4Ccq4dAhKk0B7zggQ1Jx7jwVIj1CwgQb4KIIQgqJUaILQ4JfVhVegTz4TgcibEFITor/ACq+Uj/goF7mshDhjy2A+hJmCFrg2C0e+bBQJqAlKLHPjozTDQQsAFi9gg6MAwQYxR+M8HMFK47fcxuM8A8KdRCMxnMYgP8PEX0cjw9+WF0EixuCVKCo1EAh3g' $Zint_dll &= 'w18H00MA+7sNQpyTUDG12OVnBXVjYSC7w9sghgf3EOyJRfTDhBBniyDHQEWH9BAAJPyJfdQw6OM+nSBuColl/I02hIZztiHzayDMWHBEDFGVwJBYhu/IBVPH08MxGOizGNuJIFY68NCIlazfAIaTUISr6Ad9/CZ9YnQl0idRaNRODrD2BtQHRG3RFAOLdfg9hpYaT3HQcyADUefuDZYKUtRAe0w4KKlgTAI0XyVD+DgJk7BYBC65BzHrEweLVSBgAcMDniSiBlQm8C8OEVUEZXP5DJMYU8V+kgeRP7DwF2E4AglF7HQcQFB3AQYh6xIan7MjzIfAF0IDB4QQTfSNRQsoFfwbjVXsguWgSgmOvrbiNRYghXQosNgEjrtKoaqqohAkyoMUENGLQNrhAl0UdA5ozM+lYp7xclw05wJhVA3ezvGmD3FSy+/vBYlVgyYhywAQQQEA/IA8CjF1Cb+E29QT0/8Lx0UPDHwy6z3GzwEHfwd+J7LOsdKzluNAA1pN0tEDN6j9ADRwsgzyMCPdIzepGA0qULJvJ9HFf4sHo0P0+AgIw9BnRAIr2COLwy4hkFjEzSE3hhEhXeiyDlCFTWcyKAQR2cyAi9wfQFeAu7o5QRhsEAWFBhwkyPAA4Xs5FgLw4Hs4xYgBi03cbqCgqBRVwJDJCufw8RzAi03EEItVyMs1EkXMiQ4ID76Pa6iQaIWAohZAD1ssYQSxWFKELaAkTcBOBvDKHQBVwItFxItNyCiJVpUIzBpvsFhEwZX4Q0lB0TkgUwIyh8AwSGIMIqIHXej5Aw+MXL3+JYHdIGDBAQNZwTP2IDP/6QtRjUP+jTiN9L0EkwgxQyFRjYRSMOiRGQEZA1XcD74lBDpKHlBAFxagq2sUgmoZEExgtoihnAMPAK9Z/APzSnXsEItdFDYeAd2419+Ue3UD0UjwPAMhExIE9q0gANjIc7RoHEQzEKSfEwBxNYUGmj2JEvgfY/G3LXzkEvg/nGLjICHr' $Zint_dll &= 'H4H/LTbKErK0biQFgf8xhvKRFw4OEd1iUWJQV2KCrwYwbxXxlu+YACUl2qoKUFZRUwEmuGk0VBYd0EUTSJBYxBmMCzUlTaSJVZRiCiCeU5FL4NoAiVWs/k5RRQUsyAUe1AJcYVGECVlhUQT73BICk1iFGtEI9x9okFiHrbkJCECJTaBaq1FFsQiA3djLg///Hw2wP+Cd2IXfyECw2UgUzVBI0MhAfq8QcngKYbSuRdi+mWNcCKgJA4CNREj1fjkRjbAgWQWNvWQhAACJXfQPvg6Lx4W3/jGMid+Q1RgZ16gsQEETbBFF9EaDx1RcSO/QENZxAT4H8lYn0liHQNnYS5QAsDM8T1DqJ9RY+Rd4kVhFxO8uA4t1/NUAg8NoAscQETE3yOzQyJTkcNHI29gfUQCiEwlNCPyDwUCtCE38fGHHhDCTASLU2AuRAgA+6gVSelIB2EiU9LB4qscOhREQixlCflAa4hMRguEDxgKDx0DuI0CMsFiEsKjkBB8PhGJ1rQb+AvJAqIYCixJ9+IuZCMfHR9o4mQj3/ovIGRb+iU0D8IXSfgRBHGBiAIQ+q5AfcFzkNCQPjGga4GECAAYQsFhHT5b7/wMh3wC97Lb+cFwULlYfkrSwtghRxP7wKkEaAQaLyivO6wJpAER9i9E6iZXorJBYGUwcS40QTfw7+sdXkzEAdSc7yHQji9erA6wQH65CIDOJDWGRBSBIJHWF3FGfoiEAEHgwwRkNDotF0MICVLFwgALCQ90wiR0mO1XwkgZQNAe9YAgyuRkxgyqBRiV2cM0EeMROeaAsAO+YIO/bQI1UQEECI4tAK8GJVfTFDBCJRbx4xwDUyCjXmGvhlgAuJiBccbYKUQVAv9jHPQC9cw3QV7JYhV4oTQc4mAixmDMAnchbCQRfHrDusFjFuyiTs8IT7RJAuqcoIMFTBCIHIDwRplHEf+NMAQIAfbwr+kaJfbwQi330xqlQxb4jDNgX0UffV7BThw/At7hY' $Zint_dll &= 'xKBYBTFoKyiJdfSJjF0jGBAcBSEAAITRiUUMLq1wUAWd2ESeEZA0oE8RUgDnIiAr8NBYCyxFSAyKFFBF7sEf6FHu2C0C7gPA4EcxhQoMdeF5OXLk4kYBHPLyCoEfMLJbI7FTBG9SBEUUn0IQgJ7vQyP+QAkGRRG5EIOgIIsmTewKcEOR5EwB4uvhV9RjAE/Qi/OSThevTFUZjbQyrlR1HR/UxA5vEcJ8w47ZVMXga9kQAo1N2Im0g+ZUUjSAHrXYBC11OSfTaOKmNItHkSWguHIO0QxTH0CMQJJIu6hFJXXwOxjGdDjgADeNVdhrQRePMEJV8V808oQexSDT3GD3ABh2D1UEoQM+kknAALRjnMgis2IRjuvD0xwQ0g+EMAjcLwAxsikS7ZwAvj2SmNqSWAhEERaEjTQYg4MBWw8gRQXkfiKNtTUu+W1FhjkCCFDostf/M+YaYr5ZB5ATWFbEIYvT5CB5DGBG+2QQC+UwfDGLdQwAsymKFDCA+lugz/kRCIEcKOsVgPoEXXUJiJw4sn4AgkgJIkA7x37UKYsBbhNq0v3RRGubETyLkJkQnkmhmgUGDACFfhZjBB6VAsQk1DQSC0MuMA+E8pgyvQYBQle1HXpcDoFbARGF3UDtwAQzhcAKe6CmAQhCp5YRcQIoNRVXpRC4HQ2NpTDB7QJLolBNCFHoGWyw6bYRRbhsGgVR5eYAUWDeSQADHRDq2gSQAh/wXRwh6YQZPNkFzAEK6+cgXcBFuONJQGzspyGD7CzZCn4aYKn3AwBXu7cW6C9OIqLPdExSBH4CR7EYHx9gXFTCDlDOtBgosSF11wchaEXnc0GCGrCutwiLVRwAg/4QiWXwiwKA0Qx8IYA7MHUcJoB7U2clRfgWFTJgCsFfQEeCBj0o6wMUVGEsMRBU44DGSwUSETbI4E/xwGhPEyaR8FAo+LMKAbgnkPOw+XoCeLAHMfNQ2JGRAOAfIUSg6KvxwLj6RqE4RBDBE/NQKMwZ' $Zint_dll &= 'gHtgEsqJ8OEF0bhEoWbgEIWeyXCyBDKKCmFfEj04n4YHxxID1hH4UBcCWLA3MVMXcZI5o2B5IWjp01IQe/Qg6ctTEIP+IiMPhY+wEoB7Go0ATggBoTi04ZkDEDwzdAAMPDV0CDw3D0CF51cQahxT6Dvz8AZYUgux1hPhtQNTG4v6CYPvKulizcEjIz4/yJExWn7ROBQZAIVOz7cQGfbsBREZ5I4SkREpigBLE4D5MnUHPYCTaR1+DID5M3UOGj3vWGIaMgAMomfQJutJc7EBdXGhEXVrkTFQDJEBCJEBBDw3dUlYgRGa8oFBfEmmnACwtLGYP/iesg6gA7gXkVN3owgwNMEDIwfDMzNwx6I4JMFTDDCGDwOwwTNTp9E4RUGgNiCFnpQaxYfQPo8PcmMMEldBEWDwrVeBmFiogNB49O8sEoeG1fGvQFKI7z3VD8EgSgJQAVZqA2oE6Kt1Jfsz/BC6DTBNCXGPd/IGClFnSAy33iBtiIjZlpGuOhHrvBB1LQAJ/FJWQC4WgC5GmaCfjCJiFWAHajDoQsp8uaYAsS6UACPFFzQz6CJ86T8W6yKhMb4MQABlNRgcIyQD6P307QLSC8A5e60RfZKZQDfRYAWFBhctZpQgDDoQQDIjbfYIGoo73xQwcgUFgPk5dhCwNc+8IQAhtBPNZ04OEdhyc8CtBLUAd6EQ+QF1CHKKSwKRAwRR6CN3CeLLAoXul07SDrEdmkIHCqs+EFEFtIhiFgBJW4hxPGBOEP8PdR052uln9hW/wBCvCBG+FL0A7NJHFF+x3QmDfGsLdxhPM5gvRCB9TfkFD4TtFYMX+QYPP10jg2fKE6eeEzo1oPHwaJW60RJG0BIAdYKO0hL1rNAS3aGQ9wKA2EStSLVDgQhB1UOtGQMGfPJQAFaNRdRqFFDGG0XaAPtVU8ECjQUAIwMhgskUg/gidRcJGtfT2hyx4AyB0GYAke4xHjjAgwvglQlAoiAYgdOTCLhRQTpR4Up5' $Zint_dll &= '0K1gNYjOAaMm4Fsfry8hfJFvEOoEEXYVEGoD61ZJ0FhASVDnwRJJoIN9/BUEdR9qAJJBDA+VTlIOxFNwG9exLgEWakIGlgEQhV5/kALEyd4+8oYQZOECHBoNIMEFFSsAwQPOUVBQaPBwgm18q9IQMQkz/zvCIH0X08AR+ivIK/jQgqswnwpCv/wDIb9YBH9hTHBgP0ASkKAIAwmAgFrBMdRYxdBYxE64igth1dgEPjwcUn7dqEYzwHUl5Rdik0LKDbrlp6ThdwFPCQpWkQGEmJGhTQwr1iRuiXO8Ihyxc1xnhA2NFAhuL4OgvtiHYRhIhf+NSFyXeRWNQ79HMI1EOGz/0KE9AjoqWqAKAQUDin89EYt96N0BC24t8Q8wqB9QFzA0uA94B86lWMTeyLMVPHEusOIlAAyEVqUw7gbh2BcTgQZWFtZ/sm8NwacUEpDwx6FTAeyxLApCBrEsQFDoELUlECHrIDoaIIUuX9B1AcDQSAEYZdVIRAIloTgE6O7ZJRSLYsiFIn0iiU0MifIRHoOJ8geNPAB/A4HyCikCwYGC1RRWUVFoQGGyHBCB+VqF8QkNY2AQvizq9XUjxVDxdeQZAAkNATsQAn4CPq1QBb54XDCo71ZnIVBAB5kC5MYakJXQL3DEr9QBLI0gUARntCf34sHqAtciA0AKBTYG0B0/YD0C4hkRAoF0xQwCUUe+6CkLjBYQMLjvYNoC0gNRxU8bJbEhNAK+ClBpVgkwhRDSD5USLgCDaCRggGg1sD60VQzB9wQDAIhWBOsjg/oFhFLooG9QlwH5AwaIIlYHyTYWV1N5E+jo9iOYN+DxARz9EokIXkEz/1Q0ZNgDEIcMcKXKQM0M0M4AE40gTrTUAGI1Y2+pD4KrwePSASIIiwZQgbJuoIkdi7HvBhAwJLCpFsHRiKcNHRkgg+jjSxEg0OdlUPYMwLaHY1A2dA1XVVboc+S1CK8ZEQJO0A7gU2acwupTZiA+ZSFrDCXeY/Lg' $Zint_dll &= 'OPyhLqHGSxSNeRNbNRBo8EbDAS8lEIRGzjFzF/HnEzFmJRLUML8TI7CD/NA4SwUB2ALAMpA/UN3I8SAdPE6ggQLiYNEGcFgVUtwcVRzQyIARHVwRHXH3Eh0jExiaDbG+YTEhfwtFMlkSRUIgRRI9krEBSoCw6yoNiiJ24HYWQh+wLY0Y3nFzRKI3Nw+Fep8LEMeAEFBAhGO9Eo1P7/rhorw4Jpwh1CXGsBO8LhYUJAGdIwECIEkCjTwQK2XBZwcVWfIaWARZ8gk7cOObJf/xlCX47gSSYWMvDBkKlA7Bg8cxArWDBnLPEo3xUBizXwIjyReFwFsQdAmDIrHwXyeQ+O5hEF5K5cf0ABrXQSB+TKVWJ6prwcBgdYU+BjphYiF1fbE0ECAzJjTxFuh/ikYBIFcW6I91DgCAMNfV6HjQfYHbFQTA5HofHqx+gJhFVQkQbB8MzptxH48DCRCA+j/majGnMLIbUjAIDLSOQEJBLQFQDFLYJHxTCBEsjrDgBK2dKIkXtrQgMxw+ctoDKskZcx5JwEUXMYhf4kcXJEGQOPlW1OOWEuRSFdAnACTHArtAEMM9YT5+bXBVBEJwDOBHBKG0FJYNIIfRA4oBQ3O3BhAEBUABAioQAzQyA+zX9gEIVj2ynoELAMjB6QSNNI2YH8gHECfoRwYPUANg8B54QPuGe4SBF1Ie0TPfQiFXkdEDMoIHW7lnMMHS48BkN5F+U9Gz1oWylXuGC0zIBlo9ADBsAhADyZ1Uvmzg0wPgxMwmO7q3FLdssKN73wD0CemdAvYPl40kZotWAhCD4A/LVkdXi/rTOuCBfvogVAI7uvdX2HopkJgHUW2ywBTplwJn5EAGjT+6l2CEvQKD0CAIi9xqASpWUyEK4aUsFH0JLiCLNmI3YJ9YB2GXELJYR2FkDgQzJo2gbIwFYiFDV2GQAEfmMLAzgS9H7tEAZfSmCmDXIiy+5PoaUXage4/QE4RwxWCFHk26NwD0n3urUZqM' $Zint_dll &= 'BQZfQMyQGdDtKRIyE9xXU96R8GIq/CCFAWtf4luAASBuKkD3n3t/1RIAK5YvVa5TYAUbKjvodkB/905AEFOKBDk8IIGIXCBHwPNpB4DAAy5XxLN+FxQkngjBg/gCcj6GQWiYDYpEOQGtPYvaAMHjCAvDPUCBpQEJBwfLIXYO68oxFuvKMQ8PiQZBko3ADcTzpHuDEjQUTtGsshdyi1v9con0pHu/AZDvciFqfuIZBSl2AtF/Aw1yulfyp3v0dyDyp3tv4C8jcDZgIGkxMbiH+QZ9kOJJ0IW823NjLwJzJstmIfSLxhSNexz2MoWwABSU2MSAa1xkG8DgiQjHZgKJVbzGRb50kNjTBGtAA1RhQUNoQLvSCAEwozgkAoVuvF/A/6+4NHKZI4RLA5g3OBIIgckcJ00RdAzbkAceEkDfyjXQRb7oD7jjCDujOMUihS4oSA2L8IpDLU+PIHSpDRDwDRD+DSB16A0QROgNUOCNsx9SQIv+2SVAhQvJNpIg3wV+JTLbAeAzKOw9qM9xRzQRaSAI6H4YC1GIB4gBg0XsBkc7+TR82/ZK0M6DIDULi4NLrBe1EGXEFQohYwlAzRsxvqAFBP4e1FhGaIBBFvZDGMK3ECcXEY9JI41Kcb8/sos9zzIieOxgFZBYBPx/jYaEEqYcAMExi5O5EGIVkH0m9OEiMTgGx7rZtxETolEBKNkAcPoIF2jkhqopMLwcxMlBkBzTaNAEG4XGxjLfuCE0oEUOc0kwjVW4UtlpQNNnoF0QN10Ai4uAobpGIx+gEQ0CEwRI8QQgQsdCkT2nIQZCN00JaBiiKIXQKLOohaD+AH4z2UOLFRKskD30SnIBIpIdQdkDFUDchY0wQ6DdACjDRREZjU2oUcA+dKA5AI1VqFJo0MeAUxAQ2EffELUIItQQH1D8d4GhNwDbdYJWH3D8iiAj76QGGDMuHfEzInRc5P4RABSLWQzGEUD4eRuRXTTBj721liI2hWB5BUhg+zUi' $Zint_dll &= 'hc8iayky8CyyliLDXrI45BcCD4TrZRA9FmsB80DoZhOhAtlF7NiCFFCFnF2EjBNDCgTYZew4NLB3ItEFyCHw2VXM2UXwBNgD2V3cBygSA4vhJmGgjASfbxHZXdTpJQUfAI1T63A0NtqwSiTSuKGtADaFfAZZ8SI1BWCTCKtEYtYjiwgXUjNRaKQBBC9S0+hRasUQqRHwFLA4sThsHgLpANTZVdC5IW0h6iBRLxAZAJ0kMcAUXX/Q6RE1AokBsyNiIIRTyyNCvzhFjbPrJ0I49YYihFPfJEI3aEh1R2ozgVaQVm+v4OsiD9sPhS7CAzEXI1hrczsiYrKo5UkAD4TSZdFsKaGxOISgYwXNpkPPJZK4/mozYbMGeg7RPVCk1r+RpMkBHx0Db20q6iHwDU7HIxoKoZGz09iESwtRE2jshIFa6w+tHcV6EgyBfftxIXQ/1QzrZSkeq8M+RbDsAMWOiXH7Gw+FA0YdUYSwbSJyErIo5ATY+W/BECIP4bgC/MsuEtMmIuatMWckMjwh9EsitJglqvYBD3+oK4tDGG8nEQckuOgpAesPJlmAC75NApkD2BhQNx+AmhzT9hFp8wRVkEwghcYHNWKL4QaDaiALaGhlUgiUZfILi0O40eEF4FBoREQBUBxoQHVQxItgS5soEpp/UkUshQYzCTZoIIC0BRJakTdguVIZgUZBRwz4VRwA8aCIhGG10hRxWSJufgn1E5iXJbJlhOIeUcrSmARAIH8+AGHPAAAB/BohAQEA7tQBfn90WyLxcMj8dAuhoAC475ItICwSFfiCKgiQGGEWys8BZogep6BY4U8CiFEGhFqggbDYAM8XCGYQixX0gAJFoNiQZQ8YSIAgZw6h6HxBIGC22MDOJ0oELaDueCGEB30g4H1AVeR9YOZ9oNh9UNx9YFXefZDQfVDUfVDWfaDfH/kUfRBYHNAHM5FP0Qf3ok9h2wcCBih9EGKA0QfxX1Vr4gDVDGDPABVJA1U1DGDF' $Zint_dll &= 'AJUMUMcA8j+foLYcYHQB0hBiPGCfGBTOGw9AvqPx4PjKAuE3D4/YExgYigQIO/UQXxggcd6DDP4cD4dyI2H+BI5gSPEOENGIhAG/IIisiyjS6Y5YIr8IRatZB/OkTOkqb/GLQfwaNlbxCwFI/BYF86TrZL8IorhvYYALNb8AuK9hUIAoIGQs8IEDBbEFA8PA8cCobEYA8hiRNVyQDD8AockA+AxghcYANgxwUjrwGg0RkDn5DC9QMPDvDGKoEYHsLhYhONMTYTWI73GlqA6EbyQTEhTWpgMYGmBt+gDavEEdBMOLDTjlnl9QwWNMAaa8sdgARBJfBBDSkhM2IBiNzjLg59UEQAIoKhMMAoD5fw+HxtfDEApfsB9onmohrAdIGecHEOIYIGsCxkiKGAB/8gpETX8nIEsHIAPpD75kgayhowuEJKdKEUI7A9B8oovFuT5ccAwTIhb8kmOhMxQPvoigsfgEb6gH5gRZMLeIMP8vUISFRJsrMpD9ikX1AIUmxlYtIJ1koejmlDCdaRoEDewkkMIQCs8Bg3rWsZKdKITwyhdhCgKcSiXBLW/BAQ7EJU8WdDGGHmYAILT+IokKlRC+fihlADon6WgT0u6WRCIqbD949zEAH1QxBnUijAclsyDFIQAlNAiEyZppAaOZRmGMIGLRFN3GhBYs0e/rHseyIFkgvq50LhTxSwgBxgEHVVaD+zwfrnLhFqNeJf/hJvEO4fYFCRDPlhIjJCQNGvUCi0kuK/lTzt5wv3kDM2ILFZg5gBGFPvzOP707EjElhSYpFuhD8JIKcW/HEutHFdUgvx4h2Ll41k7UDLiquBMmPQAUT9YSGVNwE579RDmNSUEB48gJbJhgTKTAQQEQmpXSkJWx+FaRlDI8M0EIKAsXINqhUJkAwNXIRgLm96cIiQw8WBuSMYpMHBUAUID5WHUN6G5A7iYNMggcsZ6BThQGA400gKiQAQWCTkUmCI1EcBv9uwIgzyMg/RoSgpCF' $Zint_dll &= 'VKMRXaOJGo0F2J+CHhO0g83HF2iiEwH6FY/1IAH6AAEUA+miAfoM1QH6AVQr6QEaxa0BGlTTBhUbXQUBujMBOs/X0xuVEL6sAcri+hxakqBmxGfpCI18JNudUpVHjd23ayKp1zPLrEINQL6bh+mKBsZKLCB3A3UIudMKEDKE4UZoKgpmiZVoGJBYGadGAd9JEOUBiVXc14cTAFWsiUWEikYdDFDHRZxaeGLDAZV4wC4Q4McIjX4c6JPsgcor8LCIHYWeSBJAVu/OINhSiF3o6EF4QLCIrWj0MSR+AqSGF04gAthRiA1d6ehcsHIX2uVEA0ACpHAChdiljn4FRComTRA1mPLlDNIEUUGNTtIElNIEYkEqRSpNINXoCLCy0gSEpu+4B//NENjJI4hd1oqeLUaiaOTqAtp8oIjiNHJnfsRMKwgC2ACIXeuKXdbrBAbGRev/jSd9QsPNgFa1hi4AygoNES0NIZLkB3RNDopN1+sGgAHJ/4hN14sGEm0SuLQIomiE8VCoHECAgAr4QChrGI2NaKSmIjDjvwnM6OkIiU0U4L/ICRkXup6w2CSwDoXIWYHg6xFVWcwKPODrrQZ2VtHE3IMALPMHrpdQMBg8EPgPiC5V4IlNzHzFA4tN142FkFEAtpkgQB0lZVyIww8IIOiC7NG03lhYSYw21v5gXJiDBgnoRmdooNi07uoboRGAWPnOZUBsQgNKcVF3ATjQd/1fF3F8f0yjDyln6XcFEsY0cFxkeh1MtB004egSQo2Na40ABjWQFYELmCMCodjFv9gHDizOA0FCjVH9ZosfAIPBBWaJGopfRAJuZYKoJSDkCYpVEOtDibTQBY4YhbA/8N3TJtIFzhe0q+EZTeiA+v9JQuT+rJAJECGU2NglUTcFgFN1XeeU2Ed80tjZRdHY26Mh4whRHLCKPdDz1w8hWALECIPHCAaDwwXSiABdd05+6RP04hik8y/HRX8GFwDpR9NEcFxEjDRBIyGjgB8U' $Zint_dll &= 'E6iAdHWLRdcxjZXBEKaeQA0VFRgDAYDukAuy3ljZBos26GiRGxGAPi/x7CoWzRQ8/7kBtfQKwwIQ0jgAWku6QwGKRdQ8/wJ1Z4B91f9vEzKAZPsgsFcCobN8bxejWBSFbkAGhavrEIpF6SgBNIgi6oTAdXw4D13rdXcCQpIblBaUK7BpviNF5IkG53UUAIesJciAkKRYVI0BQoTbIHU+kQd1OThN6AB1NDhN6XUvOABN6nUqOE3rdU8lRSCInUUQQUCXtyExcJ4HXCBV1Oo00A0kDQAdZgE+iYWtEw0BQRf5BREWncMRRhUVU1foeNeTEBE2CMMGg8cRRoB96xH/dQr5Ew+EKyUA+Ll12FE9EmUgrxGJXaxAi2vlJ4vDD69N9BTB4A2aB4GsvwFNqMJCA2AnIE2oi77D0hA7Bs98EYvPqixANaSeYLB+4Q0qUoTAIc7ZUCVASjfwX4Rve1Ak9AIloOUCHoywbn4ypZYG+FEEV1BoBIoKCAeyeGTJFo1EEx9wIxqT4PsPPX2oDNATsBIU4eEDQH6AsIgOiWXMH0GhKVhwrwmBe+1flYE5n/0gDQJlsIkmRfAhTX5hCq7wBnQRLJFYBGqgCUWg8ppBAYZQCyBhBkg70HUgFItFpGomkJET+vAKUkTKAPSJAesCEYk5izJxAD8AbdoHmUcwEVX4Xr1hdyl8r3ZxIIEaQCeaGfA9Nibwb2a35xklTxi+5MISsP8J1nhTyhVhYJxmhNEAQ5vzDZ+MUsnyNrrNKIFGGwawbnQnKQMxKAxiZQTrbY1GHzhosFwACx44UQFgvwmjNhMQ9NsofyCFRsgLC1DCxhI4FBvZWMTorABiAwElgd7usOEBgl64OQlRJ8brUwfOYWFVQlDboCYS0LiIilKQlAQDCBBSZombmihmx4V+rRigUn8AeMI5JHcHfXkBnp5usXi47Q0iQAHJBQUWiQBd0IldoA+OprjemMLcX6BAAkOKQolNiBqJVZDGNyG1' $Zint_dll &= 'CYV/9SA5DEXkdXk6P3KMBrKIKJxhUaJB++C4xwwyDMAz/741FfUGTbQAi1W4A9c70X1AIg6gkayooEjZQCiHIM7S4gp2qsBwhOAkNOi/zBXxJ70o0gQrOwOIBAtykbAopFgFMQiMMCQ6AkVCuHEAfKfpHVaBM1Nk3wz14KiAFH1OT5CgeKFIaGkwVgHODUB1lAzg0Avw0AukIBx0tOx3YSyASDCRAAA0VACzE89XnNhHw5BuDxDeNOHUDzCTnLMoWAcitwY/EiB9sI6YQPo5F7EopA1GQ5lAiEQCO/9DjZQF2ggRpKFIIFgegQQ73SF8AtCJdQzrcZHzAH5HXZECjRQL6k4gQhpdEIK9AH20igZGxDCAoK3IWFA3EryoLNFIW2ASIDSGU+RgiyNFtCtOEMLzpC49YOMLs50TsWEQhp1RhBu3oXAKTKhuKFEEHcigngpNmAJKSTvKD4WHMRA7wIkMo5Igg32cBXVh8DEIDQlbsRRlA4v4U1KG1QhWUOidkwQg58oQhGC3cQSIhriIvfKNaIsYAjvYUqBQh7kIsZyokQiwgrwjH9CHslgEuWKt1ywAA/FKiXD8dfOTCpbQxFsGEDVlGQoVOYDxGHWIi02Qi1VQmEsmIAPOHFHELzRAMDyznVhXioCZyNIEKXEaXR0CyQ+gQDCLkbEZKgCwI/zACFYnWBQJC/n2RfwB2gqM4HYTeHUq7oSAkPTAD1gmwtNYxSiFXpme8RAfpNUJBPbG8F9xVkuBZBW9UASv7wiJXfC8WTFqZhnANtIVIL0Di5+6pgWCrOEqIjLwmgPxmxHRCMCQFBwuAGR2XELYcLeKARBAEookgGg0A5QNjCCQyNnAPFkBkVrQRU8+zLSjjUpdAdQfwEstdQpmDzlV5A8eYiF/CoJbgC91UviggA/4JYCfnPjCUwdl0Aq4EwRQArHudZowIqkfGkW8fgEgxSMuYsDHpQ8AqQOKA+Iitv4AOrjPIfBQKI8ZYWCSHnAO' $Zint_dll &= 'IbKgXxoEtNilVQCUt7KywZkpWhk1UBkIApUR6jYAgj/cQcz9Awbc/4D/yD2JRchmgEEvO0Eg/IMVwW8E0FE3ArPYh8AMtPjTALT+s+jQB59YafEQmrWDNY0SHF9AQQfpKSZG0ZfG0GGlsgC8rCIEFAqQM5CNCLaxEAzgV+OoI6sF8gAVBfIPqNw/YFEeWC4vonVRLh/woK8B5YIbYfIJi3j4dm5DRSrTgAVCQItT+H1QGn1gBQCoUxl5XAVDDYPDCODQBgVfbxvwiI1AuWtpMkYdUgAwHicQSlA3iRJgViEQAOGPjyhAH64UoSwJXQPykrB03QLVOCYUAQYUAWagC7iA0cjzVzoUNsFbSXMc4FcSstjF6s0Fb0ghwfUBeVJJ8QL4FAewqARSKC2hHCE8haos4TfS2Bg1UXwJCIIFi5yFzSOEGAIw8K2UiFE3vgjWIRQQigHRhKwmEKXyP+15DFYlT4XVIGoLDFD/04DRaLIS9pAwzgg7rRFKVgAz8CyhAKLAIOSngQaF/34UmFEVRq6xDZMnEhBPde/tCZzu1MGABwlCFeDkAHRTpmqNMFS4sAjt0ADAoNZDcFUEYLg7p+oVNpqQ7rUoPn4dNQg4wPgGRQAK1UAgatUL/P0hwL9IfqpBkBCV2AdcHFMFLEULPcdFUtextEzhURBEAMVnXE00EMVnthfg3gWDxBpAg8J6c3ADGEFoAhJ+GiKL0Iok0xsk0BJoMNobxd0bkNTY6wQTyUGBmH8gsojc2MsGGnVNoJ8wxxxRPgFVPkK4d2nBh+EcNW9VIPYDarxAQp9BsNMRTEfjMwwCC+AlNQiPUjNfPB4FQmC5QyaX4bYGDZBCCYAOHHHwAH8TEChKhQFzNQPwn+NTx4GGlBEX4LEAT8xAQpdgUIfw+SyhLHAG63IT6E3vnjBMKRD2FjvHu+N1QBi9GRxAgf2SEcEBLIKgYe0YD46nhO7KwUYC9GseElVo+PIj4clAGSC7bDA282H2' $Zint_dll &= 'YFv9lzcyYQOCZCIJSNITUbsKBCMGo7oIk04QbCREFvOCxJiho1gEMBkgsTg5sogOEBQMXhBczjBzIDyg3pPiMAh7ERB0wIDCV9CCE+dyIAmNQQznBxEciwk7zVpgQCgQBGaLQgQzyxIk6YILrhWFyXxdvbSx8ujLHWwkJDfjIGeuIPEAD8EgACvFweUDK82FCcB9CwWkERgcPYGymJIFsZMLQKdQCNLONxkeQbJObbbIlRQHwBQHIIgbi+4gywMB89PnjU74C9+7EANAi8dS0+iiiSLGAJBZE4PuKlqAMOiPQML3caUDch3FCtPq9oZ6U27AKIDgvpsI8bYPMoD/TQ+RQzFjBzFNBWJfFUA9/siOHvDPC5JS99xnwROFjvfo1BH9ICEUXQAzwFWDD1QgRCRQgc+BFR9CEJoNFovXydBZEQxZERqD3LB4PI1eVR1aFIKeYZF0ekzesgMDfhRDtmPIMMuehpALgCFRJftiQEjJtpPhvBqNkN0XPf8uuwB5jQbhVwEIEMH5CMgKYqAXAH/rniqxjhDMAI6Qee9/BV0AIH9DffzAA4Ve2xxRJt/y8cDIUwlQJ1+QJkEKdaJt66e2EL8MEDBJEj68kKWEEcOtCqkZZoH6/yYuIO0hQcu1OdPnA/NV5Tb5EfED1SZ59AlpFlk2dUsZaC2LHYBRFSnTBTndBJdn0QQsYAA9EDEi6w19JT4HQ4UM6RFd4D5j0QXPUQhh72dhFiBVK87Teed+DoACHgMAB11bP+tByD4A4UtvumVWAAFQAAScweAZBIlIyIlI0ACJSNiJSOCJSADoiUjwiUj4iQEIg+hASnXjmhSjDQPS/YCfAMAfixLagZD/KAl0LAEsVDkA0Qs3I22RKYDCAICgGL8QbZY4YTEjDQNIATShYA4QiVYCOAAkoIg+sIBsluhEoHSYbyAwAIoWik4BisI6AMh2AorBik4CwCDjhBiK2CraitAAiBmKXgEq04gAUQGKXgKK0F4A' $Zint_dll &= 'KtNbiFECgMoI/yrQii5kgBg1EIc4DwgBAPbuENiDJkYDMSIRcp3g7yiB7KQL6xDcFo8hyR3Yt00SZjUirA7gAVdXNuthKOcdPZuPE7osoigCN/h+6jG1VgHDqB4DiuOjHhNoUO7ZoB5ThmL/sTP8AEb4OwphtSw7xw+M/YMwMIiP8PCoABTPk4JP2rCB/LC4qPI8KevrAnbiYvocOTKzPilc4DdnHiVhJfB5izlhbh9QE2jsBnrVFkmw6wYHCMcKETPmUQdPIcDUB60QgfnY7QF+KFFocIiE8EApT8CbO8t0KwS443KT5yIVcp8uMhCtfAzB+ghXSWCJGFXUuesxEVY7UYW9KGZZOGH+joDR4G+vEJaGURONRBH3PisgVDlXAlHojN38/48nJD2MARB9BbgYYbBjPnWAepU0dSVlldgFwYPeZ7gdsjugEgEeEUAXlHGFhvMFSWGze34gCjDwsDgAhfYLSeJVfKo/4DYxYeMG9Cv2AI1EDwJ/6jGA0vvB4Cc2mC/gl0UlopNo+fQHt5Qk6bnqF/EeTjhGSYirdbZ4ME4s8wll0ukQMDHob/Dn0PgARIFSxzAbShO0XweS6ZsB2Erhj/tRuB5VOCBd93DfxmAeDslEQOs42UglELDIYdGIoP7LAKEtpQQqFEI3EBE0FYVGVR4gV2/EVu8weiXTONRvzwlF8Ad0BoPARhwg3AG2HWA0tM0YAoWGwxwCeVEYYU9XIikOUWgsREQoHQABfhKLiQZF1LxK6kCBRQfYRSSQQ8AwcLZsFAV2ThCo70wdzpagSQG6E5Ah2JUN/mJcxhutOSUrQNar8hHC+rjw6QcCEDsQfwFPGrXQk4QOA33xqQh99E68gBo04OCfCvYokFgHjrCIvP5grgXBK/KBPBWEm4iIiFiagdw8VzUwoOwUAU3kdAMRVlFXaKQ2RaikGwmNQgI9xRF9KnEJ0o6lUJ+hCxS5aDoAsAKcqSArDyvGSotEOIdOt5BDUOeu' $Zint_dll &= 'xAMZCm+WEYieogCf+OS4B4lXCGB+WsaShVAH3YjHAGx6A942wHA1FYUeE14nUJ4i7RtTU2iYAYGH4oHgJzNjr+wPFprwjQhTsBK8SImTDiHVokp8Gghhuz7oddMtylUMQbjBESvDiZVgXQQgK8Le/FK4vchwCJHYyEUEfj2NlWhkHCAIClUDDhKNcwILi8GNFL0wwiojkAzEnglgFQsvgBHoVpjQCsBeB3RdB9BIMJFIWNscAiFuBEbHKBPcYYRlRPyfXxN18H7OxMC/WGYsvgMVA7yFbDEgCBTksQhFA9UD8CsSwKA+sGvQBkjXPUKuBeDODowdIHLVMzMgL14MUQErwolhfWF6DL6goP4L6vgBO3WeHwCeagACFEYhwBsTo4w7bQERMr/aAVDEncgJJZd5MXQ3h15CeA0V010SLQ0XGY292HJg2QzfxBM2DZJxTOB0jLu5UBlRRe5SHwByBovejXwJAQEPr9+Lw4l9JQFkA/UFzgGgCNcXQF0ItG00An4ci8u4V4kAsBi9eNNetUjt9T/Ax4kR0QARjVwT/8YABAJLxgNLQEsIO8Z88w4CgNQoBDCw+GwM1L9kDACwZExkwL80gGCcVPdOBi6NTwABjRw2jUIT0UDpbqlgDOS+5DcgDAmbBhwExkAQIEBjCRIgS5NjEt1my6BqDAxAdhrKoRod/tTIgRFxfy5sDAEtO/B+DAvGBAMvLxHdAPUDCNlKdeddBjPSOw/CxkXZB0YS9iBg4yVJNXDsbmEgFRaGjYC9yNMYArJ+zACx+D293+sAMDh+gDSY/6AIssnd2YCIFcB3DqyQEh0MQQE7x3woAjPJQoP6DrYlUAdyoGuhHesWg/oewCwwQAyxrjCo71InUqD7zwExAxw0UAzRB8AwoNzIlFOgKMBVQA2EmPH+G1HArjINnuFQEMGu3hXnfxB9/MpFAV0BD4U7UCNNOixA7mxtBZ9cIBSN+R9mNHBdAAFBsIjfKFSf/hAcjlCQ' $Zint_dll &= 'OfDs3QzhM9KGtQhmi5Eg1gOgZQ/RQPjOQtCEv6ivuAww/T44PDB4foCj+NgiYWoDx4wR5E9JE4l9+O0PddziSDCKGAEYGdDIpyOgSNUwQB2EeDHgL8oNiQEkTexCqwBscDNcEQmqnwaTBRAVVQcf0QZhnMpBZATRBgQxYNwGY2UgUf0FGe0pSnEQn5L0U65gY9YtgLIA8OBLlfMvhaZGHZ1i8gzEvh7grzwACogdik3oR2bmsBPMl/fsZiRSLrFyF/IZGeNnZgsPN42RGsNxEgARuZkB0aOgrBUwRQzqtaF0EYA/fh8Eigw7UWglEuhzcM4aEWBGHs5PoHO046/DRx4GshgA4ZEU3hbfgg/7JQ+DFAXQAlAnu13EBaFwMDNH7BFSLAaAgexV8LJxUTVQGEFy+gyBme+Abi0BAyQQmnUAsbMHQUUCo7+nDaE6EIDgcBeetiE+7AZCAkVCCLt7VBEPv+6LSMu6ZLDS/MsJsbPcR4CxONwoe+sLsRIMsoL9gwgz6E6AVCdA//BLSEIQBgEHXCog2QEMskaNBJqolrmQs6sAgaOTAE5180RDxgWAsLhswwL680irxMaA8TcFwvHQCHhXFdHIo9hIobmSt2ziAn+uFT6GcW8JsnihOyFwi4K9MCAB8WUKsSjvByew+NzIy+Yl3DIUQmb2DDBjtniwWQmxAuifIzPSM+1mi1QoRCgKz2BtNDJmi2wJVCgDxWt3EJREZRMj6wJSdhBE0JsHIWQgQAUkMfgukHnfP/S/JQMRxV9Xen8KkhSgmwhRY70H5oGRCZGSCZNM7IAIbSBMRChzHBBEdAgoi9ED1Qpmi4xcVJFAyZ4VElAwmLSxEgxsb1EdcygDy4lUjlz8K8NAGA5acPMjUTDyUAg8nEghQS3WA8UDwzsDyH0ljQyKLjAR2xABv5jTBrJy/BsFc/VfIeDUHWHuojc9F413EFEPv2OOQBCNQgFEVxI8YHZsIKcBEY1ASB6E4ScQnT6/' $Zint_dll &= 'GjdxVLWh0wjHuCAMD46n1RDoA5wQp74gsjAQJjETJI00BG5miw5mJhOgYkaxSLBWNBEiCzQz0oRlI2aLFE+PICBHA4yaIrHIMFUykThh5N8waOw/kDFWSkBiMRI6da/XWhBC2BEGtFJDsKYmUAbf0ANAUAYBnCaBIVBklmiwo74QDMIYFKUpAFuNSv9dljQgkNFI4DQYnCdgxqQrZAQrEFUJEroAReBT936dBOrPK/a74H8WrQn78KETYn7hcSKuJWFhlmgZRfOTAEEgHAYMU5nVJIJqXXD/HxSYbwMRfHnbRy6RCqGgKBlXpDAci5OTK1JX6tSwuJBcseikFgEIODPbE7sRCi6QrQDxQAltewzyLkBh6gANgz4AHHU0QJq+4MQIM4oTHIFkuH5A4aQTdAR2RoAxAwK8a2Yfhe1+EoAEPDiAcweTOhH163EF30oigRfypQBBJ5MOgIAyuE8hTyJ1EsdEBkr+cWxEsCclkd6dyxIG0ixBBEdlEenLQRL+tFAsIRUOs0YQ/GDvGNrgUEDIHokG6UTCJTLAR6AymC/xBwEOdEkglBEYvI05EZg/bBaBkOjw4CgtFkmJDkDpjvQj4ecTmC9oe4QIYSP5BbiQKekyP8oQCGAF02YR5pwCmGiQhzCRFJgsuAb/QT4r0B3iqLItgfmD9KD2BOxwDGUguxjpD28RfkyB+Zyi//FHpO8hdPEknFGwyCdcJuOjAXEC38MQhzgwlAKBTnQSnGiFkEtmrTgggcJIkWjFsN4m2yGSb3YT9MO3NVPn8jtNFFkQDFkARgS1ETIgYd8C2M7QD6LVIferw2mIyECYCw2xaNDTCEF3kNUTRlG3PwSh5AVVUv8uQaTqGlHitQR0ILpKUTAYgT9Qt9AQAXFskIpxMBiMMNg+7RGxjABBJYHiBTEYfDDYfkAVzBk3t9MwEFdGB/CaDoMyJRaVCLEYrcGEvmwKNEiCtqow2B/gN4MLIAFNjXkQi08E0+EwgGI7' $Zint_dll &= 'YCW1eDEFtchzxH/5DDIODmGQEcRxzJDRVFe9jQrpfl4cVlqWsX7dFXGRBKFnKbpi7ADxiCtidkjA/pwQC9BI4LIT/Ad2YmchZ3MYHI08KQ8QvgwCa8IQBzvZdXgNt6oRa3AYu8wgPR2Dwg0MRoH6XxYM4I8efKzxE8UgDUH+yiJZBwhTi8vYEmaAHjKxW2nROKfFBx8XZhZOZtECxotjyREiEAAEBY5A0EjQXXexGR4BKfFAZZBQxzC4n5AIUMbP1wfos1UHgAfoF5BSJwcI4CfgU8cG6DcA4FFnBuhHAFMHAAboV2BTpwUI4GfQUUcFyOeB4O9R14QB/wR1BkaDfRwKwQn3HhsoEMcEkc0c6w2LRRIki004gBgh9SYoFI1L/gJngHJ+BbKDDODHoEgBg0h1AJT/igxBPzh8vz4BKr8ADy74cL+4rEgRYIAIAZRUd98osOoNDQBJjywS1VNiHQuDwzCDwlOwvBiNiwMAjyyQfOmbcRFG7+A/AvsXEHLvwN9IbCQP/hDQ6MegtQ/4UAFXUVZTUugw5h+ihqFRGIjGwQcIOIAPcJXdxRAlZTXVAYWeihkVADc1EEgWwwAX5Z8dPs6wugnRhKEGAG5sF58bINIn0QRxjw0U2wGAf70B8ooVEYWOly2AaUIs8NjXGxJOEwB0XASEICYQjQwy3+DGAQFh9sRBdRl8AsSgzxtBdQzGAWPWjDC0HLHu+AsM4AA2F6EwAg8zCsYBOJRQWLGhGMATJj8f6BaiYsBgTBAQBgOyoUE/MCC/7sEzBhfu2wALR2MwAFcBRjvzeQ/fbSsGWSI9At0UdBofQqBwVAI7IP5izSYdi0UgQotGFoAymK+Qb0DHMHFMEBjdEWqxbsAZdFGEIuMNyuExFRAR6O+pJhB9P5RQ8kEZhQlNaCSKA+XTAigOOJBIEQgE5JwqgHkIToHOhooDYZRIE4gbescS+OSvGRB9KRkAvgJRheIUECz37lPHEk0JAFIBuv4k' $Zint_dll &= 'DwoqAgEqmgJx724oEE3q0hNACc4CEiQgUEVSFYAIb5kCngJVBGAp8ADGiRSPIpm+mgIRdO+vKUAUFI9BiUUAfcUIM8AyO/OS+xCO0Peh1gGKIAwwlQJV9DgMEFF18uIhNJYpgsDH7vQiQvQdDzGD6TiXCT2DCekpD4QneBCD6YJuIDnBFrFY1Z6AL9WLAYX842fiKxJVGMEYUffYib1IagBA6QhN+L0YCwPGUFfFGAZqMJJaEAA0+K/QjV0XlEDAvxgRqP8sCFHnEWo/EhnXRhAUg8D71wEgUgUaixJwMTsSqK/dF3VXSZRBRBk/lPYwGEEJgmOOEIP/FHUmVQCBTznngRF1G7RxigRDa30VlcaH8PVbobIVI9H0tiwx7nsC0QG5ARwD1qU7zSGV2x4Q3dgiSvA7YwGCwqslA9ZNHVFSpAD1t7ziSRogv/4GIhsSvy5AhqxQhdyNoksDBIKCikGxGCF9swchZAMM2iAglAgERSQQOzpkwScuFBJVKAgD8QPQzQVVKA8gjD8NG0UgjWXUA4k4X16LwvogD/AXByK5MiYxiL8DSAFyZVgACCd0D9JccgyQrwEUg2AQgYrisXO9qNwXtGMHBoSyRmfR3GeiSJABwrN1aiZCA0CHcIwk8FUBsX7g7CSJAkFERqe4EM981hEAIF2UNQAMW0oK8SXYAzBeRHV7tkFZwyvPGREQ24fWB6BNRwIgaHF9Iaq4Ej4xDFEZcG4gUtdwbKAcEZWTjyDrKRa5UCeXHyg88g4JugxDKhDuDoAqPvZCBIFOG9FI49o4FHAvCISrtBUchwAQ64wRqRKKBBMTUGjM0ibhByxtApb7IYCvSLUQIAU1af5QsEIBol8F80MRNo5gHwibyyB8QlOXCBJOhcB8Eg+QYPAH0sjwOzWM4egKjTKUSLksyQCJVh4KIIA+cQFCG6YPoLBNKUISeNw7VArig0yQYYMSyQp1SQdCfPIekPAnVWCyG+tXOa0AIvTR0Zgw' $Zint_dll &= '4AhCD8C600Gf61WD/wt1UiDowIEeFwUHjxGJuGtIFiSQeFAAkSwwwANYM5eSYaAjEjwqHoCgjTHSHVbUNuRQFiQ7jr3Qh0RBASx9g10XGIA8BguAD4KvJ4Uw9+sgK2HasRQDcSAYdAKJfyARADRfXokqhe1dbVvZdsEGCMGmr8wg7IaTQBGQyxhLUHc+CwEA1koC66r8INB4YMcVBEABR3ebALHvDLLHB9JoNLBTEex34JImCC5psGh+ADE79VO2EJJeQfLQKCoogNkBigQePB8PhodlFDx/D4OPKhCeYJEsYEDAs0XHV7GxegUxHvqFBsKgJR4rg/gaGrjgKbUDvIhOE2E0QaThggADAOk76H4Ci+iNAXQO/+s0ihR/ohcDEFJQ6EK+vqsSAGG4biiBosjg4dYRlqqA0km2JEYn9BCKNjLBCEMiDg0HO9FdW15XtxB7z7C+7/PG8M8H4REJwGL54AkDEnNgEwXKk28QIhODzmUBEBRiE4HfofBQ6E8VLgSwWxLhECUlJOCWMQOD6AJxAg9ih20ZApKACLOiggkkII0UGLBYBfLbrVgrcCxA0XHhJAIAv1DqPAEg9xHrPotNEyC/Uh0FxwHGA3EDTCEC8ls3cSxwwRMesrzRwCveHrHuwBs0sjwRIK0hDURFEGIYMqABvz4lQAA7XhALIQDHWgJmBrFuewWhQT01AMdRACIGsV5TQFHXAmssTSABQROwlh5xLIBcDaETVUUcogPCsAMP89BofRnCi7BTh/Gg1PgeWLFYtHoI0SA/AIAEPA5bD4SDVhCLVdbD4xJIIPWTEoGttRayEwARvo8LIQ8dPQA7+HQ3OzAQDQWD/wI1AXvmEgiKE0E7BzVyI+ovdtqRYl4AxwNyKnYMIVgFgj+Q2HcRA5GI0MdR92RyAIoEFipQaHUqJ/IKcPwDXCJEDAqIUcWPm6lSgJscsgEbDBZy7LC+65ETmwqRkTiAGpxgtLvJEhIRGEmAoEjhIIWG' $Zint_dll &= 'HAHr04P/Aw+F130QjBJO0YcA5CYPPnjAAJVyPLB6XXFFD+j8OzcgoJkqNZkaMIP4En8TJIkDLg3BABQIEa0JHAvgPyED8esojVAEEYkT69fi9SCFNoXrNRBRZUHAE3GhJRmHvQN1DA+MToARNOArOBDBi99iEbCivfM96x4M28IbIE4F9LipE1o4ULC4PL8a4DgLRS9HEfhOP6CtATJAsJ0GIfczA8FXDlBSaGQSFmELGOZHIHLcKKLNAwiLDzf9ROo/YJImuNZ/gjDiK6X3IxfzESgr8reyS4FgFwAilcBvgxffNTA6IYDoJAX0jTSenMA/KAwkYIck9+KL2o15AAjR64tP+IsX8sfiIL5PsCMFAgMrwQNgIEEGi0/wA8EzWHA37BNIAbgfaxk6A8oqKSFk4Fpl+ECJVuEN+AyLwZm5rgnxDAaBDzS0VONhxV+3qe0gHoOAkChQB+E6MI1l6MZDRGBy4YCuXXeRCcETkAWaJwQQqgygywBVagygxwCKDLDNAAIAAQYGAgYAOIA7sWpjsLFq9FcJ8n0NBmEFZXA1s41+frZ2EnXikBh1kfDlJcAuW8NLFhABAnU+igw3UY0oHOhcuS4CRhmSDLE1nKBIcSOVpYLeg3dhR3hwcw4yrEhwU62Tg+5Bv3gUB/aPGwdvMBuMAo5ndSF1Anu6JIISWz13geEaETBPAHHbokBgr1wT4CkqSimhOgo3gDwoK8S2CGIrEADrDEsGIP91MANCPiDgZRLfg/oNiKzx8NhmIR3+BQ9vj3bK4Q8CGhsDEZpYIMwDGtIJaK4ShfbGRBQgAMeeU3DDD0GnEoApg/QgmCYEDxk0GAB1nyUQOADrEzPJg/4CDxyfwUnTbyLz5RHXpBA0iwAojX3zg/97D2KHk30RrgXwiPPiWiAYghgwqM/w96DvBvoABw+fw0uD4/vghtggiR9e4THY3/BQuKqoIfrNAYFjazD6hQCg0dSvQwbrcGkC+IOAbwQNhfZ1' $Zint_dll &= 'WMTwNxVJ20K7Pp6xvrNrmBEh6zTNAHUEi9paBUCgb/BnsquJFOsf4SUAUKIxBQd/Ebt+rYKoMQUJfwVOeLI4P9MCvHK7EMHjACOvH0HZtx9RhwPqQMaNHBBRFNbi+bAQAW7xHFrdlEBR2D5PSvf34RmDmIAY4tJUSdRlIIka7y9UEKjUV4AjkADRChUHpi0gkG5MoLJSFBSgEbDo3MijsphdFTJbFI3SX8EvA9qxgAuKEVZITYHbTQEtFQBRkdHe3XE21bO+axGxzS1hqAVmFwH0iwIGc40gwwgUNTtWH6DHHmgBvvcBITkO6Riewkoj0XGJm6AQut2AGJAWLTJ9oMoAgwygyACRDGCKygC7DFDMAAABB4MADyAwcEBQwPUBAMj9pkg/APAWAJEg2ucBYIHsXCDyeVGlXARHURAKSsBHEpUk0w1Ih2oQtCQ8cFAohwWrg/4TRoShqgguZzRQoJ031I6K4G9QBXGzOQHOGq8uERhgdTXYBwBQRBejhoJuQLtd+vEHCoG13xqkjSecOQDW3xuZAYKGEpmALj3LXG8kzGTpJmDMt64SAl2iSyHsKxZeRrBSZxAktwd/W18mO/GuIx5SPQByCwlxM7ASwAMVdVWFPjaGBhF9IAThdxh1ipaAS50yfCKyxosBNydURLEAVeZ51yzhngyYFVQ2wpEVR4gPqyBFkIYhIELnPgIjdCc94O/IEepGsIw3dMC3MIg/wvB3vBUBsW4i7hOpLUccfJXAl8AHdLFNQCJqkxUASW2LdQBlGoMFxvNJg/5eAeDADohqu2BJsOMVEJXkOoGfFBD+g/4LD4eXBROTUrpgSIkmhYAYkDSwg6QmpAVmG2AlAdXWYxAGcAWj7U0Q2t5Uqe39AjUO144ggCv4OWguuoRC6BU4uvzbgRMXryBfYxBQUFUj6DF6B4KRvpY1UAu7dFYLH0JnUgqzqpwApdAsx7elMAGlAOfAgFXoR65gQpE+X16QENEPQAEiFUUM' $Zint_dll &= '1eLTkP7sStUfztOQPvIBUWY0NAXCjdf4/Q5Uqz0qBfE7KzKYv6Dz4PhAHLEKMPFZcFO42AypErzYDIMhgMsCiBh4dLh4C6JIifKJJxgyNSzTTb8vliCEGDLoDEO/MHjijyHnNiL0PDA3QQ8Y0Q4PwBmH4nIR9IARgMuAeBBWiRcawgGUSFjpVRb0RAMDt28QMMYBE4QkWkC5HrVFICEEUIE2gwTGA1BViVSCztsopCwU6WagkO5JWkX5rwCQeTGX2yDXtEA7tED1kXEiVQKTr64dipQYAqh8lCMRJ0tfPoMh5ZML3UApM8gUiozjGHKoLFM+n0GJwhsHgxHv7TBjnSDlQ43l8wB4InwGyRP8gBBAwiQ6gvG1DgEjUlCAhgGAonYQVYUeq52PkD6xUgiQiEBnfQUMbXQjxFHHVCB0afkGVarpXQ826eOhEBHwA0QR8AYR+viniDvVIBTpoY0uBnwbBYP5CH8WkaR0FgfAlq4qH2mUFJH6BQ0AD4zN7n/RAfDwqIMUrfQcmq007BiRrRn8X6ESnoMRgMpYEMH/Hrr0gxGAywiiwf9AWyvhIBTrOCGU5Oy6mxFCH5BQGqIKIF+iEfsFOg+Nr9gerhcmKhMAbvSBT1C0GF+Xo/QQVlEHaiDobquOEJW0ZcgQO768uRCOEJW0avwXJGI+EYPmNUBHN4g+EMOmJSB8hKGR5GoEBpUefS4gagkFUehinnDwC8gLlRYLj7AIXR+lvAgBpOxxA/seD9AA8ItoYSUB93gWGCXwDiJf4i3YUSod8TRxBKHhn6VDbxJg0TuNvb83QPGQewcwfPJi4BRm3E0S8RSUJQS/r0DCMkFnIXtACOO4NhCxlxDy8OgwFouna5ojRp6WwHdmlQkqZeIAJDGLvXoD4kMZjQT/j+cQDuAEA9BuBvB4DvJzGrLBf1M68SgLMcgMgRVH1CC3zyAMT5qTzBDQqjUmORBOShMQEFkH0Sfan6MGgFQZkOVKCItXtCB6' $Zint_dll &= 'LAEscEgLA6rWBMNJeEkArjEEABB3NQQQATcEABCOOAQQCzMEKxC8PFDEA6088J5LJwiAAQEHAgI6Hc8wQOzi8SpfuyQFBsltATcy1K4wwADQDGDOAAAEAAQBBAICBAQEPgMDZh7hRALZOrolMGAA1elYhbavttBudCYMlWUwFeq7IiSyF1DXgo7s4geGDQAgiEMLAr/hiRLGBUMMAPaF+vDjRhlBUk9zEAvrUeibsAQwI/3gi6xIdQNo9BI70XTSagtTMOh/bDAxEQKlyHQz9O/EMVFoKI9SHPgpEQfoYQeKRDP/UFNXPWgAhKC+eZUK3mOAvjsfAXyHMDKqAEF3hPbBp/gghN75mo10bU5ixyGTViALGF+JRYtkEBDX10CqF4bD2Wp0IUUb0SCBfQD20DJjDeHWK1O3EAkqgOEyFdhALbvmFNglQLAEEBvZXQS8oIehTzEA2lLhHwRwjA21Jg4TpHEnCjFTAtEicFXq2AnBmg4Q/f8x+SKGBDSIUCaE4BsCRDctMTvXBnUWix1YYAAaBQWJGIodXJSBZXQMgANLEAQqQjvWiwQThbzvEm4QxG/FCGEgg761kBjhNRzKEgNMIO3+TZIPcM0EgSC1FS58ECWzBF7lRkMz7FMD/1AhPzBDonmSvHA12I8wxyIBMKsaM3UOAehFBDsmdQmKRC4R/02IaDDYf7B+VQFUZbYeg+gwdCJIMHQVpQiowPNfwXSoNzLGBzDr304RP5kh7rwQwEQCo3ZgdcVngEIsosiAg8hk8J9ohgQHfvNzFSHrFyFAnPxgfGSnHLw0mgahaNRToKvxEjom8P8NwQAcUwAUACCIVCQidQaKNQ+ICykQqrZgAQIaUFCUEZEwGAxdIzAixwAiCXeHORGRgEFCIwIXiAGKTgOKVgRFAgobikYCGADCDSHAMRAuBIChtiCFzmxA3/+viC1xC+sFG4jcflRweAchvywAYVQLX6cQD74Vyw++R0IRKDfaUOzxBPk3' $Zint_dll &= '2mBn/325FJEAxTA8MM0QiLFQdAg8ywIVMnWJvedLkNQdAAooyG+5QQMNIIZ3gB8iD4VNJsPBjrzU7B8QDiGACxwJAID5/YJzEBDySF0RAPCIlBEASRoADwAuthJmVeHpBFF1FOgSGKP8/2LTICIdBFXQgh0J6xLo/qJMSEnPBMFKusQhvSPIRlNQ2C58dzpRrRMl4JeTjwADsOi84v3gS7EAMKgeRAehVKchmFkQsUhRSZ4FsQANQ60qEBtFFE1104qOKQWLDZyBG+EJmzIgoNAwsCkDI5oGgWSA+DVwYHyEAKDoGSDe/5AaczBtFBIc2nOARuYEgNYqUaCEIk0SAIPlnlASAIGSaZsgdRMuV9Lzkdi0tg9xGjSE4gFQVKkeAIoXKgAgji639xC6ZtBIIKGPTAz3l2oRKgCOHDYAGpAEYAOAxSAA/78+BBAuPwQtEG4MoMoAgQABG6EkZgO+XdfrH1DB3+vEBQw1g+w6B+N2IPoGD4JjbTWBAk1AxwCFfhe6PQICgGhgZLbYwAGp3UgwDAdh7GECUlJgNkMP4YEMBcoBUGcTX8CiOIQQAIU+wAyKC4sF6FHo+aARF4B3JCBBVdvLpY0MRQzwRQZEV9Qx898oFAaKDAwfUejHxNALkFiEAHA0WCxLBQZ86N3ai7I7AwNi4gr9AB+CMRAwkJnWMCBsLwnnAyAEQEqagcEoSREGYEwJ/35JiWI+MLwyrTAYg+k1CCFJdWd/FQiLDI01SNAwU4PioPoEjU//OxrpdA2lAr+OH2ZMIQBQBLTzztdrbIAb3oThb4mCTeJYIFZXjXOYFgzioTRiDKPG4AU04knhP/AOYjoxL0sSSgwwQgKxhhihLRToAnHw/f+IQ66/8dvoehHGQw22anIlKHXhrxBHO/4KUIUGVUvgr3BeDUCcxWTkAM6KA1kV6DCFTQyNrIBIFQOgZSwjQQL3+zD4D44HEBJ+BIBQh7ZYYYQgzoPGYAUFHUYIEkWw/oYO' $Zint_dll &= 'Y/4u1kAxAYpML/+g9mxAeG8eocYwha4szgYVFX8xQUQv/4MxUSDMWQGDMfEBWcOFD/fbGAd9ARWAfCj+QnUvBRA+DBiOq1BQcnIAQSMJJRbHfpUgHg4PjFq9AOIJ4qYG0g9pEEcVMUhJPcWnLQsG31oOZYQRdfpEYScqhpKQDePlcAxW6MSlPV3z9iBZwzOBPtTiYxYoXy09gRi1LR0ULa3nCiFZxwmxdjUAu7BAktLkq4m9/AXVfgzlT/ESUgf+FJ9w4E8BSO7+FHVQ7E8RosZhPITgT5EH/hSDdeBPARuw5E/hB1PoLf/t/hQvAJph4E/xDHj9qLD+FCTy/hzhT4E9+FxCHOgdpv4UmkziT/ELHKTu/hQOLf4UP/KslAD+FNxXX1AGbi4GfSV/gmAUV1bo3wSc/P9XVn86MGOd5X86UKNHMjomAiM5pwMPMKxtB4BKcfCvQGcy+N8wRLf5M8Hgix/pbUKfBED49KFwQrwgcAX7IyA+OQ9ihaZuYTUJN3V6cg7AE4Sj8QA5dW9qDRf9EG3gOQE2KROiXRC+SsNbBgEeD7ELFBUFo8ZghQ5Sw95vSgwJHk5OtQAc4bE8ABMRLQER5RYxiPTgFuGPP1AQDL5UYWDJMV7xkxwFkVBHcZoBokgF8w+BSAFjOQV/9MYGFzBqCaERN6FhegoyEj8TB9EDMH4K3BmRYIVutRCinUEJnRHBdDOBALpDDMBAV6BLkBghuhlXFKOHX9CeAEkRHbWhAJITANafE+EKB3/zxgY5AcZGATfGRgJfE1EgDFBdA1HGRgwAfej/RTcxD7938AH/hBLCalCiZSDAroQiqhFQ6C+a/P/EertQozCAb6SXAjvLBnzmXYvHDjGyYAIhr2GFzoQIY7ggCqpiULchAIvlY8h/jPAAiray8McIh58MIQoEJ18QPluxdQhhtQhnfRAVJTwLD36OYLfRmCF9LHVP8ayzCOcDBmzTY8BmWo1sEic1CdwPUMkmcoBN' $Zint_dll &= 'EBdTi96LdiAWi0McfDCFGA7nUPeuwAj8Mkghc9wJAhApDFFyM4Hshuuh0xq0JDOOEHppoGGVyPlqDyJ4BVQMQHTNAH80HHwMgIQGWx8RKIDFwgAoOCAkKVwkXOwoIHkTKACCAkkX6PCFUQ1W6Gp34+oQCB6SUERIKA+FHiYMoCbMD8SW+nE+FkGws+4iCFyJd66FEaY14EGOaIENCydgvjREGBwxPDU1JeQNCIkEXQyJXRRm3jEU2OD/v+iwaRLjGgBkc98Rm3qRga4RoyJ7FycSH3DHD8EHpukbhRJb3REc4d0J6NNifpkR4gFBk+M5UhJBp6PRqAwBJnwmRAF0FvHBpLC4v54wEhLFlBEw1e3+CxdAEVNRABwxvg8BJpMVTDCikYG+li8QewC2COSkRgAsO9OLwXQaTSQgs6oSh+wSCr0ALCqLwS4DwPLfHZLtXAbYBA0oTAcQEkqAXqCD3bJvFeF3BphAVCXANkIXcy4KwbJo+GEPAQUfIOso3EIrLRAlEBEwDgzxBxDIYZEA6xEhOzD7dAqRQglw6zfZhA+iENN0Idi/0iE4fVUHb98RIJqfQvdyD9K9RxIxALfugN2AEAKAGYExAHCDPjl0XB/GEjFX2WfyMaPjcXQVx5uaMeMAEQ3gyhc/6y+cdDAfwoNdEBUSfQNGs/Mh2AVyLAUBdh3RFUCBPckZo13eYgIDtNIFgAZINKA42gyBbURQFADHZgT4nz8R8gRgxRUFgCoIUG+NBPCDFik3EIRdwEbQDpEBQsUHs9YR2AVIAExRRcAEINgF3McYEg0BMAIiMWEf9vIkQXLFMGWFLqGEBW/yMISS9voGUGtQsnEDFIFFBqlQpxZ5okC0Qa6KBWdyIA86hGS08Qoa8/sSoUKLsRU4+D+0YUt7Nm2wePxksDITI1Qg7q/14KiUKVEAM+0SDPFiBnIekH3wXGEROVHAr30Bwg2x5yURTpGxbpB9tSVCBxSLIw4uETPbK4NGEzCF' $Zint_dll &= '0o0SAn5ki8OKyz+pEMXcaj1wWR+akwigIClWDQD4QwIVlQAAk/2hQCEY0a9TJM0R29gRzQGLfhDNEbhkAsUQCjPUCbOjzcd57N4g+zQhQIHFbmCxPQbiFQxTNmumEHkOoeGEEYfwb2QUXi2i8AEbBxAQD45ZfBAz8x/o8/wXBON31x3l/THF0h3plDbSiOIWId0BVLXxETjxAWgAxBIoDLDFEyNSkxwSZxKu1QABhXF7MULdIHt/MTB8iXExdUVrV0ILIRMZAmAZErKSQOB42gTyUNgj7hSgEvCAVC8wAKoZgA8tApOQ0LjOEyLT6Ck5LdUNuGyOGLDCZwwIC+sRtgqhRAIHriARi+TrASV28OAeCQ+Oxz8SM9IDjUcBihQfQp2SQUB4BBHBRoLTd+t2gTHQcD0w3bhCYAMGeEgAhid/G94pgbajXWdAaTMCwXzngxF0zFEo7UY344ERNYHj2SB5FjAR5Zo4QZI3YqCaNQ+wIH0ZTCgkWEuQEB+BA4lQECjoR3jCkBkz0L9je5hJAXN4KlPGQFJK0W7C9+8qAP02zocwfcPT7JFxwwxOCPFA98AY0EEx6w4SrqNlCOz9A8cVQdqk8AAFAvzg2KSLCI3/QyE+CaL/Adlj+KQISosKoYG2LtsQVIkTi3C+gRGxErbdQETCV2i4cREB8+AYGFohUhDLz/pIEkcwFFDKINgf+mAw9AqDrZgHV89Bx5UE4wsQ6MH9FAMD6fIiwLgd3bKYDqQ4dQ4x3T5YHrATpq76CGKAEAS0cywIGDV8zh1HwiqA5GEBhSKLUbUzgCTjp7QZeK4UQOdUEOWtExwicSDe6S4GANQkhxXwxx8CVPABCUDYZKFhJDQOcIDNRoImWSAAVCR0dA2D+AY2dAg44IMQdNP9MfhHty1WEByAlydRb6DWD+PPBBxMJHThNtEGtgRCRmJFxxLroxUQaCYdgRdSq0gBRQI8gXfldhgQeHQXqtsAgRfxGy6xB5o4EXcQ' $Zint_dll &= 'riUqTRMRNQPZO9/xJC+MgzLWgxEMUCBRejd0FOI+ewRRyVN6Ilx6Qgu1Fw8tjAzskP5eFJFz4TM3APKac+9AknNGUhLjAgAZR5fvEMH6FTCKJlQ8k9w4lXGnxOgGIIvBITfoE9gR17ohR+oh5yZUEHKEHnIkdLNzHXITSuCzwgFSQ9nOY1tDdplAUEM0pTEBNVTg71iijxER5EV2ohNBkcsbQR9hZh1Q4U8BM9saC1I898BX+M0BEYgjJAbaoAECdUYwi5aiFeFSAEoIO8uI79lGVCR8b84Qg/gQIncZaQ+QnF5ORUIJjAFVIEEI2VkIiwBJFEc7y3XS6Y7KozGIj5AC8Cg/kgKApJ4CYoAQKXAVKTC4KTCw5CnwBMKM0a9Q95MCStemmgHXkQGDnQEDnQE/sC7Xg79vlxv4C/CFL/ii+D+Q43UBD4Wghgmwjbj8G7NoROFrAEQkTPX7eyEuk9DkYh0hbAyAhAQdIH4S0zclxjGBGSBM8e1oG6kE6RZkgQJqGGAAEjoJgC6tEboZMcAJEWWMQVKNjs+CGbGoHVGSZ58Ri9oxYrshMSEcJcCSYqLg/gKfdhBSagMCaGZmxkAtAIER97EAExYS+ykhLABlcwBmL+CtHtm/ED6/xyCqGQElIAX4QhAQ23jAUwJj2BJMQlXBEfVSutIEYOYR9MFHf2z01kdPD+TRISQYDCkhUwFgqeQhRH4yegvBR3IjHXyhM5iuSwombBAeURICauUQHDEBKkJV2AV08NISUwRx/RQBIkAmeOlx15YHACyoAKUGQEwriEHEwE5cTMSggEgbdFJQr2kmC3MRhS63kSCThx4wscMikUMhVR2EJJfgEfLi1yAbKNYMsHcPMnWlaBF335ZokCJ0lgJQAGMqE+TkDCL7FSTEEBASD0AuPeS3EhbRGzEPsBMxcgbc0STSAxAVMceBXUBeJHM8FbF4H8Ex5Si0GHRQUTeKJdljFYNTGdgFqL0OERHpwyEP5uF3' $Zint_dll &= 'YkJABRAPy60q6EDUny7hySnsUJKQLwEIRM6XsQQVh1R1pUISeEY6ECH0fRQIkS8DHkCUUdQb0i6TWqD/bB1RgEEff9IR9KRCb9z/BRjdMCUrAeDksfURQU6jJRGN5INGb0BeKRxQ7Uj28Tnk5a4F5GVrgRDZ5C3x2STjnBgp+AAZAdgF2ClIOOmwFhaQVhZKiF1A/dlWlP4lTBAtSLZukteUc7ATNBXDEemRtPGSFaePGPspfTFMHRg1XTG89XYfQE7et54R5AOd0U3+AoagQU6r3jaRkzLMkjJi6xsZ/QElk3TxhjUQzi/ACClDIOmCjJFvIzC6oVERET5hTzJRU0oL8es1EBwXKzI24yG4AMLkMBwIU17wxZAbVed1FJ/TUYovolJQagoi7jcBHgWiTAACD4QOjjEI+lsXEnA02rNoAIUeZrS4aQr0QGhfJ5EMY9ivAx72OeFjAIIMYWoATg9AJDMSxTYQIRUP+AR/y48SJDEbtqEERPExRimhVA2gahAkrAPbMRwZNcxyJUQDTNh+JTkWURCCFyMGI84XoGQCfkl05QEYjT+UIdkDIhKpQJA9sK6cElSKIkKFetwDwhRRkCxXUlVW3RvY6FISAiEBMQ6ueyEBQUqbXhxHzLC+SrFznR0BEWxXAp0jOV4UD44zKRCIbgnxQDgfL2EhhR5Qw8j/v21EYdkbOgSFfpVxLx7idwE0JSJFjNOYEXDYpHItQgRUdF0TTEPjsFRQYfwlTVJTwi++Ax5N8WNHIVU09eX9AAR1AiOLDoP5SvUD+RhudRfmpaPngthoDCvZWKOLEFjqAyFsKBCJAVxFtRVgxjhgmREFDVbo7mvrEpXwGKJZkKjoEJXA+UNcwy4fsdMIgkrwQHjFBdIMQK8XEg0FUhjQVMFUOFQEoBs4RBQ45xsTKIDUOofBK4oDFM0Rp7YRf1kRCRAY2HhtxkyiChXZI/kDV1BTvzUSepvdIDXyA5FRq2YQKRO6OtAbGnBl' $Zint_dll &= 'iBEvmxCiG0H+DX2I0uuOBLQuBOBpCqIVIaEDptEXYJwLKiJ0MPjvQafQah0DgCqGgqC6FMJGQGFwDgv/HnU9YHB8yRdyZUxy2AdkhT5RaxgRZlbCZD9fiOpDwZQGiOBxEETo2wcHU1QEEF0M8PUKKxcQFkkAnlyAyqYkufjyX84G73xCnyzLGTwkVR5lwACN0DQLCenuHVShLypQQqDKCgdlIG5L4ptHaRwEbksyqQ1hekQMiYOtEWQQLmpQh3EMZAImiUgBDIlQCMdAEE73wfgvDsmwiCA7DV/hEQiJbFEtCRUQBHu9QD0AiUomCInO0adG0RPjzxQENzvBluxQFE5cFNIT0wTxh2TNBlEhOSFVAUgwnx3TDx/wzwr94DkC/XA9oxoIUQ9hYiap9TDwPUOkQfMIiUg08YTRNQXFkBjQE2/QMy9Q9QDdE6ZiBi09EVZXaiQa/9WLlyQfXQPaZSEUn05IwzQpIlVmi6CFVFEQs7whka5hkbhAAyiJQ4ZawUCSuMRwhZXxWA2TOAX5gx+TOFXHwZK4BFEQlDiFEVUKAF0wESCdOMVRdzJ1MgTzLb0TPzYwHMUAg1dg0RDFMNvWcPCWuqS1uiY1cF4r8vCViMUHcura4V9MyRMBAFf7M4lYHBCJGWDUL2EXJgzZRkerSzIM2B1qRuHucgwIzcxMPpIgAOFRJzAx+JNT5yAqAAwa2A1kkhOgCwAMXxQ0UZFQAIHtPxDoHYoGXcD0CBXZGV8XNGyiRJALFwBwQSx+X4FFADo6i3HyUKD9AmEQDhuwIdhaiUqu4AEun1c0x0Dh5a6gEETQCVJLJHIGQQQMrUQxSiQMzlIgLDWv+TA6i3KiU3EHJFEHpVcHnaZbB35VB+NGBS0wwdUxi2pwYlRRGunSAt3RAr7gWRqej1ga3TGkVhV1kNDdoFEH+UsudUAtIK0tMLe9gJtE0h4AUgdkrLW+WjJQuH31QIhvGxHtBh1VVr0aLJIoNDMNQeiy' $Zint_dll &= 'Lgn7WnU164cRRggpRCUOUasgENhqLSEzcSHQinUSDmCkIQcEiUYEAIlODOttO911Yje3KCrcE4WtAhwCmTUyRghaKhALg41WAiKTflglEgCwXjNmKtSCkG2w6FQOwJDoUNoA6os6i0Ye2ECQCJCRaMTQKmLxH4VLTjKhnUJkyxyEZ5kQFRIsbUIWgdtkERzZQATYZuEgdHA1ABkeLRAeFnCQ6EXBsF4WH0DTDJQtsIJtwhlI1RAeETD0FySTHZboxrDeUh7kVNIdkG2QHZYAMMYbNGCOe+0Wq/QQhV/FEWl4D26E1xsQxREpxaQ/CRTNML5hhoJqUhxkRLBOlRuwZRItE2WfA7khmZCQG4Bcz4Ne6x+BQSKLRreBEQbQFxgkhh2BIT1E+Y/wExFcuRE9hJU0BlEXwhDd4zARdTEgdRGFBHUxVqECaRQ9RJlPAIEx+IWBIdqZP/QmThU9RBQ9hFYqBFG9ARb5RAC5UbOauOdFUavQQ+VVGNAlQ4eAT9i0iNBdkNiCRBA1pLHrDvaHBXJ1Ug2E+eRB8UAo4hR+YnFH0Yj01TGw+K6WHXRo2RkH2B46HHLtQYLtNcIAAgBEB5R9RIB95IXQ2wKSFGB9A0kBbENCsHgFsWhk8w91GoHZGkcIVtlfCPoWAJI4MGYdti6w6L6YUEfR2FUKUMcp4h8uizuW2iDoawBfdDKqBSKMx7AiDQEgugUhIgdo+J2cGpiA7viKLGPCALdYM1/DAKG0oQgQVmoEAP9QFIvwVmjwNGcEj3QldQINZHH1zxR5DgKxWAETdheABkGARgCBBh8D8S8Zh0gG/NIHQDF/wFVeULEMNDINEBTy3wWSAgLl8B+FkSV5B37evY83gjJ4FgwRcPXgWFwLMRoZAUdnYAjWQfBMDLF4RQBl2QlF4okBBE4scBEHwZEMAxwAA8ExNAwcY4JDwDE8/D0BPkr17wOJbFEr2vBxQh1ECrrw8HB2uKYAYaUMGGpODOBLBJIp' $Zint_dll &= 'cGWomSEIbiJQuGQTocAVv8oV5OkDgoZVNPMvaewfi+g5oXgGDXD8CeHnA4cQzl7QAIU+heKTIVCg0h4CsvjIGGr/UY2YkAYZ8Q951xQBVWX1r2zLDhIkUbguRSB8Kg5xTOsqEbaJMIQgOZFEQoxA/qMNUQ9TBPIPGQ+ETykZD/KcCxKL2bkwCaypELipsBepQCcCIEMEwXIloB8Ny3XO65R5NE//GSaNuL0Q1AQt4ofwXQ4KChyg71BHoQghFSLdJYduMxD1L4mSUWL4IYbbRAkL/59dCMgMYJTGQQBxyQB9V74QArFocFAI7FdgaDH+fFBH9pNzFKaExlUHYPWfBjmtICEQMh7NSGhEZIITiVpAogA6fnnxA8CH9gFPPmBwsW4CtXB8wEwooRDHB+IbUa6FxmIbAiIZAuwnB1QqGyBdCDNr9u62IrQNvIsbIonrKTVW24DBS4KGCHLnQDP4X73hkXHhEcHAAFwMwMYAVUQMwMQAQAyAxQBXZMkJcAJvQmfNBZbiwABoHPZe8LcLcXwHFflQyMTIFKwkZH0AwTJo3EmYcoURyVsygrDzXCeBwPNAqMQJU+ggSAGqb4DtiwYAO/6mWQFw2HA8eDgDUQtxLD7QFgIQDREPjqGeYbCoQ3DbBXOVAuFjEwgxEwQdaICVbQSZAEmcabwRGNUwiG/zcLgjLhWUVkoA/2elJNQYsMgEc0tQQ9PlQAEVVUUsAADPLFAPhSv0kB5w7lAjmOjhAv+SmiWRIXBFHJHuGAG67+D9Atc7akCFEgZXcJOerEAj3EiVB2IAFHlAXsyYIYrZFTESNoFJpeiYMQgAUi1DeGGSAvUfyenrE4tE6FAzJZUD/5HtZRHeiOHuA4CAMAMDAeWoEENMugEj9Q/JI40WJjIQ7t0MG38RH2sQHIPpHT8gESCB4eEgwVo70Q8oj28eHpC+owExCMydGACAssjo7iKNhBiSU5hs5AWEUBCKIVVQwT2TChIfQ0gI6hzg' $Zint_dll &= 'jwOFlbywzRRfgBu/EiBSbFLYyM4YUx8RqUKUpRC+TXBL4KIWgMpiqFAkYlMARLHKMtDoQiALfhCLFLeVAntYlRKtDuexELUCWIUHKgHxWgEQUXe1VBRSC1AAYMMJIJDy+Q8UQImMlNejBxBQAKJ8BgUOXiFCEqenEY1S9vBQ2JEk0YNRkJpgqVgAKIDaIkJhLh5m+sAw8pdADGjp594kIBZQKdygmQGwYgGRfu8IE4Di77I4hEGnwCCQkDiEkf5YA0HSTxJqsSSAl0BQwYkXv+ok8TMKgocEUNGHF/uhJDGHpwuAzCBUUdRFBYDk3yghhQJC3SkJ3B2o/4ojdcFaGYVcGRdVGcAZ2ZuVLnCRvtEFHRADUdAFwuWPEvqaAABI7S10BwgMgOnfUEDylx6HzfYA2kzAFt/pvGwPEAGRfsoW7+mgbCcdDZM6AkkFgOStI4XBgKHCElQkXOl4MPHewenXBC4EcJn2Em5RxZH2abfniQR5AOEGheEWr+A26UQxQfEAQOkWQRG/6UUPQaEKDBAREQCxIbUkYV9m3E4SDgUk6SRF13j2QLjMAqHr8hADjVMciUMc2qXwLw8DoUQAui8P0bhkgoggZLBYMS8PEmEWGv4uDzM3D/EuDxJlkK4YA9jkxwLHg+7HsTgE8oY2hC50gdM4x6GnBP8VYnxmLeFPBlZosI0GxjYEFkK5YP1K6XvsGLxnYs6rArsBC+kbuYD/dB6LIA2krRdDJolLJhqLFagsoBwrrCCA6ICEkM6eRlNeVzpibUkFgOSpI8uAdNcO8ZBAKZw46Y4Y6bXYXYXAGp/Yco8SlIDG8UCIyAJ2B7MJA5Get4qGbWhWhhZeONCsfwAH2ay3wSPRrLKFkK5SmAPG99CDTgd/LQEaFOkTWEBefOQ3AklO2BXOcVaHgV1BeMVbRreQvemeGOnTyRYawE/d2PCDxtUBgJMeHpZQAKMdZ3UV2DAVYIoxUACDkL1FsJJOif8BSPghergJ' $Zint_dll &= 'kxshahAABAYBQpdehntoVDC1cXWw9+AcAH8KioYCwZZ+Q4sctHc0SHsRg/hjf0YBML4YspJ+wIsAvHfBG9JJICknDHwweQB1E6PfMn8wI4kP5SSC8TKIP1OngBCYfx5GscBFt85c0AOF/tkDtmRY0QOCH0diXwNRALLmgPBX4kYcIOmEKSAZdQmFyUB8bGCwfj6IHxJTR04DWkqg5bctJmD/OXAb/RWWEGDAENPvMAv1Jjo5fyADMGiMvGLtAOgKHUKQvtDohhBUtwS6DWLxUSCuAPDtQEgyH1F1yRnBAuuQFCigzhh2xB0BKCBuFcAoY8sQvPwo46UVAOH0sY9DF/kUSHQBLUh0HUh0DUogwYkZ6YeUABOKJ5GutwxDEjOR3gZDWjCxXRNxnRqhulAUDmXBJVQBWgMg7xE5UlXBsP8QELdPIBSNzh+BkDiR7lFwlDgEYZf+xwNCB34/kP6PxDH0dCO9hzg8SWQlGrIY4k4TidphgwH2SpnxvwXhcigad0GpaSHG4aH6O1U5ESW2QeoPe/EIIRYQCyUQbQFXA9F9lD12qJBhfTEaE/fu+xBuEA8wnSDEwUl1Mb4RIkuBb2VOFA9gDuFBIdB9EiHQJuuyKC4BA3VuPdACPaAmMeDfAhc34GBRvyIQbhEg8BHWtYJ/AOKHsr6QBDCoCrFbAbFbM0VXM7fYLQEbjdu1KUZJk0TbKTJfGhPyUHglD+EsahQmEkBIxALCA/HmDwHFqzcOg5OUEP0A/gbSIZA+Mg0b8YcYWQr/kI1lNSmaQzYQAOk3KxqxVTEKAUC3xZIXRZUX5mxS/98xEeTWbe8VjZAwgQmVEIFzWSoJkAWDV2AJIaFkdTzsbBfAvueeE+wGx775gTqNtUUED4X/0iFNsAJNoBoPhUAOJdEFiNQF+1BT+AEoDaADDcD8Wzow/w1gcl/QALqNFtIXFmYjDAABHt+tNxkO5MYAobc3s34RxgDhxhJ2dHUOKGCmGlBuANMN' $Zint_dll &= 'gWSPMpvpIADgObJuNREOGoEuAEA3gkRHcXJulZ8wqByQyCLrGkITw0CizyBggwgsg5/ozSH6KkA2AhAR0dHSo48MO4gT1RJkD406eJGOJH/uNQwqCRV0T5De2yghTPAB3KUFwv0DFF9zIYzF0AZPsB5Glkkj9gFqAY2I4gsiRu++AhYIgLJuw/YA2K1spcH2ALRsVFuA4G4BjG4gAVP1bw0ctVWLCyFoBo4fEIVOeLE+HAJEZl0TyXQP9sQEOnQKYhFjtBBkwIYFFgH2xAh0EYuTWDEQHI6wEJ2IInQAREcHCqgCdAaJV4tEhEYkBEThvBBXREBAP2OqETd0MoP4OIXOdYCvRofyqRox8mgYAmk+EEp0ng7gRqcwCIJ/4dQWGHUOiYuzri+xHgbUKENJonwW4iNgroUyLQdab1KYk3lwipyzSHKF0PCBegAsUVIOdQ//kD5mYToSiQLrHzr/kPIo4uUHBQaiAJGa9CUVOUHlJQDmKHJgELPAB5Q9MDzoB8IMhdIPhLvhEQ6y8PjRDpHISHIHC3IEccIETiWBa/M80GMRMI0AN+YQgzkAIXRne+wwfPOD+m5y0H9MCyJFF0cvNWUCnHGGFcFhMwB18BEGEgkhERP2XSIHsywozpu8IMFBiwKxAWkiEhuC4JEoxO/MKAIJ1nDgJPAKBbfSEUNi+yLqOhNRRlA3EghCO6IsQWTgQl6TQ8QLTFZ1UgE7hjBh2UI4frZgpVMEDRyJSPwKYuCDORz+3wATaGxkI/e8MDyDwQzfgSJqNFJ4T2phwCZGh9EvEEIBECU1hT4E4f8PtL6YsEEjFQU1hV5D/rBXG6KJQCEdN4u+XSHu2RN98gCGA4BSwGc9cB6THRYVyHkSRwwODjT+I7PzH6nPEthhBxMMFqZQJ7BV53RggP0Toj1ZJdojYWCUwkQySCr+Ffa6N0BHQgBS97U4OeAtsTj4fSYOYWgqk1/kIMcOMtot4SYKNPCvTxGaAmBhE3kA' $Zint_dll &= 'xjrRYUEEJpex/kwNo1Uh51UgtFoVkq4YEGEwkhEyD6/bnSXB4BkHUeUuA0AWNQsPr8kgM3MwEoS1CX5QM/+6/LC4CNoVYVRUoEjxMHiMMIAIpY80ilQPCP6IUPsw9o8IFcG/uBgloUjlAAMS/YuLYRAPr+OYJTse8Xy1m1IgHTFMkinR+EfhJxA1G4JDkkEQKg8gvxMokB8qARCx8gQOGRQ1MWPv1ioG1nUGi9CNAN+ZElAGO8Z1CovZIn0AUK6LdyB47jfB9mYnEQkhEAiLfw2tFvIRMPUGIRAofmQiLTBNAwI7xnQOi9CaOAS17XsHFwMQQEk6RQq08hfhoFPj63QTkQyCBjGFvutrHRJaAsAwA7z1VZjsJdD1UAkcSKwhFMPWthdghiCESkAJVoBgQhH/aJHqRRb30gVNkIBsEAQQIQygv0YAAZXFAacMANJGABFi4uYrBwYBAgJRAwACAgMCBgIBBkwCADAwgAREIECgzRGVAwUABQUGriIgAAEAKcQO4HQEEAUBcQQQcCzwyAAEFnIEEK4cADVXQQDRzAHHbODOATQlb+5HwABGDBANF0AAYYpHALHLAlViDODHAJoMQMQOVYYM8MAHKwwgzwJaoB0AJQ0A80MadQzwvsoDixyQxgc17QB8kSXOAyAcwBJAeQwPQVXcBaDED6zcoFOnQADRcdcbI8ICtrhc4MIB/2Wgp4kwFIteBgwz7Tvdd2Mg+2wwgQE7z7qj/A+F014QsQ5LwCEoANodcIWG5CQQIv9TAmRAsVM8zSOTA8YmmgFvOyCKD4TJiwDXdGMPvjKD7gIwQoP+CXavukECADP2A+6AOgB1AOSD/QF1PovwCIvXOg6G/aAUIERgRJhcN48WCw8Ivg6D6bL7kHD3c21BGIJMEBAMIxUMM5wDYz4OjRJyMNNeRVc5YXVW0oBJODPtAnWiaDBRBDsA1XQmixKJFbiAOLMoRfCVWMELCBNJBItRCF5dGIkVwDQADl9e' $Zint_dll &= 'iUktlJHYgheJLVixaEAexwYUPOFm4xeFIPZ+7JUIUkHz2B6CETpSF2AFrPUkRRQk/1EMi9inQuW0cwi1wVFn/xcdIPEzgM7qoWhACLzoT+fk5ogNUEf/biBZDHNyEEAAA+iKB4TAdeag6RNPmDK96EzXEKIjEEAQFBAkxAYQ84A56uHw4CshxYZuVRDqVpNkayMOGKQW8F8UIyoALaShBDpSRUhFDr0BnoxQuL1sJCUeInECkQfF2VqqINdVbPYK4Xk1aHwUQIKGFzOBRhZVgca0DBQ9EGiYtCIpGh6SzwBaDjWqgyBIBDvNdAMziwmJDcw4obwHBEoEiQ3QLIWQmNJAzUJC9lowit1TIbM4XFqEHIktsJHI1IIZiS185ztmg/hGMJ85EDl/Bt0vDl8aBdMD4DQIrhKAIEcRKJXOEi0QURjAJXMA7CvIi8SFAYsA4YsIi0AEUMMKzP8lPMIjwAxgU0ZWiRQLwHXHZjHpBjMU0vfxsSYMHDC9zhG0iKw5JqOeEEwQnQ4QvR2tHo29kAxQR38/vwh/TwYcWPD1I0Fxbz4QLQfisMMJdwhyBzuArGAX4DQjvWh84LUlDAHQC4YauUDwQSC5II72QAHCM9LrelC5IP6CQhW5wMi5ABRWkRAA0QrE0Apw5ruBYGGHsNIesKFIBByAAMgBDPfa99iD2nkA8ZAAEAWRDrGATAESDHUJfRT34YwwpXIfXi2CkAgxQDLhIAPT+MwMmA80B1ABmA8yZ/DQigA9rT4cHQEY/iEyjV5VMCM9zJelDcLT4MMbChF8Ic5HGP8lbOqAIzcGdQ45IQXcuQZ+Lv8NHNGx2EDIBpIiEIMBDgQwdT8/50DGg1EInDUKhA4VBDPA62aDHSAAoTSh7AUQAAABKqPkOIC+uADxXwWSZZG13tMIkIMpLQwwIIsNhGHVGMe/QwAvJ7HooNMBB/9B0Xgy6E6wrj54DQQyWEIUAFleagFBWCJrULXIPrW4zh0Sqt0O' $Zint_dll &= 'fV5xUJcw2NMHQQCwbjLoP3AG4S+AUCcSyh4Jk3BllTL1/yKDwQAC6BVuFkCdEBAc4cQTUw4b4R8wvdkM4bMSN8aTgB6vYwIefaCYATBQZwIZ4EABDFA3EFLEMNjHcAFAF9EGhdAG8gkLEsIwstUVF/BfAlgcodgGUAHGPNADGgB1Cv8DdCQE/xUAZJAgUwvw/7sH0nuQGwBAKcMMngxQhcoAsAygywDEDFDFzADYDCDOAO4MUGXPAADMgMAAEAxQhcEAIgygwgCKbFDFwwFGDADFAFgMUAXGAGgMAMcAeAxQJcgAjAyAyQCgDFBlywDCDCDDAIBtEIUAFBMzM8MAMQzyjyA8ARAkQCAAgGQ88g87lIg0AMFy7AZA0PfPenzLUxRHQtiVDlESRF8ZQiWMVR8WUyWBJASgmZnhAwAAEQTohgtBMDEyMzQ1ADY3ODlBQkNEAEVGR0hJSktMEk1OT0JTMEXloAhYAFlaYWJjZGVmAGdoaWprbG1uAG9wcXJzdHV2CHd4eXrXqBEAADABMDAxMDIxMLEAIDIyICAjMwMjQwgRMDMwMSgwEwME0w8iMyMDMyMDEzMDCQARAwMj8wsRMeSADTRQAcAATPCLBDJYARA9AHyQBoEY+6gCGmCSCwETM6UAjQC/dQAwtQK1UO0A4SLJAOVgbzNtESkhMmEDtMEGJPtfHQMQhSE4ERlVI9EZFA3+nx1VD1EelRERH9QT3iIVFvGfI9U2whoAkRocQ1UoGyYJWCEZJgAmsBnQCRDwGRAaMBpQChBwGpAasBrQChDwGhAbMBtQCxBwG5AbsBvQCxDwGxAcMBxQDBBwHJAcsBzwBSDgJaAZwBngCRAAGiAaQBpgChCAGqAawBrgChAAGyAbQBtgCxCAG6AbwBvgCxAAHCAcQBxgDBCAHKAc0CXABSCQGYAZMA9QDwBwD5APsA/QDwLwbyEMAwEFAQcAAQkBCwENAQ8AAREBEwEVARcAARkBGwHMAc0A' $Zint_dll &= 'AVsCWgKXAZYIAfIA9EUO+AD6CAD8AP4nORABBAEABgEIAQoBDAEADgEQARIBFAEAFgEYARoBzgEAzwFZAlgClQEAlAHxAPAAawAAbQBvAHEAcwAAdQB3AHkAewAAfQB/AIEAgwAAhQCHAIkAiwAAHAEdAdAB0QEAVwJWApMBkgFA7/0PagBsAG4AAHAAcgB0AHYAAXgAegB8AH7dDgGCAIQAhgCIBgAA4BHwESAdMB0AUCVAJRAZABlA0A7ADpDmnQ0DABAFAAfCgLAA0AAA8AAQATABUAEAcAGQAbABwAgA0AgAEhASQB0AUB0wJSAl8BgA4BiwDqAOcAZAZCYeBAQABlYAoAAAwQDgICADEgAUAAAWABgAGgCOAECP3gEwEmAdcB0AECUAJdAYwBhAkQ6Arr0HZPZHEAAAAH0QfSB9MH2AQH1QfWDfFwEAHAAAHQCQAJEAJAABJQHYAdkBTwACTgKLAYoB5wMA5gBjAGLUQvAAAB4AHwCSAJMAACYBJwHaAdsBAE0CTAKJAYgBAOUA5ABhAGAAYOuCmgKQAQDXByAgACFGBVAJgBKQAhDAHdAdsCSgJCBwGGAYMO5RAF8OAF4A6tRSCccS2AAHIgAjAJYAl4AuBbAS4B3wHZAEIIAkUBhAGBA+AAAO0AXA5Z0HpAMMMCyTfUACUAIAgAmQCcAS0BIAAB4QHnAkYCQAMBggGPAN4A1gsAWgBYBObQynDXBgAnACoAmwCQDgEvASIB4wDhBQJEAkEBgACBDQDcANkAWABQJw3gofsH2AApACAMAJ0AkAExADEEAeUB4wJCAEIPAX4BewDaAtAHAFYAVg3iUfwK1woAKw4pYAn44HMAMQYB5wHhAkAEQg0BfAFyADCwBVCABUAOUN9AHdByyA5jkAChAKQBNQAxCAHpAe8CPgAyCwF6AXcA1gzQAwBSDVCUpwLgAALwCiAKMANgEANwHqAesBPQIAPAJ5AXgB1QAE1ABRAFB1IOQH' $Zint_dll &= 'AOMH4gfhB+AHEN8H3t52AQADEAMAQApQCoATkAMQwB7QHrAjoAMgcBdgFzANIA0A4ATABKAEgAQAYARABCAEAAQA4APAA6ADgAMAYAMgAzADYAoAcAqgE7AT4A4Q8B6QI4AjUAcQQBcQDQAN8AQA0ASwBJAEcAQAUAQwBBAE8AMA0AOwA5ADcKMAQANQY9kAqaYM0AMQAB8QH3AjYCMgMBcgF+Ds2gDKoHZkYOzdAMIAwAC+IAC8Fg6AC2ALQAsCIOvkAK4AqgCrAAA+AT8B8gHzAAE1AjQCcQFwAAHPAM0AywDJAADHAMUAwwDBAAC/AL0AuwC5AAC3ALUAswCxAACvAKwArQBAAAFBAfQB9QEzAQIyAm4BbAFS7AAQYBZAFiAWAAYQ4BXAFaAVgAUQYBVAFSAVAAUQ4BTAFKAUgAQQYBQgFDAUYA8QcB8QIwAj8AYQ0BawFpAWcAYQUBYwFhAW8AUQ0BWwFZAVcAUQUBUwFRAV8AQQ0BSwFJAUcAQQQBRQFIAfkA8Q4CLAIqAigAIgYCJAIiAiAAIg4CHAIaAhgAEgYCFAISAhAAEg4CDAIKAggABuIQXaUSAkBf4B+gH7AAEvAi0CKwIpAAInAiUCIwIhAAIfAh0CGwIZAAIXAhUCEwIRAAIPAg0CCwIJCAIHAgUGUxAg8I8RwB+gLx7tFiBOIQBOIk4jTiROAAAAJU4mTidOKDlOKSxQ5k9AcEdO/diDABUAoOJkRCfUD+DIFCtORXQEsEzDguNERGfcyxAtTkPtdAgwPOfSHcLwCELsnxDx4hTUDZ8A4wTUHJ8QEeP00yufIOPk0zqfADbTSt8AED1OPE47CE46TjmsgON0M+Bk41TjRMMCAAIgMEBQYHCAkACgsMDQAODwAAEQITFBUWFxgfGSocEiAWyFBioHgXvwkAOEjIJ/GxsVHMAgwPcIHRkeGhtCTU0AiCUEkEgDBXBZWARABGBM01QF8AcXUE1QAQBMAH/AJwkT' $Zint_dll &= 'VRUuAcDjTwB4ngRA7NkAVeaWHcBT3ABqqgAQ7ggAwCgALWAxADYAwDrAP4A5AD4AoEKAR4BMoFEAAFeAXCBiAGhQEQGAYhUATGYJYO/YAQBoAkgDUARwBQCoBvgHdAkECwCyDIgOaBB6EgCWFNAWMhmoGwBGHu4gviOsJgC4KdwsJDCEMwD8Npg6TD4YQhwURlQ2AeDuAbUAsAMAoASwBdYGFggAagncCmwMBg4AyA+UEYgTkBUArBfmGSoclh4AGCGsI1gmKCkAECwELxwyTDUFiDj0O0KOAgBiLgEAUAIIA9gDuAQAqgW4BtAH/AgAUAqkCxYNnA4ANhDkEaYTfBUAZhdkGXgboB0A4B84IpwkDCcAoClMLPguyDFEMF4QgA2A5DgBWAIA+AKoA2AEMgUADgb+BgIIEAkAMgpeC54M8g0AUA/CED4SzhMAbBUcF9gYrBoAjBx4HnwgjCIGqCTcJk4eBOAgAgKKHTG4ATBuEYBuIgIkoFYQAGstAkJAPjw5ADc1MzEvLSooACYkIiAeHBkXABUTEQ8NCggG1UKhwBAb3gmwY2EAW7YTgLdnNAErPBIQwABAQM0YzAw/5gfi8PERLS4gDyQvKyUqH+E1ArYZQiH/CKOcAQBCFWSDdDyCMP8AwhFuJEFGaMYiJFQE9w9VFTANYHjXD9MIChdlQP9UVhqWEklK5XAtkoVRNZL/DfEAlXK9UMwXGFcq3RDLS//1YjXRNNcRVzDNatWUAPFfRFwjB3bpZdlzVEkCLgkAUEUSRCJEMkQCQERSRGJEckQCgESSRKJEskQCwETSROJE8kQCAEUSRSJFMkUCQEVSRWJFckUCgEWSRaJVElQCIFQyVEJUUgQCAPAS9CL0MvQCQPRS9GL0cvQCgPSS9KL0svTiwtTiKxFP9hHhEhFmEGEDaggBOJ4Q8KJVYlQCcFSCVJJUolSiYhVkHgFD/hFQZCEBR6ouEpBkJAFLlQ9NdhLwpGo1AVE+FDBl' $Zint_dll &= 'UgFVDhZwBWoPAFneF1CyVMJUAtBU4lTyVHK1AhC0IrQytEK0AlC0YrRytIK0ApC0orSytMK0AtC04rTytAK1AhC1IrUytUK1AlC1YrVytYK1ApC1olUCVRJVAiBVMlVCJVYVBhAUJhQ2FEYUBlAUZhR2FIYUBpAUphS2FMYUBtAU5hT2FAYVBhAVJhU2FUYVBlAVZhV2FYYVBpAVpiUWJCYkhjAkRiTWLzAWNAYhNDZkqhFjRmNHAGNIY0ljSisAcGP9MvYV0i89piVmBCB2JIYkliSmBCTWLz8itiTGJNYEIOYk9iR2RRYEQCZENkRGRFYEQGZEdkSGRJYEQKZEtkTGRNYEQOZE9kQGRRYFQCZFNkVGRVYFQGZFdkWGRZYFQKYlBiUWJSb1IDYlRmUEI2U3xjDDEns0TEQTBKMdUzSEmILzb5kCEUmMEJCT9sRMZMZU/zk63AEgTNQLUuPUC9Lk9d+vByk8VrrVwtXTFg6TDfJPMjEgwWChcokygi1EU0oxJN224T9wLQoPoihs+gADsPb9UQARhhYwMBBwEC2jJ8e9EAbn8hAUhQOGK8Ctqwd8EqBxAcDABgUCJAIBhEAwIOEGnkd2BWN1EAkAlhchgAEEcMBjQAAAGFADwAgoCn8HyiuRAoMKGnzQAfDyDJIMYvjUehEVHQCQCAMaAUAENRAIBwcFBAQxAggAwCiiogOM0F8BoM8SIRBGGsAImQAEiMCdAyEhCnMyfcEXdTIDAhEFAQitAAMDAx0QRwiMQVR0wBhs0B1yGwQw0AHADwSMkQGg+wd4lUK+IOwXbSPxIQUDCFkHGQECPRGTwCAA5v7F8EoGBog0UA3QE8Io7QFfBc0BN6b6UDXTGxEvwxjj1QKM0DeDqOhgBRjJEu51EoESrQAGsRCM0BOT7bEFAZAikEjSCtIDgMB0UCUgENAK0wGg0vIn0SWRC1FRUWbRJVIJkDfyaB0Ye/4TPQEEEFFRU4LfEwIJPQEVAE0W' $Zint_dll &= 'zM8V/x0gRRHZAvUiHTE9ARIgcGwA8dARegEAH/Un0SGdBOBFJj0BsAIA4CaX4QfQatJkk1vQSVAB0GSEAHTQJfA7tAEwQHAcHZJKZYBgQC2dNFqE0AFR0dEBUIaSUkPQNxBfJZAwkVLSARBm7tET4I8daRe9JT0RsRDRFgAA0AAgewvCGH0UAnET3JEXjFHQbRGc0SUwkLgjApAT1H9TSIBQAdB/9tgKQKVFwhgAULYBMPCM0QpSk9FAULpiAvCeW4QQ9RYDjRBNJiEYjOBhz3+iiQjVQmkLeRcI8aEA3Tas0BNw5JzyygDyMzDABwTAGyFB2SXNER+YnyudHdEmmTORYGk3nd6uAdfS0BAJkYATEE0QHxuRJ/HJCdI3oCP0whj+rQC5LhFFpR4pLVQg3QcTfzHdP7UKsR2pFHEoPSGFB4+MwE0u0xwRRBALF+EynoqBGk0GLbY0zRGNAvg9JRkoSSeMghMAAH4/hzbdH4iQzZFmEavVCjDcZNGj8IyFA9BzoQcw+CE0pQB5Fa0g3RYgKjqfrRABA0EVWTJxOGkfWRKPrQBx+zudJJELKSWNEvGdJH0T+RaMIMzc0y7gzx8EIPUIABFSkeSCIwAPABOeP30cZgEgPTAqAoEbWlGQHtBb0S5B9hbk3+uR2VIl03YgOzAtFV4EUnsDNOQPEEVPAw4FERuS/1NU0JpiIFHUCkDQocLfA9F/ABchGjkgvs5xNe5jBBAT5SxQQQJZKsoCA/AAgEqL5BgQ3RKhEO0y4xPVID0B7UL5hUq9HvEi+CkwDR38kf9SrwAAoJRzxbR7UKGDMBoBEkAg6RHjANAuwwibKE7dLwTAX10QDdP90mSR2cEI7Pk/TwCCBlJKUg3RHFA30Qpy6DwwPctRAPEHfTPdEfh9E/oB0QohCAB9E46cU/yGRtL+0QwlaCBJBckwAAAX321VbglSoAdAzSHxEuPtC6kpjADzc9WsYU1A+MURnQThLx0wXgQRCJHl' $Zint_dll &= '39CCADE5HSlJEgkDjpcD8CEdrjUhCeKOcN0GBTmMMBjuAQAwMsvVx9LQwR/9kg3Qx9LQYMUQrRB0hH9eTgiSWlPs44Qg7QJVIR0AH8VVYP0HtTXtImEjagEQrFAQkAIAYHEixgj+ARSNI/ERjRg+A5J/0gpw9oM/1lujFyACCtJb1ArSHPKBm1zGGEUhyTmM0/Qx3BzAKAmbZwANCyIQg9+bEhKQkdIT4qggWmxp9v4AIZYgzhAlRDAE+RYlAAAPAKs9a00WkGEgAH4AE6/lIM0BdSLdBvwObV0b/hklbRu9JV0LqFFS0SXR9APu1rXQfeNiIK0Q4TcqBvPpJhGxcJ4GEdmDSXDRDGDcAdGI8i4o1xORkhHATxRNNgYKgAp5Eu0SQFR/dA0kiRSMAgINJF0CjPLvThofJVAqC+WPQO4L1QEBEJYL9M82eTKlAjgSHcBozgjCSP8yBJEkgREdKQBhjUD8AgD/HghQmYEDfgUEEOYSpOgwxhXg71whfhfjLyEA4adAjKXcMAZfBuoDgqAZBi75AVDzQBLnUxCgtvGBIioLsMwIAI4/JXY2YpIDkQ2RF5EhkSvhnzXhlxwA4ZgfnK9gsQC+LwDyJ/SVAgnwAuIEAZBePAfkAI2PJ0kmAJ8Q6CGv8wYcHR54H4CNcqiE/AAgISIHIyQlJidE0gfv0C//8p8mj9Av0zeP0C9Pw/8I/TJ98wgwUgXhnQUcbj1AY5ACaG5XUCTBAyAAKr4pwOSOBUSGPQgTACymOGALUCAXwC2A7BcPEJZacMVCC4y2OQCT/0BQTlvhbrQVvOXqFLk8wFsEQ9Dqy0UMrlxgYaEFNKFgzgVRFSzgYrICDSo+l4AgvzreAFTy4KL2E7ThR0aeZKV5Uv9qJiFCBoomgTYkQlVMwmf/WicEAtplxBe+J8IpiCFeJv+Eo60yZEV7NKOtMpzUA/TPbxRinlNwwVBOLAM/FPGvnSIkRhE6KkQyrMUUQm/x73gGJmnj' $Zint_dll &= 'qDIwwS1FUYUgNPFvijbeaea1MikwDWBURIw1IVQzgi8jgxE0Zi8lI7MKFTQKLURDATQgwAT/nCL2QjzCFjxBFcyTCfFOHmwDOzSqMEEkESEY8Y8jfSAUAl8kQxHBQCTzz1oQkRPCQBov0x1SBcEB/h0gJENDZNUq1RKBEzT+NFI00iRTKVNkUzdQkQFXJwQB/kTRngDIEQAFN/+uPZQHU3ySEfSQLGEQJWIA0frB71gQrgXhXBDKB8T3K7zvAAAAoCkUAhISFCIEEDIUQhRSFGIEEHIUghSSFKIEELIUwhTSFOIEEPIUAhUSFSIFEDIVQhVSFWIFEHIVghWSFaIFEBITIhMyE0IDElJjhQY2ITchOIAeOxGSEwIT0hIS4BJCsgIQ8uKx8wgAISsmMSYyJjMCJjQmNSY2HjsvYgJwY4JjkmMCYwLQYuJiEmQiZAIwZEJkUmRiZAJwZIJkkmSiZAKwZMJk0mTiZALwZAJlEmUiZQIwZUJlUmViZQJwZYJlkmWiZQJAYvJismJSYgIAEpDwoSHAEAFwUSJhYbDB8gCwcrLQUJASQgKAQAAyMIGS0QGlgPcNGHjf4PFUVPT1RBBPIIACGEAUQOKN8P///09FRUVFXL5uwdyGJsFMhtyeJsdMnibfzIJEgsyOIsNEjsy+Is9EvmLBxIZix8SeYt8ugS6HLp9ugyaDbo8mj26/ZoEigWaHIodmnyKfYoNij2K/4KK46C76cNPc9DDRTPTgrrjr7vpgppjpZvogoojoIvow18z1ENPE9CCuiOvi+nCRXOS42C72uMlu8nCzmMgm8jCxTOxwl9zlMJPM5BCRROSI2CL2mMvm8jC3iMli8hCzxOwQl8TliNvi9riILuJczLi4Lu7cxLiZTMSYmCbmTNy4i+7imIlm4ri7iIgi4pi5RMyIuCLuzMWYm8TEiJli5sTciIvi4sTNiLvi7lyELsZcnC7ebsLcjCbCTIzcvCbOTLzchcyE3J1EhMyc' $Zint_dll &= 'IsZEnCLe5sLMjWLCxIzMvWLOxLzEheLGxJ3i3i6CLo5uhiaGbp4mnu6CZoLujiKCZo7uviKOZr7mhmKG5p5inuKC4o7ivnChXOi40W70mNAm9HCn3Okwo8zoEKFE6LjX7vWY0+b0iNFi9DCvzOsQp8TpiNfi9biQLuRc2NzIuLFMyJiwJuy4k+7kmJFm5IiQIuRE2NzLuLfMyZizxMiIsWLsmJfm5YiT4uTE2cTLiLfi7VyILsxcuG7E3JgmxEyYJtzcicyI3LlEiMy4IsxEuO7F3JvmxMyZYsTEmGLczIvEicy74szEueLFxJvi3S6ELpxujCaMbrzuhGaE7pwihGacIpzujeaM7r1ijOa8YrzmheKE5p3inOKN4r24oC7o3NBM0Lij7uiYoWboiKAi6NzTzNHE0Liv7uuYp+bpiKPi6MzXxNNckC7YbsjcsCbITLDckcyQRJAi2O7J3LPmyMyxYsjEsNyXzJPEkeLY5svMt+LJxLMuiG6YJpjuiGaI7rgiiGa47pnmmGKY7ovmie674ojmueK45pvimVygbtAm0NyhzKBEoO7R5tBi0NynzKPEoe7X5tPi0S6QbrDukGaQIpDuseawYrDuk+aR4pDut+az4rHAqXDqnPpg1Bj1Rv1AqBDqhPp47V774JQ45U75cNqc9jDKjPJgtBjtRvsglAjlQvkQ2oT28Jq85njdXvdwipziOM1O83C6nO4YxUbxMJqM5hjdRvcQioTiCM1C8xC6hO54jV7jvM54vV7vOIVO4ZzGOJ1O55zejMIYjUbjjM4YvUbvCIVC4YTGCJ1C54TevIZex7yeXt+cgk7DnI5Oz5y+RsGMhkbHjJ5G34SCQsOEjkLPhL5eg16PXr9OgU6HTp9Gg0aPRr9CgUKHQp/w0rz04K1469764KQ46U76cNac9TDSjPRgrBjrxvogpAjpQvoQ1oT1eMle8vCyvOzwlrzlcJKc5DjZTvY4y87ycLYYyUbyMLKM7DCW' $Zint_dll &= 'jOUQkoTkCNlC9gjLwvIQtoTtvMR4mV7mvNx4i97iOIlO4ni7nMw4uU7unMU4m4zEGJlG5ozcGIvG4giJQuIYu4TMCLlC7oTFCJvC5oTdXsK8jF7OvLy8hZyEvJ1OxpycTt7OwpyNRsKMjJy9Rs6MvIyFhISMnULGhJxC3sLChI3CzoS9XoZent6CToLejk6O3r5Ovs6GRobOnkaexoJCgsaOQo7GvkK+wobCnnjRXvTwprzpcKKc6HjX3vU40870GNFG9HCunOswpozpEKKE6BjXxvUI08L0EK6E67zIeLFe7HiT3uQ4kU7knNi8y3i3nMk4s4zIGLFG7DiXzuUYk8bkCJFC5ITYjMsYt4TJCLPC7AiXwuWE217EvJhe3LyJnIi8uU7MnLjexbybzsScmUbEjJhG3JyLjImcu4SIjLlCzIS4xsWMm8LEhJnC3ISLws2Eu16MXrzehE6E3pxOnN6NzozevUaMzrxGvM6FxoTOnUKExpxCnMaNwozGvcK8woXCnbzQeKPe6DihTui805zRjNB4r97rOKfO6RijxugIoULonNeM04TRGK/G6winwuleyLywvJGckE7Y3sm8s87InLFGyIywvJeck4yRhJBC2M7LnLfGyYyzwsiEsYyXhJPC2V6Y3ohOiN64Trjemc6YRpjei86J3rvGiM65QojGuEK4zpvGmcKYxovCica7wrle0LyhnKDe0c7QRtC8p5yjjKGEoN7XztPG0cLQnK+Mp4SjXrDekE6Q3rHOsEaw3pPOkcaQQpDet86zxrHCsM6XxpPCkd6gTqDeo86hxqBCoN6vzqfGo8Kh8NQ89eCoOOqO+jDUDPUgqAjqgvr42r72eMqe8vC0PO1wlBzlONqO9hjKhvIwtAztEJQE5QjagvZ8zfi6vu48xXianuY83TiKjuIczTi6ju4MxRiahuYM3QiKguIEzQi6gu6+xnydvt6ewjyNns48vRyFjsYcnY7ehsIMjYbODL0EhYLG' $Zint_dll &= 'BJ2C3r6Ovr6ehp6ejoKOjo6+hoaGnoKCgo6Cvnzp+Na+9XjSnvTwrDzrcKQc6TjWjvUY0ob0MKwM6xCkBOkI1oL1+JK+5HzZfMv4tjzJeLKe7HiWnuU4ko7kHNkcyzi2DMkYsobsGJaG5QiSguQE2QTLCLaC7XyJvsx8ub7FfJuexDyZntw8ixyJPLuOzBy5jsUcm4bEDJmG3AyLBIkMu4LMBLmCxQSbgt2+hL6cvo2ejL69nryehY6Enp2OnI6NhoyOvYa8hoWChIadgpyCjYK9+KK+6HzTPNH4rr7reKae6Tiijug81xzTDNE4ro7rGKaG6QiigugM1wTTfJG+2L7JfLOeyDyxfJc8kxyRjtieyzy3jskcs4bIDLEclwyTBJGC2IbLDLeCyQSzvoi+uL6Znpi+i56JvruOiJ65jriem46ZhpiOi4aJjruCiIa5griGm4KZfKG+0Z7QfKc8oxyhvtee047RhtA8rxynDKMEoY7XhtOC0b6QvrGesL6TnpGOkL63nrOOsYawnpeOk4aRgpCOt4azgrG+oL6jnqGOoL6vnqeOo4ahgqDwqXzqeNQe9XCoHOoY1Ab1EKgE6n7t+JQ+5XzaPMp4tB7tOJQO5RzaDMoYtAbtCJQC5QTa/Jp+3XyKPs18uh7FPJoe3RyKDs0cugbFDJoG3QSKAs0Eun6Nfr0+hT6dHo0evQ6FDp0GjQa9AoUCnfzS+K1+6/ikPul81jzSeKwe6zikDukc1gzSGKwG6wikAul+yfyy/JZ8kj7ZPst8th7JPLI8lhySDtkOyxy2BskMsgyWBJIC2X6Zfos+iX67Prmg5Cj5QNlQ9pT9QMvQ8qDtaPtAiVDioMwo80C5UO6U+6DFaPFAm9DmtPmg3Wj32v2ghCjhUMaU8aCcKOfK+VDelPfQwqCNaOPQzrTzoL1o79r7UIIow1COlOMoz8rzUL6U72jB0Ia04WjH2vHQnrTnaN/a9yiBlMEoh8rhlMcon8rn' $Zint_dll &= 'aIO0w2iP2uO0z2i/2u+g6Cj6QNPQ9DT9oOvo+kCRUOQU+aDYKPaK/aDJaPJAs9DsNPtAl9DldPmg2+j2uv2giCjiUMwU86C4KO6K+9DENPGgmWjmmvnQ3DT3oIvo4tDNdPOgu+juuvtQhBThKMaK8VCcFOco3or3aMLQjDTjaM6a89C8NO/QhXTh6Ma68dCddOfo3rr3KIIUwyiOiuMUzzTBaIaa4TTHaJ6a5zTf6IJ0w+iOuuN0z+i+uu8UgYrBFIeKxzSDmsM0j5rPdIG6wXSHusd0n7rfQKFQ6BT6oNFo9Br9QKfQ6XT6oNfo9Xr9oJAo5Ar5UNgU9tDINPKgsWjsGvugk+jkOvnQ2XT20Mv08qC36O16+1CIFOIozArzULgU7mjEGrwI//////HQmDTmaNwa99CJdOLozDrz0Ll07ujFevHQm/Tm6N169yiECuEUxiicCuc0wmiMGuM0zmi8Gu/ohDrhdMbonDrndN70wuiNeuP0zui9eu8UggrDFI4awTSGGsc0nnSCOsN0jjrPdL56wfSGesf0nnrfCoEKhxqDGo86gTqHOp96g3qPer+goCjoCvrQ0DT0oKPo6Dr60NP09KCv6Ov6+lCQFOQo2Ar2aMga8tCwNOzQkXTk6Ng69ujJevLQs/Ts0Jf05ejb+vYoiAriFMw0xGiYGuY03OiIOuJ0zOi4Ou70xOiZeub03OiL+uL0zei7+u4UhArGGsI0jBrOdIQ6xnScOt56wvSMes70vPSF+sb0nfreCoIahjqCOo56hnqe+oL6jvq+UKAU6GjQGvTQoXTo6NF69NCn9Ono1/r1KJAK5DTIaLAa7OiQOuR02PTI6LF67OiT+uT02fTL6Lf67RSIGsQ0mHSIOsx0uHrE9Jh63PSJ+sz0ufrF9Jv63QqEGow6hDqceox6vPqE+pz6jfq9QOqQ+mDtWPsg5Uj5QNqQ9qT9wJqw5qz5YN1Y99b9QIqQ4iDNSPNAupDupPtgjVjj' $Zint_dll &= 'sM6s82C9WO/W+yCFSOGQxqTxIJ1I59L5kN6k97CGrOFYx9bxsJ6s51jf1veQgkjDkI6k40jP0vOQvqTvWIOsw1iP1uOsz1i/1u9IgaTBSIfS4aTHSJ/S56TfwNKw9Cz9YOvY+iDpSPpA1pD1ZP1gyVjywLKw7Cz7wJaw5Wz5QJKQ5CT5INlI9pL9IMvI8kC2kO1k+7DELPFgmVjmlvmw3Cz3YIvY4iCJSOJgu5DMJPMguUjukvuQxWTxIJvI5rL5kN1k91jCsIws41jOlvOwvCzvsIVs4ZCEJOGwnUjGkvGQnCTnSN6S98jCkI1k48jOsvOQvWTvLMFYhpbhLMdYnpbnLN/YgkiC2I4kw0iOkuPYviTPSL6S72TByIay4WTHyJ6y52TfLIOWwyyPls9sgSSBbIeSwSSHbJ+SxySfZIOyw2SPss9kv2DRWPQW/cCmsOls+kCikOgk+mDX2PV2/SDTyPQy/UCukOvk+rDILPJgsVjsFvtgk9jkNvkgkUjkEvmQ2CT2sMvs8mC3kMlk8iCzyOwy+yCXyOVy+ZDb5PZYxBbxsJgs5ljcFvewiWzikIgk4rC5SMwS85C4JO7YxXbxsJvIxDLxkJlk5sjcMveQi+TiyM1y85C75O4swliMFuMszli8Fu/YhDbhSIQS4dicJMZInBLnJN7swtiNZMLIjDLj2L1kzsi8Mu/IhXLh5MbInXLn5N4WwSyGFscsnmyCJIJsjhLDJI5svhLPdsHshjLBZIbsnjLHZJ4y3+SCcsPkjnLP5L4WgxaPNoESgTaHEoc2n3aDMoN2jzKPdr9ygXKHcp+w0Cz0YKPY6Db6IKFI6BL6sNPs9JDRZPRgr9jr9vogp8jpcvqQ1+T1WMgW8rCwLOywkWzkkJAk5EjYEvbYyXbysLPIyDLykLFk7LCX7OWQk+TkyNly9sjL8vKQt+TtLMRYmBbmLNzYiDbiSIgS4ti4JMxIuBLu7MTYmWTEyJgy5mTc2Iv24siJ' $Zint_dll &= 'cuLYu+TMyLly7uTFyJvy5uTdFsIsjBbObIQkhGycEsYknHbC7IwywmSM7LwyzmS87IXkhOydcsbknHLe8sLkjfLO5L0WhjaCEoI2jhKOdoYyhnaeMp72gnKC9o5yjva+cr7yhvKeWNAW9LChbOiQoCTo2NF29MjQMvSwp+zpkKPk6NjX9vXI0/L0kK/k6yzIWLAW7NiQNuRIkBLkJNjsyNixZMjIsDLs2JP25MiRcuTk2OzL2Lfkyciz8uzIl/Ll5NsWxCyYbIgkiGy4Esx2xOyYMsRkmDLc7InkiOy5cszkuPbF7JvyxOSZ8tzki/LN5LsWjDaEEoQ2nHaMMox2vPaEcoT2nHKc9o3yjPa98rzyhfKdLNDYoDboSKAS6OzQZNDYo/boyKFy6OzT5NHYr/bryKfy6RbIbJAkkHbI7LAyyGSw7JHkkHLY9snss/LI5LHsl+ST8tk2iBKIdpgymPaIcoj2uHK49pnymPaL8on2u/K5wNQw9Uz9IOqI+uDauPau/WDKmPLAtDDtTPtAlBDlRPkg2oj2ov1wzVzz4Lq47q77MMVM8WCamOam+TDdTPcgiojiEM1E8yC6iO6i+7jGrvFwnVznuN6u95jCMI1M45jOpvMwvUzvEIVE4YjGovEQnUTniN6i91zDuI6u41zPuL6u70zBmIam4UzHmJ6m50zfiIJEw4iOouNEz4i+ou+uwVyHrsdcn67fTIOmw0yPps9Mv0SBosFEh6LHRJ+i33DpXPrg1rj1bv1g0pj0Jv3ArDDrzPpApBDpRPog1oj1Yv3gkrjkLvlw2Vz2cMvc8uC2MMlM8mCymOwm+2CWmOVm+SCSiOQi+RDZRPYQy8TyILaI7WL7cIlc4rjMLvNwuVzuuMVu8XCbmMQm8TCZTOaY3Cb3MIvM4hCJROIwu4jMIvMQuUTuiMVi8RCbxOaI3WL3uIQu4VzGuJwu51ze3MK4jUzCmIwm47i9TM6YvCbvmIVm4YiEIuGYnUTG' $Zint_dll &= 'iJwi50TexMKIjWLjxM6IvWLvXIIuw1yOLs8AAEDJUPKg7Cj7oOVo+UDb0Pa0/aDEKPFAmVDmlPmg3Cj3yv1Ai9DioM1o80C70O60+1DCoIwo41DOlPOgvCjvyvughWjh0Ma08aCdaOfa+dDetPcowVCGlOEox8rxUJ6U5yjfyvfQgmjD0I6042jP2vPQvrTvKIOUwyiPyuOUz2iBtMFoh9rhtMdon9rntN9A0VD0FP2g6Wj6QNfQ9XT9oMgo8kCxUOwU+0CT0OQ0+aDZaPaa/aDL6PJAt9DtdPtQxBTxoJgo5or5UNwU96CJaOLQzDTzoLlo7pr70MV08aCb6Oa6+dDddPcowlCMFOMozorzULwU79CENOFoxprx0Jw052jemvfowtCNdOPozrrz0L107xTBKIaK4RTHKJ6K52iCNMNojprjNM9ovprvdMHohrrhdMfonrrndN8Ug4rDFI80gZrBNIeaxzSfdIO6w3SPus90v6DQKPQK/UCj0Og0+qDT6PQ6/UCv0Ov0+lDIFPKgsCjsCvugkWjkGvnQ2DT20Ml08qCz6Ow6+6CX6OV6+dDb9PYoxArxUJgU5ijcCvfQiDTiaMwa89C4NO7oxDrx0Jl05ujcOvfQi/Ti6M1689C79O4UwiiMCuMUzmiEGuE0xmicGuc03nTC6Iw643TO6Lw67+iFeuH0xuideuf03grBFIYKxzSCGsM0jhrPOsF0hjrHdJ463/SCesP0jnrP9L4KgxqBGoc6gzqPeoF6h3qfUNAU9KChaOga+tDRdPSgp+jpevrQ1/T1KMgK8lCwFOzQkDSMCP/////kaNga9ujIOvLQsXTs0JP05OjZevboy/ry0Lf07RTEKJgK5miIGuI0zGi4Gu50xOiYOuZ03OiJeuL0zOi5eu70xeib+ub03QrCFIw0hBrGNJw6wnSMOs50vPSEesb0nHre+sL0jfrO9L0KhhqCGo46hjqeeoJ6jnq++ob6nijQCvTQoDTo' $Zint_dll &= '6NA69NCj9Ojo0/r00K/06xTIaJAa5DTYdMjosDrs6JF65PTY9Mnos/rs6Jf65fTbCsQ0iBrMOsR0mDrc9Ih6zPS4+sT0mfrc9Iv6zfS7GoQ6jHqEepz6jPq8+oX6nSD1SP3A2rD2rP1AypDyIO1I+2DNWPPAurDurPsgxUjxQJqQ5qT5IN1I99L9sMas8WCdWOfW+bDerPeQwiCNSOOQzqTzIL1I79L7WMOwjqzjWM/W87C+rO9IwZCGpOFIx9LxkJ6k50jf0veswViH1uGsx1if1ues30iDpMNIj9LjpM9Iv9LvYOlY+sDWsPVs/UDSkPQk/SDryPrAkrDkLPlg2Vj2lv1gy9jywLYgyUjyQLKQ7CT7QJaQ5WT5INvI9rL9YIlY4rDMLPNguVjulvuwxWzxYJuQxCTxIJlI5pL5kNwk9yCLyOKQzWTzILvI7rL7sIQs4VjGlvGwnCznWN6W99jCsI1IwpCMJOOwvUjOkvOQvCTvkIVk4cjGsvGQnWTnyN6y91iCLMNYjpbjLM9YvpbvbMHYhiTBSIaS4dieJMdInpLnJN/IgmTDyI6y42TPyL6y7yyBlsEsh5bHLJ9sgySDbI+SwySPbL+Sz2SBssFkh7LHZJ+y38CisOgs+mDT2PQ2/SDRSPQS/cCusOvs+kCmkOlk+iDXyPVy/WCRWOQW+bDYLPawyWzyYLOQyCTyILFI7BL7YJfY5Xb5IJPI5DL5kNlk9pDL5PIgt8jtcvuwiCziWMwW87C4LO7YxDbxsJlIxBLxkJgk5kjcEvewi+zikIlk4rC7yMwy85C5ZO7IxXLxkJvk5sjdcvdYhBbhLMZYnBbnLN5swtiMJMJIjBLj2Lwkzki8Eu/YhXbhyIQy4didZMbInDLnZN7kwsiNcuPkzsi9cu8sghbDLI4WzzbBbIYSwSSGbJ4SxySe7IJkguyOMsNkjuy+Ms9kvnLB5IZyx+Sect8WgRaHNoMSgzaPEo92gTKBdocyh3af' $Zint_dll &= 'Mp9yg3KPcr9goVjoFvqw0Wz0kNAk9GCn2Ol2+iCjyOgy+rDX7PWQ0+T0IK/I6/L6sJAs5FjYFvbYyDbysLFIyBLykLAk7LCT7OSQkWTkyNgy9tjL9vKwt8jJcvKQs+TskJfk5cjb8vZYiBbiLMxYuBbubMTYmCTESJgS5iTc2Il24siIMuLYuWTMyLgy7uzF2JvkxMiZcubk3MiL8uLkzci78u4shBbGLJw2wmyMEsIkjGy8Es7shGSE7JwyxmScMt72wuyNcsLkjOy9cs7kvOSF8sbknfLeFoIWjjaGEoY2nnaCMoJ2jjKOdr72hnKG9p5ynvKC8o7yvrCgLOjY0Db0SNAS9LCj7OiQoWTo2NP29MjRcvSwr+zrkKfk6cjX8vVYkBbkLNhsyNiwJMhIsBLs2JF25MiQMuRk2OzJ2LPkyMixcuzYl/blyJPy5OTZ5MvIt/LtLIgWzDbEbJgSxCSY7IhkiOy4MsxkuPbE7JlyxOSYctzsi+SJ7LvyzOS58sXkm/LdFoQ2jBKMdoQyhHacMpz2jHKM9rxyvPaF8oT2nfKc8o3yvVigFuhs0CTQ2KF26MigMujs0eTQ2Kf26cij8ujs1+TTLJA2yGywEsjskGSQMtj2yOyxcsjksOyT5JHy2PbL7LfyyeSzFog2mHaIMoh2uPaYcpj2ifKI9rnyuPab8plg6pj6QNQQ9UT9cO1c+8CUMOVM+WDamPam/SDKiPJAtBDtRPvgmrjmrvlw3Vz3YIqY4jDNTPNgupjupvsQxUTxIJqI5qL5EN1E93CNXOO4zq7zcL1c7zCFTOGYxqbxMJ1M55jepveIwhCNROOIzqLzEL1E77iGruFcx7ierudc35iCTMOYjqbjTM+YvqbvRMGIhqLhRMeInqLnRN9cg67DXI+uz1y/TIGmwUyHpsdMn6bfRIOiw0SPos9Ev+DSuPQu/cCtcOvc+sCkMOlM+mDWmPVm/SDSiPQi/UCsEOvE+nDJXPLgsrjs' $Zint_dll &= 'LvvglrjlbvlgkpjkJvkw2Uz2MMvM8mC2EMlE8iCyiOwi+yCWiOVi+RDbxPa4xC7xcJlc5rjcLvdwi9ziMIlM4nC7mMwm8zC5TO6YxWbxMJuIxCLxEJlE5ojcIvcQi8TiiM1i8xC7xO5cwriMLuNczri8Lu+4hW7hmIQm4bidTMaYnCbnTN7MwpiNRMKIjCLjmL1Ezoi8Iu+IhWLhxMaInWLnxN4uwVyGLsdcni7f3IJMgtyOJsNMjty+Js9MvmbBzIYiwUSGzJ4ix0SeIt/EgmLDxI5iz8S+LoMuj26BJoFuhyaHbp8mn2aDIoNmjyKPZr9igWKHYp9w0Vz04Ka46W76YKKY6Cb6cNfc9TDTzPQQ0UT0YK6Y6+b6IKaI6WL6ENfE9bjILvJwsVzscJPc5DCRTOSY2Cb2uMvu8nC3mMlm8jCziMgi8hCxROwwl8zlEJPE5IjZYvaIy+LyELfE7VzEuJgu5lzcuIlu4piIJuK4uUzMmLgm7tzFuJvMxJiZRMSImCLmRNyYi+biiIli4pi7xMyIuWLuxMWIm+LmxN0uwlyMLs5cvNyETITcnCbGTJwm3u7C3I1mwsyMIsLcvUSMzLwizkS8zIXEhMydYsbEnGLe4sLEjeLOxL0uhi6eboImgm6OJo5uvu6GZobuniKGZp4inuaCYoLmjmKO5r5ivuKG4p640C70cKPc6DChTOi40+70mNFm9IjQIvRw+gT/////r9zrMKfM6RCjxOiY1+b1iNPi9BCvxOtcyLiwLuy4kW7kmJAm5EzY3Mm4s8zImLFEyIiwIuy4l+7lmJPm5IiRYuTE2MzLmLfEyYiz4uyIl+LlxNsuxFyYLtzciEyI3LgmzEy47sTcmWbEzJgixESYItzci8yJ3LvEiMy5YszEuObFzJvixMSZ4tzEi+LNxLsujG6EJoRunCac7oxmjO68IoxmvO6F5oTunWKE5pxinOaN4ozmveK84oXinVzQuKFu6JigJujc0czQ' $Zint_dll &= 'RNC4p+7pmKPm6IihYujc18zTxNGYr+briKfi6S7IXLDckEyQJtjuyNyxZsjMsCLIRLDck8yRxJBi2O7L3Lfmycyz4sjEscyXxJPi2S6YbogmiG647phmmCKY7onmiO65YojmuGK47pvmmeKY5oviiea74rku0NygTKDu0GbQItDco8yhxKDu0+bR4tDcr8ynxKNukCaQ7rBmsO6R5pBikO6z5rHisO6X5pPikeDUOPVO/cCoMOqM+iDUCPVC/fDavPZwypzy4LQ47U77YJQY5Ub5MNqM9hDKhPIgtAjtQvt4zV7z8Lq87jjFTvFwmpzmON1O9zCKjOIYzUbzMLqM7gjFQvEQmoTmCN1C97zGeJ1e57zenMI4jU7jnM44vU7vGIVG4YzGGJ1G54zehMIIjULjhM4IvULvXsO8jl7PvL5OwZyGTsecnk7fjIJGw4yORs+MvkLBhIZCx4SeQt9eh16fToNOj06/RoFGh0afQoNCj0K/eOle+vDWvPVw0pz04Kw46876YKQY6Ub6MNaM9RDShPQgrAjrwvrwkrzkeNle9njL3vLwtjjJTvJwspzscJac5TCSjOQY2Ub2GMvG8jC2CMlC8hCyhOwQloTlCNvC9niJXuK8zHi5Xu68xXibnMQ4mU7mnNw4i87iGIlG4ji7jMwYuUbujMUYm4TECJlC5oTcCIvC4oTNCLvC7ryEXsa8nF7e3sK8jU7CnIy8vU7OnLychYyEnJ1GxoycRt7GwoyNQsKEjIy9Qs6EvISFwsaEncLeXoJejl6+3oZOht6eTp7OgkaCzo5Gjs6+Rr7GhkKGxp5CnsKCwo7CvvCivOh40970ONFO9PCuvOtwppzpMKKM6DjXzvUY08b0CNFC9DCujOsQpoTpCNfC9XiRXuS82LzJeLOcyDixTux4l97lOJPO5BiRRuSM2JzLOLeMyRizhMgIsULsGJfG5QiTwuSE2YTLCLfC7byIXsy8uN7EvJlOxJyYTty8i5yJ' $Zint_dll &= 'vLuMiJy5RsyMuM7FnJvGxIyZQsSEmELcjIuEiYy7wsyEucLFhJvC3V6EXpzejE6M3rxOvN6FzoTenUaEzpxGnM6NxozOvUKMxrxCvMaFwoTGncKcwo3CvXihXui80ZzQeKfe6TijzugYoUbovNec04zRhNA4r87rGKfG6QijwuiM14TTvJBe2N7IvLFOyJywvJOckYyQRtjey7y3zsmcs8bIjLFCyISwnJeMk4SRwtjGy4y3wsmEs16IXrjemE6Y3onOiN65RojOuEa43pvOmcaYQpjOi8aJzrvCiMa5wrjGm8KZvKDe0E7QvKOcoYyg3tPO0cbQQtC8r5ynjKOEoc7XxtPC0V6Q3rBOsN6RzpBGkN6zzrHGsEKw3pfOk8aRwpDOt8azwrFeoN6hzqBGoN6nzqPGocKg4Kl46p76cNQc9WCoGOqG+hDUBPV87fCUPOV42p72OMqO8nC0HO0wlAzlGNqG9gjKgvIQtATt+Jq+5nzdeIqe4jzNeLqe7hzFOJqO5hzdGIqG4gzNGLqG7gTFCJqC5gTdfI2+zny9PIWexjydnt6OwhyNjs4cvQyFhsYMnYbegsIEjYLOBL2+hr6enoKejp6+joaOnoaCho6GvoKGgp740r708K186/CkPOl41p71ONKO9HCsHOswpAzpGNaG9QjSgvQQrATrfMn4sr7s+Ja+5XiSnuQ82TzLeLYcyTiyjuw4lo7lGJKG5AzZDMsYtgTJCLKC7AiWguUE277EfJm+3HyLPIl8u57MPLmexTybjsQcmY7cHIsMiRy7hswMuYbFDJuCxASZgtwEi4LNBLu+jL68voWehL6dnpyejY6Mnr2OvI6FhoSOnYacho2CjIa9gryChYKdfNH4pr7peKKe6HzXPNMc0Xiunus4po7pGKKG6BzXDNME0RiuhusIpoLpvsh8sXyTPJGe2L7LfLeeyTyzjsgcsTyXHJMMkYbYjssct4bJDLOCyASxDJcEk4LZvpi+iZ6I' $Zint_dll &= 'vrmeuL6bnpmOmJ6Ljomeu4aIjrmGuI6bhpmCmIaLgomGu4K5vtB8ozyhvtOe0Y7QfK88pxyjDKGe147ThtGC0ByvDKcEo76wvpGekL6znrGOsL6XnpOOkYaQnreOs4axgrCOl4aTgpG+oZ6gvqeeo46hhqCer46nhqOCofjUPvXwqDzqONQO9TCoDOoI1AL1/Np8yvi0Pu14lB7lPNocyji0Du0YlAblDNoEygi0Au1+zfy6PsV8mj7dPIoezTy6DsUcmg7dDIoGzQy6AsUEmgLdfp0+jT69HoUenQ6NDr0GhQadAo0CvX7p/NZ80visPut4pB7pPNYc0jisDusYpAbpDNYE0vySftl+y/y2Psl8snyWPJIe2R7LPLYOyRyyHJYMkgbZBssMtgLJBLJ+iX65fps+mT6LHok+ux65HpsOmQ6LBokOuwa5BgCbApn8on7TPgDR/K4AADAxMgAzNDU2Nzg5QQBCQ0RFRkdISQBKS0xNTk9QUQBSU1RVVldYWQBaLS4gJC8rJQghJioAAP8SAAAAAAEAIQAAAAYgBkMSBEEAgEAFEAEAAHAAcCAABA8gAwBFWgQAAAiAQLgEAUAhLMeTgACB5RQCUPwAQECAAgT/sIZAIQD/jwcQAMAJAOwNO5sAj4CAIKfKAKxgo5rSswC3oCMbprEEEAAMGCQAPGBUDAwMMEjaEABwABTEERgsgrHPQQBBVADDdSQEQBHgAMGSAKIggCMwDSCQMrAacDnADBCwCWAj0DXQARAwATAyEAHgDyDABNA5kCFQBSAAMTArUBvQDgBAE0AbwBFgWCgBAKwBewF6q8OguSqDsqtCQFBQYIABKAAMIckMBAQJCQ8AEAQJDxBiAXASAACC4LBCsRBQMPBQgbLiInKjWgEQACshJS8BFBcaAA4JEyEMKC4XADQXDREbITQDDAYuKQZGrsEAAAP/Qrej7qqtDgAYwauRSwAUE/APgJEdANfvAIC/yiAAFuaXDSDB' $Zint_dll &= '8AcBugAAcAIAI4oQngBFAPCnCwFQJQENghFsAHOAEAA1Yp8PNGcEkAXEho3T5hIAphHwCwyFCBA0AoBNYAEAySAAYDQmADAZACJIYwQAJwOgTWAJCACvAqAVYBMAviABQKRmAtA3AG5Iak0AWwM7pRIAs4kAcDEA2g52E+AIJvCeDwEwbwJ8AYCBpBQA4BOQL3AsOAEIEAIAfQJSAsCObFQAsKXkCys4EgChQABgK7Ag0FFVAQDRHGDXUaYCoDkQxN5RVgVAOYC9hwBlALAKkDjQYtAEdIUQIDcQ0lH2KkAEMiDUURQA8BuADiJA2FEkAPA3AAMhgBDQUVMA8DWAAAwQIdBRswDggTAQGDDYUXQBwAkpiwsGAR01LwCZAQhkAg0CHTVeADMEAykBegAdNb0ASMZ1AvQAHTV7Ae0EAQQB6QEdNfcCAjoACQIzAB0VAQAATgJ1AHIAZ0AAHRUDAPwA6gAI5ADPAB0VBgD4AgHUAcgBnh0lDYJ+pYAAADnQ01GiEQIg2noQOLAt0FEBQANAFDACMDYAciHQUYEGgChwBFlm4AjQURENABdA8AjgKsDRUSIaEAAu8BHAG5DTUQJUVGHgI5A3IA0AACwQALAuEApQ0A0gNVDaUTDQ7hAhFLBrYQxLAyBOqgDADEAocDeQJkBgLwAE4NAtkBYQ8DQwE8AkAOilCwAyA9MC/gJnAkD4OQI5AMUCBwIEXQIuAfCyuTAHELEe8NaW0CUQ1FEAdO6VCt4ANQIaAUCCHQXOAWwAvQFIyq0JBAEdFSBpbgAgbGluZWFyIABjb21wb25lbv3vMhFP/qAAL+A+/P/PAI0b/y9QDA7CMCRR0fABIALgMRsfKhD6VykQjygQxycQHrNx/QKj0LtAIdq7sHD+AlIBkFG7oIEDgGElAD7DcfMCEQKw8W9qABs9IACSkIAgRQgQAzDqPAOANzEQCFUACF0ADLU1AQidAERhwQMIhQDXwg1QCkBBIxSFABxB' $Zint_dll &= 'FLXnMRAU1QEVESi2xQLT3UAF5FELUK60AFbdgAdgQQgA2Qci0QdAHhqqJABDLUD8QEIKGKqkAMQFJFyA1wAAskoDkPyAwgMwLMAVXkA0ANQHv9AfjyGwEf2REq/9IRQ8pEEHVzVwHNMftU8e/RHUY7AcpIFBAFzX2gwBQQIWZMYVEN0g333wBi0XBU0BnRB04cIcXKHlYd4hJE0HLRcsNrsQo+qwCz4E8FMxYNQxQqVopgtaAGy+BGBXMuCKaCUAGAFwhgQAJIALIAAzoEGAUWBhZdAHr2Pm3wxctQCtEIgDAK8AowCcJSo2zeG1cKUD4lCkQhAFE50QHK1dCRwEAlKpQjAmBFDdqUEQLmUGMu0ARCzwh1NswhIMURPhKxCaCOHoXIAcVRWwCtAKUEtL8P///wDVAFYBWgFqAaoBrgC2ALoA1gDaAOoAKwEtATUBSwFNAVMBWQFlAWkBlQGlAakBVwBbAF0AawBtAHUAlwCbAJ0ApwCzALkAywDNANMA2QDlAOkALgE2AToBTgFcAWYBbAFyAXQBlgGaAaYBrAGyAbQBygHSAdQBXgBuAHYAegCeALwAzgDcAOYA7ADyAPQAFwEbAR0BJwEzATkBRwFjAXEBiwGNAZMBmQGjAbEBxQHJAdEBLwA3ADsAPQBPAGcAcwB5AI8AxwDjAPEAHgE8AXgBjgGcAbgBxgHMAQAAAUoMPgFqB2s/AVkNZTQ7ASZrA2MGKgFvOBFcARwPAWhGTVYjFS0IAVMhTDMlTThQOgEUAh8JZQZAN2dLATlAaRpfDjwyaCw/ATc/WiorMiArBD5YZAExSDNDERJHTVUmNxhOAR9ebzU2M1YqN1oxM2JBAVoCBzARSSwfLzowBDhUagEpcBYsJh9TFm4PHxlWNDoEAQdKOFcLXy4ZKARWZRtCYkJaARImTxlAZ0pPWWkRHggYIQ4ZVgEzQ1ohYkRTI2FoXBpePiJWIwcNASUfOBBYNCMDO2ZpXkVmRj5K' $Zint_dll &= 'UhwsAWw7biVeVW8CLm4CW0wdUDxFGVdvSQFfCxVMQWoXHBRNKUEXOiolUCBlbmNEATgjLDAnOUYjOlhZMFdBKF5qTGANZzE8ATQlEWJJDkReH1JMHwg4Bi9FaBJRM1laYwEoWxkHGyoNRSExbRdYSQxYRkMNW2AqJyQ3AQQHGgsBV1M1I2goNjNFYGxCIVdLYVltZQI2AQkbPRw4XEIQSjVsHF9iZhcpGBo6FAlmUTdALAEYMQ4nGBxaZlghcEI/NmdUL0ovbWNTCx0bYmRfAUVwSGhUW2tULSYPFV9AL1ZiKmRNIBIRSFlGZ0teAVswMmpwEktBVQs8DGkHY2dFMwcRHyxKa1trPVExIgEsQTYQZkEUK1FUbBFqLG1TV1VgGxc4KBMiCwQnVGhhARBMKlZqIggwB0wQLFIOB1IXFlkzOlo2HUNMIygJDAptAS1YYz0BOVo2KzVJOAITSjscCzEhRE1BDQRiXCYnLxM8bgETMEdWbh9NV2xBM08PUCA4TEpmAgEEYRIFax4TRDIoEhNOATYjOFVFJyBGZgNCOEQoBy4CFl1FRycLF0Y4LjQ3OV8+VEESAS43AllDNDsoa1sqXUg9GmdWBh4DVCQmMHA9MhdbRVtdKEc/UgEWUSYpTho2XTMJBWZkHB8sZFlwSgw2TihaVTdCaCAROEQPNidCAT9PUhFAPGcvFkIjUWU8MUhgCCAhbF4gSiMuJT1iAlZLaFtoalNrAUkfUS4IFhk8KDwRXAc1VG4ZQHAOYyxEN2E5LVweTmofPwFuEA0hNQAAAAAEAAkADwAWAB4AJwAxADwASABVAGMAcgCCAJMApQC4AMwA4QD3AA4BJgE/AVkBdAGQAa0BywHqAQoCKwJNAnAClAK5At8CBgMAAAkcHR4AAAAAAAAAAAAAAAAAAPg/HVpkO99P5T+gAAAApAAAp6gAAAAArQAAsAAAALQAAAC4AAAAAAAAAADBwgDEAADHAMkAywDNzgAAAADT' $Zint_dll &= '1ADW1wAA2gDc3QDfAOHiAOQAAOcA6QDrAO3uAAAAAPP0APb3AAD6APz9AAAAAMPjobHG5gAAAADI6M/v0PAAAAAAAADK6szsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF5QAApbUAAKOz0fEAANLyAAAAAAAAANX1AADA4AAA2PimtgAAqrqpud7+q7sAAAAAAAAAANn52/sAAAAAAAAArLyvv66+AAAAAAAAAAC3AAAAAAAAAAAAAAAAAAAAAKL/ALIAvQAAoAAAo6QAAKeoAAAAAK0AALAAsrO0tQC3uAAAAAC9AADAwcIAxAAAx8jJysvMzc7PANHS09QA1tcA2drb3AAA3+Dh4gDkAADn6OnqAOvs7e7vAPHyAPP0APb3APn6APv8AAAAxubFYOUYAKDY+Ku71QH1AACmtqGxTIWTmpscQdoAT+Dtr7qly5PdnSQA9vrPFdEnAA0gfcavffYBw8TFxkAAfYYA1NXW19hjAH0yfQbj5OX5BX12AQD09fb3+AB9MsAtFRVSyOgAANDwjm0RzOzKg5IQAFJXU8pR+/yeQTALLwEA0/NxovkSiFVoAdD7G2k2Hm3QNVk20d3vffAjAQB32VfIEQDTZ58A0GfRLwQAwIUzfQYAoaKjpKUApqeoqaqrrAAIrq+wsb0Wtre4Abm6u7y9vr+9Btw9E71m0L0WPRO9Ft3e+b0WPRO9tj0TvSb+/71E/QDTCwEAj70QANgz8dtNdN4JLwApndDw8XEzvRnpA479AQCrrL0Z/QH9Qrv3vRlNC6FgXQIAXQJeDtAlL1Df4dAln9AL0CXXn070mj9x34XVQdUR0UEJ0EGRnm8QF/cL8AS6HfEJmBgU1ZfQV9nT499Xn1B1ACAWAQVwDcwA3+DNf57lAgBH1BDeA9aR2sX7DO3oPRDV1gBdLL0EXczv+EEBnRHPZxC9JF3cqbmi4z0KXZyNO6W1pDkOXVwtpraBAqhtbl0sr12MwwBn' $Zint_dll &= 'ADCru9f3EVxdjO8iAdBn0okA0GfTidNnIIgBnH1mxMVBB8uNEwAzDSDfUeAJEN0vAEBebhIA6Zx8Ng/QUdAW0f0hLJ7Z/jE83ifVILO8bnow0gDhd1DO0gAQHM4yzeUXtxAiAJEbER0fJkR94xnRDSBVEtqhJ4V2RgeFvY0iMS6OECoAEzpAG1raw9Rh4H/zF9EpADBmAeZvEN2rvUgA2907vfgHAN07lRCkozQTAD5c3QJA0PDe/iUEAHRZyGW6Sv0AsL4HBvAG7glgC/ABtxYEAhC7cgcBINfDjg0A8ACouKq6eTY2CeMH6jsAuhDQN+A7AJ1OHTe6mx4CA8BrDSAAZSqKIAAP8JkEQovrU1BdKN0rRSI9AO9eA+PLQL2EAL4M0mvgy5C9hF0AvgwC4MtAvQS+ECDqzDB8stUCHVd9/he+EANg1fXwfVK9M33SVUgAvqyuJq+/fQKqup4JBQC1/n0oPgfgOWC9Ip4D0ivkR/EypVm5fhRfwltV4EfxB4ycPRwHipre/o3TfiIA4UeBA4+fr7+OntFpedDSfhQFAJZ3dxORkt4ZQPlACGB4uCce8Q8NAiDb1xOeALK46RuB3gDZQdF3BwCAChio2iv7OhqgyOjYCBD66NvwHoBeCvwPgAs5qOsLMPvLq8np2QngJrpTFgHwG6UyFAEwnfIbAG8AfRQAp7jTDgHwAUEhnXS/ADjIgjPUEAAP8FYN0U8P4uXwI8y9CQADDjANJeGzMQAA/30dvhcgxgQLhBDeBtEtDfAg3XL90chGCuFF8QY5F5DSdBFedDHC3p5yUW+P7wWRAJ9wexYiATBcDgEQjaYyAEDdRf9r7hIAGk8zvQ0BQCUW+hKgi5XmAKIUQQDQ6eklIb31G0amCP////+iR6JEorGhWKLToVCh0aHSob6jvKO9o7+ju6NEo0WjRqNHo0ijSaNKo0ujTKNNo06jT6NQo1GjUqNTo1SjVaNWo1ejWKNZo1qjW6Nco12j' $Zint_dll &= 'XqNfo2CjYaNio2OjZKNlo2ajZ6Noo2mjaqNro2yjbaNuo2+jcKNxo3Kjc6Ozx7HHsse0x7XHtse3x7jHuce6x7vHvMe9x77Hv8fAx8HHwsfDx8THxcfGx8fHyMfJx8rHy8fMx83Hz8fQx9HH0sfTx9TH1cfWx9fH2MfZx9rH28fcx93H3sffx+DH4cfix+PH5Mflx+bH58fox87HVqFYoaWhpqGnoaihRaFMoUuhrKGrobChwqFKosGhS6K5orqiu6K8or2ivqK/osCiwaLCovah9KH3ofWh+KH5ofuh+qHUoduh6KHnof2h/KHkoeWh7KHtoe+h7qHjodyh2qHdodih2aHmoemh6cfqx+vH7Mftx+7H78fwx/HH8sfzx/TH9cf2x/fH+Mf5x/rH+8f8x3eieKJ6onuifKJ9onWidKJzonKicaKkoqWip6Kmon6ioaKjoqKirKKtoq6iYqJjomSiZaJmomeiaKJponCib6Juom2ibKJromqidqJ5or2hvKG2obWhv6G+obuhuqGzobehtKGooqmiq6KqormhuKHzofCh8qHxoUChQqFDobKhpMZxoXKhbaFuoXWhdqF5oXqhaaFqoUWiZaFmoamhqqHDosSixaLGoseiyKLJosqiy6KlxqbGp8aoxqnGqsarxqzGrcauxq/GsMaxxrLGs8a0xrXGtsa3xrjGuca6xrvGvMa9xr7Gv8bAxsHGwsbDxsTGxcbGxsfGyMbJxsrGy8bMxs3GzsbPxtDG0cbSxtPG1MbVxtbG18bYxtnG2sbbxtzG3cbext/G4MbhxuLG48bkxuXG5sbnxujG6cbqxuvG7Mbtxu7G78bwxvHG8sbzxvTG9cb2xvfGosajxvjG+cb6xvvG/Mb9xv7GQMdBx0LHQ8dEx0XHRsdHx0jHScdKx0vHTMdNx07HT8dQx1HHUsdTx1THVcdWx1fHWMdZx1rHW8dcx13HXsdfx2DHYcdix2PHZMdlx2bHZ8dox2nH' $Zint_dll &= 'asdrx2zHbcdux2/HcMdxx3LHc8d0x3XHdsd3x3jHecd6x3vHfMd9x37Hoceix6PHpMelx6bHp8eox6nHqserx6zHrceux6/HsMehxnSjdaN2o3ejeKN5o3qje6N8o32jfqOho6Kjo6Oko6WjpqOno6ijqaOqo6ujrKOto66jr6Owo7GjsqOzo7SjtaO2o7ejuKO5o7qjwKFVolaiUKJRolKiVKJXolOi66HqoU+iQKRCpEOkRclWpFSkV6RVpEbJo6RPyU3JoqShpEKlQaVApUOl/qTgpeGlw6hYpKSkUMmlpGPJ6qaxy1mkpqREpWTJQMlEpFukR8lcpKekRaVHpUal4qXjpcSovK1BpEHJRaRepF2k5KXFqK6wS9TDtrHcstxGpKmkxqhHpEjJX6SqpKykUcmtpKuk5aXHqMioRatgpK6k5qXopeel66bJqMqoRqtHq72ts9zW9kiksKSvpFLJsaS3pLKks6RUyVPJtaS2pLSkSqVLpUylTaVJpVClaslmyWnJUaVhpWjJTqVPpUilZclnyfWlsMnypfalusmuyfOlssn0pfel6aWxyfiltcm5ybbJs8nqpeyl+aXupavJ8aXvpfClu8m4ya/J7aWsyeultMm3ya3JZspCp/SmZ8rxpkSn+ab4plvK/Kb3pmDKaMpkyvqm/abupkenXcq9y+ymQ6ftpvWm9qZiyl7K+6bzplrK76ZlykWnSKfypkCnRqfwpmPKQadpylzK/qZfymHK2Ki/y8vL0KjMy8uo1ajOqLnL1qi4y7zLw8vBy96o2aizy7XL26jPqLbLwsvJy9Sou8u0y9Oot8vXqLrL0qjNqNyoxMvdqMjLxsvKy9qovsuyy8DL0ajFy8yox8tWq0qr4M3ozUmrUatdq+7N7M3nzUur7c3jzVmrUKtYq97N6s3hzVSr4s3dzVurTqtXq02r383kzevNVatSq+bNWqvpzeXNT6tcq1OrTKtIq+/N163BrdGt1q3Q0M/Q' $Zint_dll &= '1NDV0MStza3arc6tydDHrcrQ3K3Trb6tv63d0L+wzK3LrcvQz61b1Mat1tDVrdStyq3O0NfQyNDJrdjQ0q3M0MCtw63CrdnQ0K3Frdmt263T0Nit29DN0NzQ0dDa0NLQyK1j1FfUs7Bc1GLUsrBV1LawWdRS1LSwVtS5sL6wZ9RR1LqwZtS1sFjUsbBT1E/UXdRQ1E7UWtRg1GHUt7Bb2F7UTdRf1MGwZNTAsEzUVNRl1Lywu7C4sL2wr7CwsMizXthX2MWzX9hV2FjYxLNZ2MezXdhT2FLYybPKs8azy7NR2FzYWthU2MOzVtjKtsS2t9zNtr3cwNzGtse2utzFtsPcy7bE3L/czLa03Mm2tdy+3LzcuNzItrbczra73MLcudzB3La5s7m0ufng8eCyua+58uCxufXg9+D+4P3g+OCuufDgrLnz4Le59uD64LC5rbn84Pvgtbn04Pi77OTp5Pm797vw5O3k5uT2u/q75+T1u/276uTr5Pu7/Lvx5O7k7+Sqvvjop7716Km+q7726Ki+9+j06HbAvex3wLvsvOy67Lnsvux1wLjvue/o5LfveMBfw+vx7PHXxNjEwfXA9WzFa8XQ90mkYaS5pLikU6VSpfyl+6X9pfqlSqdJp0un4KjfqOGoXqtZot7QWqLCsFyiW6Jg2F2iuLleokqkuqT+peKoS6S9pLukvKRApkyn5KjjqOWo3a2svk7JVKVVpUGmaspgq1+r4NDf0MOwvqRVyc3LYavgrd6t362tvlalQqa8yU2nTqdrys7L5qjPy+LQ49DjreTQ4dDkreKt4a3l0GjUYdjF3EDh/ruuvvnoTKRapMSwzbO5uULJv6RZpVelWKXnqE2kTqRipMCkwaTCpL7JWqVryUamv8lEpkWmvclHpkOmbMrsqm3KbspQp0+nU6dRp1Kn7ajsqNTL0cvSy9DL7qjqqOmo66joqO+oY6vwzdPLaKvxzWSrZ6tmq2WrYqvo0Oet69DlrefQ' $Zint_dll &= '6K3mremt6dDq0ObQ7NDRs8WwadRr1GrUbNTGsM6zz7PQs9C2x9zG3MjcydzRts+2QeFC4bu5uoII/////7la40C8QbxCvES88uTz5EO8r76wvu3xw/XC9dH3T6RcpVulSKbAyVWnVqdUp1enb8pwyvGo1cvwqPLNbKvzzWuraatqq+3Qx7Bu1MqwbdTlscmwyLDUs9Oz0rPSttW21rbUttO2Q+FE4fXkRbz05LG+v+x5wO7xVcRjpMOkVsnEpMWkXaVepUmmccrWy9fLbavu0Mywy7Bj2GLYUKTGpF+lzbBDyWzJYKXCyUumSqbByVin6q1v1Ne2ReG8ufro/fPHpNjL9M3QsM6wz7BRpGSkzaLKpMmkyKRjpWKlbcnDyfWo8qj0qPOobqvVs1Kky6RlpWSlcsr2qFfJZ6VmpUymTaZzylmnWqf3qPio+ahvq/XN661EycykxMl0ynXK2cvay/fN9s35zfjNcKtw1O2t79DsrWTY1rNl2EbhvblGvO/xWMlopdGwU6RlpM6kzaTPpPuo+qj8qHGr7q376E/CZqRqpXmldKVvpW6ldaVzpWyleqVtpWmleKV3pXala6VypXGle6VwpVOmWaZVplumxclYpk6mUaZUplCmV6Zapk+mUqZWplymfsp7ymenfMpbp12ndadwp6XKfcpfp2GnpMpop3jKdKd2p1ynbad2ynOnZKdup2+nd8psp2qna6dxp6HKXqdyp6PKZqdjp3rKYqemymWnaadgp6LKecrry+rLT6nty+/L5Mvny+7LUKnhy+XL6ctJzkupTc79qObL/qhMqUWpQaniy0SpSalSqePL3MtDqd3L38tGqUip28vgy1GpTanoy1OpSqney0epQqlAqezLTqlIzvvNS879zXirqKt0q6erfaukq3Kr/M1DzqOrT86lq3mrRc5Czner+s2mq0rOfKtMzqmrc6t+q3urQM6hq0bOR856q6Krdqt1q/7NRM5OzkTR+63x0PbQ' $Zint_dll &= '9K1ArvTQ7635rf6t+9D6rf2t/tD1rfXQQtFD0fetQdHzrUOu+NDxrUbR+dD90PatQq760PytQNFH0aHURdFErvCt/NDz0Pit8tD30PDQQa531OSwp9TisN+wfNTbsKLU5rB21HvUetTyreGwpdSo1HPU6LOp1Oew2bDWsH7U07Cm1NqwqtR01KTU3bB11HjUfdTesNyw6LDjsNew0rHYsHnU5bDgsKPU1bDUsHHUctRq2Nez2rN12O6zeNjYs3HY3rPks7214rNu2O+z27Pjs3bY19x72G/YZthz2G3Y4bN52N2z8bPqs9+z3LPns3rYbNhy2HTYaNh32NmzZ9jgs/Cz7LNp2Oaz7bPps+WzcNjrs9Xc0dzg3Mrc09zltua23rbc3Oi2z9zO3Mzc3tzcttjczdzfttbc2rbS3Nnc29zf3OO2y9zdttDc2Lbkttrc4Lbhtue227Zfotm21Nzitt3czbnIuVXhUeFL4cK5vrlU4b+5TuFQ4VPhxLnLucW5SeHGuce5TOHMuUrhT+HDuUjhybnBucC5TeFS4cq5R+FNvEflROVHvFO8VLxKvELlTLz55FK8RuVJvEjlSLxD5UXlS7xB5frk9+Rr2P3k9uT85Pvk+ORPvE68ULz+5LK+QOVF6f3ovr5C6ba+ur5B6bm+tb64vrO+vb5D6f7ovL786Lu+ROlA6VG8v75G6be+tL7G7Mjse8DJ7MfsxezE7H3Aw+x+wMHswux6wKHAfMDA7FDCvO+677/vve+7777vYMPy8fPxVsT08fDx9fHx8VHC/vNB9FnEQPRYxFfEWsTF9cb12sTZxNvExPXY9tf2bcVvxW7F2fbIxab48cWl+O74Scl9pXylX6ZepsfJXabGyXmnqcqoyneneqenynin8Mvxy1SpqqtI0UnRRa5GrqzU6bDrsKvU6rB82PKz6bbqtuHcz7nOuUnlSOlH6Wv5Z6RZyW7Jb8lipmamyclkpmOmyMllpmGmYKbKyaan' $Zint_dll &= 'o6d9p6rKq8qhp63Ke6euyqzKfqeip6WnpKd8p6/KWan+y1upWqlAzFipV6n1y/TL8sv3y/bL88v8y/3L+sv4y1ap+8tcqUHM+curq1WprKtUzlrOsqtYzl7OVc5ZzlvOXc5XzlbOUc5Szq2rr6uuq1POXM6xq1DOU9FS0VfRTtFR0VDRVNFY0UeuSq5P0VXRSa5K0bCrutRW0U3RSK5M0bHU7LDwsMHUr9S91PGwv9TF1MnUwNS01LzUytTI1L7UudSy1KbYsNT1sLfU9rDysK3Uw9S11LPUxtTzsMzU7bDvsLvUttRLru6wuNTH1MvUwtTE1K7Uodiq2KnY+rOi2Puz+bOk2PazqNij2KXYfdj0s7LYsdiu2POz97P4s0vRq9j1s/Swrdh+2LDYr9iz2O/crNin2Ofc9Lb3tvK25tzq3OXc7Lb2tuLc8Lbp3O627bbs3O+27tzr3Ou29bbw3OTc7dzj3PG287bo3PHcXeHQuWPh1blf4WbhV+HXudG5XOFVvFvhZOHSuda5WuFg4WXhVuHUuV7hYuFo4VjhYeHTuWfhWeFZvEvlV7xWvE3lUuVO5VHlXLylvlu8SuVQ5Vq8T+VM5Vi8TelP6Urpwb5M6cC+TunDvlDpwr5J6UvppcDM7KTAzeyjwMvsosDK7FPCUsL28fjx9/Fhw2LDY8NC9FvE0/fS9/LFaKTQpKenX878s/2z8tzYuWnhU+VaybDKQsxgzlnRTK758dzEaaR+pXDJZ6Zopl2p97Daudu52blqpNGk06TSpFvJ1KShpXHJoqVppmqmy8mop7HKYalDzF+pYKleqVrRtqu1q7ertKthzmKps6tNrk6uT67N1P6ztNj4sPi23bncuWrhXbzEjgj/////vsDv2vbU92uko6WkpdHJbKZvps/JzcluptDJ0snMyXGmcKZtpmumzsmzp7Cntsq5yrjKqqeyp6+ntcqzyq6nqaesp7TKu8q3yq2nsae0p7LKusqrp2ep' $Zint_dll &= 'b6lPzEjMcKlTzETMS8xmqUXMZKlMzFDMY6lRzErMTcxyqWmpVMxSzG6pbKlJzGupR8xGzGqpaKlxqW2pZalOzLmrwKtvzrirZ85jznPOYs67q2zOvqvBq7yrcM6/q1auds5kzmbObc5xznXOcs5rzm7OaM7Dq2rOac50zrqrZc7Cq72rXK5i0VuuYNFQrlWuX9Fc0WHRUa5b0VSuUq5j0VOuV65YrlquWa5d0V7RZNHU1PmwwtjT1ObUQLHk1P6w+rDt1N3U4NRDserU4tT7sESx59Tl1NbU69Tf1NrU0NTs1NzUz9RCseHU7tTe1NLU19TO1EGx29TY1Pyw0dTp1P2w2dTV1OjUQLS72LjYydi92MrYQrTG2MPYxNjH2MvY49TN2EfdQ7TO2LbYwNjF2EG0RLTM2M/Yuti32LnYvti82EW0yNi/2MHYtdj63PjcQrdAt0Pd+dxE3UDd99xG3fbc/dz+tv22/Lb73EHd+bZBt/Tc/tzz3Pzc+rZC3fXc+7ZF3W7h4rnhueO5euFw4Xbha+F54XjhfOF14d65dOHkuW3h37l74eC5b+Fy4XfhceFs4XPhVeVhvFjlV+Va5VzlX7xW5VTlXeVb5VnlX+Ve5WO8XrxgvGK8YOVX6VbpVelY6VHpUula6VPpxb5c6VvpVOnR7KjAz+zU7NPsWemnwNLszuzW7NXspsDQ7Ma+VMLB7/rx+/H88VzEXcRD9Mj1x/Xb9tz21fen+GykbaRupNWkpaXTyXKmc6a3p7intqe1p3OpVcx1qXSpVszEq12uZdHw1EWxR7Tv1Ea05bl94ce+qcDX7F7EcMVyyaalc8l2pnSmdaZ3prqnuae8yrunvcpXzFjMdql4qXqpd6l7qXmpyKvFq8eryavGq2bRd85o0WfRY65frmCuYq5krmGuZq5lrkqx8tTx1EmxSLFHsUuxRrHV2NLYSbTR2NbYS7TU2Ei0SrTT2EjdSd1K3ea57rl+4ei57Lmh4e25' $Zint_dll &= '6bnquee567lmvNDYZ7xlvGS8XenIvtjs2exkw1/Eb6R4psqradFnrk6xTbFMsUy0TbTX2O+5yb5wpFzJ1qR0ydTJeaZ8qUvdcaTXpNXJvsq/yryn2NhOtEzdqsBypKik2KR1yaelwKe/p72nvqdZzH6poalazH2pzqt4zs2ry6vMq2quaK5r0WmuatFervPUULFRsU+x8Lmi4Wi8abxh5avAwu/D793EqPhLydmkc6R3yXbJeqbXydjJ1snZycfKwsrEysbKw8rEp8DKwcrBp8KnxcrIysOnycpozGLMXcyjqWXMY8xczGnMbMxnzGDMpalmzKapYcxkzFvMX8xrzKepqKlezGrMoqmkqavOpM6qzqPOpc59znvOrM6pznnO0KunzqjOps58znrOz6uizn7Ooc6tzm+ubq5s0WuubtFwrm/Rc65xrnDRrs5y0W2ubK5t0XHRcq5TsVKx9dT51PvUVLH+1FixQdVasVaxXrFbsffUVbH21PTUQ9X41FexQtVcsf3U/NRdsfrUWbFE1UDV59ju2OPYUbTf2O/Y2djs2OrY5Njt2ObY3tjw2NzY6dja2PHYUrTr2E/d3dhPtOHYULTg2OXY4tjo2FPdVt1O3VDdVd1U3UO329hS3US3Td1R3anhsOGn4a7hpeGt4bHhpOGo4aPh8bmm4fK5rOGr4arhr+Fl5Wfla7xo5WPlYuVs5Wrlarxt5WTlaeVr5WblYelm6WDpZele6WjpZOlp6WPpX+ln6WrpYuna7K/ArcCswK7AxO9y8f3xRPRF9GDEyfXexMr13vZyxXHF3fbJxdb3dKR7ptrJysq1qF+xdaSqpamlqKXFp3SuV912pHekeKTapNGrr85TtHmkXcmrpayleMl8psvKxqfMyq6pbsysqaupbcypqW/MqqmtqdKr1KuzzrDOsc6yzrTO06t00XPRdq51rmKxRtVhsWOxYLFVtEXVVrTz2Fe08thUtFrdXN1Ft1vdWd1Y3bTh' $Zint_dll &= '97n1ufa5suGz4fO5ceVv5W28cOVuvGy89Llt6WvpbOlu5dzssMDb7MXvxu9u6f7xeqStpX6m28l9pq+pRrfbpK6l1atYtHnJesncycin0MrOysmnzcrPytHKx6ezqbSpsamwqbjOsqnWq7fOuc62zrrO16t5rnXRd9F3rnjReK520bXOR9VK1UvVSNVnsWaxZLFlsUnVaLFatFu0XLRd3V/dYd1It0e3WbRg3V7duOG24bzh+Lm94brh+bm34bXhu+FwvHPlueFyvHTlcbx0vHXlb7xzvHPpcelw6XLpb+lmw0b0R/TL9d/2Vca1qcqn2Kt7pNykr6Xdycun0sq7ztmr+rl8pKGmSbd9pN2k3qSxpbCl3smiptPKzKdxzHLMc8y2qbepcMy4qdqrvM560XquedFpsUzVarFN1V20Yt2/4b7h+7l1vHblyr506bHAc8XY93TMvc5rsfTYSrdVws6nzafbq3vRbbFDs26xbLFetMDh/Ll2vEzJ38nVys+n1MrQp7ypd8x2zLupuam6qXXM3au+zuCr3Kviq96r36vhq32ufK57rk/Vb7FysXCxTtV1sXGxUNV0sXOx9tj12GG0X7RgtPfYS7dk3Uy3Y9135Xi8weF3vP253ux16bLA3exA8kj0SfTfpLKle8nSp9Sn4snYytfK1srhyeDJpKbTp9Gno6a9qXjMvqndyt/K3sp5zNrK2KfWp9nK28rhytWn3MrlysCp4srXp+DK48q/qcGp5MqvzKLMfsyuzKnM56vCqarMrczjq6zMw6nIqcapo8x8zKXMzamwzOSLCP////+rpszlq8mpqMzNzuare8zKqeiry6nHqcypp8x6zKvMxKl9zKTMoczFqb/OwM7KzqHRy87uq87OxM7tq8bOx87Jzumro67FzsHOpK7Pzn6ufdHIznzRw87Mzuyroa7yq6Ku0M5+0eurpq7xq/Cr76ulrtHOp67qq8LOdrGk0abRqNGorq6uU9Ws0aPR' $Zint_dll &= 'eLFR1a2uq66u0VLVpdGsrqnRr66r0aquqtGt0afRqa55saLRd7F6sVXVXtVktHyxo7FltGDVqrH52FbVorGlsX6xVNVi1WXVSdlj1f3YobGosayxXdX42GHVe7H62GTV/NhZ1WK0V9VY1aexprFb1auxX9WksVzVqbFmtGO0+9ha1X2xa7RvtEDZUbdttETZcbRl3UbZU7dptGy0R9lI2U7Zc7RUt0rZT9lD2V63VbdytEHZUNldt3C0TrdN2XS0Rdn+2Gq0QtlL2U23UrdntEzZULdotFy3w+Fw3WjdwuFs3W7da91bt2rdX7fS4Vq3QLpx3cThWLdp3W3d/rlPt2bdZ91Bule3WbdWt2/dyOHJ4c7hfbzV4Ue6RrrQ4Xy8xeFFutThQ7pEutHhquV6vG600+GjvMvhe7yivMbhyuHH4c3hSLp5vEK6euXP4aG8pLzM4X68eeV+5c6+eOWj6anlqLymvMy+puWi5ay8eOmqvKHlduml5ajlfeWrvKW8d+nNvqflp7ypvKTlrbyj5Xzle+XLvqvleung7NC+oul+6eHs0b6h6XzptMDf7Hnpe+m1wNO+s8DSvrfAfenPvs/vx+/n7Mjv4+xWwuXs5Oy2wOLs5uzQ78zvzu/J78rvze/L72fDasNpw2jDYcRK9GLEQfLfxMz14MR0xcrF2ffa99v3uvngpHzJs6Wmpqempaaoptqn2aexzM+pzqmv0a2xrrF1tHLdYLdht3Tddt113dfh1uFJutjhrOWuvNS+uMBXwrnA4aTmyrLM0anQqdKp86vSztPOsNGwrq+xdrRR2eKkfqTjpH3Jt6W2pbSltaWrpunJ68mqpuPJ5MnqyebJ6MmppuXJ7MnnyeGn6qfop/DK7cr1yuan9srfp/PK5afvyu7K46f0yuSn06nep/HK58rbp+6n7MryyuCn4qfoyunK6srtp+en7Kfryuun3afcp+mn4am+zLfM3KnvqbPMusy8zL/M6qm7zLTM' $Zint_dll &= '6Km4zMDM2am9zOOp4qm2zNep2KnWqe6p5qngqdSpuczfqdWp56nwqdTO5Km1zNqp3aneqeyp7anrqeWp6anbqfSr2s5BrPir+qtArObO/aux0bGuQ6zXzt/O/qveztvO487lzver+6tCrLOu4M75q0Ws2c78q7Ku9qvWzt3O1c7YztzOstFErOHO4s7kzvWrwa6+0b+uwK600cTRtq5m1cbRwNG30cnRutG8rn3VvdG+rrWuy9G/0biuuNG10bbRua7F0czRu6680bvRw67CrrSuuq69rsjRwtG3rrPRytHB0cPRx9Fn1bexy7HKsb+xedV11XLVptW6sbKxd9WotLaxodXMscmxe9Vq1cixo9Vp1b2xwbGi1XPVwrG8sWjVeLSl1XHVx7F01aTVxrFS2bOxb9W4scOxvrF41W7VbNV+1bCxxLG0sXe0fNW1sbGxwLG7sbmxcNXFsW3VetV21VTZU9lr1WTZerRq2VnZZ9l33X20a9lu2Xy0XNlt2WzZfrRV2Xm0o7ShtGnZX9mltHDZaNlx2a20q7Rm2WXZY9ld2aS0orS50VbZt91X2Xu0qrR53aa0p7RY2W/ZeN1g2VvZqbRh2V7ZrrRwt3zdsd223ardbLe73Wm3et173WK3a7ek3W63b7el3bLduN1qt2S3o9193brdqN2p3X7dtN2r3bXdrd1lt9nhaLdmt7ndsN2s3aHdU7qv3W23p92m3We3Y7fu4bPdrt2i3enh2uHl4ezhUbqstOrhTLpLuvHh2+Ho4dzh5+FPuuvhYtny4ePhUrq65a+88OHv4VS6reWwvK7l3+Hg4d3h4uHe4fPhTrqxvFC6Vbrh4e3h5uGx5Uq6tLyq6bblteW35bTltby7vLi8ubyv5bLlvOXBvL+8s+Va2bK8ueWw5cK8uOVNure85OG6vL68wLy9vLy8try75bO8w7zYvtm+qenivt++1r7dvqvp277Vvty+qOm7wNe+3r66wKfppungvuG+' $Zint_dll &= 'pemk6bzArunavqzpvcDCwOrs7Oy/wO3s6ezr7MDAw8Do7L7AwcBZwq3pWMJewtTvXMJdwtfv0+9awtHva8PV79bv0u9bwkLyRfJG8kTyR/Jsw0PyTvRkxE30TPRL9GPEZcTN9eLE4cTh9uD24/bLxXXF3ffi9tz3zcXMxfPFqfjv+OSkctmv6aym98rxp++n8KfBzPGpRqznzujOR6zO0cSuxa7N0dOxz7Gn1dax1bHOsdGx1LHQsXbZzbGvtLG0srR12XjZsLRz2XfZdNlxt7zdVrr04eO+xLy95cW8xry/5b7lwOWx6bDp7+zu7MTAxcBI8uWkedm0tLO0vd3Y7+PE3vfmpMau2LHXsXrZe9lyt/XhV7qy6eekuKXyqcLM6c5IrNmxfNm1tHO3weXC5fDsX8Lw+Oikw8zzqUms6s7HrtLR0NHR0ciuz9HbsdyxqNXdsdqxfdl+2b7dWbpYuvHs2e9K8knyT/ReyUqs6aS5pa6mraavprCm7sntyfjK8qf7yvrK+cr8yvSpyczFzM7M+6n5qcrMxszNzPipQKrIzMTM/qnLzPepzMz6qfyp0MzPzMfM9qn1qf2p7871zlCsTazszvHOU6xLrPDOTqxRrPPOTKz4zk+sUqztzvLO9s7uzuvO9870ztCuya7Mrs+u1dHKrtPRzq7LrtbRza6s1d+xq9Wt1d6x47HU0arVrvQI/////9XgsanV4rHhsafZotm2tLq0t7Sl2ajZuLS5tL60x92m2by0o9mh2b20pNl5t7/ddrd3t3W3xN3D3cDde7fC3bu0xt3B3Xi3dLd6t8XdXLr44ffh9uFaulu6xeXI5ci8x7zJ5cTlyrzG5cm8w+XH5em+5r676brpuem06bXp577kvui+s+nlvrbpt+m86bjp8uzHwNzvxsDa79vvYMJuw0vybcNR9FL0ZsRQ9OTE3/fOxar4q/jqpLGmsqbzp9HMVKzRruSx0rC/tMC0zLOp2Xy3+uH54euk' $Zint_dll &= 's6bSzEKqQar5zvrO19HY0dKu067Urq/V5rHCtMG0yN163/vhvelhwmfE7KS8pb2lu6W+pbqltqb2ybWmt6bxyfDJ88nyyfXJtKbvyfTJ/cr9p/7KQ8v8p0fLQstFy/Wn9qf3p/inQKhBy/qnQahAy0bL+adEy/un9Kf+p1eq1MxDqk2qTqpGqliqSKrczFOq18xJqubM58zfzNjMVqrkzFGqT6rlzOPM28zTzNrMSqpQqkSq3szdzNXMUqrhzNbMVarozEWqTKrZzOLMVKpHqkuq4Mxbz1ysaaxWz0zPYqxKz1usRc9lrFLP/s5Bz0TP+85Rz2HPYKxGz1jP/c5fz2DPY89az0vPU89mrFmsYaxtrFasWKxDz2qsY6xdz0DPbKxnrEnPa6xQz0jPZKxcz1TPXqxiz0fPWqxZz0/PX6xVz1es/M5orOOuXaxOz03PQs9ez1fPVazs0equ7dHh0d+u667a0ePR69HZ0fTR1a7z0e7R79Hdruiu5dHm0fDR59Hi0dzR3dHq0eTR1q7arvLR3tHmruKu5a7srtuu567p0emu2K7XrtvR39HgrvHR6NHg0eSu4a7ZrtyuxNW01bXVudXI1cXVvtW91e2xwdXQ1bDV0dXD1dXVydXsscfV57H8sfKx9rH1sbHVztXU1czV09XA1bLV0tXC1eqx97HL1fCxytWz1fix+rHN1fux6bG61c/V77H5sbzVxtW31bvV9LG21eix8bHusb/V3q7A2eux87HD2dnZztnWtNG0vdnStM3ZxtnT2c60q9nV2cS0s9nHtMa017St2c/Z0NnJtMW0u9nQtLbZ0dnMtMnZ1tmw2bXZr9nLtMLZ3t2x2c+0utnS2cq0t9m02cXZzbTDtNm0yNnH2azZyLTU2bzZvtnL2crZqtnTtNW0stm52cHZ1LS42cTZ19nM2djZrtny3aa38N3b3eDd2d3s3cvd0t3q3fTd3N3P3eLd593T3eTd0N3X3djdqLfr3end' $Zint_dll &= 'zN3u3e/d8d2st6S3uNXU3ebd1d2ht7G37d2vt6u3yt2jt83dsLfd3cndqbfh3dHdqrfa3X632LTj3b/Zzt3o3aW35d2it9/drbfW3fPdp7fG3q63SuJI4l7iRuJY4n23X7pC4l3iR+JV4mS6Xbpb4kDiWuJvulHiYeJtukniXrpL4lniZ7pE4mu6YbpN4kPi/OFX4mi6YOL94WW6U+JmukXiUOJM4k7iYLpf4m66T+Ji4v7hVOJjumy6arpB4lbiabpiulLiXOLV5dHlzeXh5d7lzbzl5dTl2Lzb5dDl2uXVvO7l6+Xd5c7l4uXk5dG82OXT5crlzrzWvOfl17zL5e3l4OXm5dS84+Xq5dm807zc5c/l7+XM5ejl0LzW5dflz7zMvNLl0rzLvOnl7OXZ5crpwum+6fa+677wvuy+zOnX6eq+xOnN6d/lzunxvt3p9b74vsDp9L7b6dzp0unR6cnp0+na6dnp777tvsvpyOnF6djp977W6fO+8r7Q6b/pwenD6dXpz+nuvsbp1OnH6c/ARe3IwPXsQe3KwEjt/Oz37Ent8+z+7NHARO1K7f3sycBA7fTs0MBH7fnszMD77Pjs0sD67MvAzsBD7fbsRu1C7WPC5+9owmnCYsLm7+Pv5O9mwt7v4u9lwt/vZ8Jkwt3v4e/l71HyTvJX8lbyVPJP8nLDUPJxw83AU/Jww1jyUvJN8uDvb8NM8lb0VfRV8mjEWfRa9FT0WPRT9NH1V/TnxOXEz/XS9c710PXmxOX25vZ2xeT24vfPxeD34fes+FbG8/jx+PL49Pi7+e2kuKZZqunMZM/10ffR9tH40f2x19X50dbV2NXZ1drZ27Tb2d3Z3LTatNzZ+t343ffd9t313bK3+d1wumPiZeJxumTi27zavPDl3+ne6eDp+b5L7dPA6O9qwlnyd8XupL+luaZCqFqqW6purPrRs7fR5vq+a8LvpLqm68xcqurMZc9vrGbPcKz80e6u7a7e1dzV' $Zint_dll &= '3dXb1drV3tnh2d6039ndtODZ+91m4mfiaOLz5fLl3Lzx5fTl4eni6ePpTO3UwGzCWvLoxF/Jcaxnz++u/rHftOLZtbe0t2niauLdvN685enk6env4/fwpGDJwKVDqEjLcqy2t/GkaM9zrGnP1cDypOzMas9C0kHS/tH90UPSQNJAskGy4LTj2eTZ5dlB3kLeQN793f7dt7dr4vfl9uX15fjl5+nm6fu+6OnWwE3t6u9b8uf286TCpcGlXaphyX7Ju6b3yUnLSstequ3MdKxrz2zP8K70rkTS867xrvKu39VCsuO04bTitObZcrr0pKHJw6Wkycalo8nFpcSlRKiiyfjJ/Mn+yUDKxabGpvvJwab5yf3Jwqa9pr6mxKb6ybymRai/psCmw6Zby1nLTMtRqFPLTKhNy1XLUstPqFHLVqhay1ioWqhLy02oXMtUqFeoRc1HqF6oVahOy0qoWahWy0ioSahDzU/LUKhbqF3LUMtOqFOo7sxcqFfLUqhdqEaoVMtLqFjLRM1qqnqq9cxxqkvNYqplqkLN88z3zG2qb6r6zHaqaKpmqmeqdapHzXCq+cz7zG6qc6r8zErNdax5qmOqSc1NzfjMT81AzWyq9Mxrqn2qcqryzHXPeKp8qkHNRs1+qneqaapfqmSq9sxgqk7N8MzvzP3M8cx7qvWudKr+zGGqpqxMzXzPoc+kz3fPp8+qz6zPdM92rHusSdKtrKXPrc97z3PPZNJ+rKLPeM96z6Wsfc99rHDPqM+rz3qsqKxtz6qseKyurKnPb8+rrF7SSM18rHesds9uz6yspKyjz6msp6x5z6Gscc+irKOscs+mz3msfs9M0v2uQ69V0lvSV9JK0k3SRtJH0kqv+q5W0l/SRa/2rkCvTtJCr0/SWdJEr2jSSNL8rvuuSK9F0mbSWtJn0mHSU9Ji0lzSZdJj0kmvVNL5rviuQa9Hr2DSRq9R0kOyadJQ0kvS/q5Lr/euWNJd0mWy4dXl1VKy' $Zint_dll &= 'ULJHsuPV4tVbsujVVbL61UfWRLL31fDVZ7Lg1fzVZLJYsmOyTrLs1f7V9tVPskmyRdb91UDWUbJZskLW6tX71e/VRNZeskayXLL01fLV89VTsu7V7dVIsufVRtZKsvHVaLJisubVX7Jdsmay+NVhslLS+dVgskHWRbL11Vey6dVWslSyTLJLsufZQ9br1fzZTbJBtVqy7rT22fy06tnrtOe0SdrttPG07LT1tE3aRNrx2fq09LT92eS0StpD2ui099n3tFXaVtrltEja+bT72e3Z7tn9tPLZ+dnz2fu0RLXv2ejZ6dnr2eq0+Nn4tEK1+tlT2kva5rRR2vK08LRX2u+0Qdr02f7ZR7VF2kLa8NlDtU/aTNpU2um0QNpGtUfa87T2tEbaRbX12eTVUNpO2lLa7NlAtWHeYN5G3r23X95J3krex7do3sK3Xt5D3si3vrdS3kjeS95j3ri3at5i3sG3V97Mt8u3xbdp3rm3Vd5M3lneZd7Nt7u3VN5N3sS3w7dQ3lreZN5H3lHevLdb3sm3wLdO3r+3Rd5T3mfe/rSwulbebOJY3mbexrdP3rq3yrfwvETeXd5c3qrirbp94qTiorpu4q+6d7pt4rDisbpx4qPic+Kz4q/idbqhulPmrrp9um/iruKjuqviuOJ14n7ituKs4ny6fOJ2unS6qLp64nfieOKy4rfiteJ6urnifrqnunDi+uV54ni6rLqpiQj/////unu6peJ04qq6p+Kkuqa6c7qp4qHicuKlurHitOJ74qjiebrfvKbi+eWt4nbiROZO5uK8TeZZ5uS8S+ZP5u+8RubnvFLm8OnzvPK8VOZD5l7m7bzjvFfmW+Zg5lXmSebmvOm88bzsvEzmouJI5l/m6LzrvGHm4LxW5vvlXObfwErm4bxF5uW8/OWrukHmWuZC5kDm6rxY5v7lUeZQ5l3mR+buvPPpSb/+vkDq6+lBv/fpSL9Dv/XpT+376ULq+unp6fjpROpG6v2+' $Zint_dll &= 'RepEv0q/R7/+6Ua/+ent6fLp/elFv0K//L5Av/Hp/eXs6e/pQer06erpTu1D6u7p/OlR7ePA18DbwFPtWe1X7dnA2sDhwFrtUu3cwFbtVe1b7eLA3cDgwFTt5MDewOXA2MBY7VDt9+9xwvTv9u9vwvLv8+/u7/bp7+9wwuvvbcL4727C7O/t7/Hvc8JywvDveMNf8mXyecNc8nbDc8Nn8nfDdMNe8mHyYvJj8mby9e9d8nXDZPJo8mDyXfRqxGD0a8Ro9F/0XPRe9GL0ZfRk9Gf0W/RpxGP0ZvRp9GH00/XU9dj12fXW9df11fXpxHjF6/bo9un26vZ5xeX35Pev+PTFrfiw+K749fhXxmXGo/ls+aL50PnR+fWkx6ZByl7LX6hiqF/LYKhhqFjNWs1VzVLNVM2kqqKqVs2jqlPNUM2hqlfNUc2lqlnNr8+zz7ests+vrLKstKy2rLOsss+xz7GstM+1z67PtaywrLDPd9J40nnSUK9Mr27SdtJ70lGvbNJy0mvSddJx0k2vT6960mrSbdJz0nTSfNJw0k6vbbJO1lDWTNZY1krWV9ZpskjWW9pS1myyU9ZW1lrWT9ZU1mqya7JZ1k3WSdZb1lHWVdZL1ki1SbVl2k+1Wdpi2ljaTLVg2l7aX9pKtWPaXNpa2ku1Xdph2k21ZNpw3nfeed6h3tq3a97St3re17ei3s63fd5t3n7ebN7ct3jez7ej3tS3cd7Zt3zeb9523nLebt7Rt9i31rfTt9u30Ld13tW3TrV73nPedN7B4rS6veLD4r/itrq+4sLiuuK84rW6wOK74re6srrE4rO6Z+Zk5nDmauZs5vS8ZuZu5m3ma+Zx5ve8aOZv5vW8Y+Zl5va8YuZy5mnmSupRv1XqU+pLv0nqTOpN6kjqVb9Wv0fqVupR6k+/TL9Q6k7qUr9S6k2/Tr9P6lC/S+pU6lO/V+pY6lS/58DuwFztYu1g7erA6cDmwF7t7MDrwOjAYe1d7V/t' $Zint_dll &= '7cB3wvvvdMJ1wv3vdsL67/nvbPL8723yesNr8mryafJ7w2zEavRr9Nz12/XqxNr17Pbt9ub3sfj2+Lz5ecbG+fakpqqnqris78D3pKiqUq/dt/ikbrK4umLJt8990sXi8MD5pKmquM+5z2baULWk3t63xuL4vHzD+qRn2vukyaZCysimZahkqGOoYMuqqquqW826z73Puqy7z7msvM+7rKLSodJ+0lOvXdZe1m+yXNZf1lK1cLJRtWvaatpo2mnabNqm3qXeqd6o3qfeubrJ4sjiurrH4nPmdOb5vFnqWupy8n3DcfJw8m7yb/LrxGz07vb3+PykpcnHpabJQ8pEymbLYsthy6yqZctnqGPLZqhny2TLX82+z13NZM2tqrCqZc1hzWLNXM2vql7NrqpjzWDNws+9rL6sxc+/z8TPwM+8rMPPwc+o0qXSp9JYr1evVa+k0qnSVK9Wr6bSZ9aj0qrSYtZm1mXWbtp52mjWY9Zt2nSyc7Jh1mTWdbJysnGyYNZp1nDad9pUtXbac9pWtXXab9px2nTactpVtXjaU7Xft63erN6q3uK34beu3qveyuK7uuC3sN6v3s3iy+L6vLy6zOJ25vu8deZ+5n3me+Z65nfmeOZ55nzmoeZf6lzqXepXv1vqYepg6l7qZO1l7fHA8sBj7XnC/u94wn7DocNtxG70bfTd9e/2esXo9+f36ffIpcbPWa92smrWyaWnyf2kRcpsy2rLa8toy2ioacttzbOqa81nzWrNZs21qmnNsqqxqrSqbM1ozcKsxazOz83PzM+/rNXPy8/BrK/S0s/Qz8SsyM/Tz8rP1M/Rz8nPwKzWz8fPw6y00qvSttKu0rnSutKs0rjStdKz0rfSX69dr7HSrdKw0rvSstJer8/PWq9cr3jWbdZr1mzWc9Z01nDWe7J11nLWb9Z5sm7Wd7J6snHWedZbr3iyd9Z21nyyftqh2mC1p9qp2qLaWrWm2qXaW7VhtWK1qNpYtX3a' $Zint_dll &= 'e9qj2nraX7V82qTaqtpZtV61XLVdtVe16be33ui3u96x3rzest6z3r3eut643rnetd603r7e5be23uq35Lfrt+y357fmt87ivrq9utPi/Ly/usG61OLjt8C60OLS4s/i0eKr5qrmp+ZAvWLqQb2m5v68qOal5qLmqeaj5qTm/bxp7WbqZepn6mbtWr9j6li/XL9bv2TqaOpZv23t9cB6wvbA88Bq7Wjta+1u7fTAbO1n7ULwRfB18kDwb/RG8KLDRPB7wkHwQ/BH8HbydPKjw3PybsTtxPH27MTz9vD28vbQxbL4yqVuzbzSvdJ9sr/eXb+kw3vFs/jLpW/NYKLXz9jPvtK/0n6yobKr2sLewd7A3tXi1uLX4sK6reas5mnqXr9fv3Ltb+1w7XHtSfBI8HzCd/Le9cylxqyissPezaXA0qOyY7Vktc6lz6VGymqoaajHrNnPrNrQpdGl0qXTpWuobKhuy23LtqpyzXDNcc3az9vPy6zJrMqsyKxgr2SvY6/B0mKvYa/C0qaye9Z61qSypbJmtWW1rtqt2qey7bfF3u63xN7Y4q7mQr1q6nPtpsOlw3zF1KVzzaiy2eLDum/LcIcI/////8t0zbiquaq3qs+s0KzNrM6s3M/dz8ysw9Jor2mvq7LJ0m6vbK/K0sXSa69qr2WvyNLH0sTSba/G0mavZ6+ssqHWotatsnzWftak1qPWfdapsqqyttprtWq1sNpotbPabLW02m21sdpntWm1tdqy2q/a0t7H3vC387fyt/e39rfT3tHeyt7O3s3e9LfQ3sze1N7L3vW377fxt8ne2+LHut/ixrrc4sW6yN7P3t7iyLrg4t3i2uKx5rXmt+az5rLmsOZFvUO9SL1JvbTmRr2v5ke9xLq25kS9bOpr6nPqbepy6m/qYL9x6mG/Yr9w6m7q+MB07ffAd+117Xbt+cBN8KHCTvB9wk/wfsJM8FDwSvCnw3jyqMNvxEvwcMTuxN/1fsX09n3F' $Zint_dll &= '6vf1xfbFzPnRrN7PbrVvtdWlyqZHynHLbai6qtKs06zUrKbWy9Jvr66ypda42nG1t9pwtdXeSr275rjmuea65njtUfBx9HD09fbWpXXNcK9ytdbe4eJLvXTqUvBy9Nelu6rXrN/P2KzWrNWszNJxr3Kvc6+wsqfWr7K52rGyc7XX3vi3+bfJusq6TL1kv3XqY7957frAU/Bz9Nilbqh4zXfNvKp2zb2qec3lz9us2qznz+bP36zerNms4c/iz+PP4Kzgz9ys5M/drM/S09LR0tDS1NLV0tbSztLN0nWvdq/X0tLSsNbY0nevdK+q1qnWq9as1q7Wrday1rWysrK2sqjWt7Kx1rSyr9azsrzavtq62rvav9rB2sLavdrA2nS1297g3tje3N7h3t3e+rdDuP232d7a3s66Rrj+t0S4/Lff3kW43t5BuPu3Qrji3ubi6OJAuOPizLrp4s265+Li4uXi6uLLuuTiTr2/5r7mUb1PvbzmTb295lC9feqh6n7qdup66nnqd+pmv2e/Zb946nvqfOpov0DBo+38wHvt/sBBwf3Aou187fvAoe167X7tfe1V8KTCpcKiwqPCVPB78qnDefJ68nT0d/R19Hb04PXvxOv3tPj3xfj4+fhmxtml4azD2uPe2qVvqL6q6M/pz3ivxNp1tUe4QsGk7XzyePTbpaHNes18zX7Nfc17zb+q4qzyz+3P6s/xz+Ss5azwz+/P7s/rz+zP88/jrHyvpK+jr+HS29LZ0qGvudZ6r97S4tLk0uDS2tKir9/S3dJ5r+XSpa/j0n2v3NJ+r3uvubK61rPWtda31rjWtta6srvWtNbI2na10NrF2tHaxtrH2s/aztrL2riyd7XJ2szaeLXN2sra7t7y3k648OJRuPDe7d7o3ure697k3k24TLhIuOfeT7hQuObe6d7x3kq4S7jv3uXe8uLQuvTi7N724tS69+Lz4tG67+LTuuzi8eL14u7iSbjr4tK67eJUvcHm' $Zint_dll &= 'WL1Wvc+6yObJ5lO9x+bK5lW9Ur3D5sDmxebC5lm9xObG5le9ar+o6qLqpuqs6q3qqeqq6qfqpOpsv2m/o+ql6mu/q+pGwartpe1FwUPBrO1Ewajtqe2m7a3tVvBHwaftru2r7VrwV/CmwlvwXfBc8FjwWfCj8qrDfvKi8n3ypPKh8nr0ffR59HHEe/R89H70csR0xHPE4fXj9eL19va1+Pr43KVyy8Cqo83BqsKqos34z/fP5qzprOis56z0z/bP9c/o0qev7NLr0urS5tKmr6qvra+ur+fS6dKsr6uvqa+or8LWwNa81ruyvda8sr7Wv9bB1r2y1drU2tPa0tr23lK489713lO4VLj03kHj+eL64te61brWukPjQuP+4v3i/OL74kDj+OLL5tDmzubN5szmz+au6m2/SMGw7UnBr+1f8F7wp8Kl8qvDofShxff2t/i2+KjJ6qzrrMPWVrjdpXKocahwqKTNxKrDqu6s+s/9z/vP7KztrPnP/M+1r/PS9dL00rKv79Kwr6+vs6+xr7Sv8tLt0u7S8dLw0sbWx9bF1sTWvrJ9tdba2Nra2ny1erXX2nu12dp5tUHf99763v7eWrj83vve+N753li4QN9XuFy4W7hZuP3eSeNI40Tj2LpH40bj2bpevdLmX71bvV29Wr1cva/qcL+x6rDqReNyv3G/br9vv7Xts+1KwbTttu2y7bHtYPCqwqjCqcKm8qfyrcOsw6P0pPSi9Pj2+fbepUjKc6ilzcaqxaqmzUDQ76z+z/Cstq/40vbS/NK3r/fS+9L50vrSyNbK1r+yydbAsqK1obV+tdvaRN9duF64Q99C30rj27raukvjTONhvWC9terT5tXm1Oa06rLqtuqz6nO/t+1Lwbjtue2rwqzCdcTRxd+lQdD90rivurO5s6S13dqjtdzaRd/cuk3j3bp2xKX0y6bHqqfN8qzxrELQQ9BA00LTua9E00fTRdNG00PT/tK6r0jTQdPT1say' $Zint_dll &= '3NbDstXWx7LBstDW3dbR1s7WxbLCstTW19bEstjWyLLZ1s/W1tba1tLWzdbL1tvW39rk2uDa5tqntczW4dqltd7arLXi2qu149qttai1rrWptaq1prXl2mG4UN9T30ffTN9G32O4St9I32K4T99O30vfTd9J3+G6Ut9fuFHfXePouljj57pO41Dj4LpV41TjV+PlulLjUePkut+6U+PiulnjW+NW40/j47ppvd66XOPZ5mK92+ZjvWW93ubW5ua63ObY5mC4aL1kvWa9Z712v93m1+ZqvdrmwOq76sXqdL+96ni/w+q66rfqxupRwXm/wuq46ne/vOp7v7nqvup6v8HqxOrL7cztvO3D7cHtT8HI7b/qv+3J7U7Bvu297cftxO3G7brtyu1MwcXtzu3C7VDBTcHA7bvtze11v2PwYfBn8LDCZfBk8LLCavCxwmvwaPCuwmnwYscI//////Cvwq3Cq/Jm8GzwqPKyw7DDqvKs8qnyscOuw6/Ds8N4xKr0qfSn9Kb0qPR3xHnE8MTl9eT1+vb89v72/fb79qPFosXTxdLF1MXt9+z3+/i4+Pz4WMZZxm35fsbMpqjNRdBG0ETQ86xH0EjQSdBJ00/TTdO7r0vTTNNO00rTybLe1suy4NbKst/W6Nqvtera59rh1rC16dpW32S4VN9luFXfZrjpumHjXuNg4+q667pf49/m4OZrveLm4eZhosrqy+rH6sjqfL99v8nqV8FTwVjBVMFWwVLBVcGzws/trvKt8qv0esR7xEH35vVA9/34pPnNpnSoqc3IqvasTND0rErQ+az1rPqs+KxL0Pesv6++r1rTx69T01nTw69S01jTVtPCr8SvVdO9r1TTyK/Fr8mvxq9R01DTV9PAr7yvwa/w1unWtbXo1s+y1rLTstmy2LLUsuLW5dbk1tCy5tbv1tGy49bs1u3W0rLq1teyzbLVsufWzLLr1u7W+9ry2rK1+dr22u7a99q0te/a69psuPTa' $Zint_dll &= 'sbX62ri1urXt2rm18Nqztfja8dr12vPatrXs2ru1zrK3tby1aLhd31/fYd9l31vfWd9quGDfZN9c31jfV99i31rfXt9ruGm4Zt9nuGPfcuPuumrjeL104/G6eOP3umXjdeNi43fjZuP+uvu6duNw4+269br0uvO6+bpj4/q6ceP2uuy6c+PvuvC6+Lpo42fjZONs42njbeP9unnj8rpu42/ja+P8uufmcL15vXW95OZyvXa98OZsvejmdL3r5ubmc713veXmcb3v5m697ubt5nq9cuVtvezm4+Z7vermb73p5qK/p79+v9jqz+rb6tPq2eqov6G/zOrS6tzq1era6s7q1uqjv9Tqpr+lv9Dq0erN6tfqpL/e6t3q2u3W7V/B0O1ZwWnB3O1hwV3B0+1kwWfB3u1cwdXtZcHg7d3t0e1gwVrBaMHY7WPB0u1ewd/tYsFbwdntZsHX7dvtbvB08LnCd/C0wrXCb/B28HHwusK3wm3wtsJz8HXwuMJy8HDwuPK3w7jDtMO1w7TysvK28rrDt/Kw8q/ys/Kx8rbDtfKs9H7EfcSt9K/0rvShxOv16PXp9ef16vXyxOz18cRC99XF18Xu99bFufhA+UL5/vhB+WzGzqb7rG/Syq/asvza/drf6mrB4e27wrryufKixO31Q/f4xUnKyap1qE3QYNNb01/TXdPLr17TXNPx1v7aQNtp32rfbrhvuGjfa99n3224QLtwuHrjfL3x5n29qb/i6uDq4erk7ePt4u278rnDvPJE9/nFuvjPpsuqyqpP0PysTtBi08yv8tZh09yy9dbz1vTW27JC20PbQdtzuG3fbN9u33K4cbjy5vTmfr3z5uPqqr958Hjwu8O98r3DvMOw9O7188TQplDQ/axl086vZNNj082v+9b91vbW99bdsvjW3rL81vnW+tbfsr61v7VE22/fcN9+40O7QbtCu3vjfON94/nm+uahvffm9ub45vXmrb/k6qu/rL/m7WvB' $Zint_dll &= '5e2o73rwe/C8wr3CbMG+8r/ysfSjxNGm0qb+rMyqz69R0MC106ZBrVLQU9BArUKt1KZU0NGvZtPTr9Cv0q9B1+CyQNf+1nHfoeOiva6/5url6uft7/XVpnPLqs1DrVXQaNPUr2fT1a9D1+KyQtdE1+GyRttH20XbwbV0uHW4Rbuj46LjRLv75vzm5+pwwW/BbcFuwXHBfPC/wr7CwPKy9KXFpMXWpvvRd7jCtXa4RrvXpqnJ2KbZpqvNdst3y3eodMt2qHmodct7qHqoeMt4qNGqz6qtzc6q06rVqtKqsM2szdaq0Kp8qNSqr82uzc2qW9BHrUitXdBX0FrQY9Bh0EmtZ9BMrWTQXNBZ0EnbYtBErWXQVtBf0EatS61g0E+tTa1Y0EqtXtBOrUWtZtDar+Ov2K/Wr2rT3q/br2zT3a9r02nTbtPir+CvSNtv023T16/Zr9yv36/hr07X5LJF10fXSNdQ10zXStdN11HX5bLpskbXT9fnsuayS9dJ1+Oy6LLItVHbT9vKtUrbod/JtU7bS9vFtcu1UNvHtU3bR7vGtUzbzLXEtcO1d99133vfc9+i33jfct97uKO4fd923364fLh+33m4eLh53324zbV833TferihuKK4TLtIu027puOl46fjSruk40u7quOp46jjSbtB50TnqL1D56e9o72kvaW9QOf+5qa9Quf95unq8+qxv7C/7erv6urq7uro6vHqr7/w6uzq8urr6nTB6O3u7XjBesF3wXbBdcFzwent7O1ywe3tecHr7ertwMLBwqHwffB+8MLywfK+w7T0pMSz9PD1RfemxUP5RPnYxdqm16pS2067e8Hv7dum5a/kr1Pb9OrcplCtVNtV21bbT7uyv92m2Kpo0OavcNPqslfbpLhQu7O/fMHCwrX03qbZquevUtfOtVG7q+NF59+mz7Wj31K74KaxzWnQUa1y0+qv6K/pr+uvcdNX11TXVtfrsu2y7LJT1+6yVddY21nb' $Zint_dll &= 'Wtum36ffpd+o36W4pN9Tu0rnRudJ50vnSOdH5/Xq9ur36rS/tb/x7fDt8u2j8KLwxPLF8sPypcS29Lf0Rvfv97v44aZ9qH3B4qZY11vbQcZKykvKTcrjpk7KTMqiy6PLe8uhy6Gooqh8y3rLect9y36ofstq0LbN3Kq1zbfN26q8zd+qss3AzcbN5qrDzeOquc2/zcHNtM3iqt2qus3kqueq4araqr7NuM3Fzemq5argqr3N7K+7zd6q6KqzzcLNxM1irVytZK1hrXHQdNBdrWvQVq1grWOtZa2i0HfQVa2h0FmtV61SrW/QftBz0HbQpdBmrX3QXq140KTQddB50HzQbdCj0HvQbNBw0F+tWq1TrVitVK1nrW7QpdNbrXrQQc6o0/qvdtOj033TstOq037TqdN403zTtdP9r63TpNPtr7PTdNOs0/yv969z0/Wv9K/5r6vT8a/4r3LQXNum03rT+69706HT/q9106/TrtO20/Ov8K+007DTp9Oi0/av8q930+6vsdPvr3nTXtdg12XXedf8svKyXdf9sv6yaNdv13XXYtdp10Czd9dy1/qy+LJu12rXXNfvsmHXWdf3svmyZtdj1/Syc9fxsmTXetds12vX8LL7svOyWtdf13DXdtdBs1vXZ9dt1/ayeNdx13TX9bJs22Db17V926fbqtvVtWjbo9tp23fb4rVz29+1dNtd26Tb6LWh23XbrNtw28jfr9vmtW7betvptdS1ctut22vbZNtv22PbYdvQtaXbatuo26nb2LXdtdm14bV+29q1dttm29K1Xtui26vbZdvgtbDbcdtt29G15bV82+e1eNvctda13rXTteS1edtn23vbYtum267bX9vH393fVbjM38rftd+puMXf2d/B37G42N+/3+O1z9/A39bfsLiouKrfst/L38Pf3N/G37a419+tuMnf0d+239Df4d+x39Lf39+r39u1ud+436+4vN++383f3t+yuLO4sN+rmgj/' $Zint_dll &= '////uLTf2t+0uKy4rri1uODf09/O37vfut+quKzfp7jE363fwt+339vfpriz36/f1d+u32C70+PC46zjyuNYu7vjxeNbu77jWbuv483jruPB463jv+PI48bjuuO147PjtOPH49LjvONau7fjy+Ndu7bjsOPA42G7Vbteu7jjsuNXu9TfVrvD41S7Y7tcu8TjueOx48zjveNiu9DjX7vP48njzuPR43PndOdn52bnYue0vay9dud156nfX+dj513ncOdh53fnWudY52Tnbudp57a9T+dt57e9vd9b51LnVed751znU+dR507nsL1l56+9s71g52jnqb1453znq71X52vnb+dU53nnsr2xvUzntb1y51bnaudQ517nWeetva69bOd953rncedN56q9SetA60Pru79F6/nqQetH67i/vL+2v/vqTOtG6/zqVetP6/jqRu7+6re/SutU67+/Uev96kTrSOtC61brU+tQ67m/ur++v/rqV+u9v03rS+tO61PuQO5F7lLuRO777UHuosH07U3uT+7z7aHBUe5J7qjBUO5C7qrB+e1S60ruR+717VXupMGlwfftSO5U7kvu/e2nwaPBTO7+7Vbu+O1D7k7u+u387cvC9u2pwcTCfsGmwcjCs/Cp8KTwqvC08Ljwt/DKwsnCq/C58K7wpvCo8KfwrfCy8KXwrPCx8MfCr/DFwrDww8LGwtXytfDCw83y0fLJ8szy1PLAw9ny0vLK8try0/LDw8TD1/LL8r/DwcPG8s7yyPLY8tbyx/LP8r70xcPQ8qfEqcSmxMP0u/S59L30uvS/9MH0qsSsxMD0rcSrxML0qMT0xPH19/X2xLz09vX99fT1+/X69bj09fW28P718/X49fz18vVK9/XE+fX090v3SfdH90j3TPfZxfL38Pf19/P39vfaxfH3vPhF+Ub5R/nH+b35T8rqqmituNO300CwQrN813vX6rW4uLe4ubjU437nWOta61nrq8FX7rrw' $Zint_dll &= 'pfnkpsnNys3IzcfN66qp0KfQptBprWutaq2o0MTTwdO/00GwwtNGsLzTy9PN073TQ7DO08nTu9PA08rTxtPD00iwzNO+08fTudNHsESwxdPI07rTRbBCsEyzpddLs6jXq9dIs0azftep16fXpNes163Xr9ew133XRbOi16HXrtdHs6PXSbNEs6bXTbNKs6rX8bW/27Tb7rXn373bsdvstbbb77W627jb8rXrtbLbtdvwtbPbvtu827fbudu72+216N/u3+Tf6t+6uObfwLi/uL647d/BuMK449/w38O4vbi8uOzfxLji3+Xf79/r3/Tj6eO7uGq73ePy497jZbvb4+Tj3ONnu9bj8eNou+7j7+PX42275uPg4+fj2uPz4+vj5ePV42m77ONsu/Dj6uNmu+jj4uNku9nj4ePt49/j4+PBvenfsue757Hnreeq58K9qOdru6HnwL2n57+9rOep57nntOeu57Pnu72r577nouej57rnvL2/5769wOew59jjtuev57jnteem57m9vee6vaTnvb1k67fnvOdh67i9wL9r62frZetg62/rxL9c62jraetf617rbOti613rY+tu61vrbetq68K/wb/Dv2bry/BZ7rHBXe5a7mHuZ+5c7nDursFq7l/ua+5m7m3uXu6zwbLBYO5u7ljubO6swWTuY+5o7lvusMG0wWLuae61wWXurcGvwcfwxfDM8MnwzfC+8Mbw0fBv7sLwz8Kl573wyvDE8MHwvPC78NDwwPC/8M3CyPDMws7Cw/DP8N7y3/LJw9zyxsPk8srD5vLb8s7w6PLd8sfD4/Ll8uDy5/Li8uHyyMPF9Mb0yPSuxK/EyfTH9MT0QvZF9kH2+sRD9vnE+MT3xET2UfdP9073QPZQ90b2Tff599f39/fbxfj3+ve/+PrFvvi9+PvFWsZu+af5pvmo+eWmqtDP09DTwNtH9sD45qZsravQsddOs8LbwdvztcW4wefDvcS9xb/8xeem' $Zint_dll &= 'rNDtqq7QrdBtrdHT2NNJsNbT1NPb09LT09NKsE6w3NNNsNrT19PV00uwTLDZ01CzstdVs8LXVLPE17jXUrPD17PXU7O/17vXvde3177XT7O617nXtdfA17zXtNe211Gzwdf2tc3bydvL28bbxdvD28rbzNvI28fb9LX1tc/bzbjy3/jf89/03/nfz7jHuM648d/E28q4yLj33/bfybjLuPXfxrjMuPbjdLtC5EHk++N2u0Dk9+P44267cLv94/Xjcrtxu/nj/uP843O7+uPO22+7wufJ58a9zefKvcXnw+fM58W9y+fHvci9xOfJvcrnxufH58jndbtw63zryr9363nryL9x63XreOvGv8m/e+tz63Treuty63brx79y7nHut8F37rnBtsFz7rrBdO517njuuMHW8Nnw0/DV8NTw1/DY8Hbu0vDNw+zy7/Lx8ury6/Lu8vDyzsPMw8vD7fLp8sr0sMTL9En2+8RL9vzESPZK9qjFUvenxf33/Pf790j5SflL+Ur5UMropm6txdf3tfrf0MLy8qOoV7NWs9Db+LXS29Hb+9/QuEPkRuRF5ETkzufQ58/nzL/Lv7vBee577nru0cL08vPyzPSxxP3EVPdT91vGpKiv0G+tyNfG18fX1NvV20Pg09v830HgQOBC4NG4/t/930TgSeRH5Ejk0+fR59Lnfet87n3u0sL18s30ssRM9lX3qcX+90z5pahxrXKtsNCx0HCtVLBSsFGwWLBQsFmw3dNWsFOwV7BVsE+wX7NZs8zXXrNgs1qzW7PK11izy9dds8nXXLNEtka22NtFtvm1/bXkuEng2tv+td3b3ttDtuDb4tvj29fb1tvk20K24dvf20C2+7VHttvb3NvZ20G2/LX6tUjg37jauNW45bjWuNK44bjeuOC417jcuNO41LhQ4E3gReBK4OK4UeDjuNm4R+BP4EvgTuBM4N24RuDYuEzkeLt7u07kpbtN5H27z71P5KS7S+Smu3m7' $Zint_dll &= '27h8u3q7fruiu3e7p7uju6G7SuTWvdK92b3W59q94ufb58u94+fd59WTCP////+93ufUveHnzr3f59Xnzb2q69O90L3YvdTn2OfMvdfn2efa59e93Ofg5+Tn273Sv6Xrq+uo637rrOuh66frzb/Tv63rz7/Zv9S/r+up69C/ouvav6PrpOvbv9i/0b3Ov7Dr3L/Vv67r0b/Wv9e/w8Gk7q3uqu6s7sDBpe6r7rzBp+7EwaPuqO6v7qbrqe6i7r3Boe6+wbDuv8Gu7sLBfu7Bwabu3PDq8OXw5/Db8NPC2vDWwtXC6fDh8N7w5PDd8N/w6PDm8NTC7fDr8OLw7PDj8Pnyz8NB80/21sPg8Pfy0sP48v3y1MPVw/byQPNC8/ry/PL+8vvyQ/PRw9fD08PQw9D0t8TO9NL00/S1xNT00fTP9LjEtMTV9LbEs8T+xEDFTvZN9lD2UfZBxVb3W/eqxVj3V/da91n3Q/jcxUL4QPhB+P7F/cXB+ML4QMZN+U75Z8Ztxqn5yPmmqM3XztdS4FDk5efGwcXB7vBE80T4p6je01qwYbNU4FPg3L3m5929se7XwnbGqKjLzd/TYrPP19DX5dtItua4VuBV4FfgUeRS5Ki73b/evd6/te6y7rTus+7Hwe/wRvNF86TLXLBbsODT0dfn2+bbSbZZ4FrgWODouOe4qrupu+fns+ux67Lr37+37rbu8vDx8PDwR/Oq+amoc610rV2wXrDi0+HT0tdos2azY7Nns2WzZLNKturb7bhMtlG27NtTtlK2Vbbr2+jbT7ZLtk226dtUtlC2TrbvuO647LjwuOq467jpuFvgVOSsu627q7tT5FXk6ufs5+e97efgvenn373pveW95r3ivejn4b3u5+vn6L3jveS9teu367bruOvgv7Try8G47sjBzMHKwcnB8/D28PXw9PDYwkjzSfPYw0rz2cO6xLnEUvZCxVP2XPerxazFRfhCxqqoarNps1zgXeCuu7nr' $Zint_dll &= '6r2667nuq6iy0Hatda3j01+w5NPV19TX09fu21i27dtXtu/bVrZf4GLgYOBh4GXgXuBm4GPgZOCwu1bkr7vy5/Dn673v5/Hn7L2767zrzcFM807zS/NN89b0VPZv+ayod63l0+fT5tPY12yz1tdrs9nX2tfX1/vbYLbz2/nbW7ZetvLbWbb222zgXbbx2/fb9Nv62/Db+Ntctl+29dtatvK4aODxuG/gbuD4uPm4cODzuG3g97hy4Gnga+D0uGfgauBx4PW4c+D2uLG7W+Rh5FnkYuRY5F3kY+Rg5F/kXuRX5FzkWuTxve69++dB6EPoQOj45/rnRehC6PznRuj550To7731vfO98+f0vfC99Of25/Xn/ef+5/K97b3358br4r+96+O/5r/C67/r5b/D68TrvuvH68Drxevkv+G/weu/7tDBzsHRwc/Bvu677rruve687kXx3sL78Prw2cJB8UDx9/BD8fzw3cL58ELx+PDawtzC/fDbwv7wRPFS897DT/NT89vDUfPgw93DUPPfw1Tz2sO8xL7E2fS9xNf03MPY9LvEQ8VFxVb2RMVV9mH3rcVg967FXvdd92L3Y/dG+F/3xvjD+MT4xfhcxlH5UPlP+XD5vvmr+W7GrahgsPq49r3I69/CVfOs+a6o7qp5rXitY7Do02Gw6dNisN/X29dts97X3dfc126z4Nfh10PcQdxF3EbcTNxI3ErcQtz820ncS9xE3Efc/dtitkDc/tthtmO2/bh14HfgduB74Pu4eOB04HngeuD8uP64fOBn5GbkZORl5LO7tbuyu7S7TehO6EnoSuj4vf29973+vfm9S+hM6EjoQL77vfq9/L1H6Mrr6L/M6+q/z+vL68nrzuvpv83r57/TwdbBwe7UwcDu0sHVwUbxR/FI8eDCSfHhwuLDWPNZ81fzVvNa8+HD3fTb9Nz03vTa9N/0WPZZ9lf2RsVk96/FZfdI+Ef4r6hktkC5trvsv+u/48N8xEfF' $Zint_dll &= 'sKhksEG5W/Omy7GotKizqLKopcvNzc/N76rxqszNzs3wqtHN0M3SzbbQtNB8rbPQo61+rXutpK19raKtoa210HqtarDr0/HTZ7BusGmw7tPw02yw6tPt02iwZbDs02uw79NtsGaw49fm13CzerN2s+TXfrN3s3yzcrNvs3GzfbPl13WzeLN0s3mz59d7s3Oz4tdN3GW2T9xntmm2Ttxmtmq2aLZHuaPgT7l+4FC5Rbmh4Eq5ouBDuUK5TblMuUu5SblOuX3gRLlGuUi5uLu7u7+7ubu+u7y7t7u9u7q7UuhDvkG+U+hEvkK+UehQ6PC/T+juv+2/0OtFvu+/0evyv9Lr8b/YwcPu18HcwdrB28HjwtnBwu7T6+LC5MLkw+XD4PTexd3FtqhVym+wUspTylHKVMqqy6fLrMuoy7eouqipy7moq8u4qNXN1830qtPN1s3UzfKq9arzqrjQvNC50KetqK270L3Qv9Clrb7Qpq3u17rQ8tP70/nT9NP10/rT/NNxsPfT89NwsHKw9tP90/jTobPx1+nX79fw16Kz6Nfq17fQ7Nft1+vXbLZW3NTrV9xU3KOzbrZT3FncWNxrtlzcUtxb3FDcWtxV3G22quCl4KvgpuCk4KfgUbmp4KjgUrnBu8C7buRx5GnkbeTCu2zkauRw5GvkaORv5FnoSL5K8VboV+hV6FHcR75a6FToRr5Jvljo1evzv9br1+vE7t3BS/FM8U3xXfNc8+L04fRb9lz2WvZm97DFu6iqramtdbB0sEDUQdT+03Ow9df21/LXpLPz1/TXX9xh3F3cYNxvtl7ccLZz3VW5VLlTuazgreBz5HXkxrvDu8W7xLt05HLkYehe6F/oTb5g6FvoXOhKvku+XehMvtvr3OvZ69rr9L/Y68juxe7H7uDBy+7fwcnuzO7K7sbu3sFP8VDxTvFS8eXC5sJf8+fDUfFe8+bD5fTm9L/E5PTj9F32SMVJ+Mj4x/hDxl3Gyfhx+W/G' $Zint_dll &= 'vKj2qla5wMS9qKutpbNxtufC96rB0MDQQtR4sHabCP////+werBE1Hmwd7BD1Kiz/Nens6mzQtirs/7XQNj316qzQ9j51/rX+Nems0HY+9f9123cbNxq3GLccdxl3G/cdtxu3Hm2dbZj3Gncd7Zo3Hi2erZr3HK2c7Z33HXcdNxm3HLcdrZ0tnPcZNxn3HDcuuS34LDgw+DM4LPgYbnA4Fe5WbllubHgWrlcuWa5W7lkubngruBiubjgXrnK4GO5yOC84MbgYLmv4MngxODL4Fi5Z7ldubXgveDB4MXgX7m04LLgvuC74Lrgv+DC4MfgeOTHu6TkeuTMu9C7reS15KbkyLuq5Lbgybux5LbkruSw5LnksuR+5Knk0bvNu3zkq+TLu6Xkyruz5KLkeeTOu7jke+Sv5Kzkp+R35HbkoeS05M+7t+R95KPkUr5avlW+pOih6GfoUL5Pvla+ZehUvnHoY+hk6E6+o+hYvnToeehz6O7rb+h36HXoaOhi6H3oV75+6Hjobehr6Gbobuh76Groeuii6FO+duh86HLobOhRvqjkcOhZvmno9Ov3v/Pr8OtE7Pu/Qez460Ps6ev26/2/4evf60LsQOz+6+3r7Ovi60DA6Ovy6/3rQ8BF7OjBRcD+v+br7+ve6+Dr9b9CwPq/5+v36/HrQcDd6+PB+ev86/y/6+tEwPm/+L/16/vr9r/k6/rr5evq69Lu1+7lwefB3e7hwezu4+7Y7tnu4u7uweHu0e7g7tTu7e7twevB1e7o7tru5+7p7tDu5sHq7t7u6sHb7uzB5O7kwdbu5e7f7uPr5u7T7unB6+7iwc7uYPFZ8enCVPFj8Vvx3O5l8VXx6MJf8erC8sLwwmHx8cJX8VjxXfFi8c3u68Jq8Wfxa/Fe8VrxaPFq81zx7sLtws/u78Jk8Wbx7MJp8VPxVvFz82Pz68Nx82Hz7MNs82jz8cNy82LzZfPpw3TzbfNw8+/D9MPyw2nzZPPtw+7D' $Zint_dll &= 'YPPqw+jD8MNv8/PDa/N18/XDZ/Nu8/P0QvX19Pz0ZvP69On0QPXDxO30/vT09MLERPX29Pv0/fTn9EH18vT39Ov07/RD9fn06PTs9O70+PTBxPH06vTw9GH2ZvZPxWj2ScVk9mr2TsVKxUvFYPZn9k3FZfZMxV/2Y/Zi9l72afaxxW33cPds9273b/dp92r3Z/dr92j3ssWzxUv4TfhM+E744MVK+N/F4cXL+Mz4RMbK+FP5UvlU+V/GVflexlb5cvl1+XT5aMZz+XLGcMZxxnfGwPnB+b/5yfn4qkTYeNyl6Hbz+aqsrXuwRdhG2KyzfbZ63Hnco7Z8tnvcfraitqG2e7ZoudDgzuDP4M3g0rvVu9e71rvTu9S7p+im6Fu+qOip6Fy+TexL7PPuSexK7EbARuxO7EjsTOzv7vHu8u7zwe7u8sHw7u/B8MHxwUfs9cJu8WzxbfHzwvbC9MJ383jz9sNF9Uf1RvXExFDFbfZs9mv2+qqqyVjK6aZWylnKV8quy8Gowqiwy7+or8uty8CovqjYzdvN/arazdnN/Kr7qkCr3M3+qsbQrq2vrbCtx9DD0K2txNDF0MLQpLChsEXUorClsEbUfrB8sH2wo7Cts0nYtbNI2EvYsbNK2Ku2r7Oys66zs7O0s7CzR9intn3co9yi3Ky2qLaptnzcftyh3KS2praqtqW20+DR4NLgarlrudTgabnYu9q72bu75Lzkq+iq6EfASMBP7EnA9u707vXu9MFv8ffD9cFBq6awR9RM2Lazrbak3Kbcr7autrC2sbal3G65b7ltudu7bLnV4Ny7rOhQ7ErA9sFw8XTx+cJx8frC+MJ18fvCc/F58/fC+MPN+EKruLO3s7K2qNyn3LO22eBzuXC52OByudbgcbnX4L3k3buv6F2+rehevl++ruhgvlHsTsBLwFDAU+xMwFLsT8BNwPnu++73wfru+MH47vfud/F28fzCePF+8/rDffN68/nDe/N880j1' $Zint_dll &= 'SfXFxFPFbvZRxVLFb/a0xbXFcfdFxs/4R8bO+ND4RsZX+a35Q6t0ub7ksOhRwFLARKthvvvDsa1TwOLFsq1N2Kncq9yq3N3g2uB1uXa52+Dc4MDkxeTeu7/kweTI5MPkx+TE5MLkxuTfu7PosehjvmK+suhkvlbsVexUwFTs/O7+7kHvQO/5wf3uofH9wn3xovH+wnvxfvF88XnxQMN68aHzo/Oi80r1S/Vw9rfFtsVP+FD4SMbR+GnGs620tsrkyeS16LTo+sFD70LvpfGj8abxpPH8w6TzpfOm83H2cvfS+LStV+xE77Wt4LtY7EHDp/H9w0z1TfVUxVH4tq27s7yzTti1tra2rNy3tnq5fLnf4ODg3uB3uXi5e7l5ucvk4bviu7zoZ7636Lbou+hlvlvAuOi96LrouehmvlnAWuxVwFvsWexYwFbAWsBXwEXvSu9G70nv+8HU7UjvR+9Ew0LDRcNDw6jxqfGq8UbDqvNAxKjzQcSn86nz/sNR9U71T/VQ9XL2VsVVxXT3c/e4xePFScZgxlj5rvmv+betrdzh4MzkzeTju+S7vuhovvzBq/FHw63zQsSs867zq/N19lL1U/XGxHT2c/Z197D5uK25raewSNRP2Li2u7a5tq7cvba6try2frni4OPgwOh9uaG5ornP5M7k5bvmu9Dkv+jou2m+57tcwMHoa75qvsLoxejD6MTobL5hwF/AXsBd7GDAXOxL717sXcBf7E7vTO9N71LvS8NR71TvU+9Q70/v/cGu8a3xSsNIw0nDrPGx80PEsPOv80TEWPVX9VX1VPXIxMfEWfV297nFd/ZXxXb2VvV39+TFYcZZ+bH5uq1Q2FXvu63S5NHkYOxX71bvTMOy87PzycSy+aiwv7a+tuTg5uCkueXgo7mluefg1OTW5NXk2OTpu9fk0+TZ5Mzoz+jR6Mfoy+jI6G6+cb5zvsnoyuhyvs3o0OjO6HS+cL7G6G2+b75jwGbsZOxj7Gns' $Zint_dll &= 'aOxn7GLsYsBh7GXsZMBa717vW+9d71zvWe9f72LvYO9h70DC/sFY72Pvs/G28bjxt/Gx8bXxsPGy8U3Dr/G08cDztfNFxEbEtPO587/zt/O+9wT/////87vzuvO987jztvO882D1XvXKxF31Y/Vh9cvEXPVa9Vv1zcRf9czEYvV49n72efZbxaH2WsV99nz2WcV79ljFevZ996H3fvd797vFePd896P3ovd593r3usVS+OfFU/jlxebF0/hKxnb5asaz+WvGtPm1+cP5wvl6xs35qbDp4Ojg6rvru9rk0uhs7HW+ZcBq7G3sZsBk72vsufFOw8HzZvVk9WX1ovZcxaT36sW8xejF6cXU+GLGqrC68UnUprnb5Oy73OTU6NPoaMB2vne+1+jW6NXobuxx7HDsb+xnwGjvZu9l72fvT8O88b3xUMO78cPzwvPF80fExPNn9Wn1aPWj9qb2pPal9qX3vcVU+FX4VvhLxmPGtvmrsHi+acC+8ab3xPlK1HvGrLBy7L/xxvOn9qf3rbDd5N7k7bvuu9noer55vtjoae/A8cLxwfFTw1LDUcNexaj2XcWp96j3TMbV+L2z6uDh5N/k4OTi6N3o2ujh6OPofL7g6Nzo2+jf6N7oe7597Hjsduyh7Hfsc+x57HTscu917KLsfOxqwHvseux+7Grvbe9s73Tvb+9z73HvcO9u72vvQ8JCwkTCQcJ178jxy/HJ8c3xzvHG8VjDx/HF8czxxPHD8VfDVcNUw8rxz/PV80rE0PPT89fzS8TS88rzyfPW883zy/PU88zzScRIxMfzyPPR887zbPVv9VbDbfVz9XH1a/V29Wr1z8Ry9W71zsR19XT1q/aq9rH2rfaw9mDFrvav9qn2rPZfxb/FtPev97P3tvey9673wcWx97X3wMWs93D1sPet96r3q/e+xVr4XPhf+Fv4YPhZ+Ff468Vd+O3F7MVY+F742vhNxtv42fjW+Nj41/ha+Vz5W/l5+Xj5' $Zint_dll &= 'd/l6+XPGdMbK+c75vrOv3O3gp7nr4Ozg4uTj5PG777vk5PC76Ojr6OXo7Ojk6Obo5+jq6KG+7+ju6H2+6ejt6H6+rOxvwKfsa8Ck7KrsrexwwKnspuyu7KXsq+xswKPsbcBuwKjsqe9673vvfu9873bvee+l733vRcKn76TvRsKm73fvou+j76Hv0vHU8dfx0fFZw9nx0PHa8dbx2PHc8dXx3fHT8c/xWsPb8VvDTcR47/Hz6PNPxOTzUMTt8+fz3fNOxOrz5fPm89jz3/Pu8+vz4/Pv897z2fPs89vz6fPg8/Dz3PNMxNrz4fPi8331e/Wi9a71pfV89Xj1p/V+9aP1evWq9Xf1ofWm9aj1q/V59a/1sPWp9a31pPXB9sT2YcXD9sj2xvZixb32s/ay9mTFv/bA9rz2tPa59qz1tfZjxbv2uva29sL2t/a798X2x/a+9rj2vPe+97j3wsXF98P3w8XC98H3uve39733xve597/3afhu+GT4Z/juxWv4cvjA92X4b/hz+Gr4Y/ht+Gz4cfhw+MT3aPhi+Gb4TsZPxmH45vjd+OX44vjj+Nz43/jn+OH44Pje+OT4Xfle+WD5X/li+WH5fPl7+bf5uPnF+XjGfMbP+X3Gv7PQxMn2UMZRxsCz7uCoufDosOyx7K/sq++q70fC3/Gs797x8/NRxFPE8vNSxLH1s/Wy9cr2ZcXvxej4Y/nS+cGz5eSivrPssuyt71TE0cTH98v5wrPyu6O+9PN0+MC2ru9kxsG2pL5IwnX4wrbx6HLAtOy17HHAr+9MwkrCS8JJwuDxXMO19bT1t/W29dLEy/bN9sz2ZsXI93b4d/jwxWT5ffl1xrDctuyw7/Xz7+Cx7+Lx4fF4+FLGZfl++am58ujz6Lfsqrldw+Pxz/ZnxdD2zvZ5+On4q7m077Pvsu/k8ejx5/Hm8eXxXsP287n108S49dH2y/fK98TFyfd8+Hv4evjzu7jsTcL38/jzzPd9+Or4' $Zint_dll &= 'Zvm5+dT59LtOwunx+fPS9n74pr617+rx+vP78/zzvvW69WjFvfW89dTEu/XWxNXE1PbT9mnFasXGxc33xcWj+KT4ovih+FTG6/js+O34U8Zn+Wr5aflo+dP5c8Blw7/11fbHxc731fl0wLbvz/eh+UrJ/N1KoVehWaFboV+hYKFjoWShZ6FooWuhbKFvoXChc6F0oXeheKF7oXyhxqHHocqhy6HIocmhXKFNoU+hUaFSoVOhVKF9oX6hoaGioaOhpKHMoc2hzqHeod+h4KHhoeKhTKJNok6iSaGtoUOiSKKuoV2hXqGvoc+hQaHQoUShQaKvorCisaKyorOitKK1orait6K4okehRqHVodeh1qFIoUmiz6LQotGi0qLTotSi1aLWotei2KLZotqi26Lcot2i3qLfouCi4aLiouOi5KLlouai56LookKixKHpouqi66Lsou2i7qLvovCi8aLyovOi9KL1ovai96L4ovmi+qL7ovyi/aL+okCjQaNCo0OjYaFVoWKhTqEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwABACDAAcAAAAHAIAACAAAAAgAgAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAIAODQAAAg4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgD+/x0A+wMmAP7/NQD7Az4AAAA+AAAAPgAAAD4AAgA/APAfSAAA+P9VAP//ZYAMUAcgAGAHAADIABgzfABkAH8MACRIgzzA8BwoAmOGHMDwAP8DkBzAMBjPA5gcwPAJxJsAAilOogAwEFO6EKWMBQSmAMNTxiAMBwLAsAoAAPisDMHwBP8DDLYA8D8boxAMz1AAATAMEBFxDAABAZbMADsYFMsAAUDNAAAC5NIADwDWgO0D5QAwAOcAAwAA6QAM' $Zint_dll &= 'MO0AwEbID7IQ8gA8N7cQDAAGJjAkDMFwBwD8AC8A/wkBN2AQAf5AA2/uExkB/v8oARX//zgMgMQAWAxQgBbwAObGBX0sQNXIAJ0M0MoAvQEBf0DFAeD/0CxgAB7wP6DODwyPhAAGMKyEwfAhwO0BAHD2CP/////wAQIA8QEAAPEBEEDzASYA9gGL/wICc8MLAkBoDwIPGxcCrOkgAkzzKQIAAioCCMAtAlx5NgI+yj8CdnlJAkgGTQLfL1kC8PdkAjoDagL/qHUCN++BAj8jigIEsI4CWf2ZAsrzowL//7MCn96/Avn/zQL/q9oC933nAgDA6QLsjvICv+7/Atv/DQMD0BID+kUbA+H6JQP+3zMD779BA6sQRwPr/1UDqvxfAz/vbAP9JHUDrXh+A3Z/igMM8JAD/+2eA/bPqgP6LLMD+ffAA2vrywP9H9cDv5XiA3dm7AO/v/oD+zsGBLT+EQSuexwE4hEiBIGmKAS+QTAENRQ2BMNyPgRwfUcEkXFOBAMAUARrJ1kEy1djBM9wbAQyR3ME7w19BNp+iAR0/JIEBv6bBLS9pQSfP7EEyou5BEl+wgQAWMUEjyLMBOzr1wRcit4Eu93qBGDv8wTntv4ED6QFBZPyDgW7NxkFnlQhBUvQKAWvmzMFFMQ4BdT3QwWwMEgFFApMBQgvUgXQiFcFfv9lBS8ZbQXa/3oFB/uEBfF/kAXre5wF78WnBRAAqAX/mbQF//3DBdd5zgVnBdUF5//jBcv97wX/w/sFQED9BfdvCgaOvRQG+t8hBpcEJwbA9C4G/1s7BnvtRwbn0FAGfgRXBuD4Xwaf/20GPrd4Bv59hQYuiIsG/f+aBn++pwb+g7EGxPa6BlfzxQb9uNAGgNbWBn3v4wZnV+0GiEfzBn3/AQffwwwH//AYB6k3IQfgfSoH/HAzB28/Pwea7EgHs0xQB4GGVQeeP2AHXN1qBw33dAcZSHkHo/6EBwcAhwdWr5EH/zicBw2Yoge4' $Zint_dll &= '760HPUCzB2C3uwfO2MQHNZDKB79y1Qf/P+MH93/xBxF6+Ae79wUI/6sSCAD/Ggi+byYIPKkuCHL+OQjvz0YIG/FPCGvbWggK9GEI5sNqCH7vdwicm4AIEPaHCEjwjQj0FpUItf6hCIJRpgixx68IuxW4CIduwQjf+88IP+TZCM1j4gj/we0Ifn75COv9BglffRIJe3ceCf78KwkLljIJ6ts9CSliQwnoU0sJ3zdXCe/9ZQn1Nm8Jgb13CRjcfgm9/IoJ5NKSCf//ognXP64J4P+5CW9/xgn4q9AJrpvaCdlu5An79fEJFfH5Cal5Agr7vQ8KPFoXCq+tIgq62y0KrB82CvxxQAp5g0gK93xUCl/DXgr/320KZwV0Cpr/gApnhIcKNBWNCovfmArz+aQKczOtCr33ugoaXsIKQL/KCj+g0gr//+IK6wHpCsDf8grdz/4KAHUDC9OrDQvD+BYL1u4hC/1DKwv/tzkLr15ECydCSgusm1MLhvZcC9cnZgu89nELh/d8C7c1hgvNqo8LduGYC+dJoQuf4qsLXFSyC/KvvQs/K8cL2GHOCzv82Qu4u+MLz//xC317/QuVvwgM4BwODP19Gwz/QyYM9l8yDP7/QQzv000MzsRVDLaNXgy8rWgM3GNxDOsReQxZ34QM0COKDLS+lAzb86AM5x+rDMfbtgxj/8IM5PrMDCuy1Az3Y98MO+3qDLqt9AwB/vwM/34KDff/GQ28Ah8N/zIqDTnvNQ38/0MNBYBGDft3Uw31vF4NDQFiDff/cQ37/4ANOr+LDVcAkA3/358Ne++sDX29uA2I28AN1MjHDfP/1Q187eAN7l3rDf9W9w0NfgAOX6wKDpb/Fg5/1SIO7j8uDkDBMg75bz4O5/9MDpt3Vw53jmEOv25tDl3kdg7Pb4IOH1+NDn/glw7f/qUO29exDv4BuQ4A/8EOe/vODtT/2g7fH+YOAPjrDv//+w6P+wcPewANDwC/FA9cfx8P//8v' $Zint_dll &= 'D/MHOA+g60AP5z1LD7/3WQ/X+2YPv/91DwNgeQ/9/4gP7b+VD7vvog9/AqoPQP6yD/3dvw///c4P+eLYDwto3g8f++oP4/v2D/2vAxCknwwQ7fcZEH16JBAP+C0Qvu45ENUPQhBdu00Qn/1aENvyZRD5O3AQf/5+EMzriBBqh5AQ+nObEPyVpRD8n7EQnxC4EPf6xRC33dEQzbvcEH745xDN7PEQZvP7ED88BRH9/xQRP7AdEffpKRF+BjERrpY6EQb+QxF21U0R119ZEdE/YxHzo20RB892EbdvghHRn4wRRH+VEVl7nxHd06oRO6+1Eb2pvxHPfcsROv/XEeD74RHr9u0RAbTyEf//AhL6eg0Sv7caEgDAHBL9DycSf/82Eh//QxL8/lAS/5VcEgAAXBLctWYSY+9xEj4/fBJ/+4oSGwCOEgDokhL2+58S756rEt+4thKf/8QSPwDKEtB70xL/9eES29/uEv8//BLw/QcTvwAOEyCEERO9ux0TN98pE97/NxNt/0QT8w9OE0xgUxP7Xl8T+/9uE/v6exNe/ocTGQKLE/R5lRPe+aET96etE/rruRPrAcATNP/LE9Pr1hNz7+IT16/uE0DA8RO7cvsT/9wIFH/xFBTYLx0U7LgmFAv+MBSj3ToUCx9CFB2PSxTPR1UUK7FdFN7/axTuf3gUc9qCFP8kjBTEy5QUXfegFPLLqhT97LYU7bTAFPm/zRTdTdcU3ZnhFI377BR/u/kUe68FFfvdEhVZyRoVT/wlFbX6MBXjrzsVX21GFf//VhV9P2IVAHhmFdv/dBX/toEV/36PFa/7nBUvAqIVm/+vFcfvuxWl/8cV///XFQcA2hUAx98V//fuFfH/+xX9fwkWvwERFgDcFha8/SIW9b8vFv//PxZ//04W/z5bFikAXhYAvmQW//lyFn//gRb7bo0Wfv2aFv/LpxaeA64WAOOzFt37wBb/zMwW3/bZFv//6RZ/EfIWAPj3Fvb7BBfv' $Zint_dll &= '5xEXPNcbF+/+KRfv3zcXC8A8F7/tSRff/lcXzf1jF/V7bxf9QHcX//+HF1+3kxff/6IXMPmqF9/7uBeX3MIX8/7PF/K/2xffj+cXv9/1F38XABjm7QsYfw8WGFM1Hhh8RCUYfocvGBL6Nxi7RUAY4O1JGJ53VBgXgFkY2b9lGFV+bxiJ3ngYb8GBGEcEhhjeepEYXfedGP9XqhgFKa8Y94a5GJX+xBizl84YL/PZGP/P5xh1n/IY93H9GBf7CBnuNBEZGe4aGcw3Ixlh7y0Z1p84GUzvQhmP1kwZ3ftZGXN7ZBnvbXAZ/td9GTGkgxl/Xo8Z15eaGVsPoxnY/68Zg523Gc57whnsIskZ/9zWGT124BmH7+sZ59/4Ge39BRr/TxIa/KAaGnc7JRr82zEa7T08Gtx/SBqpb1IacPVbGvs/aBpALGwaf/97Gn+EhBpX7I4at96aGpzmoxov8q0a6w+3GrXVwRrrr80a5+3ZGi+M4Rrw/+0af1P4GvDoABuduQob/7UXG2b/IxuP5y4bgdk1GxC+PBt8nEUbweNNG9GcVRszJ10bvAxkG23/cRu3/H0bt++KG9+gkxv//6MbC7+tG3v+uhv/o8YbPzXQG8wT1xvNl+EbN3brGyf79hvWzwEcbH4LHFDsEhwx7RscfGclHBz8Lhz69jocv19HHLoPUBwvrlocraNjHP5/cRzw/HscdN6FHO//lBwA8pkcv/unHKL+sRyvPbwc/7zJHJT20hy5X90crfPoHI8/8xxs8vwcH6ADHe//Eh2/ARodKHciHQVwJx01/zMdA9o6HfnSRB36x08dvz9cHR1cZB06/3AdM+x5Ha+3hR2c/pAdNlKXHZ96oh36v68dIue3HfefxB3//NIduy/dHR225h0G7e4d/R35Hdd9BR7f7xMeI+scHmbxJR7ZfjAewA01Hj09Px6/300eRclUHoO6XB7RfWYe0J1uHod7eB5zz4Me85+PHvXDmR4N36Me/sWu' $Zint_dll &= 'HrMMtR4Cg7keeejCHsCuyR5zx9MeD2/dHn396h4/CfIe8f//HlcBBR/7Yg8f/wEYH7T9Ix/zOy4fE7A0H7JDOx/TXkUfMP9PH/8PWx+f62cf7/51HwPyfB/vP4kfifuTH6k3nB+ZnqUf+d6xHyynuR8zN8If9sHLHy6B0R8+/t0fIF3jH/fy7x+F1fcf12kEASD//xEMEAICcLCtAvL2jwMC8E88BPKX/QQC4Py+BfLgWwYCsBcPB+IFnwcC8GxfCHL7PwkCcO/1CUL4jgoCsHw9C/Lt0AsCgPBvDPLPTw0C8eMO3gEAD/I/AbAP8n+dEPLwCjAR0v8XEnLcC8ASov9xEwIAAMjwEEDnPiE4vUe3CP////8hM/lRIet/XiHt/msh6H92IXZ8gCH3s4wh7/+bIa/+qCG32LIhb//AIb/7ziH7+Noh99vnIVIX7iH54vghyIX+IUd1ByKQkAsi7+MXIvSeISJtPywiLu42IjYFPCK890gi839VInugXSI/f2oiZwVxImDreSK+uoQiAWaJItj8kyI/WJwi98qnIt+HsiLNv74ioP/IIs1b0iK//uAi/bbsIqfv+CLvdwUjnN8QI7c/HCN3+CcjJ50wI/y3PCO1ykUj799TI1r7XiO28WgjOexxIx/vfSO/+4sj+3+ZIw0AnCP+2qgj+721I39OwCP/M8wjwFrSI/W/3yP+n+wjv//7I18AASQAAAEk+P0NJMr/GST9byYk/c8zJAGgNiT/30Uk8vtRJL/fXyR//24k2v56JA8IfyQIuoUk/7+UJP16oCTX7qwk6/u5JPlnxCRE4Mkkk//VJJff4SRXn+wk9/76JN8IAiWA3wol3/4YJcX/JCX+9zIl+/9BJQNoRiX7Z1Il+mtdJf9/bCXiX3Yl//+GJXP/kyXfh54l++erJf3ruCWn98Qlfr/RJcfv3SXzHuclgt/wJf92/SV+3womyXkTJn3aHia+7ysmmx40JuB8PCb7d0kmvodT' $Zint_dll &= 'Jvv/Yib/G24m2/98Jlw/hibgT44m/3+dJg5fpib/d7Qmv93BJk/wyib//9om///qJvgP8ya+o/0m3/0LJxz8FCf9/yMnfR8uJ577Oif/vUgn3N5TJ28/Xyf7umsnf995J+/7hycbfZEn7C6aJ46vpCf38rAnD3u6J+7PxieWHc4nxnfYJwd+4Sf1/+8ngtn2J99/BCjmXg4o/8cbKO7+KCjveTQoVpo8KM//Sihf/lcoXt5iKG6Jaijo+XQoXvR+KMTmhigBAIcofL6SKH87nijf3asondW1KO/pwSisNMgoU97SKHP13Sj3S+goT3vzKP+eACn+uAspbkcUKfsNHilF/ykp/as1Kf77QynX6U4p/91cKfftaSn/f3gp/d2FKet+kSnnz50p/7erKem9timR78ApdV3KKXzX1SkAANUpAADVKQAA1SkAANUpAADVKQAA1SkAANUpAADVKQAA1SmA+twp7v/qKfG08yl2v/8p7y8LKne2Fiq/dyMqv58wKv3/Pyq/lUoqrvZVKv91Yio7f24q9ad5KvkKgSoAAIEqAACBKgAAgSoAAIEq0PuLKt0rlSoz9p8qf5qqKqv9tir81sEq5vnMKuu/2Srf3+cqH/TxKv2m/Cr//wwr/0oXK3vzIyu3fzAr+f49K/+2SitcHVIr9n9fK//lbCt7H3crBCR6KwW+giue+Y0r49uYK/LfpCvvb7Er//3AK3nWyiv8y9Ur/eviK//v8SsfAPYrAAD2KwAA9isAmPkrSOH/KxeABCx0agws/gATLH9tHyzx/Sssf7g2LPP+Qywf4EssdvFVLJbuXyw/e2ssjet1LP3/hCz/rZEss8ubLO+EpCx/4a8sqk23LPC/wiw/v88sP/7cLP/r6izX//gs3/8HLX/PFC37/yMt7YUsLT/XOC28B0At/65NLQ/+WC2v/WUtv3ZxLe/6fi27N4kt3H+VLbqjni3/tqst91a2LfhgvS3f58otYf/VLd9M3y37' $Zint_dll &= 'sOktRf/0Le19AC76Pwwu/x8ZLvwYIS7//zEur+M8LtPHRi6D31AuV/tcLn3vaS7/73gueBN/LsD+iC73X5UuuzSeLuNeqC4N97Iu9u+/Lv7XzC6/ANMunfXeLvf37C7eUfUu4P8AL8n+Cy9/AxQvAV8bL++/KS/xnzQvp2A7Lx3vRi//8VMvDwBXLwAAVy8AAFcvAABXLwAAVy8AAFcvAABXLwAAVy8AAFcvAABXLwAAVy8AAFcvAABXLwAAVy8AAFcvgDxcL037Zy8f2XEvOnt7L+P+hy/pP5Ivf9yeLz8ApC8AAKQvAACkLwBQpi8f9bEvB766Lx38xC8b+c4vHrzXL/9x4y/5b+8vvlv6L5ZXAzAbmwww/38bMPz/KTAuhzEw5689MPXrSTBP81Qw/d9iMCXnazDcC3MwRF16MEdXgzDd/ZAwP+2cMJB3pDB/fbEwyIq3MPr6wzD5888wKiDTMEvv3jD/9ewwz3n3MNOrATGlCwgxevcUMY/7IDG9jioxHwAvMQAALzEAAC8xAPM1MU79QDFXGkgxAIhKMayuUzFUdlsxrRdkMf/NcTGy/30xL/SHMapbkDH/254xAgCfMQAAnzEAAJ8xwHOmMer5sTE/LrsxjvrFMf+70zG8dt0x0//qMf7u9zFyfgEyvX4NMvfnGjJ/9ygy/c40MvUPPjIAAD4yAAA+MgAAPjIAqUIym9tNMsekVTJ/kV8yyvhoMs5+czJ6fX4y58eJMr3LlDKu3J4yfv2rMnaPtTLTkb0y83zIMuUBzjIvTNYyd+3iMmCj6DLbB/Ey+F77MvcdBjOBIQoz4GsSM5wwGDM6OyEz3votM1N/ODP1w0IzzWFKM7oHUjMAAFIzAABSMwAAUjMAAFIzAABSMwAAUjPgJlgz/r5lM/kDbTO163gzbeOCM8vpjDMvnJUz3r+iM4OfqzO/q7cz9x/DM9X/0DPft90z/t/rM6799zPv/wY0fvsTNP3vITT/qi00v245' $Zint_dll &= 'NAAAOTQAADk0AAA5NAAAOTQAADk0ILY/NM1/SzSevlY0s2JeNPFYZjQN8W40e/17NPHphTT9vpI0w8aaNG1fpTQ9/7I0/2m+NM//zDT0+9g0+9zkNPdP8DQAIPE0NxH4NBUA+zQAMP00AAD9NAAA/TQAAP00+/8MNR/+GDX1/iU1fw4vNQAALzUAAC81AAAvNQAALzUAAC81AAAvNQAALzUAAC81AAAvNXr/PDX//0w1//9cNf+XaTX+/3g1/z+GNRAALiI0IlchJyEjKCkhZyJGIT4hdyl4KSUiUiIkISwidiksKHkodih6KC8iISgiKD8hKigtKCwpISkjKUAhKiktKSIpJCgkKSUpJigmKScpKCgoKSkoKSkwKS8oLykrKCspLiguKSciMCIoIisiKiItIikiQSVCJUMlRCVFJUYlRyVIJUklSiVLJUwlTSVOJU8lUCVRJVIlUyVUJVUlViVXJVglYSViJWMlZCVlJWYlZyVoJWklaiVrJWwlbSVuJW8lcCVxJXIlcyV0JXUldiV3JXglJywhLCIsIywkLCUsJiwoLCksKiwrLCwsLSwuLC8sMCwxLDIsMyw0LDUsNiw3LDgsOSw6LDssPCw9LD4sPyxALEEsUSxSLFMsVCxVLFYsWCxZLFosWyxcLF0sXixfLGAsYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLFcsKiEuIS8hMCExIVP7AP////8iVCIlISYhNiJHIUghWCF5KXopeyl8KX0pfilmIkkhNSIkJ2AiZSJiIlknSiF3KHgoeyh8KH0ofigwJTElMiUzJTQlNSU2JTclOCU5JSElIiUjJSQlJSUmJSclKCUpJSolZyFoIWYhaSFqIVUiWCJWIlkiVyIhIiIiIyJTISQiVCF0IXUhMyIyIm4hcCFEIVAhKyF8IX0heyF6IXIhcyExIkUhcSEtIW8hViFBIVUhQiFDIWwhbSF4IXkhdiF3IUEiUSFS' $Zint_dll &= 'IWcoaChpKGooayhsKG0obihvKHAocShyKHModCh1KGcpaClpKWopaylsKW0pbilvKXApcSlyKXMpdCl1KU0pTilPKVApUSlSKVMpVClVKVYpVylYKVkpWilbKVwpXSleKV8pYClhKWIpYylkKWUpZilNKE4oTyhQKFEoUihTKFQoVShWKFcoWChZKFooWyhcKF0oXihfKGAoYShiKGMoZChlKGYoISYsJiImLSYjJkgmRyYuJiQmQiZBJi8mJiZGJkUmMSYlJkQmQyYwJicmPCZJJkomNyZLJkwmMiYpJj4mTSZOJjkmTyZQJjQmKCZRJlImOCY9JlMmVCYzJiomVSZWJjomPyZXJlgmNSYrJlkmWiY7JlsmXCZAJl0mXiZfJmAmYSZiJmMmZCY2JkYiYSFgIUMiRyJIIksiSiJJIkwiYyFiIToiOSJlIWQhOCI3Il8hXiFCIlshXSFcIUQiRSJaIVkhTyJOIlAiUSJPIU4hPCI9IkAiOyI+Ij8iTSJbIlwiXSJaIiEhIiEjISghNCE1ITYhNyE4ITkhOiE7ITwhPSFrITIhMyEhKiIqIyokKiUqJionKigqKSoqKisqLCotKi4qLyowKjEqMiozKjQqNSo2KjcqOCo5KjoqOyo8Kj0qPio/KkAqQSpCKkMqRCpFKkYqRypIKkkqSipLKkwqTSpOKk8qUCpRKlIqUypUKlUqVipXKlgqWSpaKlsqXCpdKl4qXypgKmEqYipjKmQqZSpmKmcqaCppKmoqaypsKm0qbipvKnAqcSpyKnMqISsiKyMrJCslKyYrJysoKykrKisrKywrLSsuKy8rMCsxKzIrMys0KzUrNis3KzgrOSs6KzsrPCs9Kz4rPytAK0ErQitDK0QrRStGK0crSCtJK0orSytMK00rTitPK1ArUStSK1MrVCtVK1YrVytYK1krWitbK1wrXSteK18rYCthK2IrYytkK2UrZitnK2graStqK2srbCttK24rbytw' $Zint_dll &= 'K3ErcitzK3QrdSt2KyEkIiQjJCQkJSQmJCckKCQpJCokKyQsJC0kLiQvJDAkMSQyJDMkNCQ1JDYkNyQ4JDkkOiQ7JDwkPZcM/////yQ+JD8kQCRBJEIkQyREJEUkRiRHJEgkSSRKJEskTCRNJE4kTyRQJFEkUiRTJFQkVSRWJFckWCRZJFokWyRcJF0kXiRfJGAkYSRiJGMkZCRlJGYkZyRoJGkkaiRrJGwkbSRuJG8kcCRxJHIkcyR0JHUkdiR3JHgkeSR6JHskfCR9JH4kMSkyKTMpNCk1KTYpNyk4KTkpOik7KTwpPSk+KT8pQClBKUIpQylEKUUpRilHKUgpSSlKKUspTClfIjEoMigzKDQoNSg2KDcoOCg5KDooOyg8KD0oPig/KEAoQShCKEMoRChFKEYoRyhIKEkoSihLKEwoaCJeIkknSidLJ0wnTSc6JzsnXCddJ14nNic3JzgnVCdVJ1YnVydYJyEnIicjJyUnKycsJy0nLicvJzAnMScyJzMnNCcnJygnKScqJz0nPidlJ2YnZydoJ2EnYidjJz8nQCdBJ0InQydEJ0UnRidHJ0gnTidPJ1AnUSdSJ1MnWidbJ2MibCcmJ2AnbydhIjwnbSc1JzknaidrJ18nZCJkJ24naSdpbEtvUnYyWFttMl8+Xzt5dFxkdSZzYF0mYXhOMFwqY2lxek0vfCFTK3FRZyxSeU59cT9eOns5eVJOK2Nga3pOd0slZWFKTFRhamNcLV9rSy9VdVZ4ZUBeI2xNaSdqdmk7e2lnTG9mUEFeLGRMWHF5X04kejJme3o9ekhMTW9VVSJTUWwnZFJsMXZ7TlFQP0skbShtQl5idlxtdVw5YE5UNXRbUzVWJGxmZGpxbEtAS3JsalByeSVsX1BqZ2tQUVxpW0x9V1thWjZWX2NDXkReIUpsbiNTN25PeEhqOG4scSVxTmk8eXllamxWXUJtJXg6ZVhbIkpNUW1ua2xFXmBjSUppck5VNnZC' $Zint_dll &= 'TkdWNGMtcWJqQlcnc2pNbmsyWSV9VXZiVTV4dUw1dS1ka2dVcTtwNWlJTFV6VGFWV0FcRl5vemFjc2F2XHxORFtxeGRcb2UxXFZVWnNBS0NbelluUzh6Jn1vayZ0Skwoc1tzJ1s3dmZPcnBaS1JnQ1dwdl5oJmVnZSNKJ0xJajZ4JXoucU5vbUswdk9vT2led1NOd1woW3hLIV9hXUp1NmlsZ25ucHM/X0tMQVBSdDpgQF9gTlJcan12VkpqaWgsY1BzJEp4W0decGtWcWJlTEx7S2NqQV9tVlBpOW5jVVNRcGU0aENrKmp8enZ1PHBUfTtgQ046UDp3c1hNdy5kX1RnUH1sLlJvbldVZGoieGtNP1cxe2xNMlxsUH1OcG5CTG1Qd2V8cyJuM1l0WDdpLk4iWXFYT1QnZVJVKVYidFdxWFU9cFBXUFRPV2pra31tW0V8QktVfUh0amhzdV55b1NTbEJdN29UZ0pKe1l9eipWeHR3dyxcV1ciXz5OcFMkcGxhZ09LcyltPkpvdE52e147UDdVcW4odHhcJ0tOWmZgJW1ybnlcXHlcc3J4eXRxfDxQeVsxV3xLJXB9S3RVbU0lSitWQlA+cD1SJEw2ek1MelpPdjhpdVhOTE1XUVRtaWtKYlkyfS1jTFY0WSdhU25DUDN9ZFVoT0NtMlB+TihaUHhWfVF4UnhTXGJdeXtBXTVjXW1ETiFLY11dfC95e1IhTyhkNnR+bC5jbWdBfWJaM1hkXW9wcXZwenVRT1pUXCZcP29PTllgVllUbEtqP0owVWlPbXFPTHhkbWRYVyd9K2oydnBPPXl0ZltLUXNRaSlzYFBSaWNaUmIidnRhZFpVZz91Ik8vTSNPME1+cSNQL2EjeCZKO3dqckheU2lJXl59QEpqeU5RVG5SVCNZKH1ZV053PnpWT3BXYWtFeHpcQ11feW9nZX0jdnxZKX1uZ2VVUG8xTSJ3MnExcTJNK1onSmJjPHskWTpuU3h6' $Zint_dll &= 'eyRPe1xjdiptIXJhTiZ6YHlWbG5kIXlve2t5I24saihKenRWTXZ8SXRUeCZ4Sl5GclpXUFNFWGZqXXNaZGR2cnZCX31Zdkw6Uy9kYXkmcFNLPGBKdHpUKn1ieTd0Qn0wfGx9Yko9fWdqQ19SUWJOJFMrfWBfR3JwZ25QKnNLXjh2dWEzcSN3KUolT0RfMGE/cCR2NmNGem9QbX1EXXd8P2YtXj96cWVEbSVSbn02dXZhTF5efFdsXU03VjNNVXhYZWpPUE9Mai5qLWpxUyVTT3ckbiRQInJwUCNyeHczUClbO1NsSiZxVUtnd15NJHdAeF1TUEwmT3N2d2FcU356J3pZaydPL2pvZDlpWHFYWHJgNGZ8XHFzUGN7ckZbcVByUFxPUVMxTFh3KEs8az5kXHRCXCdwQGZtSmtoaGVDXF5tclN3TFROK2dDSzFhMndzU1JTQHVdX3NucWc0fUhyUnN0blNiUUxqXzppV1lNdXJxR3p4WUJUZXZFXXJnX21LSnpbNWgmUzV9SXliZD17JFdFTlVOZlY9ZU1ec2xgbWxsPntrX3hhPnlzUCpgYmhUYn1SKGVTWV5TOHQ8d31cbGhnZHdjKGxxenJldFAvUmVcJVA0cTF8eExGXVF6X3coenVuTl5zZyx3RGthbStgR10zUj9STEo/e31lZV1NWHRsdVBtaFJQWFlmdipbYHdZWCN0XXRRbzVZK203YztuNE1zYE1qdWxuaClLL3FNSilsa3JvfXN5QWZYbCxtTmpfaE9eJlJ0Z1ZRQmZjYzBkNFgldl5zJVdod0ZoZntmXX5cWlgsWjBqOGMqSnlhMWpscm56VW50eWxSe3twfT1gY05GeC5eRV8+ZS1tanpuTSZtLm1tcCFdL214fGtYeUw1TSl6XWFVYk9tIl1KeWhqbWVrU1RpemFMZGRhR2hbTlVcNXdzfHNwL041cVJvSGhxa1RLPmB4Y2lqMnx0YGBPJW4qekNmMmErSmRjO2lW' $Zint_dll &= 'YnJzVm4yanZQWWxLWihPI11bWE55VWlRYzxSLFhMc3tNVnZ1Z29oeWM7UnNze2NQXjBOd1ZZcUF1RFw7dVFeZlxSXmJtdm5Pam5wfGNfU3RTM2E0YVN0Rl9WaStbJnY5Y0VrKXQ2TXlSLVpjUlFPXEt6TF1PKWg7YzpjWmB3bjNcdVMmVzV2W1dVYWpUI19ffXdQVG0qS1tke2EiS2BTP2RAez5aTWQ5VkBvfGE5dkdfMWRnXGhcVnp2U1pxcnp9Yk9VeFBfTUt1cGQrS0RXfmJaXS5abko5VSFjY2grcylPd1NxVGROcmh1ZS5nOlZsX0BkZGg1WFxkOXQ2cV5iNWFvTSdxZU5dS2NZLHN5UCtsU15pd3V5XmFuSzxjVnhuW3F9NndedG1yWVsocH1hVF4sYGNtYVNIXzZZLH1Tb0Fka3gsW0Z8LVg6dl9bU1NHeE5KQXg0UjRcOXpPSjN8ampranpQZG1nXUlfbV88bkFvUkwkXUpfeFMocTdNVG9dZG5fLEs8aWxqS18/eS9WRlUqTylOeFY3cXhuWVlfc0h4Rk5mVWZ0RWZVb29LX3wnXGdWSXhSYz1jYU9AcFpsV11weyxsKXBXekF7QFIwZWVtLUsweSV3LksvWjZYJ1Mye0R9LWwhe2llbml0c3N4QXAvXjB4YHMvZy1bNWYoeVhdWWhWb2JTX2JgfEhXLX1vX1NMeVNwVEdbVV50cFBVWWVHfFZcYGIwWiNzbFNLdEV9fWMxeXtQW2w8dSRyTlhPWHd1YXY3Umx7SF1oZEFSV3g7VlZePXcubGFQdWAzalZOJUx2bGFiPmNIfHBNdnlwXz9lP05hfDBtUX07dk95WmtBSjhScU1TY2Z9bWZ6YypwUHlifCd4ZWF5bnZnbWo0fEJ1XFd1cGhdbVN8dT9ae0x6UyR0V29DVGN7bXstYG5qM3tCZGd2XVJMX0l8KWV2YDN2fmFwS29qcGpAWjR4cmtDZFdpcWRvSldOSnxh' $Zint_dll &= 'c0RLZWNFSzRqPWlJV1trMW1DTD53S3x0eDdZU3NUc2R3UXc3WDFOQko0e0ZLdnBnVVBqVEwvSyp0L2lDdVhpaV1zcXtVO157dHN9cn0md0ldU1QoTEFaVUxkWUp6Y2U8U3BKRFBQSit6a2t4Z2VZV1Ekc3tUY3xYelVzK09za3xVVFN8TWZZeWIhYlRrd2AyZHxMZHsrdD1QcUo4b0BXem50fWNTQntoVS5bNmE3eD9gQ3tqXSJiJm5odnV2Sl1iUCZda115ZC9jfFB8dDxMandkZXFfYXd3eTlvWHgpeVl4PW5GWGNkTnVZXWdZOVJDVWVaUFpZUVhOXkssdHtaaXZzaCxPcHB9dEhbQE5UY09RdXFyTWtPOE0mY1pRJXImck5ke1MpcUlyWG9JZjhYc3o1cyR4c1FIZlp4aVxXXl9LbE9fdHRROlJyXzdhI2J8U2ZtSVt6ZF5PUE5TVXVzLndIb3NNT3VzZUJwUdUI/////0pxaiZQWlkrcGdrQGU1fERkKUxGfTVqKmU6X19hUVo4YXRofVMkYkpyZlozd019NnNXbkR1JFgncjhZOVlJb05WS3cuX3VoNVJVU0x0fFpoWWt3SXU8c1JaNVM2aE9WOnRJdypMQ3BWTFNQPVN7W2BLZFN3djpVTXNhS3RrLXQqfGx3dmhnWkx3QWVuYH1VZk4rfDtVKHIlYjlNcmpHS3RNL1tZbzpNeXxzX2dOQlotT3lnKHhic3JKJF9EVFdMQmU7TVpvWG4nXSZiQGAwVkp4enx+WTBebF1oWmBUeVZXTVheeHJWZEVQLnQoXUVtVnNZXmZjKFMwW1plP2MxW2lVQWBbb2lwMld9UGlZflBtbClTKXJEcGJib2lReVlpWmhDWkRaRVR6Z2BNMGMyW0R7Y3MlWWd7S11UUDZmLmBafTVceGAxZ3B1XFhGbTlhQGNAeXBpW1lkczZcaWRFcEFjTHxNfEtyTHJPZFtxWXo4cXV9eWB7Zzd8ZHxF' $Zint_dll &= 'e2djOVh4dkVcWEwvYGd0XG98T11vKnI+fSxKO31HfTJnUWp0X2xRXmRDZSZZPE1lc1VtOllnbTV7bHhnYFlMRlQlZ3VVPlN7fHJkdV94aG14R052fVhoWE1WZ1pMY0p2X0dwRnA6WHRxcHRMdWV8RWpzaltdV1x9XnlyR1VQWEhwIVEiUVRZaFZKWTFaR1hiXE5zdHU5cVNaanZ1Ty59Uko0X11XOnonbj11dXhobWFUI1FWYXh5Slt5S1RUXFk+bm13blJmYXl3bV1baDNbd1EwYGJUV3Z5V11YfU0rcj1NQngsci1KLkouT0JjN1xaWztZc0pTdnhmdWp2anl2L09TSi9KMFI6cTNXQ2N9c1peW15eb2Nie253X0pXaE5bWztxcWk3ekZQK0wobnpLeXl9TH5TUGRuclVUTV84fFBRTXJSd1RKWVVeWFlNKW48dltMSXB8fElofnR8Z15XXF4scH5MYU06YW9bMlolUThcdlgkUWJNalx3cEpwPlBcXVZUVlNQbSFNNV94XyFUMk5KaHVrVWNQdSF1J1krZUtmcXVFZSN5W2BrdnFLalkidVFXeFF4anlqM1pfb29xdmU/bmRiP1AselF1M2c+aU5yNFtOfG5dNGc0VzR3Pk1pWjBPWXdmc1lOKk5ISydQS3BHUEVkYFtaVSdXQG52eFJ1aW08WUZlI3VUWidifHtccXRKemhpTnhpZWI5UHJUJlFOX3R8KlMsTGBvZWVVUHxbZnx+S2ptMV5jeSJUdk9QVmpVbnFLeiFlMVVtT2ttMlU8VWJ9LXNbfTBpJ1FjfTNOZH1OejBKJ3cxTyJmNnwtcmFvLnNGXGtZYGgoYXZVfU9dXlFZamRPcj93ZmIoYlZjUW15aTFWMl5oYCtTXGsvX0NKfG5DfXZrMk9sWT1ZX1g4VD5rb11wXXFdcl0+WUZ7M099bitkRVpsWChRKWI8XjVncFtib3BxNE9xWzFgJV9SeX1nI2ZxezBLLnJn' $Zint_dll &= 'TVxoV2dAd2NQIVo9TClRTF1+YypRKmg2anp5TGZYdkdUS1lSWUtTd1gpWnh1Xl4vcil4SFhBbkF5c116aj12O2E/TVR0TWZPfCJ7XGA7dFVaMnlye3ZbX15yW1x4bndoa3pSPHFaempaRlpBdzZnR2UsVkdcKWEqYiZVV1RQcntqXWBzez1xZ2JXfUhON2pAfGd9b3c1VzpvXXEzXktoXXhHe0hVX1cpXTFpLXpZdnR6KnhuZlxMPGFvYD9pfXxOZldhT2ZxdHNke2RkeWNvbk8+djJgfnwrUXpXSHtXYiNUeHAoV2dhP1Nkb0VXYmtnfCJkaGJQZmh7aHR0ZTx0VXQ2Xzl8Qm51SmVvYkskVGBefVpGZD5oXmA0dlJqe3lCYGRKN2d9al1ZNFoqbml7S1s1Wj5xLFNJe09fQFNXY2ZvUHxAaVN1XGw3dzhqeVFIXDlqXnE2VzVPKFlubCpdIk0uaD1hUXJBaXxSNVtnc35YUXwybS90I3tBfCtuJVRydFluSntjTTtYW2V3eFR2KVdJS1FmTHAuWFN5flU8WDByK2Joc0JvbG04Z35aPkx8cmtaWGJWbVFWM2BSfEhrQVNNcHdPUm1YVElccVc7XyVzTXQ/cTF4emlLe1VKVHlKd0hWaHw9c35ufmdCUzZTLUx6djJWWFJYZyVjOWctcEx7IWsmVE17PVVfcXt2NF5rVUhlJHs5VGFeI2Q3V254NV5SVlV5OmdVa3dVZ28+YS56aVZuVjtnS2wzVTROJXtuYSh3Tns9WH17aXw2T0dtLG5dTCd2emYkdVx9M21JTmhvP2FbemNLKXcmezlcQHFIbUNvLVZOfSFodHsnVXZxU2ZeTDJ4a1w2fWplYHFMW01dSFRtWSV1e2ZUZkh9IVY/fVN8IW88Z25RVWZyaTBfYFg6fC99TnBhW0llNG1DYFhje2koajd9J3tCaXd9WWJsXCJocGZ4fXl9P3YnZ1dmc1RJVHpWcldAYWJbWGY9' $Zint_dll &= 'Z09wPnMsYjd1cGA4fWhjJ1R8aFJ6b3hTVjRVUHBwdzNuOmpTakltK10sZSF9UF8zbFFfbW04eHp3K3hgdDpUM2RaaTZeP1lAWW9WTFkqWmVfZXcyTHlfYFc7VHp9M0xzW1JfSk5abmRkT3s3T0Nuak4tYmFXdXpJVSx4WWdpc21YRGNxcGVoemBEbl5ZImsja0J8O2oraGJeb20jaHFPPFRqfD5ncnw0Vi5iN1NMelx6NW1jYSxoXWhpbz10OE9baSxRR1pJa0xoN148VmVTXXpWWjFKSFomXzN5UnJESktOdU0wfShVQXFpYkpcNGxAeih7KFBsWm5Ze2Bqb156RGA5T0pVYlcvYjhXTWhadiJvWmJ8dlB7LVFkTS5RbVxOaHlwNU58ZntXVlB1XXF3fXZ3W2p7XGlBWXJ1RWBUakJ5PGpFUlF7QGcla3pfImM5V0NpfWgvaFNyKXslWEtVSFAvUWNXRmAiVnBtc1dUfFdaX0xUcjBRYEx9Wz9zUXA7fDBiJWZbYl5fR2BvcmFMalZCZzZOQHN+TVJ7eHh7dz9oN2g2bTpcNEx3cThodkokZFZ0Zl8nX2dfQWFEaUtcRWkjbyZrI0tpY3tRJG9rbzRQI01maCVvTFNtWjpXVXJldW9ZNHlUVU99Y1thcTZsfntXUzFRMUsyUTJLQnFhdDV5Q2FCYXdrKF9KSzlmXngqeXdKN204U1ZyWVRFbnByMko7XHhxN2xKZUB2XX1jVGJMVHdlV0NTJlhBdnZdQE1cZUtlRGEwaDB0anNuWjtXMWIqV3tWX2RWSihrfltCdjtvfVRIYDloJm8kTXRUIVtcW11bXG5LS1V8a05BTVN7K3lUdSlZXWlNW05dQ2dMbGx5TEt8YChUU21vWFdyeEpvWlRWTVluWEFyU19wWmpifWB4WC93NlpXSlhyeVhfem9PQllScFFkN3NgemxvMmI9VE5ZYnQpVEJNWmdZcipZPlgtXGtifFZ5SlpUV3Qh' $Zint_dll &= 'TDpPOHVDWWhQRWN4azFyO08tU2FobE40YGNed10ycnZzW3Z+V194cncpUFpmJnU8V2NMW2ZdXTNRbW9eVnRkb2F4XU9oZUohXDVgLHwtfCdYOG02W3BWL3MlTXFaKFhkTDRRWEpyWid1KHUmZmxVeFVzWkZjZF5lXjVRNlE3UTNyXo0I/////2lTcDRyVHBkS1R7ZnVqY2ZeVF95eC5wOFFfVldQIXxub1hcX2ldZXt9SWBJVipUTGVgaVhQInw+VDNiZ148XDZSVXUhTil1eV16XVVwX3ZacmtkcXI5bHx9KmFZSm9vKnV5bC14QnJDdlJXInlWcHpwYHZzaUNyK1QzSiZNQ01aTU9ZRHZdbkRnNGJiX1tnMWgufE1la3o8T2JPdk1wbz50TVQ4cyFpcnJrc1dwV09fT0BoQWhjTyJpKlBBcytQZFQ8byFYX1lXcz1cZUxxbWJxW1Q1YmZKLlNmTFNxZ3VaSm57RWFpX15uQnciWCxdL3A9VithNnl1VElQJ29sYmpbTE5odVV3TVN+czVQfmB7X11mJGhNSyhvNG5YWjlRKV8wc0RMN04pb1VfV21Gbj1vVnx0WypvOXhpdVljRmE/VGheanBCcy9TW0pXfFhtR2FYdDNWLV0+VUNxX25rVll0Zlc3WntdT10jWFlaWHBEb1hhVHFybVtVXFVEc1dLNmJxb1V7WFNQXVlwM0tdVSdNLFA6UURxM2V1e2FpYH08fCJaI1ohUm9SbWJpXlxONXJkUFFdSGE3W2NfOW1FcU9zK1csYWtjR25JYXpKe3BhelpwZ0x0Wj9MbU4pVWJ6ZVBWa19sfF9Wd2peNEs+bzVMPU9ybzdiaEx8cGBWRnE4YitrNUtRWE50d3NGVztRKndKbVNXelhFdkxRfF19X2V5SmB9cjBTc3RJWl5mOnhQaHtYVWojVkZ2W3J8ZDJoWlpcclZ7MmktbmN6blxqdWBmfXAsV0V1YG5lW15dcFkjaXlxRHJL' $Zint_dll &= 'YCRpOWIxY2t8KE02TFtwOmYpTUNzWWErb0VnaWBFc0BUP1UuXXx5QEwiZThOUlhWeSpxUU5Hdmtbfl9hWHN3Z1d+VDxRT2U2SzhaRE0+VjpiWE9MYHlrfX1oV1hLYmk6aEdjTWxObD9WJ2NWX2h9YW4odn1dO3hRaFd5bk5PbCVpVVZFTTptPVE+TztsMVJpTERZfGk+UTxsLWUwd2pMRFNAVn1WIWE9Xil2JFokVkZ1ImFGaUVyaXRsVlNrPWxcYmteXHA/a05XP1ErdX15XEpGTTZyfl03TDhbaVBdTkBrIn1LeFZqMHFOW0N3T1skS2B4V3tKayFgTU5cVFh9dlI3cnZ6KnZ3emZYMXRSaEVKa0xuYjtiLXdheGxzIV59ZGxjL10wXTdLU2gjYWBSfnAmaXJLc21ZXE1gWnc5Wy5MW1pHTTFdL1gjY29Oc3IzeE5gfXVsa0VTbHxbUmtUIl5mZTBwRFV0bW1jQmh1bXxXO20rdjhySHZmU11yP08sa0BPKGZpfUFPX2BsXiJgP3RvYnFZR3E4S355Olt1Wmx2XFpkek9gMl0pZnNvbXN6a2Z5XUpeVV5KZF99Zix1dWRjaUttZE9TWDNdbFQ5cjdfTktYe1lQUl10d1xnJWQjfDtbOnJ9aUpQVnVFWTRkJ209an5mRHctdWBZNEpieEJPPmw0ZUhNSG5IZ0lNN3locXJZdVs1SkZZSVgrWTxtVFhaXDxibXxgbH5SR2kqZnBiO3oudSp7e2w/bFh8ZVRDeWJuaVd2bW1ebExuY1RoeHo0XTVkMFhVWGp0OU5hVlJPNlAiTm5zeHNMXEtQJHxKTVRXI15gZEluXWJ+dSxUUVVwWEN4V2pXdT9YQH0taypVKGdKbmdKY3hdVFhqWXt3bTVlLVBxcT1iSGNVWSpfPFtkeHpxNmVvc1p7YGEsWWt1NmBIaU9LSWNuXj5ib1wlVnFiflYhWUBYW1w9bThfJWotV3lzeG1HdUphY2te' $Zint_dll &= 'ckx4WWpGU2ZbL3VwTn5pNntyYnJPOXdzWUthXVo5WntrOUt5bWBgQHQ8fTFfb2MjYDl9MXBLTT5tQFVwY3ptZGltVV1ndlQ3ZWdbP2JLbnRXXXArTl5nVlZMYTNobmUiXFBgNVUhVVt7S3lzSyV0SHpXVmVpXHtQfXZ7JVo9W2Jsd01ecEl2b14xU258Q2hIcXFObXl0cjZkOXVwXHFjJWg7ciReTFppSlpjWXxaakR5JGNde0pvRGhMVVdrLVkre1lTIlVednZaUWAoaXl1L3p8a2pgMmNFVWNxblVMTVltQVhsemtxPHpiZmV6emI2SjdkW2p6dSx7Q099a3p4OV9xYSRSe3VaUFtQPmoxWTdKZ1NleDJTQGJfcmVNLHlNTS5uLlZqV2BnLmtZT01ce21wXmtXJV5XX1BbUVsjVTJwXFxoSmZ4TlxcalJbM2lbdyhjLldhYDpLUWVcUEFVSlgpYyRgKWlHU11cLng4TC5QclhKYy9MLVRRdkxQRkpCVTpOR0owelhfOnVrZXRvNV0qTXJjd3tQdzp9YX1+dkBRRWg4ZGhhQUxtUj5bYmBJek1hOEpgcklxcV5fcER4TG5yXklnc2JhZ0tjTGN4Tyxvfn0lfDF6WV9SYFp0SnEjTjxyY2wlYCt3L2teZSRhK010WSZoTk1pYW98Y2BBYiROJl5+a11rYHBbdHRiSFNrdDVuWHVfVWVWMGtjdE1jdHQyenVvX0oxaz9tSX0mZCR5M3BsZWdRR1lXZF1qd1Q6Wk1aTHlaYT9bRUxQbDtLc14qaUhZY249V0RPTVAmfHtxUn1BUVtjSVNPXG1MJ147ZiFsOUxee2JnQVQoXEJiWHNTZVlzRnNbTSxNQ3xnVEJRJXlVaE5jSlRaX197Y2d7eE9jMHVnWElZL3h2bzZdL254TTheJ3x8dzF3O04hdE1uLmFDbH5PP3hiWGhTKF5kdEJsdVlFeVNdcVZ8bHB8QG05SmRuYXI5XnJWdF5b' $Zint_dll &= 'X1NbZ3pjWEF0N111ci5Uc1Y4XUVPX18+ciF2S2t8cUdza2B8bVthZW51XlN6S3EvUDldQ1ExdUZqYXAsdll1a3A6XT9yRaEI/////3ciW3ZyOkp1d2VLZm5TYCVOWFYvVElpTlNCdGZLIXEyayJxM2s0cHRLMFQyczd7bHVnbjJ0bXVzT2JwTm5McThldVdzY2VPRk8zc1hkeU9aT016Y2Zicm51O0pcY3JOWVYwbmV0QlhQXG5MYFVKdkp9VlhPdCZWPlxUW0dXfnJNcUNiXlxfXC1vK2ZdeT9qLm9QdHNOLGZeTnlVdGNQTThVfXcpXHZeKlxjcjRpXFJmaXZjSmdOUHdaPEpobl5ad3J7YiZMO1ppblp1XHdqYUFOMVQxfT1mLXtneE5hYndvdUdPMlRvTGhUT25XdyZgQVZcYWNwZHFxXCdWdXROcWRyMFBvbDp5NWttVERiZ2k0ayFqPHgmTkZ5WnwzVDlTXmoraWFhT1N2dEBqT2E6TGpuZHA0c25UQHJlcUN0VGA2ayFXaEsteS1pZFgzekViPXxEbDFYK1wkVWlrO2hXWC57YVFAWz51d157SkZ3SE9QYVBudGl0Tk1VW087XSxOaGk0VEdkW3VBeileeFR3bzNTN2t4b1x1TG1VW09xUHEydS5ZLFVGYiN9ZXsrX3ViLXYzdTVwJWFddSJsfW00dTh7I1tKVllLVGV6czhrN2BsV2xxL2VhVW1XUVFyYXlvPF1cdmVwRHRpaXtzb1QiTH53PF9NazdQQlYtaC9vJUtpS2h6RkxnZkdqJFtJT3xiem9ea0h1XlRVYDBvR2IvWWd5ZWdKT1FhSGJ7b3l6clwnYGh4aks8S2JWXnVfdTZudmJKU3xvRFExb0VRXlBhWThgUU05c0xnKFYnTjVUSGQ0UzlrdUtddiNxR0xKaXBhYHUve1FLYHtlcnBsbHBrbktpcEwvVyFzdXwkcVZgMm9RdCF3UXF8Sn1KTk5Iczpzfm0m' $Zint_dll &= 'WmxgTXhSS05rWHlZeWBKSlomS0hKbnlsWzFQb1VzZiJnWWRhZER8b3l0T2Z3PE5FdCNcPV1GdCF4VmhBW2ZwOWRtdi55Pl0wV2hYPUtaeU54cHltYDNjM3RCamZyNnBWW2RrZ3JVVzZUaHlBV1VlamlMV2lTSWJbfC1NMEwianZkQFA3cCFudldKYktiT3pfa0tWNHRNbVJkKWo6ZCJzUk1LdmZxQW08aFFuZ3BMYipkYXVabW5XcVFraWxpZGAnWlRdI2pDVnRWX1ozb01ifW9ockVvZ2d9V05nXF9HeXZZLF9aViRcOHB6VXdkRFZsdH5vIXAqXjxafFhUemVsKHxmbEtYOXtTZHlNU09qSlRPPXhHdF9qW3k3VGVrUmEkakJ6YXtteiJwcUwjendiTmJ1aWthaGdXaHhaS1R2d0VWaVR6enJMXXc6XihOOXB+ZElkVGRDajRvPldie1NNNW9peiZ5PV9Hd314fHgrXmhbXWNiYUZRUHZma3laR2x4Xml4XmN1TkN6V2VIbElzO2QuZjZvP1w9TkNYT1B6T0pzV2BHUS5pPWhEek9iRXo4eWBcMHspWF9lJ3ludkx2eGJxbGBaUnFMUktPPUo/XW92eV40ei1VZ3E+XkBcSFFJUT54dkt5VGJ1U2FpWH54TE8kfXZOUHpzTD5mLnZwVUpRPnxxVWlNNXpQYnd0VE0jZyVbUWIiV2N3JmohUFpOa3smW15bZVhgaipYYGVbVkZvanhVZHdOWGBvV210Zk10TGN1SmRhXEh5P3wnaERYPksuXHdXaHBAXU1Pc1wwWWlmPGREamxkZWR4eztMPWRcTXdZX11ObVBZI2VNeS5NTk8vdlN9bWtcViRlNlVdVml5JGdjVktRZFZyVXpeeFdqWFVPfVgrWEt9XHwoYHNVWX0jTHlZalN1dUdvWlM9WihoL1wjcFVNKWAsXjpwMW4ybk12Um5GVmVgO3NhZUtkI1dCW35KT08hMCIwIzAk' $Zint_dll &= 'MCUwJjAnMCgwKTAqMCswLDAtMC4wLzAwMDEwMjAzMDQwNTA2MDcwODA5MDowOzA8MD0wPjA/MEAwQTBCMEMwRDBFMEYwRzBIMEkwSjBLMEwwTTBOME8wUDBRMFIwUzBUMFUwVjBXMFgwWTBaMFswXDBdMF4wXzBgMGEwYjBjMGQwZTBmMGcwaDBpMGowazBsMG0wbjBvMHAwcTByMHMwdDB1MHYwdzB4MHkwejB7MHwwfTB+MCExIjEjMSQxJTEmMScxKDEpMSoxKzEsMS0xLjEvMTAxMTEyMTMxNDE1MTYxNzE4MTkxOjE7MTwxPTE+MT8xQDFBMUIxQzFEMUUxRjFHMUgxSTFKMUsxTDFNMU4xTzFQMVExUjFTMVQxVTFWMVcxWDFZMVoxWzFcMV0xXjFfMWAxYTFiMWMxZDFlMWYxZzFoMWkxajFrMWwxbTFuMW8xcDFxMXIxczF0MXUxdjF3MXgxeTF6MXsxfDF9MX4xITIiMiMyJDIlMiYyJzIoMikyKjIrMiwyLTIuMi8yMDIxMjIyMzI0MjUyNjI3MjgyOTI6MjsyPDI9Mj4yPzJAMkEyQjJDMkQyRTJGMkcySDJJMkoySzJMMk0yTjJPMlAyUTJSMlMyVDJVMlYyVzJYMlkyWjJbMlwyXTJeMl8yYDJhMmIyYzJkMmUyZjJnMmgyaTJqMmsybDJtMm4ybzJwMnEycjJzMnQydTJ2MncyeDJ5MnoyezJ8Mn0yfjIhMyIzIzMkMyUzJjMnMygzKTMqMyszLDMtMy4zLzMwMzEzMjMzMzQzNTM2MzczODM5MzozOzM8Mz0zPjM/M0AzQTNCM0MzRDNFM0YzRzNIM0kzSjNLM0wzTTNOM08zUDNRM1IzUzNUM1UzVjNXM1gzWTNaM1szXDNdM14zXzNgM2EzYjNjM2QzZTNmM2czaDNpM2ozazNsM20zbjNvM3AzcTNyM3MzdDN1M3YzdzN4M3kzejN7M3wzfTN+MyE0IjQj' $Zint_dll &= 'NCQ0JTQmNCc0KDQpNCo0KzQsNC00LjQvNDA0MTQyNDM0NDQ1NDY0NzQ4NDk0OjQ7NDw0PTQ+ND80QDRBNEI0QzRENEU0RjRHNEg0STRKNEs0TDRNNE40TzRQNFE0UjRTNFQ0VTRWNFc0WDRZNFo0WzRcNF00XjRfNGA0YTRiNGM0ZDRlNGY0ZzRoNGk0ajRrNGw0bTRuNG80cDRxNHI0czR0NHU0djR3NHiUCP////80eTR6NHs0fDR9NH40ITUiNSM1JDUlNSY1JzUoNSk1KjUrNSw1LTUuNS81MDUxNTI1MzU0NTU1NjU3NTg1OTU6NTs1PDU9NT41PzVANUE1QjVDNUQ1RTVGNUc1SDVJNUo1SzVMNU01TjVPNVA1UTVSNVM1VDVVNVY1VzVYNVk1WjVbNVw1XTVeNV81YDVhNWI1YzVkNWU1ZjVnNWg1aTVqNWs1bDVtNW41bzVwNXE1cjVzNXQ1dTV2NXc1eDV5NXo1ezV8NX01fjUhNiI2IzYkNiU2JjYnNig2KTYqNis2LDYtNi42LzYwNjE2MjYzNjQ2NTY2Njc2ODY5Njo2OzY8Nj02PjY/NkA2QTZCNkM2RDZFNkY2RzZINkk2SjZLNkw2TTZONk82UDZRNlI2UzZUNlU2VjZXNlg2WTZaNls2XDZdNl42XzZgNmE2YjZjNmQ2ZTZmNmc2aDZpNmo2azZsNm02bjZvNnA2cTZyNnM2dDZ1NnY2dzZ4Nnk2ejZ7Nnw2fTZ+NiE3IjcjNyQ3JTcmNyc3KDcpNyo3KzcsNy03LjcvNzA3MTcyNzM3NDc1NzY3Nzc4Nzk3Ojc7Nzw3PTc+Nz83QDdBN0I3QzdEN0U3RjdHN0g3STdKN0s3TDdNN043TzdQN1E3UjdTN1Q3VTdWN1c3WDdZN1o3WzdcN103XjdfN2A3YTdiN2M3ZDdlN2Y3ZzdoN2k3ajdrN2w3bTduN283cDdxN3I3czd0N3U3djd3N3g3eTd6N3s3fDd9' $Zint_dll &= 'N343ITgiOCM4JDglOCY4JzgoOCk4KjgrOCw4LTguOC84MDgxODI4Mzg0ODU4Njg3ODg4OTg6ODs4PDg9OD44PzhAOEE4QjhDOEQ4RThGOEc4SDhJOEo4SzhMOE04TjhPOFA4UThSOFM4VDhVOFY4VzhYOFk4WjhbOFw4XTheOF84YDhhOGI4YzhkOGU4ZjhnOGg4aThqOGs4bDhtOG44bzhwOHE4cjhzOHQ4dTh2OHc4eDh5OHo4ezh8OH04fjghOSI5IzkkOSU5JjknOSg5KTkqOSs5LDktOS45LzkwOTE5MjkzOTQ5NTk2OTc5ODk5OTo5Ozk8OT05Pjk/OUA5QTlCOUM5RDlFOUY5RzlIOUk5SjlLOUw5TTlOOU85UDlROVI5UzlUOVU5VjlXOVg5WTlaOVs5XDldOV45XzlgOWE5YjljOWQ5ZTlmOWc5aDlpOWo5azlsOW05bjlvOXA5cTlyOXM5dDl1OXY5dzl4OXk5ejl7OXw5fTl+OSE6IjojOiQ6JTomOic6KDopOio6KzosOi06LjovOjA6MToyOjM6NDo1OjY6Nzo4Ojk6Ojo7Ojw6PTo+Oj86QDpBOkI6QzpEOkU6RjpHOkg6STpKOks6TDpNOk46TzpQOlE6UjpTOlQ6VTpWOlc6WDpZOlo6WzpcOl06XjpfOmA6YTpiOmM6ZDplOmY6ZzpoOmk6ajprOmw6bTpuOm86cDpxOnI6czp0OnU6djp3Ong6eTp6Ons6fDp9On46ITsiOyM7JDslOyY7JzsoOyk7KjsrOyw7LTsuOy87MDsxOzI7Mzs0OzU7Njs3Ozg7OTs6Ozs7PDs9Oz47PztAO0E7QjtDO0Q7RTtGO0c7SDtJO0o7SztMO007TjtPO1A7UTtSO1M7VDtVO1Y7VztYO1k7WjtbO1w7XTteO187YDthO2I7YztkO2U7ZjtnO2g7aTtqO2s7bDttO247bztwO3E7cjtzO3Q7dTt2O3c7eDt5O3o7ezt8' $Zint_dll &= 'O307fjshPCI8IzwkPCU8JjwnPCg8KTwqPCs8LDwtPC48LzwwPDE8MjwzPDQ8NTw2PDc8ODw5PDo8Ozw8PD08Pjw/PEA8QTxCPEM8RDxFPEY8RzxIPEk8SjxLPEw8TTxOPE88UDxRPFI8UzxUPFU8VjxXPFg8WTxaPFs8XDxdPF48XzxgPGE8YjxjPGQ8ZTxmPGc8aDxpPGo8azxsPG08bjxvPHA8cTxyPHM8dDx1PHY8dzx4PHk8ejx7PHw8fTx+PCE9Ij0jPSQ9JT0mPSc9KD0pPSo9Kz0sPS09Lj0vPTA9MT0yPTM9ND01PTY9Nz04PTk9Oj07PTw9PT0+PT89QD1BPUI9Qz1EPUU9Rj1HPUg9ST1KPUs9TD1NPU49Tz1QPVE9Uj1TPVQ9VT1WPVc9WD1ZPVo9Wz1cPV09Xj1fPWA9YT1iPWM9ZD1lPWY9Zz1oPWk9aj1rPWw9bT1uPW89cD1xPXI9cz10PXU9dj13PXg9eT16PXs9fD19PX49IT4iPiM+JD4lPiY+Jz4oPik+Kj4rPiw+LT4uPi8+MD4xPjI+Mz40PjU+Nj43Pjg+OT46Pjs+PD49Pj4+Pz5APkE+Qj5DPkQ+RT5GPkc+SD5JPko+Sz5MPk0+Tj5PPlA+UT5SPlM+VD5VPlY+Vz5YPlk+Wj5bPlw+XT5ePl8+YD5hPmI+Yz5kPmU+Zj5nPmg+aT5qPms+bD5tPm4+bz5wPnE+cj5zPnQ+dT52Pnc+eD55Pno+ez58Pn0+fj4hPyI/Iz8kPyU/Jj8nPyg/KT8qPys/LD8tPy4/Lz8wPzE/Mj8zPzQ/NT82Pzc/OD85Pzo/Oz88Pz0/Pj8/P0A/QT9CP0M/RD9FP0Y/Rz9IP0k/Sj9LP0w/TT9OP08/UD9RP1I/Uz9UP1U/Vj9XP1g/WT9aP1s/XD9dP14/Xz9gP2E/Yj9jP2Q/ZT9mP2c/aD9pP2o/az9sP20/bj9vP3A/cT9yP3M/dD91P3Y/dz94P3k/ej97' $Zint_dll &= 'P3w/fT9+PyFAIkAjQCRAJUAmQCdAKEApQCpAK0AsQC1ALkAvQDBAMUAyQDNANEA1QDZAN0A4QDlAOkA7QDxAPUA+QD9AQEBBQEJAQ0BEQEVARkBHQEhASUBKQEtATEBNQE5AT0BQQFFAUkBTQFRAVUBWQFdAWEBZQFpAW0BcQF1AXkBfQGBAYUBiQGNAZEBlQGZAZ0BoQGlAakBrQGxAbUBuQG9AcNAI/////0BxQHJAc0B0QHVAdkB3QHhAeUB6QHtAfEB9QH5AIUEiQSNBJEElQSZBJ0EoQSlBKkErQSxBLUEuQS9BMEExQTJBM0E0QTVBNkE3QThBOUE6QTtBPEE9QT5BP0FAQUFBQkFDQURBRUFGQUdBSEFJQUpBS0FMQU1BTkFPQVBBUUFSQVNBVEFVQVZBV0FYQVlBWkFbQVxBXUFeQV9BYEFhQWJBY0FkQWVBZkFnQWhBaUFqQWtBbEFtQW5Bb0FwQXFBckFzQXRBdUF2QXdBeEF5QXpBe0F8QX1BfkEhQiJCI0IkQiVCJkInQihCKUIqQitCLEItQi5CL0IwQjFCMkIzQjRCNUI2QjdCOEI5QjpCO0I8Qj1CPkI/QkBCQUJCQkNCREJFQkZCR0JIQklCSkJLQkxCTUJOQk9CUEJRQlJCU0JUQlVCVkJXQlhCWUJaQltCXEJdQl5CX0JgQmFCYkJjQmRCZUJmQmdCaEJpQmpCa0JsQm1CbkJvQnBCcUJyQnNCdEJ1QnZCd0J4QnlCekJ7QnxCfUJ+QiFDIkMjQyRDJUMmQydDKEMpQypDK0MsQy1DLkMvQzBDMUMyQzNDNEM1QzZDN0M4QzlDOkM7QzxDPUM+Qz9DQENBQ0JDQ0NEQ0VDRkNHQ0hDSUNKQ0tDTENNQ05DT0NQQ1FDUkNTQ1RDVUNWQ1dDWENZQ1pDW0NcQ11DXkNfQ2BDYUNiQ2NDZENlQ2ZDZ0NoQ2lDakNrQ2xDbUNuQ29DcENxQ3JDc0N0Q3VDdkN3' $Zint_dll &= 'Q3hDeUN6Q3tDfEN9Q35DIUQiRCNEJEQlRCZEJ0QoRClEKkQrRCxELUQuRC9EMEQxRDJEM0Q0RDVENkQ3RDhEOUQ6RDtEPEQ9RD5EP0RAREFEQkRDRERERURGREdESERJREpES0RMRE1ETkRPRFBEUURSRFNEVERVRFZEV0RYRFlEWkRbRFxEXUReRF9EYERhRGJEY0RkRGVEZkRnRGhEaURqRGtEbERtRG5Eb0RwRHFEckRzRHREdUR2RHdEeER5RHpEe0R8RH1EfkQhRSJFI0UkRSVFJkUnRShFKUUqRStFLEUtRS5FL0UwRTFFMkUzRTRFNUU2RTdFOEU5RTpFO0U8RT1FPkU/RUBFQUVCRUNFREVFRUZFR0VIRUlFSkVLRUxFTUVORU9FUEVRRVJFU0VURVVFVkVXRVhFWUVaRVtFXEVdRV5FX0VgRWFFYkVjRWRFZUVmRWdFaEVpRWpFa0VsRW1FbkVvRXBFcUVyRXNFdEV1RXZFd0V4RXlFekV7RXxFfUV+RSFGIkYjRiRGJUYmRidGKEYpRipGK0YsRi1GLkYvRjBGMUYyRjNGNEY1RjZGN0Y4RjlGOkY7RjxGPUY+Rj9GQEZBRkJGQ0ZERkVGRkZHRkhGSUZKRktGTEZNRk5GT0ZQRlFGUkZTRlRGVUZWRldGWEZZRlpGW0ZcRl1GXkZfRmBGYUZiRmNGZEZlRmZGZ0ZoRmlGakZrRmxGbUZuRm9GcEZxRnJGc0Z0RnVGdkZ3RnhGeUZ6RntGfEZ9Rn5GIUciRyNHJEclRyZHJ0coRylHKkcrRyxHLUcuRy9HMEcxRzJHM0c0RzVHNkc3RzhHOUc6RztHPEc9Rz5HP0dAR0FHQkdDR0RHRUdGR0dHSEdJR0pHS0dMR01HTkdPR1BHUUdSR1NHVEdVR1ZHV0dYR1lHWkdbR1xHXUdeR19HYEdhR2JHY0dkR2VHZkdnR2hHaUdqR2tHbEdtR25Hb0dwR3FHckdzR3RHdUd2' $Zint_dll &= 'R3dHeEd5R3pHe0d8R31HfkchSCJII0gkSCVIJkgnSChIKUgqSCtILEgtSC5IL0gwSDFIMkgzSDRINUg2SDdIOEg5SDpIO0g8SD1IPkg/SEBIQUhCSENIREhFSEZIR0hISElISkhLSExITUhOSE9IUEhRSFJIU0hUSFVIVkhXSFhIWUhaSFtIXEhdSF5IX0hgSGFIYkhjSGRIZUhmSGdIaEhpSGpIa0hsSG1IbkhvSHBIcUhySHNIdEh1SHZId0h4SHlIekh7SHxIfUh+SFBLVktnS09NaE0tTntPIlA4UFBQXVBUUVVRWFFbUVxRXVFeUV9RYFFiUWNRZFFlUWZRaFFpUWpRa1FtUW9RcFFyUXZRelF8UX1RflEiUiNSJ1IoUilSKlIrUi1SMlI+UkJSQ1JEUkZSR1JIUklSSlJLUk1STlJPUlBSUVJSUlNSVFJVUlZSV1JZUlpSXlJfUmFSYlJkUmVSZlJnUmhSaVJqUmtScFJxUnJSc1J0UnVSd1J4UmZUfFQlVStVLlU4Vk1WS1dkV0VbZFslXCVdVV10XXxefl4zX2FfaF9xYC1hbWF1YyFkKWQuZTFlMmU5ZTtlPGVEZU5lUGVSZVZlemV7ZXxlfmUhZiRmJ2YtZi9mMGYxZjNmN2Y4ZjxmRGZGZkdmSmZSZlZmWWZcZl9mYWZkZmVmZmZoZmpma2ZsZm9mcWZyZnVmdmZ3ZnlmIWcmZylnKmcsZy1nMGc/Z0FnRmdHZ0tnTWdPZ1BnU2dfZ2RnZmd3Z2doaGhwaHFod2h5aHtofmgnaSxpTGl3aUFqZWp0andqfGp+aiRrJ2spayprOms7az1rQWtCa0ZrR2tMa09rUGtRa1JrWGsmbCdsKmwvbDBsMWwybDVsOGw6bEBsQWxFbEZsSWxKbFVsXWxebGFsZGxnbGhsd2x4bHpsIW0ibSNtbm1bbj1yenIxcyd0bnR0dnZ2OHdId1N3W3hweCF6Inpmeil8ISMiIyMjJCMl' $Zint_dll &= 'IyYjJyMoIykjKiMrIywjLSMuIy8jMCMxIzIjMyM0IzUjNiM3IzgjOSM6IzsjPCM9Iz4jPyNAI0EjQiNDI0QjRSNGI0cjSCNJI0ojSyNMI00jTiNPI1AjUSNSI1MjVCNVI1YjVyNYI1kjWiNbIywhXSNeI18jYCNhI2IjYyNkI2UjZiNnI2gjaSNqI2sjbCNtI24jbyNwI3EjciNzI3QjdSN2I3cjeCN5I3ojeyN8I30jJiJLIUwhfiF+I00hXCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJJlBwDf9xUAQAAWAIHBGwBAABwAgUEgAAAAIAACACEAwAAjAA6BKAAHDi4ADAAwAMAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgCAADMAAS85AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkA/v9IAPsDUQD+/2AA+wNpAAAAaQAAAGkAAABpAAIAagD//3oA//+KAP//mgD//6oAAgCrAAAAqwAgM7AAYwC0AA0IuAAAALgAAAC4AAAAuAAQgLoAHgC+AAAAvgAAEL8AAAC/AAAAvwAAAL8AAAC/AAAAvwAIAsEASADDAEYIxwAAAMcAAADHABh4zQD/A9cA/wPhAAAA4QD/A+sAAADrAAAA6wAAAOsAFADtAAAA7QAAAO0AjYn0AAJk+AChXwEBMDAFAQAABQEEAAYBMwwMAQAADAHMABABAAIRAgEgABIBAAxfQAADMMEBDM/z/ycSAAD/7xJwABATAAAAXxPw/18UQPEDsMQLSyywFQDyPzBqQVEW8ADfxswD/0+AD6lcwLAEAACqAfsDswHMMAC5AcPJwQEDAGDDXMAwYMDHAQBiUKs+FAxT' $Zint_dll &= 'ALDMAcsAAbs31gEP/+IMATsA5zzAMP7/QfaNAAYC//8WDABkwgA2Ag8AOgIV/v9JLJDFAGkMAJTHAIkCfwCQAkUADOj//8kFrwwA9csAzwzwLfD/B+bOBgyP8P/vL/BP8LEwAADAsP//BhsD/88pLMDwLB8q/zYtAEYMYMUAZsUI/////wP/h3IDSTl5A4svggNyQ4kDACCKAwQLjgMs6JUDQOObAwAonQPIQKEDRFmnAzdJrwN2ebkDQAS7A5MswgPwo8oDOADNA8UI0gMC7tkDAwDbAwCA3ANQNeIDyOHpAyMe8AMAgvIDScT4A1qtAQRCKQYEAMAIBGCACwQcRhEEmqQYBAPAHAQqBSEERComBEbWLgTaPTgEAAg5BIiDPgQgFEEEIABCBHABRgQhIEkEAgNMBAAwTgSsQFMEIIZXBGJEXASgIF8EAIpiBFMCZwQEgGkEAgRrBIQUbwT7e3wEBBB+BKR/iATiEY4EQSSSBKQAlQQhFJkEwCCcBFA6ogQAcKUEAgCmBEMnrQTJRbQEgiC3BDBGvATBD8MEiDzJBFAozQQChtEEJKDVBIgj2gQGiN4EGQ7kBABA5QSqIusEZOv0BBwA9wQozf4EIKECBeECBwULhAwFAIIOBZsnFwWeVB8FQYEjBbOgKgUQACsFCIUvBWEgMwUACDQFCC86BdAIPgU+vkkFDwFOBRj3VwUDqFwFQQpgBQhbZgUEBWkFAgBqBQAFbAUqOHIFQVB2BQEAdwUQGXsFCCF+BRMDgwUAAIMFImGIBQQEigXQQI4FARCQBQCAkQUiQJQFUICXBUhAmgUIAJsFABCcBdEGogUAN6cFgF6tBQAArQWgAK8FEJSzBRgAtQUAYLcFQAK5BZAAuwUAgLwFVAC/BQAAvwUIAMAFAAnCBRAAwwVAAMQFAADEBSBQxwUQEMkFACTLBQJMzwUBANAFAQbTBRgp2AVMgd0FACHfBQEI4QWFZOcFAwDpBVJE7gUhEPEF' $Zint_dll &= 'BAn0BQgA9QUNAPgFAAD4BYhJ/QUAgP4FAQD/BZEWBQZlBwwGAEANBpKEEgYzBBcGAIwaBpJFIAYWACMGIFInBigCKgYI0C4GAEMxBghMNQaiQDkGKsNABhCYRAYALkgGAIBJBnAWTwaEblYGgkBZBpDDXwazBGUGhXxtBhghcQYcBHUGyAJ5BiARfAYASn8GSAqDBhs2iwZAVZAGAImTBgoAlQYCmZoGIQKdBkAQnwZCAqIGAASjBkQApQYAAKUGAAClBgQMqAYQAKkGAACpBhYSrgYAAK4GQgKxBgAAsQYgGrUGQAC2BgAEtwYAALcGCQC5BrO1wwYYCscGIxXNBqCb1AboH90GfFDkBnmD7Ab9EPQGncD7BvbbBwdgBQsHku8VB0ICGAcQARoHAt8iB2FpKQciCCwHNZAyBwICNAcAADQHAwA2BwIaOgeqRUEHAQBCBwACQwcBgUYHUShLB4BgTgfSAlMHgAJVBwAAVQcAGFcHAQBYBwCSWwcAAFsHgAhdBwAgXgcFBGEHADVlBwAgZgdEYGoH5klyB55geQdMEH0HQiqCByAohQdIoYoHsRCPByCAkQcOAJQHnHueB5CEogegFKYHwSirB+BBsAcEB7QHSYy6Bw0QvgfIDMMHEoTHB7qJzwfAAtIHIhTWBwBV2gfACt4HxD7mB4OS7AejHPMHh0P6BwNHAAigIgQIKDAICMADDAgBCA4IIKARCACAEghEMBYIo4UdCAAAHQgOICEIJSImCDy3MAgBADEIIDI1CFCMOgiZAD4IXTFGCKAASAgClEwIAwBOCEsOVQhC41wIIIxgCIAAYQiR0GcIlB1uCCijdAicSXsIwWCACAZEhAgTB4oIkFqQCERElAiID5oIAACaCEAAmwjElaIIgXWpCEeErwgCRLIIU8C4CIMrvwgIAcEIAEDCCEKSxwgRBssIpgnRCAAI0ggiMtcIhLPeCN0b6AgA8OwIisDxCIIC9AgCAPUIAIj3CABs' $Zint_dll &= '+wgAkv4IIQAACYBBAwmEjAgJCBMMCUQJEAmnBxgJAAAYCVGAHAlBDCAJAmAjCdAAJgkAoCgJ0BAsCQQwLwkARDEJAAAxCQABMgkBgjUJAAc4CQABOQkORD4JMGhDCQUIRgmyZE0JFAVRCeYQVwkURFsJEQBdCQAhXwkInGQJwMtrCSDhcAnCQHQJTDB5CbRBfwmsEIQJg5qLCbKYkgmBMpcJIpicCYQAnglpM6YJErytCcDWtAk7wLsJoaHBCVMMxwkeis4JAOrTCfDL3AnYBeIJkEPnCcMh7QkFSPEJHEr3CdAC+wlAMv8JQQABCp3XDAoJKxIKsOgZCsB9IQpSJCYKQMIqCkvQMQoAoDMKq8g7CoCKPwqpNEYKAIBHCslBTQoQgE8KHyRWCgCSWQp7SGEKAABhCswAZQoGhGkKADNtCg9BcwobAHcKACB4CkCAegoigH0KmKCCCoahiAprAI0KMCqSCqSFmAqBQZwKBAafCiFgowoEAKQKgAClCgGgqAoABKkKuEawCg/puQqgA70KAAC9CiAYwAqgQMMKEAjFCgo4ygoBAMsKAAXNCgCo0AoEBNIKisLYCgoA2gogJ98KEAniCgyD5woCCOkKAADpChFi7gqAEPAKDADyCggI9AoMAPYKCAz5CgAA+QpACPsKEBT+CkQAAAsLAAMLBGQHC8BQCwsBgA0LfgQUC4SJGQtYBh4LQEEhCwDAIwuklCkLYqgvC9wJNgsAGDgLAAA4CwCBOgsKADwLCAA9C5BBQQsHQEULoeRMCwElUAtFZFYL7hFeC30OZwsASGkLCPtxCxYWdwuoCHsLLsmDCwkAhQsAGIcLgkqMC6AGkAtka5gLAgCZCwAWnAtIVqILkIOnC6BzrgsqALELAICyCyQAtAv5iLwLAkfBCwJNxguqD84LAADOC4CO0wt7uN0LVHXlCxgk6QtA2e8LgMjzCwwE9gsAAPYLQbD7CySMAAxCBAMMNFoKDBoADQwAgA4M' $Zint_dll &= 'EMESDEaAFgwyABkMDRgeDAaBIgwCACMMks0rDBRgLwwBdDQMEmE5DJEAPAyYwEEMCkJFDA8ESgwghE0ME5pUDAJAVgxiilwMIv1lDIiBaQyAQGsMABBsDAMhcAwICHIMATF2DCBEeQwEB30MEriDDIgDhwwAiYoMAKOODAAAjgwCIpEMEBKUDABGlwxCAJkMQQCbDIBWoAxBUqUM8FKsDAAgrQwQhrEMFIK1DAQQtwwCRrsMCkPADDWAxQzgYMoMANjODEEA0AwBCNIMADTVDGVs3QzBEeIMBKvoDIYC7AwEIu8MAwDxDAAA8QyEkPUMAAD1DBVA+QyBAvwMAgL+DAAzAg0ABAMNQDgHDSAOCw3AwA8NMAARDYUAFA0ABRYNJQ0cDdBKIg3QgScNgCIqDQwCLQ0FtjQNQGI4DXkmQA2AYkQN6gJKDQgITA1n3VcNeYVfDRsIZA2g3mwNNYd0DQBAdQ2MCnoNANF+DaoFhA0loooNQISNDRAVkQ1NQJYNgACXDRIAmQ0ijZ8NaBmlDY8FrA2AkK8NGjq2DWSEuw1hhcENwMzHDQIgyQ0gCMsNLnPUDaQg2A00C94NBADfDRUU5A0BIOYNAILoDVcA7Q0ACO4NBFDxDUQA8w0SEvcNBXn+DdBAAg4JAAQOAEAFDgCEBw5MBQwORNgSDppAFw4UURyNCP////8OEgshDgBAIg4BAiQOgBUoDgEgKg4ACCsOSggvDgDCMg4ACDMOAkA1DiAwOA4JmD0OAAA9DoAYQA4s4kcOCABIDgQASQ4EAEoO4BBODhQAUA4ggFIOACBTDgCYVg4AEFcOgnBcDoIAXg6IAmEOABxkDiJMaQ4BAGoOAJFtDiAIbw4CQHEOQAByDgAcdQ4ARHcOgwN8DsF8hA4hIYgOAISKDgLgjg4CAI8OwESTDgrimQ4DDp4OJoGjDtACpw4ACKgOISmtDpCWsw4BQLUOwri8DkFiwQ6AAMIOBgrGDlGmzQ4SAdAO' $Zint_dll &= 'LIHVDgDG2Q4ABNoOsAzfDoCi4w4ppOkOQIbtDgCA7g4CSvIOQTD2DgAC9w5Auv0OVwACDwFQBQ8gIAcPgIgKD7AkDw8CIBEPEgEUD9MCGg8EABsPEQIeDwAAHg+AAB8PBEAhD4IMJQ8A4CgPCDArDwAAKw8REC4PCAAvDwgCMQ+kgTYPoEA5Dw5CPg8ABD8PQMBCD4EARA8ASEYP9S1QD5EPVw8H2F4PKQZjD3wAaA8BQGoPRkVwD06Cdg8AwHgPCBB6DwUwfg827YgPgAyLD0BlkA8Lk5cPEAiZDwAGmw8g6KAPCsilD4JgqQ/KAK0PNECxDwIutg8BErkPBJC8D0gZwQ8AAMEPAADBDwAAwQ8AAMEPAADBDwAAwQ8AAMEPAADBDwAAwQ9ABcQPABDFDzEAyA8ATMsPpQLQDyBV1Q8QRNgPEAPbDwQj3w8iVOQPNIDoDwMK7A8BEu8PaxL2D6EB+g8AIPsPSKD/D0gEAhBARQYQAIAHEI3gDhDwGhUQQCgYECaGHhAWBCIQGFAmEABMKRAyACwQEiEwEOQFNhAADTkQCIo9EABCPxAASEEQMwBFEGAISBADh04QAYVSEAA0VRAJAVgQKOReEEUgYhAAgWQQqCVqEBhccBCgNXYQBNh7EAIcfxDgAoMQoQCGEAAChxBQwIsQRkGQEABokxAEppgQYPKfEIq7qBAAAKgQtsiwEOIAtBACYLcQPgK9EIAAvhAAicEQcgPHEIGGzBAGAM4QAADOEIgI0RAARtQQQEHXEAQO2xAAINwQIhbhEEgQ5BAAiucQFyLtEBh08xAAAPMQABL1EAIh+BAAAvkQgAj7EEqYAREgBAMRAAADERESBxECAAgRBJkNEVUqFBECBBYRAFAYERAQGhEAABoRmkUhESqwJxEAoCkRCkItEQgCLxEIJzQRAAA0EZCANxESCDoRQIc/EQEEQREC4kYRIDBJETAGTRGAjFERxARVEcAEWBEAIFkRAIBaEQBA' $Zint_dll &= 'WxEx2GIRgABjEQACZBEAFGYRCABnERgCahEAAGoRgAhsERCKcBEQIHIRAEBzEQ0BdxEAFXoRAAB6EQAAehEAQHsRoIB+EUABgBFQAYMRBCCFEQCAhhEEAIcRCASJERAAihEAAIoRAZCNEQRKkREgAJIRAICTEQwAlRFCCJgRQTCcEYwqohEOCacRhcCsEQYpsRHEQLURAAi2ERAAtxEGgLoRMLLAEQIBwhE4IccRgADIEQ0DzREgBM8RQAnSERIA1BEAgNUREATXEQSA2RHKiN8RSADhEQIG5BEEJOcRAQDoEQQA6REIAOoREAHsEQ1V8xHIqfoRKCT+EVIMAxIAAAMSMUgIEk1iDxIvAhUSoDAZEihBHRJ7BSUSBdIrEpSoMRJEGDUSwmw8EsJFQhIXQEcS0S5PEgEZUxIIAlUSAsJZEgAVXBJAkF8SkSBjEgEEZRJNBGoSAABqEgAAahIAAGoSAABqEgAAahIAAGoSAABqEgAAahIAAGoSgIBsEkIVcRIgBHMSAgx2EgAGeBIEFHsSAGB9EoefhxLZuZESnwWZEgpUnhJdJKUSEDipErAlrxJIALESAACxEgAAsRIAALESAACxElAItBKZALgSIAS6EgACuxIIAb0SCETAEkCYxBIAKMYSCoHKEggAyxIAhM0SAUDPEgAE0BIhANISlAfYEgCC2hIBANsSUADdEoIk4RIAAOESABzkEgAA5BIBPOkSBIDrEgAI7BIASe8SKALyEjz4+xLAhgATCMsGEzBiCxMAoA0TBAAOEwAADhMAAA4TABgQE0ihFRMHABgTJEAbExIAHRNALCEThSImE2+pMBOz5joTD0A/EyZRRROGbEwTO3JVEwviXBOktWQTn4VtEyICcBNMhXYTIwF6EwIEfBMAQH0TAiGAEyAgghMEAIMTJAKGE4AgiBMEAIkTAH6PEwQAkBMEFpQToAGXE4AqmxMEEJ0TANihEzIApBOB+qwTgzGyE4gEtRMgALYT' $Zint_dll &= 'ACC3E4dAvBMAALwTEIS/EyECwhOASMUTdADJEwAAyRMpAMwTShHREwAA0RPIAtUTAJDXEwQA2BMQBNoTABHcExAA3RMBxeITV8nrEwAA6xMALe8TEAjxEwBA8hMgUPUTABD2E1AE+ROIMP0TAQD+EwgA/xMCQAEUEgADFEAABBQQAAUUAAEGFCAICBQgAQoUEAALFAYIDhQAAA4UAKAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFIAAERQJihYUHgEbFDghIBQCGCMUgAQlFHAQKRQGACsUAAArFAAAKxQAECwUAkQvFASIMhQVODgUAfg+FBwEQhTpIUkUYGxPFDAbVRSIBVkUgghcFPN6ZxRgGmwUDIdyFMUKeBTBAHsUSlKBFIAAghQFIoYUFAGJFEJQjRQGIpEUkASUFAColxQAAJcUASmbFAAAmxRACJ0UCBCfFAAAnxRIiKMUbxWsFI8BshQAILMUAQu3FEBwuxQQRb8UoIjDFAAAwxQAAMMUAADDFACBxRQCAMYUkADIFACYyxQG4NAUEHDUFAgW2BQJQdwAFAEB3hQAAN4AFCA64xSWAOfALMBwQCLqFCBxBO8UGgLzDQD0FBAnovu9APwUAoAA/hQCwQIVAAIAAxUACAQVwQAABxUpIAsVoIwAEBUkBhQVAACUDBhQwQAWLGBREYARkFEBArTBAoAMRMBRAUjgUQEgAAFS4QNoUhEAQYBSAQCYwgaADACkUiEAyFKBAYDkwgMMIPBSEQAEAFMBESDDA4AMADJTUQJgUwEAAnBTQYCQUxEAKLBTAQjAwwaADM8AKvBTgQUgBNoDMNQeQFQBFGAEygFHbHBUIQCSBFAxAMFUQQDQBMwDDCT4VAEBAIXKAFF9AFJMIFVBMHNgxQEMQITFAQwPAAEiysUBXBWMoEBhfQFiFTBIZhUBCGBpFRJZby0DQHAt' $Zint_dll &= 'AHEVgEF0FQEIAHUVAQB2/QAAdxUATHoVBIAFfBWCFICdAIF9AgCCFSEQhRWTBwCMFf8+mRURsACeFQMToxUBKASmFRARqX0AqRUBkwWvFXseuWwA4FsxcFlcEbADsFwhEfFcAQoAEF0xWZldsQYDAF4RBWteIRABkF4RINNeARMBEF8BK1BfEREAgF+hAMNfkYcLUGBhMKFgEQAD0GABAeBgAQgA8GAxETBhsQABdCG6ABkWAJMdFhEDKyNsQGIBwAAAkwUqFmt0MxYAUbA5FiMTPxYBATtFFjAQSGwAyEBwSxYRsFAWAAMTVRYAKVgWABARWxaAIV4WAAEAXxYAMGEWARWwZxYOA2y9AABvFjAAcRYAAgByFhEBdRYjEGB5/MAAE3wWgWsAgxYQEIUWAANAhy0BixYTEI8WAREwkxYAAZSMAEBpAVOlaYErQgbKAgwAI9oLcGoBIHDZanGwf2sRoBPRawE7IMwNBsYWIQDIjMAAGwDMFg071BY4EVDZbODNBuIWMxFQ6E0B6b0A7BYFKwXyFhwR930A+LxAyQAQ+U0A/mwQcAEQoFJwAZOhcAEAK+BwEQDwcCEAARFxAQDAABEAExcBAxYXMBAAGRcwAhwXEwcAIhdrFCkXEQAAKxcAEy4XBSsANBd0+T4XuI8ARxcTAUsXOxBgUdzAcHDZWRewKkpfbDDGBmncsIZwMRDxxgZvFzAAWXUXsSp8FxEYAX8XclLABIAXAQARgxcBC4cXECgAiDyAyA2MFysgEJEsEHkREDAJcAEAQnkBEXGJcAEqoMkNnRchADChF1mwqBcCKAGqjKDaIPB6AQtyUMsNuRc7OMEAFxGwxhcDAMjFbMBwEw3ObGDNBgXbFwMB3u0A31wAyDATAeMXIBDlgv0A5hcAAedMcM5wARGQzgEMBLMOcBGB8X4hAACvygPwnBDPAfEtAfQMFyMA9yzAAJP7oA0C/50BAhgwAAQAGBEBBxgrMA0AGBGwEhjH' $Zint_dll &= 'ExoAGAE7IBgwASMBGIACJRgAAAwAAnPCBiwYgxMyABgBKzcYMBE7ABiwA0AYEQBCCBgKMEZssIQhMBDhhAEA8sQLDAAUIGYBAVMYKxBYABgRoFwYAhNggtxQhgEBYMYGZwgYAQBoTQBqGBEqkG5sIMcGd00AewwYsGaC/MAAMISATQCJGALTjxgHAGuXGDoRnRiwAAejGAMBphggMACnjMAAE6oYBQJrsRg4EbYtAbsAGBMBvxi4EMTAbMAAG8gYBSvOABgQAdAYAAPSykzAABDTLQHXnQHaABgBCt0YcHnlCBiwouudAe4YCjIQ8YzAABHzbQH0ABgQEfcYkAD5rGzAL6wD/mzAAJMCABkFuwoZ8vkVABmwIhoZEwEeABk7MiYZASAoEBkAAAwDk+WSAQBrMJMxGYCTAbAD85MRATqUATESgcQGSBlwEQBNGbACURkRAARTGRAQVUxQlQEQMJGVETDAlQEBEeDFA14ZkwcAZRkrFmwZEAAEbRkBAW9M8JYBABMxlwEgQJcBEBFwl5ECw5eBEQEbyAUMAxNlCJAB68CYMVEQiZCxg5PJBp4ZAwMDohkAAaN8wDABkwGoGTkQrSwA0JohMACbAbADV8sCDNOQkDECwEvMAgwHAdDLAb0ZAAEAvhkgMMEZDhGQxRnOCcAEDAwRdMwBxxkCEcoNAmDNLMAwEwHRGSsAsNgZebDgGSMCE+YZATvsDQLwoO0C9A0C9xkh8P0AGdmwBRpDEwsAGgE7ERowERUAGrADGhoRAR0AGiBwIRpRsCcAGiITLBoBIC4AGhARMRqQATSAbHCjsQDDoxEBABukITBppBEQsMqkYQHwpNGJAKAxEUClEQKDBcgGXRoCA2AaAQApZBowMWkasAQCbRoAAAwA8wagkYFrpyG0wQegETATqIETYYigATOgyAaKGiAwAIscwAATjhoFLDOUvQCXPMBwAQAAmBoAk5waBSMFoRowAaS9AKVMAGCqAQGBqhEB' $Zint_dll &= 'Q8XKA62c0NogEKtRASNAywa1bHDLBJgMEJHLAQwkoKsBMFEIrDEAMawBEQFh3AuQrBGwAuCsAXNnrYE7BuTdICCusQOTrgEQCfuuIRpBrwEQIGCvAbPnrwEAf3WwMRGwsAGwAiexEQ2vsQEwHhGyEbBhshEAE8eykaswwwYANxs7MD4bAZAAQRsCE0UbASsAShswEU4bsAIAUhsTB1gbKzAAXhsRMGIbAxMFZxsBI2ts8MYGQHPccLexCuO3ARBBS7jhH9G4ARGQANkEYLmBewTguTFdULqxBwPQuhEBK7sxMAWAuxEQsrsBEQHiu+FkBhsTBcMbEGswymzwvCEQASC9ETBzvQEBAIXNBths0L2xjgNgvgEBmr4hEFCwvgEA084N8L0AAPQbEwD3GyAwAPobcbABHAIBAgMcABAEHM4XwAHoXgYcEwEJHAsQIA0cIifAATAxwYERsILBBQwzWeABwLFmc8JRCesCwDEwMcMRsJMDwAERsMMBIMADzAcMAOPDEQE7BMAxEGDEAQByNNgEgMQBEJDEBgwAArPEBlAcCgNUChwBEFZscMUGWAAcEQFbHAMAXYCM0MUhMBHGEQAyUsYGZhwAA2jMTMAAEGkcwAABaqAcoMYGaxyQAm7ALMAAMHAcETB0AByGU3scAXuCABwwEYYcsAOLABxRAY8cIQCRyozAABOUnQGabOAJwAErIMoRAUAKwAEBYcoRAHAK2guw2icAywERMSvbIEDLCwwAUdsZoKvaNcDbDNDLDcHcUIzKC8bcgMwByRwAKBHL3ADNDdMcECAC1c0D2RwrAN3A/MAAk+EcAyvnqNywzg3vbDDPsQMCo88G+hwCAPuAHLDPAZMB0AELMVDQ0UrQsQLhANARATvRMRBgAdThcQEdMBEaHbAgAh5sINIRAlECyAQlHQIBJx0BAgAoHRAAKTyQAsoGLdwg0xEBQCPIBjYdACA33LADyA0/HREBQh0BADBFHREwSR0CKgBK' $Zint_dll &= 'vKDEBk5sIAXQMTFw1bED47XaCzDWC2DGDWd8wDAUEwVsbDDHBngdAAIRex0AEHwdFBABfmzg1wsg2AGxQoHYEJDYARAApcgEimzA2AEoEOTIBI8dADCR3FBl2RKAyQ2ZnQGajACkyQ2eHSMQoh0AERClHQKTqh0ABQuvHRARsh0QMAC0bIDbsQIH8NsRBVvcMTJRsNwRsBPNBdPcAMlAMNVNANodAxME3x0BK+TccN4BADOw3hEQ0N5RoQATzwb2vQD4DQJi+bzAMBEA+/0A/BAdEaDacjBJ4FEAsaLg4S4CHgACDEAeLnHgAQDR4BEBARnh4RgBHgEpFwEeEBEaHrAAt7wSgAwA8+ERAUviASAwgeIRsuLiAQATIeMBO3DjERAAgOMBApDDCJQMMMHTBCDEBkYeALACSh4TAU4eATsQVB4RIFdsAKTFDWAeMhFlHgCAAmceEwBqHgAoMG4eEaByHgECEXUeAQp43ADA5yEpAOgREQAw6BECc+gRARCU2AvQ6BGwIskGAJYekAKZHtMDAKAeKxKmHhEwUKps4MoGsx7//1XDDDDNAOMMMM8ABQMf//8TDDDCAFUzDDDEAFMMMMYAVXMMMMgAkwwwygAAsx//D78f/v9VzizgzQDuDODPAAYOIP9/HWJ7wPAMb4KGfA6lFwABywAgCnsBEIAMAM8AUGB8HMAAYH0BEMCODADiF2CQA34VwAHgnAwA+McHDMAUsIQAARBwgAEQEIHArMAAcIIBEECDmWwDUMgODABw2ASgyQAQiU0ADADMBzDg3MEAmOGtY25AgwGxB8Qs/qLwJjG4pFMYB/7DNX98AwAtvagc48tBALdL5KAAC8zH8qYAAPTSCP////+m9abgpuGm8KbxpuKm46bupu+m5qbnpuSm5abopumm6qbrpgAAAAAAAECoQahCqFypQ6hEqEWoRqhHqEioWalJqEqoS6hMqE2oTqhPqFCoUahSqJKoU6hUqFWoVqhXqFio' $Zint_dll &= 'WahaqFuoXKhdqF6oX6hgqGGoYqhjqGSoZahmqGeoaKhpqGqoa6hsqG2obqhvqHCocahyqHOodKh1qHaod6h4qHmoeqh7qHyofah+qICogaiCqIOohKiFqIaoh6iIqImoiqiLqIyojaiOqI+okKiRqGWplqmTqJSolahAqUGpQqlDqUSpRalGqUepSKlhqWKpZqlnqWCpY6lkqVqpSalKqUupTKlNqU6pT6lQqVGpUqlTqVSpQIFBgUKBQ4FEgUWBRoFHgUiBSYFKgUuBTIFNgU6BT4FQgVGBUoFTgVSBVYFWgVeBWIFZgVqBW4FcgV2BXoFfgWCBYYFigWOBZIFlgWaBZ4FogWmBaoFrgWyBbYFugW+BcIFxgXKBc4F0gXWBdoF3gXiBeYF6gXuBfIF9gX6BgIGBgYKBg4GEgYWBhoGHgYiBiYGKgYuBjIGNgY6Bj4GQgZGBkoGTgZSBlYGWgZeBmIGZgZqBm4GcgZ2BnoGfgaCBoYGigaOBpIGlgaaBp4GogamBqoGrgayBrYGuga+BsIGxgbKBs4G0gbWBtoG3gbiBuYG6gbuBvIG9gb6Bv4HAgcGBwoHDgcSBxYHGgceByIHJgcqBy4HMgc2BzoHPgdCB0YHSgdOB1IHVgdaB14HYgdmB2oHbgdyB3YHegd+B4IHhgeKB44HkgeWB5oHngeiB6YHqgeuB7IHtge6B74HwgfGB8oHzgfSB9YH2gfeB+IH5gfqB+4H8gf2B/oFAgkGCQoJDgkSCRYJGgkeCSIJJgkqCS4JMgk2CToJPglCCUYJSglOCVIJVglaCV4JYglmCWoJbglyCXYJegl+CYIJhgmKCY4JkgmWCZoJngmiCaYJqgmuCbIJtgm6Cb4JwgnGCcoJzgnSCdYJ2gneCeIJ5gnqCe4J8gn2CfoKAgoGCgoKDgoSChYKGgoeCiIKJgoqCi4KMgo2CjoKPgpCCkYKSgpOClIKVgpaCl4KYgpmCmoKbgpyCnYKegp+C' $Zint_dll &= 'oIKhgqKCo4KkgqWCpoKngqiCqYKqgquCrIKtgq6Cr4KwgrGCsoKzgrSCtYK2greCuIK5grqCu4K8gr2CvoK/gsCCwYLCgsOCxILFgsaCx4LIgsmCyoLLgsyCzYLOgs+C0ILRgtKC04LUgtWC1oLXgtiC2YLagtuC3ILdgt6C34LgguGC4oLjguSC5YLmgueC6ILpguqC64Lsgu2C7oLvgvCC8YLygvOC9IL1gvaC94L4gvmC+oL7gvyC/YL+gkCDQYNCg0ODRINFg0aDR4NIg0mDSoNLg0yDTYNOg0+DUINRg1KDU4NUg1WDVoNXg1iDWYNag1uDXINdg16DX4Ngg2GDYoNjg2SDZYNmg2eDaINpg2qDa4Nsg22DboNvg3CDcYNyg3ODdIN1g3aDd4N4g3mDeoN7g3yDfYN+g4CDgYOCg4ODhIOFg4aDh4OIg4mDioOLg4yDjYOOg4+DkIORg5KDk4OUg5WDloOXg5iDmYOag5uDnIOdg56Dn4Ogg6GDooOjg6SDpYOmg6eDqIOpg6qDq4Osg62DroOvg7CDsYOyg7ODtIO1g7aDt4O4g7mDuoO7g7yDvYO+g7+DwIPBg8KDw4PEg8WDxoPHg8iDyYPKg8uDzIPNg86Dz4PQg9GD0oPTg9SD1YPWg9eD2IPZg9qD24Pcg92D3oPfg+CD4YPig+OD5IPlg+aD54Pog+mD6oPrg+yD7YPug++D8IPxg/KD84P0g/WD9oP3g/iD+YP6g/uD/IP9g/6DQIRBhEKEQ4REhEWERoRHhEiESYRKhEuETIRNhE6ET4RQhFGEUoRThFSEVYRWhFeEWIRZhFqEW4RchF2EXoRfhGCEYYRihGOEZIRlhGaEZ4RohGmEaoRrhGyEbYRuhG+EcIRxhHKEc4R0hHWEdoR3hHiEeYR6hHuEfIR9hH6EgISBhIKEg4SEhIWEhoSHhIiEiYSKhIuEjISNhI6Ej4SQhJGEkoSThJSElYSWhJeEmISZhJqE' $Zint_dll &= 'm4SchJ2EnoSfhKCEoYSihKOEpISlhKaEp4SohKmEqoSrhKyErYSuhK+EsISxhLKEs4S0hLWEtoS3hLiEuYS6hLuEvIS9hL6Ev4TAhMGEwoTDhMSExYTGhMeEyITJhMqEy4TMhM2EzoTPhNCE0YTShNOE1ITVhNaE14TYhNmE2oTbhNyE3YTehN+E4IThhOKE44TkhOWE5oTnhOiE6YTqhOuE7ITthO6E74TwhPGE8oTzhPSE9YT2hPeE+IT5hPqE+4T8hP2E/oRAhUGFQoVDhUSFRYVGhUeFSIVJhUqFS4VMhU2FToVPhVCFUYVShVOFVIVVhVaFV4VYhVmFWoVbhVyFXYVehV+FYIVhhWKFY4VkhWWFZoVnhWiFaYVqhWuFbIVthW6Fb4VwhXGFcoVzhXSFdYV2hXeFeIV5hXqFe4V8hX2FfoWAhYGFgoWDhYSFhYWGhYeFiIWJhYqFi4WMhY2FjoWPhZCFkYWShZOFlIWVhZaFl4WYhZmFmoWbhZyFnYWehZ+FoIWhhaKFo4WkhaWFpoWnhaiFqYWqhauFrIWtha6Fr4WwhbGFsoWzhbSFtYW2hbeFuIW5hbqFu4W8hb2FvoW/hcCFwYXChcOFxIXFhcaFx4XIhcmFyoXLhcyFzYXOhc+F0IXRhdKF04XUhdWF1oXXhdiF2YXahduF3IXdhd6F34XgheGF4oXjheSF5YXmheeF6IXpheqF64Xshe2F7oXvhfCF8YXyhfOF9IX1hfaF94X4hfmF+oX7hfyF/YX+hUCGQYZChkOGRIZFhkaGR4ZIhkmGSoZLhkyGTYZOhk+GUIZRhlKGU4ZUhlWGVoZXhliGWYZahluGXIZdhl6GX4ZghmGGYoZjhmSGZYZmhmeGaIZphmqGa4Zshm2GboZvhnCGcYZyhnOGdIZ1hnaGd4Z4hnmGeoZ7hnyGfYZ+hoCGgYaChoOGhIaFhoaGh4aIhomGioaLhoyGjYaOho+GkIaRhpKGk4aUhpWG' $Zint_dll &= 'loaXhpiGmYaahpuGnIadhp6Gn4aghqGGooajhqSGpYamhqeGqIaphqqGq4ashq2GroavhrCGsYayhrOGtIa1hraGt4a4hrmGuoa7hryGvYa+hr+GwIbBhsKGw4bEhsWGxobHhsiGyYbKhsuGzIbNhs6Gz4bQhtGG0obThtSG1YbWhteG2IbZhtqG24bcht2G3obfhuCG4YbihuOG5IblhuaG54bohumG6obrhuyG7Ybuhu+G8IbxhvKG84b0hvWG9ob3hviG+Yb6hvuG/Ib9hv6GQIdBh0KHQ4dEh0WHRodHh0iHSYdKh0uHTIdNh06HT4dQh1GHUodTh1SHVYdWh1eHWIdZh1qHW4dch12HXodfh2CHYYdih2OHZIdlh2aHZ4doh2mHaodrh2yHbYduh2+HcIdxh3KHc4d0h3WHdod3h3iHeYd6h3uHfId9h36HgIeBh4KHg4eEh4WHhoeHh4iHiYeKh4uHjIeNh46Hj4eQh5GHkoeTh5SHlYeWh5eHmIeZh5qWDP////+Hm4ech52Hnoefh6CHoYeih6OHpIelh6aHp4eoh6mHqoerh6yHrYeuh6+HsIexh7KHs4e0h7WHtoe3h7iHuYe6h7uHvIe9h76Hv4fAh8GHwofDh8SHxYfGh8eHyIfJh8qHy4fMh82HzofPh9CH0YfSh9OH1IfVh9aH14fYh9mH2ofbh9yH3Yfeh9+H4Ifhh+KH44fkh+WH5ofnh+iH6Yfqh+uH7Ifth+6H74fwh/GH8ofzh/SH9Yf2h/eH+If5h/qH+4f8h/2H/odAiEGIQohDiESIRYhGiEeISIhJiEqIS4hMiE2ITohPiFCIUYhSiFOIVIhViFaIV4hYiFmIWohbiFyIXYheiF+IYIhhiGKIY4hkiGWIZohniGiIaYhqiGuIbIhtiG6Ib4hwiHGIcohziHSIdYh2iHeIeIh5iHqIe4h8iH2IfoiAiIGIgoiDiISIhYiGiIeIiIiJiIqIi4iMiI2I' $Zint_dll &= 'joiPiJCIkYiSiJOIlIiViJaIl4iYiJmImoibiJyInYieiJ+IoIihiKKIo4ikiKWIpoiniKiIqYiqiKuIrIitiK6Ir4iwiLGIsoiziLSItYi2iLeIuIi5iLqIu4i8iL2Ivoi/iMCIwYjCiMOIxIjFiMaIx4jIiMmIyojLiMyIzYjOiM+I0IjRiNKI04jUiNWI1ojXiNiI2YjaiNuI3IjdiN6I34jgiOGI4ojjiOSI5YjmiOeI6IjpiOqI64jsiO2I7ojviPCI8YjyiPOI9Ij1iPaI94j4iPmI+oj7iPyI/Yj+iECJQYlCiUOJRIlFiUaJR4lIiUmJSolLiUyJTYlOiU+JUIlRiVKJU4lUiVWJVolXiViJWYlaiVuJXIldiV6JX4lgiWGJYoljiWSJZYlmiWeJaIlpiWqJa4lsiW2JbolviXCJcYlyiXOJdIl1iXaJd4l4iXmJeol7iXyJfYl+iYCJgYmCiYOJhImFiYaJh4mIiYmJiomLiYyJjYmOiY+JkImRiZKJk4mUiZWJlomXiZiJmYmaiZuJnImdiZ6Jn4mgiaGJoomjiaSJpYmmiaeJqImpiaqJq4msia2JromvibCJsYmyibOJtIm1ibaJt4m4ibmJuom7ibyJvYm+ib+JwInBicKJw4nEicWJxonHiciJyYnKicuJzInNic6Jz4nQidGJ0onTidSJ1YnWideJ2InZidqJ24ncid2J3onfieCJ4YniieOJ5InlieaJ54noiemJ6onrieyJ7Ynuie+J8InxifKJ84n0ifWJ9on3ifiJ+Yn6ifuJ/In9if6JQIpBikKKQ4pEikWKRopHikiKSYpKikuKTIpNik6KT4pQilGKUopTilSKVYpWileKWIpZilqKW4pcil2KXopfimCKYYpiimOKZIplimaKZ4poimmKaoprimyKbYpuim+KcIpxinKKc4p0inWKdop3iniKeYp6inuKfIp9in6KgIqBioKKg4qEioWKhoqHioiK' $Zint_dll &= 'iYqKiouKjIqNio6Kj4qQipGKkoqTipSKlYqWipeKmIqZipqKm4qcip2KnoqfiqCKoYqiiqOKpIqliqaKp4qoiqmKqoqriqyKrYquiq+KsIqxirKKs4q0irWKtoq3iriKuYq6iruKvIq9ir6Kv4rAisGKworDisSKxYrGiseKyIrJisqKy4rMis2KzorPitCK0YrSitOK1IrVitaK14rYitmK2orbityK3Yreit+K4IrhiuKK44rkiuWK5orniuiK6YrqiuuK7Irtiu6K74rwivGK8orzivSK9Yr2iveK+Ir5ivqK+4r8iv2K/opAi0GLQotDi0SLRYtGi0eLSItJi0qLS4tMi02LTotPi1CLUYtSi1OLVItVi1aLV4tYi1mLWotbi1yLXYtei1+LYIthi2KLY4tki2WLZotni2iLaYtqi2uLbItti26Lb4twi3GLcotzi3SLdYt2i3eLeIt5i3qLe4t8i32LfouAi4GLgouDi4SLhYuGi4eLiIuJi4qLi4uMi42LjouPi5CLkYuSi5OLlIuVi5aLl4uYi5mLmoubi5yLnYuei5+LoIuhi6KLo4uki6WLpouni6iLqYuqi6uLrIuti66Lr4uwi7GLsouzi7SLtYu2i7eLuIu5i7qLu4u8i72Lvou/i8CLwYvCi8OLxIvFi8aLx4vIi8mLyovLi8yLzYvOi8+L0IvRi9KL04vUi9WL1ovXi9iL2Yvai9uL3Ivdi96L34vgi+GL4ovji+SL5Yvmi+eL6Ivpi+qL64vsi+2L7ovvi/CL8Yvyi/OL9Iv1i/aL94v4i/mL+ov7i/yL/Yv+i0CMQYxCjEOMRIxFjEaMR4xIjEmMSoxLjEyMTYxOjE+MUIxRjFKMU4xUjFWMVoxXjFiMWYxajFuMXIxdjF6MX4xgjGGMYoxjjGSMZYxmjGeMaIxpjGqMa4xsjG2MboxvjHCMcYxyjHOMdIx1jHaMd4x4jHmMeox7jHyMfYx+jICMgYyCjIOM' $Zint_dll &= 'hIyFjIaMh4yIjImMioyLjIyMjYyOjI+MkIyRjJKMk4yUjJWMloyXjJiMmYyajJuMnIydjJ6Mn4ygjKGMooyjjKSMpYymjKeMqIypjKqMq4ysjK2MroyvjLCMsYyyjLOMtIy1jLaMt4y4jLmMuoy7jLyMvYy+jL+MwIzBjMKMw4zEjMWMxozHjMiMyYzKjMuMzIzNjM6Mz4zQjNGM0ozTjNSM1YzWjNeM2IzZjNqM24zcjN2M3ozfjOCM4YzijOOM5IzljOaM54zojOmM6ozrjOyM7YzujO+M8IzxjPKM84z0jPWM9oz3jPiM+Yz6jPuM/Iz9jP6MQI1BjUKNQ41EjUWNRo1HjUiNSY1KjUuNTI1NjU6NT41QjVGNUo1TjVSNVY1WjVeNWI1ZjVqNW41cjV2NXo1fjWCNYY1ijWONZI1ljWaNZ41ojWmNao1rjWyNbY1ujW+NcI1xjXKNc410jXWNdo13jXiNeY16jXuNfI19jX6NgI2BjYKNg42EjYWNho2HjYiNiY2KjYuNjI2NjY6Nj42QjZGNko2TjZSNlY2WjZeNmI2ZjZqNm42cjZ2Nno2fjaCNoY2ijaONpI2ljaaNp42ojamNqo2rjayNrY2uja+NsI2xjbKNs420jbWNto23jbiNuY26jbuNvI29jb6Nv43AjcGNwo3DjcSNxY3GjceNyI3JjcqNy43Mjc2Nzo3PjdCN0Y3SjdON1I3VjdaN143YjdmN2o3bjdyN3Y3ejd+N4I3hjeKN443kjeWN5o3njeiN6Y3qjeuN7I3tje6N743wjfGN8o3zjfSN9Y32jfeN+I35jfqN+438jf2N/o1AjkGOQo5DjkSORY5GjkeOSI5JjkqOS45Mjk2OTo5PjlCOUY5SjlOOVI5VjlaOV45YjlmOWo5bjlyOXY5ejl+OYI5hjmKOY45kjmWOZo5njmiOaY5qjmuObI5tjm6Ob45wjnGOco5zjnSOdY52jneOeI55jnqOe458jn2O' $Zint_dll &= 'fo6AjoGOgo6DjoSOhY6GjoeOiI6JjoqOi46Mjo2Ojo6PjpCOkY6SjpOOlI6VjpaOl46YjpmOmo6bjpyOnY6ejp+OoI6hjqKOo46kjqWOpo6njqiOqY6qjquOrI6tjq6Or46wjrGOso6zjrSOtY62jreOuI65jrqOu468jr2Ovo6/jsCOwY7CjsOOxI7FjsaOx47IjsmOyo7LjsyOzY7Ojs+O0I7RjtKO047UjtWO1o7XjtiO2Y7ajtuO3I7djt6O347gjuGO4o7jjuSO5Y7mjueO6I7pjuqO647sju2O7o7vjvCO8Y7yjvOO9I71jvaO9474jvmO+o77jvyO/Y7+jkCPQY9Cj0OPRI9Fj0aPR49Ij0mPSo9Lj0yPTY9Oj0+PUI9Rj1KPU49Uj1WPVo9Xj1iPWY9aj1uPXI9dj16PX49gj2GPYo9jj2SPZY9mj2ePaI9pj2qPa49sj22Pbo9vj3CPcY9yj3OPdI91j3aPd494j3mPeo97j3yPfY9+j4CPgY+Cj4OPhI+Fj4aPh4+Ij4mPio+Lj4yPjY+Oj4+PkI+Rj5KPk4+Uj5WPlo+Xj5iPmY+aj5uPnI+dj56Pn4+gj6GPoo+jj6SPpY+mj6ePqI+pj6qPq4+sj62Pro+vj7CPsY+yj7OPtI+1j7aPt4+4j7mPuo+7j7yPvY++j7+PwI/Bj8KPw4/Ej8WPxo/Hj8iPyY/Kj8uPzI/Nj86Pz4/Qj9GP0o/Tj9SP1Y/Wj9eP2I/Zj9qP24/cj92P3o/fj+CP4Y/ij+OP5I/lj+aP54/oj+mP6o/rj+yP7Y/uj++P8I/xj/KP84/0j/WP9o/3j/iP+Y/6j/uP/I/9j/6PQJBBkEKQQ5BEkEWQRpBHkEiQSZBKkEuQTJBNkE6QT5BQkFGQUpBToBj/////kFSQVZBWkFeQWJBZkFqQW5BckF2QXpBfkGCQYZBikGOQZJBlkGaQZ5BokGmQapBrkGyQbZBukG+QcJBxkHKQc5B0kHWQ' $Zint_dll &= 'dpB3kHiQeZB6kHuQfJB9kH6QgJCBkIKQg5CEkIWQhpCHkIiQiZCKkIuQjJCNkI6Qj5CQkJGQkpCTkJSQlZCWkJeQmJCZkJqQm5CckJ2QnpCfkKCQoZCikKOQpJClkKaQp5CokKmQqpCrkKyQrZCukK+QsJCxkLKQs5C0kLWQtpC3kLiQuZC6kLuQvJC9kL6Qv5DAkMGQwpDDkMSQxZDGkMeQyJDJkMqQy5DMkM2QzpDPkNCQ0ZDSkNOQ1JDVkNaQ15DYkNmQ2pDbkNyQ3ZDekN+Q4JDhkOKQ45DkkOWQ5pDnkOiQ6ZDqkOuQ7JDtkO6Q75DwkPGQ8pDzkPSQ9ZD2kPeQ+JD5kPqQ+5D8kP2Q/pBAkUGRQpFDkUSRRZFGkUeRSJFJkUqRS5FMkU2RTpFPkVCRUZFSkVORVJFVkVaRV5FYkVmRWpFbkVyRXZFekV+RYJFhkWKRY5FkkWWRZpFnkWiRaZFqkWuRbJFtkW6Rb5FwkXGRcpFzkXSRdZF2kXeReJF5kXqRe5F8kX2RfpGAkYGRgpGDkYSRhZGGkYeRiJGJkYqRi5GMkY2RjpGPkZCRkZGSkZORlJGVkZaRl5GYkZmRmpGbkZyRnZGekZ+RoJGhkaKRo5GkkaWRppGnkaiRqZGqkauRrJGtka6Rr5GwkbGRspGzkbSRtZG2kbeRuJG5kbqRu5G8kb2RvpG/kcCRwZHCkcORxJHFkcaRx5HIkcmRypHLkcyRzZHOkc+R0JHRkdKR05HUkdWR1pHXkdiR2ZHakduR3JHdkd6R35HgkeGR4pHjkeSR5ZHmkeeR6JHpkeqR65Hske2R7pHvkfCR8ZHykfOR9JH1kfaR95H4kfmR+pH7kfyR/ZH+kUCSQZJCkkOSRJJFkkaSR5JIkkmSSpJLkkySTZJOkk+SUJJRklKSU5JUklWSVpJXkliSWZJakluSXJJdkl6SX5JgkmGSYpJjkmSSZZJmkmeSaJJpkmqSa5Jskm2SbpJvknCS' $Zint_dll &= 'cZJyknOSdJJ1knaSd5J4knmSepJ7knySfZJ+koCSgZKCkoOShJKFkoaSh5KIkomSipKLkoySjZKOko+SkJKRkpKSk5KUkpWSlpKXkpiSmZKakpuSnJKdkp6Sn5KgkqGSopKjkqSSpZKmkqeSqJKpkqqSq5Kskq2SrpKvkrCSsZKykrOStJK1kraSt5K4krmSupK7krySvZK+kr+SwJLBksKSw5LEksWSxpLHksiSyZLKksuSzJLNks6Sz5LQktGS0pLTktSS1ZLWkteS2JLZktqS25Lckt2S3pLfkuCS4ZLikuOS5JLlkuaS55LokumS6pLrkuyS7ZLuku+S8JLxkvKS85L0kvWS9pL3kviS+ZL6kvuS/JL9kv6SQJNBk0KTQ5NEk0WTRpNHk0iTSZNKk0uTTJNNk06TT5NQk1GTUpNTk1STVZNWk1eTWJNZk1qTW5Nck12TXpNfk2CTYZNik2OTZJNlk2aTZ5Nok2mTapNrk2yTbZNuk2+TcJNxk3KTc5N0k3WTdpN3k3iTeZN6k3uTfJN9k36TgJOBk4KTg5OEk4WThpOHk4iTiZOKk4uTjJONk46Tj5OQk5GTkpOTk5STlZOWk5eTmJOZk5qTm5Ock52TnpOfk6CToZOik6OTpJOlk6aTp5Ook6mTqpOrk6yTrZOuk6+TsJOxk7KTs5O0k7WTtpO3k7iTuZO6k7uTvJO9k76Tv5PAk8GTwpPDk8STxZPGk8eTyJPJk8qTy5PMk82TzpPPk9CT0ZPSk9OT1JPVk9aT15PYk9mT2pPbk9yT3ZPek9+T4JPhk+KT45Pkk+WT5pPnk+iT6ZPqk+uT7JPtk+6T75Pwk/GT8pPzk/ST9ZP2k/eT+JP5k/qT+5P8k/2T/pNAlEGUQpRDlESURZRGlEeUSJRJlEqUS5RMlE2UTpRPlFCUUZRSlFOUVJRVlFaUV5RYlFmUWpRblFyUXZRelF+UYJRhlGKUY5RklGWUZpRnlGiUaZRqlGuU' $Zint_dll &= 'bJRtlG6Ub5RwlHGUcpRzlHSUdZR2lHeUeJR5lHqUe5R8lH2UfpSAlIGUgpSDlISUhZSGlIeUiJSJlIqUi5SMlI2UjpSPlJCUkZSSlJOUlJSVlJaUl5SYlJmUmpSblJyUnZSelJ+UoJShlKKUo5SklKWUppSnlKiUqZSqlKuUrJStlK6Ur5SwlLGUspSzlLSUtZS2lLeUuJS5lLqUu5S8lL2UvpS/lMCUwZTClMOUxJTFlMaUx5TIlMmUypTLlMyUzZTOlM+U0JTRlNKU05TUlNWU1pTXlNiU2ZTalNuU3JTdlN6U35TglOGU4pTjlOSU5ZTmlOeU6JTplOqU65TslO2U7pTvlPCU8ZTylPOU9JT1lPaU95T4lPmU+pT7lPyU/ZT+lECVQZVClUOVRJVFlUaVR5VIlUmVSpVLlUyVTZVOlU+VUJVRlVKVU5VUlVWVVpVXlViVWZValVuVXJVdlV6VX5VglWGVYpVjlWSVZZVmlWeVaJVplWqVa5VslW2VbpVvlXCVcZVylXOVdJV1lXaVd5V4lXmVepV7lXyVfZV+lYCVgZWClYOVhJWFlYaVh5WIlYmVipWLlYyVjZWOlY+VkJWRlZKVk5WUlZWVlpWXlZiVmZWalZuVnJWdlZ6Vn5WglaGVopWjlaSVpZWmlaeVqJWplaqVq5Wsla2VrpWvlbCVsZWylbOVtJW1lbaVt5W4lbmVupW7lbyVvZW+lb+VwJXBlcKVw5XElcWVxpXHlciVyZXKlcuVzJXNlc6Vz5XQldGV0pXTldSV1ZXWldeV2JXZldqV25Xcld2V3pXfleCV4ZXileOV5JXlleaV55XolemV6pXrleyV7ZXule+V8JXxlfKV85X0lfWV9pX3lfiV+ZX6lfuV/JX9lf6VQJZBlkKWQ5ZElkWWRpZHlkiWSZZKlkuWTJZNlk6WT5ZQllGWUpZTllSWVZZWlleWWJZZllqWW5Zcll2WXpZflmCWYZZilmOWZJZllmaW' $Zint_dll &= 'Z5ZolmmWapZrlmyWbZZulm+WcJZxlnKWc5Z0lnWWdpZ3lniWeZZ6lnuWfJZ9ln6WgJaBloKWg5aEloWWhpaHloiWiZaKlouWjJaNlo6Wj5aQlpGWkpaTlpSWlZaWlpeWmJaZlpqWm5aclp2WnpaflqCWoZailqOWpJallqaWp5aolqmWqparlqyWrZaulq+WsJaxlrKWs5a0lrWWtpa3lriWuZa6lruWvJa9lr6Wv5bAlsGWwpbDlsSWxZbGlseWyJbJlsqWy5bMls2WzpbPltCW0ZbSltOW1JbVltaW15bYltmW2pbbltyW3Zbelt+W4JbhluKW45bkluWW5pbnluiW6ZbqluuW7Jbtlu6W75bwlvGW8pbzlvSW9Zb2lveW+Jb5lvqW+5b8lv2W/pZAl0GXQpdDl0SXRZdGl0eXSJdJl0qXS5dMl02XTpdPl1CXUZdSl1OXVJdVl1aXV5dYl1mXWpdbl1yXXZdel1+XYJdhl2KXY5dkl2WXZpdnl2iXaZdql2uXbJdtl26Xb5dwl3GXcpdzl3SXdZd2l3eXeJd5l3qXe5d8l32XfpeAl4GXgpeDl4SXhZeGl4eXiJeJl4qXi5eMl42XjpePl5CXkZeSl5OXlJeVl5aXl5eYl5mXmpebl5yXnZeel5+XoJehl6KXo5ekl6WXppenl6iXqZeql6uXrJetl66Xr5ewl7GXspezl7SXtZe2l7eXuJe5l7qXu5e8l72Xvpe/l8CXwZfCl8OXxJfFl8aXx5fIl8mXypfLl8yXzZfOl8+X0JfRl9KX05fUl9WX1pfXl9iX2Zfal9uX3Jfdl96X35fgl+GX4pfjl+SX5Zfml+eX6Jfpl+qX65fsl+2X7pfvl/CX8Zfyl/OX9Jf1l/aX95f4l/mX+pf7l/yX/Zf+l0CYQZhCmEOYRJhFmEaYR5hImEmYSphLmEyYTZhOmE+YUJhRmFKYU5hUmFWYVphXmFiYWZhamFuYXJhdmF6YX5hgmGGY' $Zint_dll &= 'YphjmGSYZZhmmGeYaJhpmGqYa5hsmG2YbphvmHCYcZhymHOYdJh1mHaYd5h4mHmYeph7mHyYfZh+mICYgZiCmIOYhJiFmIaYh5iImImYipiLmIyYjZiOmI+YkJiRmJKYk5iUmJWYlpiXmJiYmZiamJuYnJidmJ6Yn5igmKGYopijmKSYpZimmKeYqJipmKqYq5ismK2YrpivmLCYsZiymLOYtJi1mLaYt5i4mLmYupi7mLyYvZi+mL+YwJjBmMKYw5jEmMWYxpjHmMiYyZjKmMuYzJjNmM6Yz5jQmNGY0pjTmNSY1ZjWmNeY2JjZmNqY25jcmN2Y3pjfmOCY4ZjimOOY5JjlmOaY55jomOmY6pjrmOyY7ZjumO+Y8JjxmPKY85j0mPWY9pj3mPiY+Zj6mPuY/Jj9mP6YQJlBmUKZQ5lEmUWZRplHmUiZSZlKmUuZTJlNmU6ZT5lQmVGZUplTmVSZVZlWmVeZWJlZmVqZW5lcmV2ZXplfmWCZYZlimWOZZJllmWaZZ5lomWmZaplrmWyZbZlumW+ZcJlxmXKZc5l0mXWZdpl3mXiZeZl6mXuZfJl9mX6ZgJmBmYKZg5mEmYWZhpmHmYiZiZmKmYuZjJmNmY6Zj5mQmZGZkpmTmZSZlZmWmZeZmJmZmZqZm5mcmZ2ZnpmfmaCZoZmimaOZpJmlmaaZp5momamZqpmrmayZrZmuma+ZsJmxmbKZs5m0mbWZtpm3mbiZuZm6mbuZvJm9mb6Zv5nAmcGZwpnDmcSZxZnGmceZyJnJmcqZy5nMmc2ZzpnPmdCZ0ZnSmdOZ1JnVmdaZ15nYmdmZ2pnbmdyZ3Znemd+Z4JnhmeKZ45nkmeWZ5pnnmeiZ6ZnqmeuZ7Jntme6Z75nwmfGZ8pnzmfSZ9Zn2mfeZ+Jn5mfqZ+5n8mf2Z/plAmkGaQppDmkSaRZpGmkeaSJpJmkqaS5pMmk2aTppPmlCaUZpSmlOaVJpVmlaaV5pYmlmaWppbmlya' $Zint_dll &= 'XZpeml+aYJphmmKaY5pkmmWaZppnmmiaaZpqmmuabJptmm6ab5pwmnGacppzmnSadZp2mneaeJp5mnqae5p8mn2afpqAmoGagpqDmoSahZqGmoeaiJqJmoqai5qMmo2ajpqPmpCakZqSmpOalJqVmpaal5qYmpmampqbmpyanZqemp+aoJqhmqKao5qkmqWappqnmqiaqZqqmquarJqtmq6ar5qwmrGaspqzmrSatZq2mreauJq5mrqau5q8mr2avpq/msCawZrCmsOaxJrFmsaax5rImsmayprLmsyazZrOms+a0JrRmtKa05rUmtWa1prXmtia2Zramtua3Jrdmt6a35rgmuGa4prjmuSa5Zrmmuea6Jrpmuqa65rsmu2a7prvmvCa8ZrymvOa9Jr1mvaa95r4mvma+pr7mvya/Zr+mkCbQZtCm0ObRJtFm0abR5tIm0mbSptLm0ybTZtOm0+bUJtRm1KbU5tUm1WbVptXm1ibWZtam1ubXJtdm16bX5tgm2GbYptjm2SbZZtmm2ebaJtpm2qba5tsm22bbptvm3CbcZtym3ObdJt1m3abd5t4m3mbept7m3ybfZt+m4CbgZuCm4ObhJuFm4abh5uIm4mbipuLm4ybjZuOm4+bkJuRm5Kbk5uUm5WblpuXm5ibmZuam5ubnJudm56bn5ugm6Gbopujm6SbpZumm6ebqJupm6qbq5usm62brpuvm7CbsZuym7ObtJu1m7abt5u4m7mbupu7m7ybvZu+m7+bwJvBm8Kbw5vEm8WbxpvHm8ibyZvKm8ubzJvNm86bz5vQm9Gb0pvTm9Sb1ZvWm9eb2JvZm9qb25vcm92b3pvfm+Cb4Zvim+Ob5Jvlm+ab55vom+mb6pvrm+yb7Zvum++b8Jvxm/Kb85v0m/Wb9pv3m/ib+Zv6m/ub/Jv9m/6bQJxBnEKcQ5xEnEWcRpxHnEicSZxKnEucTJxNnE6cT5xQnFGcUpxTnFScVZxWnFec' $Zint_dll &= 'WJxZnFqcW5xcnF2cXpxfnGCcYZxinGOcZJxlnGacZ5xonGmcapxrnGycbZxunG+ccJxxnHKcc5x0nHWcdpx3nHiceZx6nHucfJx9nH6cgJyBnIKcg5yEnIWchpyHnIiciZyKnIucjJyNnI6cj5yQnJGckpyTnJSclZyWnJecmJyZnJqcm5ycnJ2cnpyfnKCcoZyinKOcpJylnKacp5yonKmcqpyrnKycrZyunK+csJyxnLKcs5y0nLWctpy3nLicuZy6nLucvJy9nL6cv5zAnMGcwpzDnMScxZzGnMecyJzJnMqcy5zMnM2czpzPnNCc0ZzSnNOc1JzVnNac15zYnNmc2pzbnNyc3ZzenN+c4JzhnOKc45zknOWc5pznnOic6ZzqnOuc7JztnO6c75zwnPGc8pzznPSc9Zz2nPec+Jz5nPqc+5z8nP2c/pxAnUGdQp1DnUSdRZ1GnUedSJ1JnUqdS51MnU2dTp1PnVCdUZ1SnVOdVJ1VnVadV51YnVmdWp1bnVydXZ1enV+dYJ1hnWKdY51knWWdZp1nnWidaZ1qnWudbJ1tnW6db51wnXGdcp1znXSddZ12nXedeJ15nXqde518nX2dfp2AnYGdgp2DnYSdhZ2GnYediJ2JnYqdi52MnY2djp2PnZCdkZ2SnZOdlJ2VnZadl52YnZmdmp2bnZydnZ2enZ+doJ2hnaKdo52knaWdpp2nnaidqZ2qnaudrJ2tna6dr52wnbGdsp2znbSdtZ22nbeduJ25nbqdu528nb2dvp2/ncCdwZ3CncOdxJ3Fncadx53Incmdyp3LncydzZ3Onc+d0J3RndKd053UndWd1p3Xndid2Z3andud3J3dnd6d353gneGd4p3jneSd5Z3mneed6J3pneqd653sne2d7p3vnfCd8Z3ynfOd9J31nfad9534nfmd+p37nfyd/Z3+nUCeQZ5CnkOeRJ5FnkaeR55InkmeSp5LnkyeTZ5Onk+eUJ5RnlKe' $Zint_dll &= 'U55UnlWeVp5XnlieWZ5anlueXJ5dnl6eX55gnmGeYp5jnmSeZZ5mnmeeaJ5pnmqea55snm2ebp5vnnCecZ5ynnOedJ51nnaed554nnmeep57nnyefZ5+noCegZ6CnoOehJ6Fnoaeh56Inomeip6LnoyejZ6Ono+ekJ6RnpKek56UnpWelp6XnpiemZ6anpuenJ6dnp6en56gnqGeop6jnqSepZ6mnqeeqJ6pnqqeq56snq2erp6vnrCesZ6ynrOetJ61nraet564nrmeup67nryevZ6+nr+ewJ7BnsKew57EnsWexp7HnsieyZ7KnsuezJ7Nns6ez57QntGe0p7TntSe1Z7Wntee2J7Zntqe257cnt2e3p7fnuCe4Z7inuOe5J7lnuae557onume6p7rnuye7Z7unu+e8J7xnvKe8570nvWe9p73nvie+Z76nvue/J79nv6eQJ9Bn0KfQ59En0WfRp9Hn0ifSZ9Kn0ufTJ9Nn06fT59Qn1GfUp9Tn1SfVZ9Wn1efWJ9Zn1qfW59cn12fXp9fn2CfYZ9in2OfZJ9ln2afZ59on2mfap9rn2yfbZ9un2+fcJ9xn3Kfc590n3Wfdp93n3ifeZ96n3uffJ99n36fgJ+Bn4Kfg5+En4Wfhp+Hn4ifiZ+Kn4ufjJ+Nn46fj5+Qn5Gfkp+Tn5SflZ+Wn5efmJ+Zn5qfm5+cn52fnp+fn6CfoZ+in6OfpJ+ln6afp5+on6mfqp+rn6yfrZ+un6+fsJ+xn7Kfs5+0n7Wftp+3n7ifuZ+6n7ufvJ+9n76fv5/An8Gfwp/Dn8SfxZ/Gn8efyJ/Jn8qfy5/Mn82fzp/Pn9Cf0Z/Sn9Of1J/Vn9af15/Yn9mf2p/bn9yf3Z/en9+f4J/hn+Kf45/kn+Wf5p/nn+if6Z/qn+uf7J/tn+6f75/wn/Gf8p/zn/Sf9Z/2n/ef+J/5n/qf+5/8n/2f/p9AoEGgQqBDoESgRaBGoEegSKBJoEqgS6BMoE2g' $Zint_dll &= 'TqBPoFCgUaBSoFOgVKBVoFagV6BYoFmgWqBboFygXaBeoF+gYKBhoGKgY6BkoGWgZqBnoGigaaBqoGugbKBtoG6gb6BwoHGgcqBzoHSgdaB2oHegeKB5oHqge6B8oH2gfqCAoIGggqCDoISghaCGoIegiKCJoIqgi6CMoI2gjqCPoJCgkaCSoJOglKCVoJagl6CYoJmgmqCboJygnaCeoJ+goKChoKKgo6CkoKWgpqCnoKigqaCqoKugrKCtoK6gr6CwoLGgsqCzoLSgtaC2oLeguKC5oLqgu6C8oL2gvqC/oMCgwaDCoMOgxKDFoMagx6DIoMmgyqDLoMygzaDOoM+g0KDRoNKg06DUoNWg1qDXoNig2aDaoNug3KDdoN6g36DgoOGg4qDjoOSg5aDmoOeg6KDpoOqg66DsoO2g7qDvoPCg8aDyoPOg9KD1oPag96D4oPmg+qD7oPyg/aD+oECqQapCqkOqRKpFpgj/////qkaqR6pIqkmqSqpLqkyqTapOqk+qUKpRqlKqU6pUqlWqVqpXqliqWapaqluqXKpdql6qX6pgqmGqYqpjqmSqZapmqmeqaKppqmqqa6psqm2qbqpvqnCqcapyqnOqdKp1qnaqd6p4qnmqeqp7qnyqfap+qoCqgaqCqoOqhKqFqoaqh6qIqomqiqqLqoyqjaqOqo+qkKqRqpKqk6qUqpWqlqqXqpiqmaqaqpuqnKqdqp6qn6qgqkCrQatCq0OrRKtFq0arR6tIq0mrSqtLq0yrTatOq0+rUKtRq1KrU6tUq1WrVqtXq1irWataq1urXKtdq16rX6tgq2GrYqtjq2SrZatmq2eraKtpq2qra6tsq22rbqtvq3Crcatyq3OrdKt1q3ard6t4q3mreqt7q3yrfat+q4CrgauCq4OrhKuFq4arh6uIq4mriquLq4yrjauOq4+rkKuRq5Krk6uUq5WrlquXq5irmauaq5urnKudq56rn6ugq0CsQaxCrEOs' $Zint_dll &= 'RKxFrEasR6xIrEmsSqxLrEysTaxOrE+sUKxRrFKsU6xUrFWsVqxXrFisWaxarFusXKxdrF6sX6xgrGGsYqxjrGSsZaxmrGesaKxprGqsa6xsrG2sbqxvrHCscaxyrHOsdKx1rHasd6x4rHmseqx7rHysfax+rICsgayCrIOshKyFrIash6yIrImsiqyLrIysjayOrI+skKyRrJKsk6yUrJWslqyXrJismayarJusnKydrJ6sn6ygrECtQa1CrUOtRK1FrUatR61IrUmtSq1LrUytTa1OrU+tUK1RrVKtU61UrVWtVq1XrVitWa1arVutXK1drV6tX61grWGtYq1jrWStZa1mrWetaK1prWqta61srW2tbq1vrXCtca1yrXOtdK11rXatd614rXmteq17rXytfa1+rYCtga2CrYOthK2FrYath62IrYmtiq2LrYytja2OrY+tkK2RrZKtk62UrZWtlq2XrZitma2arZutnK2drZ6tn62grUCuQa5CrkOuRK5FrkauR65IrkmuSq5LrkyuTa5Ork+uUK5RrlKuU65UrlWuVq5XrliuWa5arluuXK5drl6uX65grmGuYq5jrmSuZa5mrmeuaK5prmqua65srm2ubq5vrnCuca5yrnOudK51rnaud654rnmueq57rnyufa5+roCuga6CroOuhK6Froauh66Iromuiq6Lroyuja6Oro+ukK6RrpKuk66UrpWulq6Xrpiuma6arpuunK6drp6un66grkCvQa9Cr0OvRK9Fr0avR69Ir0mvSq9Lr0yvTa9Or0+vUK9Rr1KvU69Ur1WvVq9Xr1ivWa9ar1uvXK9dr16vX69gr2GvYq9jr2SvZa9mr2evaK9pr2qva69sr22vbq9vr3Cvca9yr3OvdK91r3avd694r3mveq97r3yvfa9+r4Cvga+Cr4OvhK+Fr4avh6+Ir4mviq+Lr4yvja+Or4+vkK+Rr5Kvk6+Ur5Wvlq+Xr5ivma+ar5uv' $Zint_dll &= 'nK+dr56vn6+gr0CwQbBCsEOwRLBFsEawR7BIsEmwSrBLsEywTbBOsE+wULBRsFKwU7BUsFWwVrBXsFiwWbBasFuwXLBdsF6wX7BgsGGwYrBjsGSwZbBmsGewaLBpsGqwa7BssG2wbrBvsHCwcbBysHOwdLB1sHawd7B4sHmwerB7sHywfbB+sICwgbCCsIOwhLCFsIawh7CIsImwirCLsIywjbCOsI+wkLCRsJKwk7CUsJWwlrCXsJiwmbCasJuwnLCdsJ6wn7CgsECxQbFCsUOxRLFFsUaxR7FIsUmxSrFLsUyxTbFOsU+xULFRsVKxU7FUsVWxVrFXsVixWbFasVuxXLFdsV6xX7FgsWGxYrFjsWSxZbFmsWexaLFpsWqxa7FssW2xbrFvsXCxcbFysXOxdLF1sXaxd7F4sXmxerF7sXyxfbF+sYCxgbGCsYOxhLGFsYaxh7GIsYmxirGLsYyxjbGOsY+xkLGRsZKxk7GUsZWxlrGXsZixmbGasZuxnLGdsZ6xn7GgsUCyQbJCskOyRLJFskayR7JIskmySrJLskyyTbJOsk+yULJRslKyU7JUslWyVrJXsliyWbJasluyXLJdsl6yX7JgsmGyYrJjsmSyZbJmsmeyaLJpsmqya7Jssm2ybrJvsnCycbJysnOydLJ1snayd7J4snmyerJ7snyyfbJ+soCygbKCsoOyhLKFsoayh7KIsomyirKLsoyyjbKOso+ykLKRspKyk7KUspWylrKXspiymbKaspuynLKdsp6yn7KgskCzQbNCs0OzRLNFs0azR7NIs0mzSrNLs0yzTbNOs0+zULNRs1KzU7NUs1WzVrNXs1izWbNas1uzXLNds16zX7Ngs2GzYrNjs2SzZbNms2ezaLNps2qza7Nss22zbrNvs3CzcbNys3OzdLN1s3azd7N4s3mzerN7s3yzfbN+s4CzgbOCs4OzhLOFs4azh7OIs4mzirOLs4yzjbOOs4+zkLORs5Kz' $Zint_dll &= 'k7OUs5WzlrOXs5izmbOas5uznLOds56zn7Ogs0C0QbRCtEO0RLRFtEa0R7RItEm0SrRLtEy0TbROtE+0ULRRtFK0U7RUtFW0VrRXtFi0WbRatFu0XLRdtF60X7RgtGG0YrRjtGS0ZbRmtGe0aLRptGq0a7RstG20brRvtHC0cbRytHO0dLR1tHa0d7R4tHm0erR7tHy0fbR+tIC0gbSCtIO0hLSFtIa0h7SItIm0irSLtIy0jbSOtI+0kLSRtJK0k7SUtJW0lrSXtJi0mbSatJu0nLSdtJ60n7SgtEC1QbVCtUO1RLVFtUa1R7VItUm1SrVLtUy1TbVOtU+1ULVRtVK1U7VUtVW1VrVXtVi1WbVatVu1XLVdtV61X7VgtWG1YrVjtWS1ZbVmtWe1aLVptWq1a7VstW21brVvtXC1cbVytXO1dLV1tXa1d7V4tXm1erV7tXy1fbV+tYC1gbWCtYO1hLWFtYa1h7WItYm1irWLtYy1jbWOtY+1kLWRtZK1k7WUtZW1lrWXtZi1mbWatZu1nLWdtZ61n7WgtUC2QbZCtkO2RLZFtka2R7ZItkm2SrZLtky2TbZOtk+2ULZRtlK2U7ZUtlW2VrZXtli2WbZatlu2XLZdtl62X7ZgtmG2YrZjtmS2ZbZmtme2aLZptmq2a7Zstm2qCP////+2brZvtnC2cbZytnO2dLZ1tna2d7Z4tnm2erZ7tny2fbZ+toC2gbaCtoO2hLaFtoa2h7aItom2iraLtoy2jbaOto+2kLaRtpK2k7aUtpW2lraXtpi2mbaatpu2nLadtp62n7agtkC3QbdCt0O3RLdFt0a3R7dIt0m3SrdLt0y3TbdOt0+3ULdRt1K3U7dUt1W3VrdXt1i3Wbdat1u3XLddt163X7dgt2G3Yrdjt2S3Zbdmt2e3aLdpt2q3a7dst223brdvt3C3cbdyt3O3dLd1t3a3d7d4t3m3erd7t3y3fbd+t4C3gbeCt4O3hLeFt4a3' $Zint_dll &= 'h7eIt4m3ireLt4y3jbeOt4+3kLeRt5K3k7eUt5W3lreXt5i3mbeat5u3nLedt563n7egt0C4QbhCuEO4RLhFuEa4R7hIuEm4SrhLuEy4TbhOuE+4ULhRuFK4U7hUuFW4VrhXuFi4WbhauFu4XLhduF64X7hguGG4YrhjuGS4ZbhmuGe4aLhpuGq4a7hsuG24brhvuHC4cbhyuHO4dLh1uHa4d7h4uHm4erh7uHy4fbh+uIC4gbiCuIO4hLiFuIa4h7iIuIm4iriLuIy4jbiOuI+4kLiRuJK4k7iUuJW4lriXuJi4mbiauJu4nLiduJ64n7iguEC5QblCuUO5RLlFuUa5R7lIuUm5SrlLuUy5TblOuU+5ULlRuVK5U7lUuVW5VrlXuVi5WblauVu5XLlduV65X7lguWG5YrljuWS5ZblmuWe5aLlpuWq5a7lsuW25brlvuXC5cblyuXO5dLl1uXa5d7l4uXm5erl7uXy5fbl+uYC5gbmCuYO5hLmFuYa5h7mIuYm5irmLuYy5jbmOuY+5kLmRuZK5k7mUuZW5lrmXuZi5mbmauZu5nLmduZ65n7mguUC6QbpCukO6RLpFuka6R7pIukm6SrpLuky6TbpOuk+6ULpRulK6U7pUulW6VrpXuli6Wbpaulu6XLpdul66X7pgumG6YrpjumS6Zbpmume6aLppumq6a7psum26brpvunC6cbpyunO6dLp1una6d7p4unm6erp7uny6fbp+uoC6gbqCuoO6hLqFuoa6h7qIuom6irqLuoy6jbqOuo+6kLqRupK6k7qUupW6lrqXupi6mbqaupu6nLqdup66n7qgukC7QbtCu0O7RLtFu0a7R7tIu0m7SrtLu0y7TbtOu0+7ULtRu1K7U7tUu1W7VrtXu1i7Wbtau1u7XLtdu167X7tgu2G7Yrtju2S7Zbtmu2e7aLtpu2q7a7tsu227brtvu3C7cbtyu3O7dLt1u3a7d7t4u3m7ert7u3y7' $Zint_dll &= 'fbt+u4C7gbuCu4O7hLuFu4a7h7uIu4m7iruLu4y7jbuOu4+7kLuRu5K7k7uUu5W7lruXu5i7mbuau5u7nLudu567n7ugu0C8QbxCvEO8RLxFvEa8R7xIvEm8SrxLvEy8TbxOvE+8ULxRvFK8U7xUvFW8VrxXvFi8WbxavFu8XLxdvF68X7xgvGG8YrxjvGS8ZbxmvGe8aLxpvGq8a7xsvG28brxvvHC8cbxyvHO8dLx1vHa8d7x4vHm8erx7vHy8fbx+vIC8gbyCvIO8hLyFvIa8h7yIvIm8iryLvIy8jbyOvI+8kLyRvJK8k7yUvJW8lryXvJi8mbyavJu8nLydvJ68n7ygvEC9Qb1CvUO9RL1FvUa9R71IvUm9Sr1LvUy9Tb1OvU+9UL1RvVK9U71UvVW9Vr1XvVi9Wb1avVu9XL1dvV69X71gvWG9Yr1jvWS9Zb1mvWe9aL1pvWq9a71svW29br1vvXC9cb1yvXO9dL11vXa9d714vXm9er17vXy9fb1+vYC9gb2CvYO9hL2FvYa9h72IvYm9ir2LvYy9jb2OvY+9kL2RvZK9k72UvZW9lr2XvZi9mb2avZu9nL2dvZ69n72gvUC+Qb5CvkO+RL5Fvka+R75Ivkm+Sr5Lvky+Tb5Ovk++UL5RvlK+U75UvlW+Vr5Xvli+Wb5avlu+XL5dvl6+X75gvmG+Yr5jvmS+Zb5mvme+aL5pvmq+a75svm2+br5vvnC+cb5yvnO+dL51vna+d754vnm+er57vny+fb5+voC+gb6CvoO+hL6Fvoa+h76Ivom+ir6Lvoy+jb6Ovo++kL6RvpK+k76UvpW+lr6Xvpi+mb6avpu+nL6dvp6+n76gvkC/Qb9Cv0O/RL9Fv0a/R79Iv0m/Sr9Lv0y/Tb9Ov0+/UL9Rv1K/U79Uv1W/Vr9Xv1i/Wb9av1u/XL9dv16/X79gv2G/Yr9jv2S/Zb9mv2e/aL9pv2q/a79sv22/br9vv3C/cb9yv3O/' $Zint_dll &= 'dL91v3a/d794v3m/er97v3y/fb9+v4C/gb+Cv4O/hL+Fv4a/h7+Iv4m/ir+Lv4y/jb+Ov4+/kL+Rv5K/k7+Uv5W/lr+Xv5i/mb+av5u/nL+dv56/n7+gv0DAQcBCwEPARMBFwEbAR8BIwEnASsBLwEzATcBOwE/AUMBRwFLAU8BUwFXAVsBXwFjAWcBawFvAXMBdwF7AX8BgwGHAYsBjwGTAZcBmwGfAaMBpwGrAa8BswG3AbsBvwHDAccBywHPAdMB1wHbAd8B4wHnAesB7wHzAfcB+wIDAgcCCwIPAhMCFwIbAh8CIwInAisCLwIzAjcCOwI/AkMCRwJLAk8CUwJXAlsCXwJjAmcCawJvAnMCdwJ7An8CgwEDBQcFCwUPBRMFFwUbBR8FIwUnBSsFLwUzBTcFOwU/BUMFRwVLBU8FUwVXBVsFXwVjBWcFawVvBXMFdwV7BX8FgwWHBYsFjwWTBZcFmwWfBaMFpwWrBa8FswW3BbsFvwXDBccFywXPBdMF1wXbBd8F4wXnBesF7wXzBfcF+wYDBgcGCwYPBhMGFwYbBh8GIwYnBisGLwYzBjcGOwY/BkMGRwZLBk8GUwZXBlsGXwZjBmcGawZvBnMGdwZ7Bn8GgwUDCQcJCwkPCRMJFwkbCR8JIwknCSsJLwkzCTcJOwk/CUMJRwlLCU8JUwlXCVsJXwljCWcJawlvCXMJdwl7CX8JgwmHCYsJjwmTCZcJmwmfCaMJpwmrCa8Jswm3CbsJvwnDCccJywnPCdMJ1wnbCd8J4wnnCesJ7wnzCfcJ+woDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwkDDQcNCw0PDRMNF2gD/////w0bDR8NIw0nDSsNLw0zDTcNOw0/DUMNRw1LDU8NUw1XDVsNXw1jDWcNaw1vDXMNdw17DX8Ngw2HDYsNjw2TDZcNmw2fD' $Zint_dll &= 'aMNpw2rDa8Nsw23DbsNvw3DDccNyw3PDdMN1w3bDd8N4w3nDesN7w3zDfcN+w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw0DEQcRCxEPERMRFxEbER8RIxEnESsRLxEzETcROxE/EUMRRxFLEU8RUxFXEVsRXxFjEWcRaxFvEXMRdxF7EX8RgxGHEYsRjxGTEZcRmxGfEaMRpxGrEa8RsxG3EbsRvxHDEccRyxHPEdMR1xHbEd8R4xHnEesR7xHzEfcR+xIDEgcSCxIPEhMSFxIbEh8SIxInEisSLxIzEjcSOxI/EkMSRxJLEk8SUxJXElsSXxJjEmcSaxJvEnMSdxJ7En8SgxEDFQcVCxUPFRMVFxUbFR8VIxUnFSsVLxUzFTcVOxU/FUMVRxVLFU8VUxVXFVsVXxVjFWcVaxVvFXMVdxV7FX8VgxWHFYsVjxWTFZcVmxWfFaMVpxWrFa8VsxW3FbsVvxXDFccVyxXPFdMV1xXbFd8V4xXnFesV7xXzFfcV+xYDFgcWCxYPFhMWFxYbFh8WIxYnFisWLxYzFjcWOxY/FkMWRxZLFk8WUxZXFlsWXxZjFmcWaxZvFnMWdxZ7Fn8WgxUDGQcZCxkPGRMZFxkbGR8ZIxknGSsZLxkzGTcZOxk/GUMZRxlLGU8ZUxlXGVsZXxljGWcZaxlvGXMZdxl7GX8ZgxmHGYsZjxmTGZcZmxmfGaMZpxmrGa8Zsxm3GbsZvxnDGccZyxnPGdMZ1xnbGd8Z4xnnGesZ7xnzGfcZ+xoDGgcaCxoPGhMaFxobGh8aIxonGisaLxozGjcaOxo/GkMaRxpLGk8aUxpXGlsaXxpjGmcaaxpvGnMadxp4Axp/GoMZAx0EAx0LHQ8dEx0UAx0bHR8dIx0kAx0rHS8dMx00Ax07HT8dQx1EAx1LHU8dUx1UAx1bHV8dYx1kAx1rH' $Zint_dll &= 'W8dcx12Ax5vzMYDHgceCx4OiCP/////HhMeFx4bHh8eIx4nHiseLx4zHjceOx4/HkMeRx5LHk8eUx5XHlseXx5jHmceax5vHnMedx57Hn8egx0DIQchCyEPIRMhFyEbIR8hIyEnISshLyEzITchOyE/IUMhRyFLIU8hUyFXIVshXyFjIWchayFvIXMhdyF7IX8hgyGHIYshjyGTIZchmyGfIaMhpyGrIa8hsyG3IbshvyHDIcchyyHPIdMh1yHbId8h4yHnIesh7yHzIfch+yIDIgciCyIPIhMiFyIbIh8iIyInIisiLyIzIjciOyI/IkMiRyJLIk8iUyJXIlsiXyJjImciayJvInMidyJ7In8igyEDJQclCyUPJRMlFyUbJR8lIyUnJSslLyUzJTclOyU/JUMlRyVLJU8lUyVXJVslXyVjJWclayVvJXMldyV7JX8lgyWHJYsljyWTJZclmyWfJaMlpyWrJa8lsyW3JbslvyXDJcclyyXPJdMl1yXbJd8l4yXnJesl7yXzJfcl+yYDJgcmCyYPJhMmFyYbJh8mIyYnJismLyYzJjcmOyY/JkMmRyZLJk8mUyZXJlsmXyZjJmcmayZvJnMmdyZ7Jn8mgyUDKQcpCykPKRMpFykbKR8pIyknKSspLykzKTcpOyk/KUMpRylLKU8pUylXKVspXyljKWcpaylvKXMpdyl7KX8pgymHKYspjymTKZcpmymfKaMppymrKa8psym3KbspvynDKccpyynPKdMp1ynbKd8p4ynnKesp7ynzKfcp+yoDKgcqCyoPKhMqFyobKh8qIyonKisqLyozKjcqOyo/KkMqRypLKk8qUypXKlsqXypjKmcqaypvKnMqdyp7Kn8qgykDLQctCy0PLRMtFy0bLR8tIy0nLSstLy0zLTctOy0/LUMtRy1LLU8tUy1XLVstXy1jLWctay1vLXMtdy17LX8tgy2HLYstjy2TLZctmy2fLaMtpy2rLa8tsy23L' $Zint_dll &= 'bstvy3DLcctyy3PLdMt1y3bLd8t4y3nLest7y3zLfct+y4DLgcuCy4PLhMuFy4bLh8uIy4nLisuLy4zLjcuOy4/LkMuRy5LLk8uUy5XLlsuXy5jLmcuay5vLnMudy57Ln8ugy0DMQcxCzEPMRMxFzEbMR8xIzEnMSsxLzEzMTcxOzE/MUMxRzFLMU8xUzFXMVsxXzFjMWcxazFvMXMxdzF7MX8xgzGHMYsxjzGTMZcxmzGfMaMxpzGrMa8xszG3MbsxvzHDMccxyzHPMdMx1zHbMd8x4zHnMesx7zHzMfcx+zIDMgcyCzIPMhMyFzIbMh8yIzInMisyLzIzMjcyOzI/MkMyRzJLMk8yUzJXMlsyXzJjMmcyazJvMnMydzJ7Mn8ygzEDNQc1CzUPNRM1FzUbNR81IzUnNSs1LzUzNTc1OzU/NUM1RzVLNU81UzVXNVs1XzVjNWc1azVvNXM1dzV7NX81gzWHNYs1jzWTNZc1mzWfNaM1pzWrNa81szW3Nbs1vzXDNcc1yzXPNdM11zXbNd814zXnNes17zXzNfc1+zYDNgc2CzYPNhM2FzYbNh82IzYnNis2LzYzNjc2OzY/NkM2RzZLNk82UzZXNls2XzZjNmc2azZvNnM2dzZ7Nn82gzUDOQc5CzkPORM5FzkbOR85IzknOSs5LzkzOTc5Ozk/OUM5RzlLOU85UzlXOVs5XzljOWc5azlvOXM5dzl7OX85gzmHOYs5jzmTOZc5mzmfOaM5pzmrOa85szm3Obs5vznDOcc5yznPOdM51znbOd854znnOes57znzOfc5+zoDOgc6CzoPOhM6FzobOh86IzonOis6LzozOjc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzkDPQc9Cz0PPRM9Fz0bPR89Iz0nPSs9Lz0zPTc9Oz0/PUM9Rz1LPU89Uz1XPVs9Xz1jPWc9az1vPXM9dz17PX89gz2HPYs9jz2TP' $Zint_dll &= 'Zc9mz2fPaM9pz2rPa89sz23Pbs9vz3DPcc9yz3PPdM91z3bPd894z3nPes97z3zPfc9+z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+Oz4/PkM+Rz5LPk8+Uz5XPls+Xz5jPmc+az5vPnM+dz57Pn8+gz0DQQdBC0EPQRNBF0EbQR9BI0EnQStBL0EzQTdBO0E/QUNBR0FLQU9BU0FXQVtBX0FjQWdBa0FvQXNBd0F7QX9Bg0GHQYtBj0GTQZdBm0GfQaNBp0GrQa9Bs0G3QbtBv0HDQcdBy0HPQdNB10HbQd9B40HnQetB70HzQfdB+0IDQgdCC0IPQhNCF0IbQh9CI0InQitCL0IzQjdCO0I/QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0EDRQdFC0UPRRNFF0UbRR9FI0UnRStFL0UzRTdFO0U/RUNFR0VLRU9FU0VXRVtFX0VjRWdFa0VvRXNFd0V7RX9Fg0WHRYtFj0WTRZdFm0WfRaNFp0WrRa9Fs0W3RbtFv0XDRcdFy0XPRdNF10XbRd9F40XnRetF70XzRfdF+0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/RkNGR0ZLRk9GU0ZXRltGX0ZjRmdGa0ZvRnNGd0Z7Rn9Gg0UDSQdJC0kPSRNJF0kbSR9JI0knSStJL0kzSTdJO0k/SUNJR0lLSU9JU0lXSVtJX0ljSWdJa0lvSXNJd0l7SX9Jg0mHSYtJj0mTSZdJm0mfSaNJp0mrSa9Js0m3SbtJv0nDScdJy0nPSdNJ10nbSd9J40nnSetJ70nzSfdJ+0oDSgdKC0oPShNKF0obSh9KI0onSitKL0ozSjdKO0o/SkNKR0pLSk9KU0pXSltKX0pjSmdKa0pvSnNKd0p7Sn9Kg0kDTQdNC00PTRNNF00bTR9NI00nTStNL00zTTdNO00/TUNNR01LTU9NU01XTVtNX01jTWdNa01vT' $Zint_dll &= 'XNNd017TX9Ng02HTYtNj02TTZdNm02fTaNNp02rTa9Ns023TbtNv03DTcdNy03PTdNN103bTd9N403nTetN703zTfdN+04DTgdOC04PThNOF04bTh9OI04nTitOL04zTjdOO04/TkNOR05LTk9OU05XTltOX05jTmdOa05ujCP/////TnNOd057Tn9Og00DUQdRC1EPURNRF1EbUR9RI1EnUStRL1EzUTdRO1E/UUNRR1FLUU9RU1FXUVtRX1FjUWdRa1FvUXNRd1F7UX9Rg1GHUYtRj1GTUZdRm1GfUaNRp1GrUa9Rs1G3UbtRv1HDUcdRy1HPUdNR11HbUd9R41HnUetR71HzUfdR+1IDUgdSC1IPUhNSF1IbUh9SI1InUitSL1IzUjdSO1I/UkNSR1JLUk9SU1JXUltSX1JjUmdSa1JvUnNSd1J7Un9Sg1EDVQdVC1UPVRNVF1UbVR9VI1UnVStVL1UzVTdVO1U/VUNVR1VLVU9VU1VXVVtVX1VjVWdVa1VvVXNVd1V7VX9Vg1WHVYtVj1WTVZdVm1WfVaNVp1WrVa9Vs1W3VbtVv1XDVcdVy1XPVdNV11XbVd9V41XnVetV71XzVfdV+1YDVgdWC1YPVhNWF1YbVh9WI1YnVitWL1YzVjdWO1Y/VkNWR1ZLVk9WU1ZXVltWX1ZjVmdWa1ZvVnNWd1Z7Vn9Wg1UDWQdZC1kPWRNZF1kbWR9ZI1knWStZL1kzWTdZO1k/WUNZR1lLWU9ZU1lXWVtZX1ljWWdZa1lvWXNZd1l7WX9Zg1mHWYtZj1mTWZdZm1mfWaNZp1mrWa9Zs1m3WbtZv1nDWcdZy1nPWdNZ11nbWd9Z41nnWetZ71nzWfdZ+1oDWgdaC1oPWhNaF1obWh9aI1onWitaL1ozWjdaO1o/WkNaR1pLWk9aU1pXWltaX1pjWmdaa1pvWnNad1p7Wn9ag1kDXQddC10PXRNdF10bXR9dI10nXStdL10zXTddO10/X' $Zint_dll &= 'UNdR11LXU9dU11XXVtdX11jXWdda11vXXNdd117XX9dg12HXYtdj12TXZddm12fXaNdp12rXa9ds123Xbtdv13DXcddy13PXdNd113bXd9d413nXetd713zXfdd+14DXgdeC14PXhNeF14bXh9eI14nXiteL14zXjdeO14/XkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg10DYQdhC2EPYRNhF2EbYR9hI2EnYSthL2EzYTdhO2E/YUNhR2FLYU9hU2FXYVthX2FjYWdha2FvYXNhd2F7YX9hg2GHYYthj2GTYZdhm2GfYaNhp2GrYa9hs2G3Ybthv2HDYcdhy2HPYdNh12HbYd9h42HnYeth72HzYfdh+2IDYgdiC2IPYhNiF2IbYh9iI2InYitiL2IzYjdiO2I/YkNiR2JLYk9iU2JXYltiX2JjYmdia2JvYnNid2J7Yn9ig2EDZQdlC2UPZRNlF2UbZR9lI2UnZStlL2UzZTdlO2U/ZUNlR2VLZU9lU2VXZVtlX2VjZWdla2VvZXNld2V7ZX9lg2WHZYtlj2WTZZdlm2WfZaNlp2WrZa9ls2W3Zbtlv2XDZcdly2XPZdNl12XbZd9l42XnZetl72XzZfdl+2YDZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLZk9mU2ZXZltmX2ZjZmdma2ZvZnNmd2Z7Zn9mg2UDaQdpC2kPaRNpF2kbaR9pI2knaStpL2kzaTdpO2k/aUNpR2lLaU9pU2lXaVtpX2ljaWdpa2lvaXNpd2l7aX9pg2mHaYtpj2mTaZdpm2mfaaNpp2mraa9ps2m3abtpv2nDacdpy2nPadNp12nbad9p42nnaetp72nzafdp+2oDagdqC2oPahNqF2obah9qI2onaitqL2ozajdqO2o/akNqR2pLak9qU2pXaltqX2pjamdqa2pvanNqd2p7an9qg2kDbQdtC20PbRNtF20bb' $Zint_dll &= 'R9tI20nbSttL20zbTdtO20/bUNtR21LbU9tU21XbVttX21jbWdta21vbXNtd217bX9tg22HbYttj22TbZdtm22fbaNtp22rba9ts223bbttv23Dbcdty23PbdNt123bbd9t423nbett723zbfdt+24DbgduC24PbhNuF24bbh9uI24nbituL24zbjduO24/bkNuR25Lbk9uU25XbltuX25jbmdua25vbnNud257bn9ug20DcQdxC3EPcRNxF3EbcR9xI3EncStxL3EzcTdxO3E/cUNxR3FLcU9xU3FXcVtxX3FjcWdxa3FvcXNxd3F7cX9xg3GHcYtxj3GTcZdxm3GfcaNxp3Grca9xs3G3cbtxv3HDccdxy3HPcdNx13Hbcd9x43Hncetx73Hzcfdx+3IDcgdyC3IPchNyF3Ibch9yI3IncityL3IzcjdyO3I/ckNyR3JLck9yU3JXcltyX3Jjcmdya3JvcnNyd3J7cn9yg3EDdQd1C3UPdRN1F3UbdR91I3UndSt1L3UzdTd1O3U/dUN1R3VLdU91U3VXdVt1X3VjdWd1a3VvdXN1d3V7dX91g3WHdYt1j3WTdZd1m3WfdaN1p3Wrda91s3W3dbt1v3XDdcd1y3XPddN113Xbdd9143Xndet173Xzdfd1+3YDdgd2C3YPdhN2F3Ybdh92I3Yndit2L3Yzdjd2O3Y/dkN2R3ZLdk92U3ZXdlt2X3Zjdmd2a3ZvdnN2d3Z7dn92g3UDeQd5C3kPeRN5F3kbeR95I3kneSt5L3kzeTd5O3k/eUN5R3lLeU95U3lXeVt5X3ljeWd5a3lveXN5d3l7eX95g3mHeYt5j3mTeZd5m3mfeaN5p3mrea95s3m3ebt5v3nDecd5y3nPedN513nbed9543nneet573nzefd5+3oDegd6C3oPehN6F3obeh96I3oneit6L3ozejd6O3o/ekN6R3pLek96U3pXelt6X3pjemd6a3pvenN6d3p7e' $Zint_dll &= 'n96g3kDfQd9C30PfRN9F30bfR99I30nfSt9L30zfTd9O30/fUN9R31LfU99U31XfVt9X31jfWd9a31vfXN9d317fX99g32HfYt9j32TfZd9m32ffaN9p32rfa99s323fbt9v33Dfcd9y33PfdN9133bfd99433nfet9733zffd9+34Dfgd+C34PfhN+F34bfh9+I34nfit+L34zfjd+O34/fkN+R35Lfk9+U35Xflt+X35jfmd+a35vfnN+d357fn9+g30DgQeBC4EPgROBF4EbgR+BI4EngSuBL4EzgTeBO4E/gUOBR4FLgU+BU4FXgVrYI/////+BX4FjgWeBa4FvgXOBd4F7gX+Bg4GHgYuBj4GTgZeBm4GfgaOBp4Grga+Bs4G3gbuBv4HDgceBy4HPgdOB14Hbgd+B44HngeuB74HzgfeB+4IDggeCC4IPghOCF4Ibgh+CI4IngiuCL4IzgjeCO4I/gkOCR4JLgk+CU4JXgluCX4JjgmeCa4JvgnOCd4J7gn+Cg4EDhQeFC4UPhROFF4UbhR+FI4UnhSuFL4UzhTeFO4U/hUOFR4VLhU+FU4VXhVuFX4VjhWeFa4VvhXOFd4V7hX+Fg4WHhYuFj4WThZeFm4WfhaOFp4Wrha+Fs4W3hbuFv4XDhceFy4XPhdOF14Xbhd+F44XnheuF74XzhfeF+4YDhgeGC4YPhhOGF4Ybhh+GI4YnhiuGL4YzhjeGO4Y/hkOGR4ZLhk+GU4ZXhluGX4ZjhmeGa4ZvhnOGd4Z7hn+Gg4UDiQeJC4kPiROJF4kbiR+JI4kniSuJL4kziTeJO4k/iUOJR4lLiU+JU4lXiVuJX4ljiWeJa4lviXOJd4l7iX+Jg4mHiYuJj4mTiZeJm4mfiaOJp4mria+Js4m3ibuJv4nDiceJy4nPidOJ14nbid+J44nnieuJ74nzifeJ+4oDigeKC4oPihOKF4obih+KI4oniiuKL4ozijeKO4o/ikOKR4pLi' $Zint_dll &= 'k+KU4pXiluKX4pjimeKa4pvinOKd4p7in+Kg4kDjQeNC40PjRONF40bjR+NI40njSuNL40zjTeNO40/jUONR41LjU+NU41XjVuNX41jjWeNa41vjXONd417jX+Ng42HjYuNj42TjZeNm42fjaONp42rja+Ns423jbuNv43DjceNy43PjdON143bjd+N443njeuN743zjfeN+44DjgeOC44PjhOOF44bjh+OI44njiuOL44zjjeOO44/jkOOR45Ljk+OU45XjluOX45jjmeOa45vjnOOd457jn+Og40DkQeRC5EPkRORF5EbkR+RI5EnkSuRL5EzkTeRO5E/kUORR5FLkU+RU5FXkVuRX5FjkWeRa5FvkXORd5F7kX+Rg5GHkYuRj5GTkZeRm5GfkaORp5Grka+Rs5G3kbuRv5HDkceRy5HPkdOR15Hbkd+R45HnkeuR75HzkfeR+5IDkgeSC5IPkhOSF5Ibkh+SI5InkiuSL5IzkjeSO5I/kkOSR5JLkk+SU5JXkluSX5JjkmeSa5JvknOSd5J7kn+Sg5EDlQeVC5UPlROVF5UblR+VI5UnlSuVL5UzlTeVO5U/lUOVR5VLlU+VU5VXlVuVX5VjlWeVa5VvlXOVd5V7lX+Vg5WHlYuVj5WTlZeVm5WflaOVp5Wrla+Vs5W3lbuVv5XDlceVy5XPldOV15Xbld+V45XnleuV75XzlfeV+5YDlgeWC5YPlhOWF5Yblh+WI5YnliuWL5YzljeWO5Y/lkOWR5ZLlk+WU5ZXlluWX5ZjlmeWa5ZvlnOWd5Z7ln+Wg5UDmQeZC5kPmROZF5kbmR+ZI5knmSuZL5kzmTeZO5k/mUOZR5lLmU+ZU5lXmVuZX5ljmWeZa5lvmXOZd5l7mX+Zg5mHmYuZj5mTmZeZm5mfmaOZp5mrma+Zs5m3mbuZv5nDmceZy5nPmdOZ15nbmd+Z45nnmeuZ75nzmfeZ+5oDmgeaC5oPmhOaF5obmh+aI5onm' $Zint_dll &= 'iuaL5ozmjeaO5o/mkOaR5pLmk+aU5pXmluaX5pjmmeaa5pvmnOad5p7mn+ag5kDnQedC50PnROdF50bnR+dI50nnSudL50znTedO50/nUOdR51LnU+dU51XnVudX51jnWeda51vnXOdd517nX+dg52HnYudj52TnZedm52fnaOdp52rna+ds523nbudv53Dncedy53PndOd153bnd+d453nneud753znfed+54DngeeC54PnhOeF54bnh+eI54nniueL54znjeeO54/nkOeR55Lnk+eU55XnlueX55jnmeea55vnnOed557nn+eg50DoQehC6EPoROhF6EboR+hI6EnoSuhL6EzoTehO6E/oUOhR6FLoU+hU6FXoVuhX6FjoWeha6FvoXOhd6F7oX+hg6GHoYuhj6GToZehm6GfoaOhp6Groa+hs6G3obuhv6HDocehy6HPodOh16Hbod+h46Hnoeuh76Hzofeh+6IDogeiC6IPohOiF6Iboh+iI6InoiuiL6IzojeiO6I/okOiR6JLok+iU6JXoluiX6Jjomeia6JvonOid6J7on+ig6EDpQelC6UPpROlF6UbpR+lI6UnpSulL6UzpTelO6U/pUOlR6VLpU+lU6VXpVulX6VjpWela6VvpXOld6V7pX+lg6WHpYulj6WTpZelm6WfpaOlp6Wrpa+ls6W3pbulv6XDpcely6XPpdOl16Xbpd+l46Xnpeul76Xzpfel+6YDpgemC6YPphOmF6Ybph+mI6YnpiumL6YzpjemO6Y/pkOmR6ZLpk+mU6ZXplumX6Zjpmema6ZvpnOmd6Z7pn+mg6UDqQepC6kPqROpF6kbqR+pI6knqSupL6kzqTepO6k/qUOpR6lLqU+pU6lXqVupX6ljqWepa6lvqXOpd6l7qX+pg6mHqYupj6mTqZepm6mfqaOpp6mrqa+ps6m3qbupv6nDqcepy6nPqdOp16nbqd+p46nnqeup76nzqfep+6oDq' $Zint_dll &= 'geqC6oPqhOqF6obqh+qI6onqiuqL6ozqjeqO6o/qkOqR6pLqk+qU6pXqluqX6pjqmeqa6pvqnOqd6p7qn+qg6kDrQetC60PrROtF60brR+tI60nrSutL60zrTetO60/rUOtR61LrU+tU61XrVutX61jrWeta61vrXOtd617rX+tg62HrYutj62TrZetm62fraOtp62rra+ts623rbutv63Drcety63PrdOt163brd+t463nreut763zrfet+64DrgeuC64PrhOuF64brh+uI64nriuuL64zrjeuO64/rkOuR65Lrk+uU65XrluuX65jrmeua65vrnOud657rn+ug60DsQexC7EPsROxF7EbsR+xI7EnsSuxL7EzsTexO7E/sUOxR7FLsU+xU7FXsVuxX7FjsWexa7FvsXOxd7F7sX+xg7GHsYuxj7GTsZexm7GfsaOxp7Grsa+xs7G3sbuxv7HDscexy7HPsdOx17Hbsd+x47Hnseux77Hzsfex+7IDsgeyC7IPshOyF7Ibsh+yI7InsiuyL7IzsjeyO7I/skOyR7JLsk+yU7JXsluyX7Jjsmeya7JvsnOyd7J7sn+yg7EDtQe1C7UPtRO1F7UbtR+1I7UntSu1L7UztTe1O7U/tUO1R7VLtU+1U7VXtVu1X7VjtWe1a7VvtXO1d7V6YDP/////tX+1g7WHtYu1j7WTtZe1m7WftaO1p7Wrta+1s7W3tbu1v7XDtce1y7XPtdO117Xbtd+147Xnteu177Xztfe1+7YDtge2C7YPthO2F7Ybth+2I7Yntiu2L7Yztje2O7Y/tkO2R7ZLtk+2U7ZXtlu2X7Zjtme2a7ZvtnO2d7Z7tn+2g7UDuQe5C7kPuRO5F7kbuR+5I7knuSu5L7kzuTe5O7k/uUO5R7lLuU+5U7lXuVu5X7ljuWe5a7lvuXO5d7l7uX+5g7mHuYu5j7mTuZe5m7mfuaO5p7mrua+5s7m3ubu5v7nDuce5y7nPu' $Zint_dll &= 'dO517nbud+547nnueu577nzufe5+7oDuge6C7oPuhO6F7obuh+6I7onuiu6L7ozuje6O7o/ukO6R7pLuk+6U7pXulu6X7pjume6a7pvunO6d7p7un+6g7kDvQe9C70PvRO9F70bvR+9I70nvSu9L70zvTe9O70/vUO9R71LvU+9U71XvVu9X71jvWe9a71vvXO9d717vX+9g72HvYu9j72TvZe9m72fvaO9p72rva+9s723vbu9v73Dvce9y73PvdO9173bvd+9473nveu9773zvfe9+74Dvge+C74PvhO+F74bvh++I74nviu+L74zvje+O74/vkO+R75Lvk++U75Xvlu+X75jvme+a75vvnO+d757vn++g70DwQfBC8EPwRPBF8EbwR/BI8EnwSvBL8EzwTfBO8E/wUPBR8FLwU/BU8FXwVvBX8FjwWfBa8FvwXPBd8F7wX/Bg8GHwYvBj8GTwZfBm8GfwaPBp8Grwa/Bs8G3wbvBv8HDwcfBy8HPwdPB18Hbwd/B48HnwevB78HzwffB+8IDwgfCC8IPwhPCF8Ibwh/CI8InwivCL8IzwjfCO8I/wkPCR8JLwk/CU8JXwlvCX8JjwmfCa8JvwnPCd8J7wn/Cg8EDxQfFC8UPxRPFF8UbxR/FI8UnxSvFL8UzxTfFO8U/xUPFR8VLxU/FU8VXxVvFX8VjxWfFa8VvxXPFd8V7xX/Fg8WHxYvFj8WTxZfFm8WfxaPFp8Wrxa/Fs8W3xbvFv8XDxcfFy8XPxdPF18Xbxd/F48XnxevF78XzxffF+8YDxgfGC8YPxhPGF8Ybxh/GI8YnxivGL8YzxjfGO8Y/xkPGR8ZLxk/GU8ZXxlvGX8ZjxmfGa8ZvxnPGd8Z7xn/Gg8UDyQfJC8kPyRPJF8kbyR/JI8knySvJL8kzyTfJO8k/yUPJR8lLyU/JU8lXyVvJX8ljyWfJa8lvyXPJd8l7yX/Jg8mHyYvJj8mTyZfJm8mfyaPJp8mry' $Zint_dll &= 'a/Js8m3ybvJv8nDycfJy8nPydPJ18nbyd/J48nnyevJ78nzyffJ+8oDygfKC8oPyhPKF8obyh/KI8onyivKL8ozyjfKO8o/ykPKR8pLyk/KU8pXylvKX8pjymfKa8pvynPKd8p7yn/Kg8kDzQfNC80PzRPNF80bzR/NI80nzSvNL80zzTfNO80/zUPNR81LzU/NU81XzVvNX81jzWfNa81vzXPNd817zX/Ng82HzYvNj82TzZfNm82fzaPNp82rza/Ns823zbvNv83DzcfNy83PzdPN183bzd/N483nzevN783zzffN+84DzgfOC84PzhPOF84bzh/OI84nzivOL84zzjfOO84/zkPOR85Lzk/OU85XzlvOX85jzmfOa85vznPOd857zn/Og80D0QfRC9EP0RPRF9Eb0R/RI9En0SvRL9Ez0TfRO9E/0UPRR9FL0U/RU9FX0VvRX9Fj0WfRa9Fv0XPRd9F70X/Rg9GH0YvRj9GT0ZfRm9Gf0aPRp9Gr0a/Rs9G30bvRv9HD0cfRy9HP0dPR19Hb0d/R49Hn0evR79Hz0ffR+9ID0gfSC9IP0hPSF9Ib0h/SI9In0ivSL9Iz0jfSO9I/0kPSR9JL0k/SU9JX0lvSX9Jj0mfSa9Jv0nPSd9J70n/Sg9ED1QfVC9UP1RPVF9Ub1R/VI9Un1SvVL9Uz1TfVO9U/1UPVR9VL1U/VU9VX1VvVX9Vj1WfVa9Vv1XPVd9V71X/Vg9WH1YvVj9WT1ZfVm9Wf1aPVp9Wr1a/Vs9W31bvVv9XD1cfVy9XP1dPV19Xb1d/V49Xn1evV79Xz1ffV+9YD1gfWC9YP1hPWF9Yb1h/WI9Yn1ivWL9Yz1jfWO9Y/1kPWR9ZL1k/WU9ZX1lvWX9Zj1mfWa9Zv1nPWd9Z71n/Wg9UD2QfZC9kP2RPZF9kb2R/ZI9kn2SvZL9kz2TfZO9k/2UPZR9lL2U/ZU9lX2VvZX9lj2WfZa9lv2XPZd9l72X/Zg9mH2' $Zint_dll &= 'YvZj9mT2ZfZm9mf2aPZp9mr2a/Zs9m32bvZv9nD2cfZy9nP2dPZ19nb2d/Z49nn2evZ79nz2ffZ+9oD2gfaC9oP2hPaF9ob2h/aI9on2ivaL9oz2jfaO9o/2kPaR9pL2k/aU9pX2lvaX9pj2mfaa9pv2nPad9p72n/ag9kD3QfdC90P3RPdF90b3R/dI90n3SvdL90z3TfdO90/3UPdR91L3U/dU91X3VvdX91j3Wfda91v3XPdd9173X/dg92H3Yvdj92T3Zfdm92f3aPdp92r3a/ds9233bvdv93D3cfdy93P3dPd193b3d/d493n3evd793z3ffd+94D3gfeC94P3hPeF94b3h/eI94n3iveL94z3jfeO94/3kPeR95L3k/eU95X3lveX95j3mfea95v3nPed9573n/eg90D4QfhC+EP4RPhF+Eb4R/hI+En4SvhL+Ez4TfhO+E/4UPhR+FL4U/hU+FX4VvhX+Fj4Wfha+Fv4XPhd+F74X/hg+GH4Yvhj+GT4Zfhm+Gf4aPhp+Gr4a/hs+G34bvhv+HD4cfhy+HP4dPh1+Hb4d/h4+Hn4evh7+Hz4ffh++ID4gfiC+IP4hPiF+Ib4h/iI+In4iviL+Iz4jfiO+I/4kPiR+JL4k/iU+JX4lviX+Jj4mfia+Jv4nPid+J74n/ig+ED5QflC+UP5RPlF+Ub5R/lI+Un5SvlL+Uz5TflO+U/5UPlR+VL5U/lU+VX5VvlX+Vj5Wfla+Vv5XPld+V75X/lg+WH5Yvlj+WT5Zflm+Wf5aPlp+Wr5a/ls+W35bvlv+XD5cfly+XP5dPl1+Xb5d/l4+Xn5evl7+Xz5ffl++YD5gfmC+YP5hPmF+Yb5h/mI+Yn5ivmL+Yz5jfmO+Y/5kPmR+ZL5k/mU+ZX5lvmX+Zj5mfma+Zv5nPmd+Z75n/mg+UD6QfpC+kP6RPpF+kb6R/pI+kn6SvpL+kz6TfpO+k/6UPpR+lL6U/pU+lX6VvpX+lj6' $Zint_dll &= 'Wfpa+lv6XPpd+l76X/pg+mH6Yvpj+mT6Zfpm+mf6aPpp+mr6a/ps+m36bvpv+nD6cfpy+nP6dPp1+nb6d/p4+nn6evp7+nz6ffp++oD6gfqC+oP6hPqF+ob6h/qI+on6ivqL+oz6jfqO+o/6kPqR+pL6k/qU+pX6lvqX+pj6mfqa+pv6nPqd+p76n/qg+kD7QftC+0P7RPtF+0b7R/tI+0n7SvtL+0z7TftO+0/7UPtR+1L7U/tU+1X7VvtX+1j7Wfta+1v7XPtd+177X/tg+2H7Yvtj+2T7Zftm+2f7aPtp+2r7a/ts+237bvtv+3D7cfty+3P7dPt1+3b7d/t4+3n7evt7+3z7fft++4D7gfuC+4P7hPuF+4b7h/uI+4n7ivuL+4z7jfuO+4/7kPuR+5L7k/uU+5X7lvuX+5j7mfua+5v7nPud+577n/ug+0D8QfxC/EP8RPxF/Eb8R/xI/En8SvxL/Ez8TfxO/E/8UPxR/FL8U/xU/FX8VvxX/Fj8Wfxa/Fv8XPxd/F78X/xg/GH8Yvxj/GT8Zfxm/Gf8aPxp/Gr8a/xs/G38bvxv/HD8cfxy/HP8dPx1/Hb8d/x4/Hn8evx7/Hz8ffx+/ID8gfyC/IP8hPyF/Ib8h/yI/In8ivyL/Iz8jfyO/I/8kPyR/JL8k/yU/JX8lvyX/Jj8mfya/Jv8nPyd/J78n/yg/ED9Qf1C/UP9RP1F/Ub9R/1I/Un9Sv1L/Uz9Tf1O/U/9UP1R/VL9U/1U/VX9Vv1X/Vj9Wf1a/Vv9XP1d/V79X/1g/WH9Yv1j/WT9Zf1m/Wf9aP1p/Wr9a/1s/W39bv1v/XD9cf1y/XP9dP11/Xb9d/14/Xn9ev17/Xz9ff1+/YD9gf2C/YP9hP2F/Yb9h/2I/Yn9iv2L/Yz9jf2O/Y/9kP2R/ZL9k/2U/ZX9lv2X/Zj9mf2a/Zv9nP2d/Z79n/2g/UD+Qf5C/kP+RP5F/kb+R/5I/kn+Sv5L/kz+Tf5O/k/+' $Zint_dll &= 'ValoqWmpaqlrqWypbaluqW+pcKlxqXKpc6l0qXWpdql3qXipeal6qXupfKl9qX6pgKmBqYKpg6mEqYWphgCph6mIqVapVyCpAAAvwiAAACAANAACAwApAAYAFiAABwyAwAMMzwECIqDAAQoAAgALxhzA8ATAAw8cwPAIICyAESUAEizAMAQABhMAwAAVLMAwIDoAFhzAAHvcEAAMD/CP8n/CADclADsA/gP/SgA4AE1cwAAxME8cwDA8AFMcAMkAAlRtAFYABGAGWQD+A2JMwPAFeGxmHMDwAXDvQjEMJQAwpsYBDE+AALDGAQwf4ojw////wG0AAHBwAAIAcQAAAHEAEEBzACYAdgB0gHsAhIB+AEvChQCqEIoAVwSQAKIMlQC8/aEA9L+tAL8EtQDBcrwACIS/ANNzyQAAkcwABRzRAMXi2QASV+AA/RnqAHww8QAKc/gAqsoAAbcfCwFUAA4BRm0WAaYnHgHnVCcBbdcyARYoNwHff0UBxztPAXwKVgG1GF0B9bpoAf9PdQHraH4BnYiFAf+rkgF3LpwB3+upAd/vtwE/N8IB3t7OAf//3gFX7OgB+/P1Af9/BAK/+xICP48dAtf3KgI/9zcC+/9GAv3/VQL/f2QChNRqAo3rdALbhn0CBMSBAtjMiQIb5ZICymebAhDHoQIuZakC/de2AuxXwAKWQMUCMJrLAjnQ0gLulNsCNlDhAvDL6gKsr/QCXXn+AvtfCwP5/hgD9hciA/DAKAPxPzMDd/U/A7p+SgPv/1kD/jlkA55ebgMe2XcDtLuBA/8xjANVOJMDESuZAyA1ngNEeqUDi8WtA99auAOTvMEDv3fOA/nA1gMtdN4DhgDhAxDE5QOlCOoDEBfvAzQE8wPJpPoDtvIEBALkCQSr/hUEEcYbBKonIwSK0SoEJ0AvBOVWOAQoDDwEQAk/BB+YRwTzS1EEPX1cBOz3aARiK28EdC94BKX5ggSe744EDYuVBB+mngRgcKME' $Zint_dll &= '7UysBH//uwRVlcMEz83OBKFP1gSFYtwEU5/mBPws7wT/NvsEZ88GBal1DwX/jxwFb+wnBevgMAW95zwFnz9IBff/VwX3f2UFf+9zBf/7ggVvE4sF6NeVBcwZnAWn+KYF/2+0BfcIvAX2scYFegvOBXwD1QWsUNsFN+fmBYPn7wXz9/wFIJUBBuv+DgbzNxkGy1ghBu5fLQbv2DgGOtdCBt29Tgbs+1oG3v9oBu/PdQbtvoEG3+eOBv+/nQbU/agG8zmyBv/8wAb/788G3f/dBt3/6wbvp/cGtv0DB2tfDgePaRcHTxEeB23oJwdpNC4HDfo3B9r/RAen3E4HIdpVBzO9XwfHMGYH+7VyB7/zfwdgyoUH1+6RB/91ngcF7KUH9W6wB9b9vAep78cHvvnTB9/74Qd7++4HD3v4B///CAj78xUI//skCNO+Lwj57TsIq+5GCLT1UAj9/18I//1uCD//fAj//4wIa/+ZCP7/qAhEQKsIg+mzCNTbvQhEZMIIV4DICIDzzwiGHNUIC+/fCPIf6QjNvvQI/mD9CK15BwmNyg8JS+8aCe0AIAnYMCYJ3L0xCZQ/Ogn9eUYJ+c5RCSzgVwnzxWEJVV5qCe33dwn7/YUJjdqOCf73nAkzv6cJr7ezCS+dvQnvn8oJf+PWCf/W4wn/Ze8J7//+Cfv/DQr/3RsK//8rCn//Ogrf30gK/5dVChk0Wwphn2QKkW5sCozAcQo/n30KfcaHCsvvkwrPt58K+f+tCqNCswouc7wKBCnACh7fywoXvNQK//niCrH37Qr/+vsKLzsFC+ByDAtVdhULHlkdC/3pKQv+/zgLEt5AC6nJSAt05VELSOBWC1rsXwv9mmoLX892C4dNfgs43IYLbJOOC90WlwuAG5wLi8WkCxxwqgvfZ7YL8dfBC9rZywtjQNALtkDWC+fN4QurU+oLtkbyC+nm/Auf8wgM3UoRDD4EFwym+SEMvBwpDN97Ngwm90AM/39PDP+q' $Zint_dll &= 'Wwzd32gMe/51DF7/ggz/t5AM79+eDH/sqgx/v7gM+/LEDOn/0Qy//+AM33/uDL8C9gwYcvwMyasFDWcfDw10hBUN4fYfDTcBJQ22LS4N7vk6DRFyQA3I5kgN3UVRDQuIVg0iYFoNEwxfDSUPZg15vHANvRN5DcByfw372YsNkwWRDd4/nQ1xnaYNPfOxDXoouA26/sQNUojJDWaq0Q2vHdsNur/nDfTZ8Q2rXvsN2GcEDuanDg68yxgO71skDg36LQ7rvjkOf91GDv/4Uw5L/18Omb1pDu+NdA5e6n4O2p+JDnq+lA6r/6EO//+xDv79vw77/s0O3zfZDo804Q7fbOwOnZX1DrPnAA9q/wwPf+cZD3RlIQ9NVSkP/s01D4UnPA87/0kPGgxODzz7WQ+yK2EPx11rD15edQ+Nr38P9WeKDwN7kg+tPpwPLrumD2vvsg89374Pf77LD++92A///+gP/8X0D7/9AhBiLQkQ/tATEE5XHBC/QiUQzdswELIsNxC0L0AQ3FhIEFIvUBBt9VsQXopjEFNSahAW/nQQ5X+AEOCIhRDabY8Q5F+ZEF4gnxA136oQ/fm3EHOMvxCAqMMQxP/OEAD00xAv/+AQlX/rEHf/+RA7XgMR1v8QEfrVGxHb+icR9r80EdzpPhHdl0kR+n9WEe7fYxHuXW4R+/99EW+biBG2t5MRfeyeESrcphHP5rERf9a9EW33yRH9q9UR7nfhEf7f7xH7X/wR//sLEn9+GBL9eiQS3Z8wEm//PhL+9EoS3f9YEv3tZRLuv3ISfP9/Ev7lixL//5sS//+rEv//uxL//8sS///bEv//6xL///sSYP8FE3u5EBM37RsT//0qEwP7MxP/5UATIdFGE7PzURP9+18TR39qE9lXdBMD9XwT/XOIE9fdlBMfX58ThHCkEyk4qhPK3rQTOPm9E04HxBPs+M4Tqp3XE5Fs3hPmdegTBZHtE/EE8xPP6f4TBrcGFNAyDBQUghAU' $Zint_dll &= 'bacaFHuxJBRfsy8U0YU2FBUSOxThqUMUtjlMFG/uWBTbrGIUxRdqFCQwbhTbfnoUDueDFL2cjRSsp5YUdeWgFN+LqxQs27QUxFW7FOv6xxTnn9MUp3bdFP+36xT/P/kUl30EFf5uEBVbexsVKdMjFXl3LhVFOzYViPw+Fe/9TBW7fVgVx/9lFe5RbhW1v3oVP9eGFf+ukxW7n58V6+qqFe+MtBX/78MVff/RFbf93hX6/esV+b/4FfzXCP////8/BBb//xQW//8kFv3zMRb3/0AW3/1OFv9vXBb/v2sW/0d3Fp4ugBbeuYsWi82UFv8HnxZ1xKcW8PqxFv90vRYvRMQWf93RFv/53xaW+OgWv3/2Frz/Axffqw8X/68dFy++KBfz2jMX73tAF+98TBf+7lkX1/1mF/e/dBfP/4IXXr+OF//9nRe//6wX/9+7F//qyBccVM4Xf87aF7tV5Bc5Pe0X2zn3F+xTABj7fw4Y/08bGC78JRjhni4Yer05GPwMQRhg4kcY9btTGBeHWxjZoWMYbTxsGP/fexh6/4gY/k+UGP+/oxhvta4YvXe6GPs1xRhy888Y+ljYGPy95Bhe3e8Y+//+GJd5CBn+8xUZm6oeGYbvKBn9/zcZXyE/Gf/fThk+v1oZdLdkGf6vcRl//H4Z//uNGf//nRn7r6oZoj+zGS9/vxnvX8wZ9WjVGd9E3hlQsuQZ3ibtGe/h+Bmf+wUa63wQGrd3HBopWSMaxCcqGsCMLxpD2DYai7Y/GiPyRxrsbVEa1OtbGl50ZBqK0Wsaxi5zGvbPfxqvr4sa93eYGv+WpBortq0atf25Gu+/xxrpf9MamxrbGih24hrfP+8a6az4Gm3UARv/eQ4bulwXGx/qIRt0/y0b/PM5G5HmQRv/HU0bzo9XG/l/ZBta6W0b1ld3G//fhht/55MbU4WaG7cepBv4za4bKUq0GxfNvRtuoMQbXq/PGxrf2Rv/g+Qbf+/yG3+N/Rt1YgUc' $Zint_dll &= 'Vf8RHOC9Ghzd8SUczv0xHP/uPxxr+0sc3f9ZHPe/Zxzv/3Yc76OBHLz8jBw3A5McWl6cHH/6qRzMe7Mc//vCHH//0Rz3kdsctNXkHNl+7xwnVfcc/tYDHbKXDB1vuxgd9v8mHXdFLx2//z4dff9MHf//XB0ueGQdpN5tHRlOdB2ezn4d93+MHf/3mx2/Pacdll+xHf9ZvR2ncsYdzbXQHY6i1x31quEdX2XrHajS8h36v/8dWbUIHt7fFR5Ozx8eOcAlHu3+Mh497z4e9dlJHp27VB59r2Aef2dsHr9/eh4/+4ce/36VHvzfoh7//7Ie///CHufHzR7//dweWQ7jHsu77h7xjfceXcoAHx9tCh/+fhcf//YlH//7NB///0QfendPH///Xx///28f//9/H/+/jh9//50f//+tH///vR+/v8sf///bH///6x////sf//8LIP//GyD//ysg//87IP//SyD/91ogff9oIP//eCD//4gg//+YIPv/pyD/d7UgAEC2IBAYuSAAALkgQAC6IBAQvCAAAr0gAAS+IAFAwCAAAMAggPrHIMv/1CBMetwg+bjmIOm98SD9q/0g7xsIIW1/FCH6TB0h3asoIc9+NCGcvT4h9OdJIYTHUCEK7FchGvhfIRVWZiGzw28h6/p7If/5iSH9f5chJuWfIbdCpyHIEawhaQuzIaCPuiE/gcIhTUDHIaDKzSG7GdYhoLrdIf9v6yG5vvYhv+IBIsT5CiJenRQi7AEaIvp6JSL9xjAit/o8IvfzSSKw61Ii//9iInfLbSLnp3giiM+AIuoniSLxQpAiBLSVIm91oCL/eq0i/z66IuIZwSLrEskieUzRIo0A1SJknNwibQLiIkEm5yKEd+8ibfX6IgEs/iJN4wcjf0YRI4XoGCM2fSIj6CMpIwQAKiN/xjUjn71BI/OmSyP+8FYjIMhaI1xrYyOvTm0j3Pl4I/jcgiOlB4kj/c6VIw/+oCP9zqwjv/+7I33h' $Zint_dll &= 'xSP1xc8jlfrZI3uk4iN/7e8j/X/9I+tYBiTt2REktF8bJJbvJiT+bzMk/+9CJHV7TST951okf8BjJPf4byS/vXwk7/6KJOuxlCRPf6Ak/+euJO86uSR+/cYk/X3TJNbv3yTv/e0k/3f7JN//CiW9/xglf/0mJf/uNCX/H0El7LtMJfunWCX9AWAl+MNpJdfPdSVnaH0ljPuHJS4xjiXsNJYl752iJeC8qiVy2LIlU6q6JdG9xCVtN84lf6zZJXf95iXGv/Elrof6JdPWBCZ3fxEm/0YcJtfbKCa+8zQm8fdAJt67TCb/vVom9/toJpf3dCb5/4Im++2PJs7PmiZv/acmwaStJnoftybJ1sAmu+/NJuvX2SZ97+Ymmb3wJst8+ibD/gUn5KwNJ/v7Gyfy8SUn3fMxJ67/Pift/0wn/z9aJ7//aSf/d3cntf+EJ///lCf//6Qn//+0Jwkgtye4q8Anl3fLJ/f/2id+/+gn///4J///CCj/vxco//4mKP//Nij//0Yo//1VKP/5Yyj3/3Io//+CKP//kij//6Io//+yKP//wij//9Iof//hKP//8Si//wAp//8QKf//ICn//zApv+8+Kf//Tin//14p//9uKQAQbykCCHEpgAByKQEAcykABHQpAAB0KQACdSkAQHYpAAB2KQD/fik97Ykp3/uXKfnzoyn3+K8p2+m6Ke/+yCn//9gp///oKf//+Cn//wgq//8YKv//KCr//zgq/x9FKgEARioAAEYqAABGKoaASiog11EqBv9bKs3zZirtf3Mq9/+CKsUqiSqnJ5IqPROaKudioypX0Ksq32m2Ku8fwirzKcsq3dnWKmjw3Sr5/eoqv031Kqpv/ypdfwsr7q8XK/9nJCv7+zIr/79BK///USv//2Er//9xK///gSv//5Er//+hK///sSv//8Er///RKz8E2CsAANgrARDaKwQg3Cv39OgrvJ3yK0m++yvEBP8ri5AFLHbcDyyAURMs' $Zint_dll &= 'KBMYLLgfISyfpissaV81LHD2PizTnkgsz19ULPL2XyxV1WgssStwLISwdSxNO34sdMeHLDlWjyzvnpss6/+pLP+9tyzzf8Qs/f3SLLcB2Sx6m+MswSnpLAgc7Sxfxfcs+PMCLfMbDC3P+xktfwkiLf3vMC3//0At//9QLf//YC3//3At//+ALf//kC3//6At//+wLf//wC3v/88t/7/eLf//7i3/v/0t//8NLv/+HC7//ywu//88Lv//TC7//1wu//9sLv//fC7/v4su//+bLv//qy7/+7ou///KLv9/2S7//+ku///5Lv//CS//+xgvv/8nL///Ny///0cv//9XL///Zy///3cv/7+GL///li///6Yv//e1L///xS8fAMovQgHNLwAAzS8AAM0vgIDPLxgE0i9AANMvAAjULwAA1C8AENUvgQDXLwgg2S8ICdwvIATeLwFA4C+wf+ov///6L///CjD//xow//8qMP//OjD//0ow/xBTMACAVDCAAFUwCElZMPm7ZTCBR2swCsRwMM53ezBp6IMwC/+OMJ9WmDBu7KIwf/+xMLaNujAMDb8w2//NMP542DA3veMwLBzpMLev9TD/2wMx+rwOMf//HjGztSgx2P0zMafvPzHf10wx6f5YMfZXYzHr/3Ex//+BMf//kTE/wZoxl/+nMf//tzH//8cx///XMf//5zH///cx//8HMv//FzIfABwyAEgeMiQCITII/yoy//86Mv+/STLROFAyf/5eMv//bjL/330y/v+MMv+/mzL//6sy//+7Ms//yTJXAM4yCEvTMgxS2DIA/N4y3/7sMv///DL//wwz//8cM///LDP//zwz//9MM///XDP//2wz//98M///jDP//5wz/w+oMwQAqTMIYq0zMAKwM0D+uDM86sEz2OfLM/V+1zO9V+Iz//XwM/d+/TP3fws0938ZNPvnJjRBAFwsNO3/OjT/Kv9KDKDFAGoMoKfKAIoMoMkAqgygq8oA' $Zint_dll &= 'ygygzQDqDKCvyQAKNY0FDKDCADqADKBU8/+GVZMBYPlVgzxSVgMAQIlWAyC8VnMAMABXY8BAV7Ov8j/ICJMMMMoAs6oMMMwA0wwwzgDzggwwYPP/P8EAI6oMMMMAQwwwxQBjqgwwxwCDDDDJAKMANv9/sjaQQLUANhEYuTYBILsANl2iwzYnwMkANvQ/1DZ79uAANvNf7Da///sANu+WBjfvHREAN+1GGjdaeSMAN/+lLzf/lzwAN3b9SDf6b1QAN3+VXzfv/24EN/z/fDcdBDf/AH+bNwbgoDf/AHGsNz4AsTcAmQwFIcsBDCwwywEGszcgALQcwLCAAAC1NwIAtjcAAPC6NxqBvzebMAPGXMBwAQDHNwAA/s439/7cNxp/D+dMwPBIFPZDABX5s0oBQEUhAABXHLKB5d/FQwDrRfUDAFe1xidulBRHa3MkUkHnX0dEeR3wC4R0CKCYupjKmNqYCuCY+pgKmRqZGiCZOplKmVpp5PQFalZ98Q0Ab1LVBT/AVQtfsKVYEX8g5l9WGL8wRmd4qiR21yRfpNcF2lcJf8GnSvoBgEwYWAI/INgH/zBYS/gBhe3yRQBrWAly2AoWgeifyAKK/ov18BdRjaTE2Bu/8ejvyMtAlr3yPZP+lP6V/hCX/pJdwJj+mf4Amv6b/pz+nf5Ans3wA1n+Yf5m/gBn/m3+fv6Q/kCgjJZtum2qbQrAbdpt6m36bWrAbtpuOn+9EQQwgAAAowClAKYAqQAArwCyALYAuAAA1gDYAN8A4ggA5wDrBOAOEC8AQA9gD4BPAPuABNAPABAgECABEEARoBHAEaACEMASMBRQFHAEEJAUwBTgFKAmEMAW0BzwTADRqgQwTQDVBHBNANmgBLBNAN0B+AH6ghD/////AVACUgJgAmICxgLIAsgCzALYAtoCkAOiA6IDqgOwA8IDwgPKAwAEAgQPBFAEUARSBA8gESASIBcgFyAaIBsgHiAkICcgLyAxIDEgNCA0' $Zint_dll &= 'IDYgOiA8IKsgrSACIQQhBCEGIQghCiEVIRchICEiIV8hbCFvIXohjyGUIZUhmiEHIgkiDiIQIhAiEiIUIhYiGSIbIhwiISIiIiQiJCImIiYiLCItIi8iMyI4IjwiPiJHIkkiSyJNIlEiUyJfImIiYyJoIm0icCKUIpYimCKaIqQipiK+IsAiESMTI18kaiRzJJwk/yRMJU8ldCWAJZAlkiWWJZ8loiWxJbQluyW+JcUlyCXKJcwlzSXQJeEl5iUEJgcmCCYKJj8mQSZBJkMmgC6CLoMuhS6HLokuii6NLpYumC6mLqguqS6rLq0ury6yLrQutS64LrouvC7JLssu7y/8L/8vBDAEMBgwHDAfMCAwKjA9MD8wQDCUMJownzCgMPcw+zD/MAQxKjEfMioyMDIyMqIypDKNM5AzmzOfM6AzojPDM8UzzTPPM9Az0zPUM9YzRjRINHI0dDSdNZ81DTYPNhk2GzYXORk5bTlvOc450TneOeA5cjp0Ok07TzttPG883zzhPFVAV0BeQWBBNkM4Q6tDrUOwQ7JD3EPeQ9VE10RLRk1GYEZiRiJHJEcoRypHe0d9R4xHjkdGSUhJeUl7SXxJfkmBSYRJhEmHSZpJnEmeSaBJtUm4SXZMeEyeTKRMEk0aTa1Nr03/Taaf/9ds52znyOfI5+fn8+cV6BXoGegd6B/oJegn6CroLegw6DPoOug86ELoROhT6FboY+hl6Cv5Lfl4+Xr5lPmW+eb56Pnw+fL5C/oQ+hD6EvoS+hX6F/oZ+h76Ivoi+iX6Jvoq+i/+Mv4y/kX+SP5T/lP+WP5Y/mf+Z/5s/gD/X//f/+b///+AAIEAgwCFAIYAhwCJAIwAjgCQAJEAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACrAKwAvQDEANUA3ADdAB0BHgEfASMBJQEnASkBKgEsAS0BLgEvATABMQEyATMBNAFAAUoBTgFS' $Zint_dll &= 'AVMBVAFVAVYBVwFbAVwBXQFiAWMBZwFoAWkBagFrAW0BcQFzAXQBdQF2AXcBeAGCAaoB9gEaAikCLAIuAjACMgI0AjUCNwI7Aj0CPgI/AkACQQJCAkMCRQJGAkcCSAJJAkoCTAJNAk4CWgJeAnECcwJ8An0C0ALUAioDLQNSA1wDXQNeA2ADYwNkA2UDZgNoA2kDagNrA2wDbQNuA28DcANyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4kDiwOMA40DjwOQA5UDnAOdA0NVr2QKZShlSWVMZU1lTmVQZVJlU2VUZVZlV2VYZVllWmVbZVxlYGVhZWNlZGVnZWllbGVuZYBlimWOZZxloGX+ZQRmZudr56uibedt5+Sibudv5++icOdx5/2icud85/SkfeeE5/elheeM57mmjeeT59mmlOeV5+ymlueW5/Oml+ef5/amoOeu58Knr+e75/KnvOfG55aoyefM58Gozefh5+qo4ufi51ip4+fj51up5Ofm512p9OcA6JepAegP6PCpEOgU6PrXFugY6FH+Huge6Fn+Jugm6GH+K+gs6Gb+Megy6Gz+O+g76Hb+Q+hD6H7+VOhV6JD+ZOhk6KD+AADooeyhp6HjocChwaGkqKKoqKimqLqorKiqqLCorqjCobSosqi5qKGopainqKmoraixqKOoq6ivqLOotai2qLeouKimoaWhoaaipqOmpKalpqamp6aopqmmqqarpqymraaupq+msKaxprKms6a0prWmtqa3primwabCpsOmxKbFpsamx6bIpsmmyqbLpsymzabOps+m0KbRptKm06bUptWm1qbXptimp6ehp6Kno6ekp6Wnpqeop6mnqqerp6ynraeup6+nsKexp7Kns6e0p7Wntqe3p7inuae6p7unvKe9p76nv6fAp8Gn0afSp9On1KfVp9an2KfZp9qn26fcp92n3qffp+Cn4afip+On5Kfl' $Zint_dll &= 'p+an56fop+mn6qfrp+yn7afup++n8Kfxp9enqqGsoa6hr6GwobGhraHroeSh5aH5oeah7aHxovKi86L0ovWi9qL3ovii+aL6ovui/KL7ofyh+qH9ocqhx6HGocyh2KHeoc+hzqHEocWhyaHIodKh06Hgod+hw6HLodeh1qHVodmh1KHcod2h2qHbodGhzaHQodmi2qLbotyi3aLeot+i4KLhouKixaLGoseiyKLJosqiy6LMos2izqLPotCi0aLSotOi1KLVotai16LYorGisqKzorSitaK2oreiuKK5orqiu6K8or2ivqK/osCiwaLCosOixKKkqaWppqmnqaipqamqqauprKmtqa6pr6mwqbGpsqmzqbSptam2qbepuKm5qbqpu6m8qb2pvqm/qcCpwanCqcOpxKnFqcapx6nIqcmpyqnLqcypzanOqc+p0KnRqdKp06nUqdWp1qnXqdip2anaqdup3Kndqd6p36ngqeGp4qnjqeSp5anmqeep6Knpqeqp66nsqe2p7qnvqfah9aH4ofeh9KHzofCh8qHxoe+h7qHioeGhoaGioaOhqKGpobShtaG2obehuKG5obqhu6G+ob+h/qGyobOhvKG9oaGkoqSjpKSkpaSmpKekqKSppKqkq6SspK2krqSvpLCksaSypLOktKS1pLakt6S4pLmkuqS7pLykvaS+pL+kwKTBpMKkw6TEpMWkxqTHpMikyaTKpMukzKTNpM6kz6TQpNGk0qTTpNSk1aTWpNek2KTZpNqk26TcpN2k3qTfpOCk4aTipOOk5KTlpOak56TopOmk6qTrpOyk7aTupO+k8KTxpPKk86ShpaKlo6WkpaWlpqWnpailqaWqpaulrKWtpa6lr6WwpbGlsqWzpbSltaW2pbeluKW5pbqlu6W8pb2lvqW/pcClwaXCpcOlxKXFpcalx6XIpcmlyqXLpcylzaXOpc+l0KXRpdKl06XUpdWl1qXXpdil2aXapdul3KXd' $Zint_dll &= 'pd6l36XgpeGl4qXjpeSl5aXmpeel6KXppeql66Xspe2l7qXvpfCl8aXypfOl9KX1pfalpKHFqMaox6jIqMmoyqjLqMyozajOqM+o0KjRqNKo06jUqNWo1qjXqNio2ajaqNuo3KjdqN6o36jgqOGo4qjjqOSo5ajmqOeo6KjpqOWi5qLnouii6aLqouui7KLtou6iu9Khtt/G8s3J1f3Iz8nCz6LYu7Lr06TY87Oo19LHp9jAyvDH+7G10tS0q7a/y6nYqra9wc/Rpcmt2Pa4vtHc49DW4beutNnBvNjozaS1qs731vbA2b6v2MvEw76x2LTD5dKu1trOp9X1uqa31sC5xtLFx8fUucuz0tK/2MW+8say0rDP58/pysDY8sLSwunIrMfLwejT+dXCyv62odja0/e/xtSlu8HY5c6uvqjYx9Gp0L3Y79n2zbq/u72luuDS+rLgurbE7c+pvqTNwcHXx/HZ9NnLyOnY2tKyysrI7Njq2MbY9r3NxvCz69jxvem91MjTtNjC1rLQ18vK+8vM1ba4yc/a2fDYqsfu2Pq07sHU0u3Yx9Lv2MfD9tHZ1vLY9dj+vNu8zsjdt8K388b42MHS6c6/vPy3pbfd0NrWxdPvu+G78dihybDOq7Tz2MvJ9tjXwvfYsc752K6ywLmj2emw5sHsycXLxsuk2ei1q7W7zs21odf019PT5czOuqLZ3Nng0/3Y8Lf31/7Y+tih2ePEttP02N3Z+9jlxdDA8NHbsNG8ptml2azZrtmr2bnKqdm21t6zqNn9wMzKqtmn2bDZsbapucDSwM/CwsS97NXgssjH67+t2a/Z6s7uutbH47HZtO22tNmhv97Zzsf+wLjZ18v9t7XZt9mjseHTudnF0LbZsdmy2anBs9nzvN7Qqbjjvr3ZutmzsMLZxNm2sb/ZubXzvsjM8rrQ0sPZ6L2rs8XZ677G2bvZ38S+2cHZwNmu1bXW48fI2dm8ytm82cvZq8bJ2fbXo82h' $Zint_dll &= 'vczZvMW1zc3Zx9mls/6/tbj8wPiw9rTO2c/ZorTQ2d+0wbDR2bXJ8c/S2cXB1tmuydXZ1NnX2dvLqb2nxtPZ2NnZ2eXI3MD5tqPYytSq1NbQ5LPX1cjP4rnLv+LD0rbDze7Z8NmztbW2pL7ryKvIy7CrufnB4tm8wLK52LnL0Pix5MbfvuS1yNf40ea83sq9vObZ59jaxNS4vcjhstnUsMPhw6La38i00Py+qcXauaPaqdSk2vvZrLbrt/mx/Nnls/a+9r+x0uTAs7b+2f3Zu77gxrzXodq5wfK16MH1vNW03cH9xLi8srfvt+zZvsatv8u7yrXJ29fQuc28sPaz97vK26+65NS2tfO11tjQyNa30MfX2K+/u9vY2MzQrru+69DB9cHy1NW4tLT1s77J0MXZxfvA8LHZ2M65vbXa2MbWosuvyLLJzLTMv/S529jc2Oe2wbzqzPfP3diwx9C5o73ezMrG4Nje2N/Y/rDnvqPK9LyxuO644tjLveTY49j8xeXY5timwbDI7LCmudO88c6929PBr7b61qzF2b2+27/b+MCivs3AwNvGyqqywtPjw6vRwtvVwMPbsb+8xNrHxNvo2dfJtLnwzsjU/LDStNnQ6dnL3uvZsNivu7Gx17PO2NHUs73vv7vP0NjLt9HYpcb4x73S0tjkxK7Kp8em2P3J587cu+uwqrut0LCx5Ne/16W19MLPxKmyt7LlsbLfvNWov6zC1dixwtTY1M7g2sDOtNiuw6HTo860vLTI0cLtvrbQ4drkx6ez8rb8zPrA98C50eHRx9jesuXA8brI2K3U4c/J2MrYw8/4s8e+y9jM26XI2M/+yM6y1tPmsrC80dOry7S3orflyqHI3MrksfDQ0cXF2/612r/FueS+7cG237Xfu9bQvdnVyLCjtsm/qMyz37fK0tPP2LbSxbq+y77Mt9/wtbTf9dPUs/e4ut/Puqq89bWszfvD87r0wMLN8s+438XPwMK53/DC/b7f' $Zint_dll &= 'wczN99LNt8HfxN/xt8mw1rbUt6y6/czUv7HL9Mao1sXf4s6zs/zOtbTHzvC64c690cDf9LTKs+a4u9/FxLzfvd++37vFv9/C37HUw9+6x9jO2MTK38/f3NbJ39rfts7Hus7fyN/exevJ9Lr8w9e+xt/N39jFptXNusy+vdPAuOTWx9++uae//MHL38zf0N/b3+Xf19/W38nX49/k3+vlp9LS36m/29TIv9TfzM/d38rR3t+nsLfG09/lut+2283+udXU39/sz6Ww59/R38bR1d/Y39nf3N+pu+Df4d/i3+bf6N+00+e4tsXq39rJqMHExN6/+M/c1e7fuLLfuuzfwdvk0fTLvbSmsPHfxszy3+3f6d/r3+/f8N+9u/Pf9N+ju9vKqM6n4KqzpuCh4P7f2c383/rf0L/E18zJ+LkI/////9+hsP3f+9+i4KjgyLehxrbJssD1377FxNj53/bEo+Ck4KXgpdC04OTMseCmv6/guc6r4MbJrsCu4O26sLqp4Pbfs+C44K20ueCyz8i6sOD60Kzg+9T33+fFreD307bgt+DE4OHQvODJ4MrgvuCq4KTJweCy4MjKw+C14MvOw8vN4MbgwuDL4Lrgv+DA4MXgx+DI4Mzgu+DUy9Xg1uDS4NDgzrzR4MK4xdjq0O/Cz+C94NTg0+DX4Nzg2OD21rCz7Ne7y9rg+87ZuuHg3eCt0uLg2+DZ4N/g4ODe4OTg98as2OvU5uDJyuXgwbjn4Ojg6eDj4L+658zq4PnP6+DCyMC90sTs4O3g9MfEy+7g2Lu22PLS7+DFzdq28eCw1KfA0bSnzvDg8uDMufq5vM3z4NTG9OCy1KbI9uD14Pfgwc2lytrU19vZ29jb57nc293b2LXa29vbobPf2/i7t9bg2/m+u7fQ267Msr+1u/jX07/pv+G8s8ze29Ow687Yt7nXwsakwLnM59vh27rG49vo2/fF6tvp28C/5tvl27m0rMCiwuLb5NvN0O3b3cDy' $Zint_dll &= '2+K289vS27i5q9Ts29G/8NvR2+a169vlv+7b8dv526G5o7Dxwsez79v429LG9Nv12/fb9tv+2/LTurL926Tc+9v62/zb4MX5u6PcpdzDzNG2wN2h3KLctcfptqfcptyp3KSxzLWwv9/Rwrao3PrL8+vcy/7Lwcz7yKrc7syr3NPbr9ys3LO++8qt3MrJucS9x67c9tTm0KvE1bbU29qx1dvW2766wMi/ysnIs9f5yce/+Lq80rriprS4sbS4xM/n2abP4s3t2eC2udK7ubnit+LztOzMq8zyt7LY69G7uqfKt83E0uS/0LzhtsXext6829nR5sbOxO633Lf8v+DX9ca8scjesb3XzMreyd7std3JwrCuxavFzMTpvP3Lw7r55efI+uX9zbHXvrjowtHI++XKtsu8/dGh5u7DpOb+5aXm183Bt/zl/eWj5t3EqOan5sPD3saq5rfEoua8yuO9w7mm5tXQr86p5rDmptKqva3mr+bRwMzSp7yx5vbSy9f+zd7NpsKr5qzmv72u5rPmsua25rjm78TIxOq+78m35vC25MPp07TmteaiyL3muebFxvHNu+a85um7vua65rfApNO/5vTJw+bE5vbQvcPEw8LmwebH5rHP9OvK5sXm3rypybW808/I5snmzubQ5tHmy+bVtczmz+bbxMbmzebS5tTm0+bV5vjZ1ubX5tPX3ebe5te/0NTW1+a078va5sPYztei0M/D3+a+vMK52+an0aK6z8Kr2OvK7uXc5vW35sj1xLLl/sT8y7PlrNXu09jKsrDOy+rN6rq15bTl2tfZuebWqLbwzcvSprG1yuiz88nNv/vQ0sq25cK73M+sudfUprrn0fzP0ry35d3I7b/2sd7LxbzEvPrS3MPcv7u4wsOuuqLU3sevxOyy0bm75cjBr9W85b7l57TUtsLLsNG8tdnK4rfkyau9vs7w16HQ2cn7ttjm4ry+s9DJ2eais8zeyNPN3qLSzt7Nvs/erMr8' $Zint_dll &= '0t+z6uXhxKG+ss7yxNa+qMbjstO+/MfrzOy93c66ysHG7OW80LnV7eX0ysDNxcLv5cTC8OX45c3NvcnZ0qjh7NPqy/HGrOGn4anhquGv4e2yq+HauK3hruGw4bq1seGz4bjh0tG24bXh68G34cDUsuG64bawtOH5v7nhu+G+4bzhxda/z73hv+HNwuu2+NPNx+W3/r7A4cHhx+Hns+nG3rTC0cjhxuHF4cPhwuHAsbjVxOHL4czhyuH679Ph0uG2x8nhzuHQ4dTh0eHN4c/h1eHW4dfh2OHa4dvhoc7d56i03day0bKzpLnz18nH3r6uudfO7rLP27q80dLIy82w78/j2e290rHQyryyp8urt6bKo8/44MrV++D64MHF+8yxwfng49avssTW27X4tKHWr8/vsPzgoeGjs/3g/uCxw93DouH5t8+7o+G7xKThpeGm4bG0ybi9xurEorLS0Nvnw7vX08TT47nP4q/X7MfTsbK00eLy0K7C0OLiv6bT17XS4uq17cP9uK6408XPt9Ti0+LItvnXpc3Y4tbi/Mq1v7nT1eLX4q7ByMDb4triqsDOwdzi3eLe4sjb09Gizai9w96l2Kq/zdvs0vrGqsXE3texrt+9yrHfrbn90qW467ras9y1xdXWw9LPobvz5fLl9OXkzfXIr7W/x/blsOzm5em5sbW8wujl5+Xp5c3S6uHO0K7N5dHKsuux8rHtxcPVsNPc4d3h29K5s8ux+c331d7htr79tN/h3Lrg4bK7ycLh4ezQvc3i4cO1x8Xj4eTh+dPl4a3R5uGizufhwrXo4dW7xNDg4tix5NLh4sm8zMjj4v7s/eyv3+Livtb8zabDw+PS1ufi6OLH0+zi7L/t4uXiwLPuxO7iw9D2uuni3rezu6zMy8vk4ubi6uLr4vfi9OL11PPircX61cLFwLLv4vLir8G8y6G1+eKxvPHi1NC51PXi1rn24tPH8OLc16Ht+OKl7f7i0cq1wdC71r/j' $Zint_dll &= 'uqHLpu2j7aLt1run7fTQpO3euve2oeOytvHMp7miz6HH0r/xtvri++L94vzi1cSi48HTp+PEx6TPqeO3uqjj2ruj46TjquOm4/LOxtO8u8PU+sSo7fzQpeP1w63jr7Gy48K8rOO/tenHsOOqvu/N87vozK/jseOnz67jqc7du+u15b7Sss2zubGr49GyrLXfuei268+348y7x8jK0Ljj7rOp7frT5NOq7bnj4tK1497T0Liz47bj37e046LAuuO41Mi0u+PFu/fJ5cm9xKvt/cLbu66/v86847a/77H31L7jre2/46m6rO2948DjtrqutrjQw7Cu7a/twcDB47PFwuOy3LDt6rjszqfq59D5ytbIt8/Js9LO5L3e4/K7qOq91d3Gqeqq6qzqq+qu6q3q2L2v6r7CwbT3tKe75uzl7L+3+cvisefsyMno7Ons1srQ3sWy+tTLxsew8rTTyNDNuL/bv6THtNapwNHeqMnv0aTF57C2s8XI4rD2t/rF87bS1dCzvLyts/G+0bDW0uPKpde2zba2ub/b1ae418XS3tm/1cLAx6S7qLHqxfvFp8ynsda1qMTT3rrR6bPyw/e39NajtfCytMTpxK3A1N7osMTF4MHVudy+2M3OsM/N1t7Qvr7X1d7Q1d2w4sSjwvC8tdO5wKHFprLx1KjAw8rX3vzVsLmtyKnL2d69v7TGp9ewysPE1rPSubjW/Oq0sOa/9Mzazb/WzsLOzqLMrtDTxLK12N711be807uksLLF7LTx1f3q2t6mzezN5s7c3rHNpsC919vexrC0utPJ88TovraQCP////+yzMDwy/G8u7u3tfXF5t7j3t2+3963tN294N7txMbP4LXettrK9LXl3sbV4d7NzP7GxcW00vK+08K9zLiz073Yv8bN2tHrtOTe3d7n3v7qsMLi3sDWp7X0suje8t7t3vHe4Mjh1+/e6MPhzOWyvtLu3uve1c6ntKu/vr7SvenertTe3urev8Ds' $Zint_dll &= '3vOy6binwsG99d743quypLTqtKbJ9t7Ry+O499763vnewszhsO60uuWv0Ouyoev03uPJ897asKHS97GvzPDepMuq1fve3bSmxP3e/sOhxKHfzMH83u++ssbFs/bIusv+3qTfste3s8PBy8elsum0q9fsxKLfo9+l37O6pt/ewMPJ2bLmx6ff3Meo36Lr08uq36nfwbLKxavf3NTByKzf8L6t36fWt+q269XK/NjEuKW5xbf+1cq5p9DN9NC19MPIvrfrvbDMvbLB1rGos9K4osnYtrjrtL79ysPH+9Xzt8TOq9XzsbPs37C17Le2z8H69bHQ5dXTzu+94rOruLbVve3PtrnLwtC9t7bsqcrUxbnsuOzDwrfs/dC67Lvs5de87L3s7Mbezsi81ciptcm+vNbn1K7R8dC46rnquuq1urHK9b/6zcDqurC+6qXAu+r9svfD6LvX0vTOv+q86sPqx9Cz07q0wcPy19HVx8rF6sTqx+rG6ufW1M/L6s67+r3Oyczqucn+z8rqztTN6s/q7c3J6s7q7s7eu7+z1cawvvrO58envtDqx9bAwd3U0eq+z9Lq7sqvxbWw1OrT6t/0usSpsd/l1ervytbq1+rYxtjq2eq71PrHt9L8uMLq3LL8wvjU5szu18LU0NPD6/PF/rfU67fL3uvKwPvNr7PaxvzrvsS0zqnEvrH91PXK7NbTxuS2+rvg0LHJ09SoyMu4vui8ybvo7sDT0MSy5bS86MjVxba96PjK3Lj1zLTA7tG/6MLovLqtsdy9verD6Mboy+jM6MnL5bCrvLm5wej3zcro9s7t1dbBxOi2w/u5ptbI6ODK5tTA6MXox+i5x+O3yejdv9Lo1+jV6Ny8z7zb6N7o2uj6sdiws8TMuOLGvsjhyM/o1OjW6PG52Oj11/vE3OjpstHo7bzCv83o+db4wfGy3+jBytnopNXqsbvVzujQ6LC20+jd6LjA98qoy9zG9cDp6KPQ8ujq1uDo4ej5' $Zint_dll &= '0cu6+bjxuNTU7+ju6Ozo8LnSzObops7yv7iw8ejw6MDX5OipzaPJuLvbvero4ujj6OXotbXn6MXH6+jt6LC9rtf46PXosM326LrB6Oi3w/Cw9Oj36KO50snOw+DO5sDzy93MtdDhyvPo7Lz56N7D5cb3ufSw2NesvO/FxMym6a3JouniwMO//ujXufvopOnO0qPpsta116fpt7386P3ooenWzazSsump6aq0u7Sr6ajQpen+s6zp48Cq6bnpuOmu6froqOmsv7Hpuumlwq/pxbit6dzTtOm16bfpx+nGwMXpsOm76fGwvOml1b7pv+nB6fHBtsi96cLpw+mz6bbpsbvA6fe8xOnG6crpzunbssjprrfL6czpwdWjxNjp4brJ6aPT1OnX6dDpz+nBx9Lp2enIs9Pp8M/N6fez1una6bTMrc/V6dzp2+ne6dHp3enf6crDt8fOtLa7wNCj7LfF+9Ok7KXs28buv6bsp+yq0LjH6Lio7LnW/dXLtL2y5M7nxuHN9bTAy9+84unj6erR5en5tOTps9HiytCy6Onm6efps9bp6erp6+ns6a/sucXOtvPS7rXZu7Hs49LjzrjEv8O+trnYyLHPsdGx/sXQsavDsdWk68G6usyl66frqOum66nrq+uq66zrz8q12PHDpcP4xq3rysSu66/rsOvVt/q3sevix7PrpLr10bGwsuu066q1yMLox7Xrrsvf48DT29mhza3W88fg2eO7urri46vP4OPHybm6tNHh4+rIr7mtvdiz287AzOjj6eP0za3Ms7zq4+vj2tD7xtq338fK0tbO5OPs4/LJwbPn4+PG5eOz7ebjs8nmxbW5u8Pj473FpMHZwtey7eOmu63E8OPavvvj9ePTutC3zdPO1tPVwbm01djRudD2x6rItLLaw+7j/OPv46i39+P047q3osX2493FqLL8xuDEotfhwPnj+uP946nM8+O+08OxtO3x4/Lj+OO60MPG89T+4+C9p+Sm' $Zint_dll &= '5PPRo+Sp5PfItM+o5K7k5cK0tvK9ouTpuqrkrOT9tt7WsuSt5KHk7rvdzaLHycX3waTks8esvb29peTH1+Kyq+TDvK/k67uw5KjFseTj1aO/uuS35LvkveTWxsa6y8ChuLTkodSjuv69vOS/zfnE+8/myb/T0c+z5LjkueTpzM7M1MC15LDBtuTQzsG707XzyKe9x9WsyaK4yuTM5MTRutKtutS6w+Tttc3XwOT9z7/k3MHKzOfK18TUzMjkx+TB5MTkrbXZ08bk+dLjtLS77sm+tOy7zdHtzLXt5ceo1Mvk1dfC5KW9xeTm08nk+Mm+5OXT/sfJtvzUs7LX5MLOzeS8ztu41uTKv87T7MPIxdjkxM3P5NTk1eT+uubPv9XS5NDkzuTlzarKo8CmvdPkyLjn5LTU2+Tvwenk59Lf5ODkqs/dy9rk0eTl5NzI4+TnxOLk4eT8s+jk4bXM1+bkrLvS18/M+Ovk5Pa5zdbZ5Nzk+sLe5MvCxMDQwvWxsszOte/kr8bhxvXkqcLswN3R7uSuxO3k9uT05P7C3eTw5P7KxNXx5PrR6+Ts5PLkq87LxbHHusLq5MrBtsyxs/vk8+T65P3k/OTOs7qz9+T55Pjk7MW9wOjUouXEsKTlo+WkvKXloeX+5PSxqOWp5ablp+Wq5dnGq+Wt5azlr+Wu5eC5sOWx5fC74ezww8a10rvpwe7UxL7G19bU07K+7MHqr8K2tNfRtLOyyLu/wOzL1r/swezF7Oa+v8zaxbytCP////++xuz+scTsqNXjtcLstsHjs8PsuMvDwP7M0sHI7Oa608Dy1szRvr+zt9XJx+ziu8zM/b3IyKnP6c3rxem3ydG4usnsyuzAu8vs4uy6sdm3ub3M7ObRzey7yNHs0+zNu+W8z+y3ybrD4+zV1dDs89bS7M7s1OzV7L/JqM/c0KzR28jW7PXO7Mra7NnsvrDX7Njs5Oy8yMfB3Ozg0dvs79Td7Mbb3uyssd/s4Oym' $Zint_dll &= '18DFvOuusPS+uLiv0taw+bWz2KzL3eOsxuawxsW567rru+vA0aPF8uqyxLXEzsDz6sHE787w6vTq/Mmjx9jM/s716vbqrM/nwPfqv7b46vnq+ur76vHqrsjr4bi37OHt4bTX7uHv4czT8eHxv/Dh0rW3sfPh8uH8uvTht7nRvvzE3brGvfXh9+HAtsHPqMr24fjV/NP44fzh+eH64erA/uGh4sfA++H94aXi1MGj4qji/rKi4s3DwrKn4qbipOKp4qviydDt1qjDrOLXz67i77rg6a3iquKru7PUsOKv4uHpseKy4rPiocy04rXi/tDKwvHT9c3g5+Hnwb7qwuTn4+fmzbXD4ue3u9bP4cHp5+jn9Oejsurn5ufs5+vnusnk1eXnqbfn5+7n8+fp1u3n8ufx5+Cw9efyx8XA7cDwwfDn9uf2y6LooejB1/rn+ef75/fn/uf95/zn1cHZx/3Fw8Xtx6Popuil6Kfo97r456To8Miqyano5bn+0ajoquit6K7op8Gv6LDorOi06Kvosei16LLos+i36Lboz7ms8K3wsMbqsL/I383NzrHqsuq/xsm0s+rn1fndtOq16rbqyriw3/XJ8Mz6yfvJw9Omy6a4rvDCsbjl78zJ09e86snntdDE6bWu7q273uev7qmzsu6x7ue9sO63zs/F9MHO27Pu89DUwujGrLe07uuz+7u17tzntu6uveLx6MrJ0trw2/Dc8MbB7bjOvt7wscXd8PHR4PDMsOq939Lf8K+06Lfm8OXwo8bh8OLww7Tj8O7V28zSvrK86PDn8OTwobKi1rjTt76syOrw99HM1tu66fC7trTNpsahwevw7vDt8PDw7PC+u+/wtczy8NWz1LHz8PTw9vDhtPHw9/D68Pjw9fD98Pnw/PD+8KHxwc6k8aPx9sH78N3K8bTxsbHMpvGn8azxztWp8bPIovGr8ajxpfGq8amwrfGv8bHxsPGu8aLRsvGz8e+5x7XXsNmw7dTE' $Zint_dll &= 'tdS9yrun8N64qPCosKnw7s2q8KvwpMbl1uTx5fHzw9vT0dboxa/T5tLB7ruwtdXO0eC80Lr4v8e4wbXMxaLKy8PC7r/Eorbs7aTDsdbgz+/tzsXctqHK7e3w7fHtvMO0v+7t9O3y7ebV38Pz7fbto9Wj0fXt0MP37fS/7L747ffM29HF1/bV/O377fnt+u397aa+r8uh7r22ou7AxP7t3r3HssO2pe662KPupu7pw/Kzp+6k7rnPqO73wqnuqu6r3rPGxsf11sm1ssur7qvNrO6w1a3uxPbH26O0rMPm8bjK09Kq1vLv2L7DvfPvzLarsK/Ktu237fnOr7fzv7jt68Kwybnt9sazv7zt+MXQ0anXuu277eLRv+3A7cTtyO3G7c7t6NXJ7cftvu3pxcbG6cnS1MHtwu3D7cXt+cChtOi50O3R7crtz+34zrbLzO3N7fXP0u3ywbLTy+23yO+88MXW7e+1tcKtsOnLrrHU7evN4rXV7dPt1+36tdjt2e3c7cyx9sXuvNrtvMzqstvt68TFtPWw3+3awOi0zcXd7cS/3u2lxODt4e3j7dfBx7u4veLt5O3m7eXt5+2+yurs8cDnyevs7sbs7O3G7ezw7ObX8+zx7O7s7+yj1/HJ7sv07PLs6c/27LHGwLz17Lu19rv37PfZ+727wvjs+eyjuPrs++z87O3TrtjrwN3HzLrj0L3Lus3RuPyx78fW1sa/68P179jD4tf379Oz2Mft0cjW+O/27/27xrPVvcbS4Luhz/zv++/578yz1Mmwy/7v3rDJ1v3v7bPV9sjOovCh8L612rz8u+W4wsSj8OvLpvCo0b++7se28bfx1b+ptLjxu83Ux63VufG68c/HpNLP1rvx0b2wtL2+3LTRzt+/vfH6v7zxv/G+8cDxwfH+waLB+sq+1bq+ub7C1aK/r8218d+9y7bx1sPzxPPNuMbzx/PKsMXzyfPxy8vzptDKscjzz/PRtdfz0vPU89Pz+7e/' $Zint_dll &= 'sc7zyvPatdDz0fPV883z47z9wdbz2vPM88i17r3c86S38L/+1rLN8LTfstjz2fO4yd3z3vPh89/z4/Pi89vz6r/vs+DzqcfyvOvzv7nk862y/rvjy+3z6fPcue7z5fPm8+rz4cLs8+/z6PP9vOTP8PPn8/LzrdeqxvPz8fOowt249fP089u09vP38/jzusDpwPHF+/P689i0/vP58/zz/fOh9KP0ybui9KT0vrKm9KX0rrzXw+HZ4MDM9NHX27fO9KPBycbWtLPV0PTP9NH02svS9MHU4Nbgt7jBu8HT9Ky+4rTU9NX0q77W9Nv01/Ta9P262PTZ9OK4x8zc9Nqy08Pj1Le/3fS0xen0tc/JztjL98v0vc/X28D10Or06/Ts9OP3sbft9OvX7vT55sC++ubsuvvmy8/85rzUtrz95v7mzbzSyLPOoee/tKLntMnZuMnE3dfawte3vdbGzsS3psWj59/PpOel56bnt8Hp1/DJuM+v1tXWp+ftsKjnqefcye/Srb6q5/Ow3sjhvavnxsis5+a7+Lik0a3n58L4vsq9s82u56/n7r7l0OfL0MzMvLDnqLz30LHn+NCy57PnwrS057Xn/smszuDDt+fBsfGzuOe559vXwNW658zCute757znvefqvOXDwsC+57/nqbzA58HntufQtsLnw+fE57q73rXGwuCxxee11Mbnv7jI58fn7LfJ5/iyyufL58znzefO58/n0Oen0/XL0efS59Pn1OfJydXn1ufX59jn2efJvdrnvvPXuLHIv/PA88Hz3rn4zejYsbrewrfuo7e57rju1bC77tbV79fD1r3u8Mq87r7uwO6/7vLRvMfAw+G458HG9N/Qx/Tbz7rIyPTJ9Mr0y/T62f648eXw0+D0zM7hs7Tx7tLh9OjP4vTMx9S15LTk9OP05fTm9Of0srq/sOj0rbft0qvSz8C8v6Pr39XI6vPx+Lajy83E5/Ho8fu46fHEusXU0rDq8evx7PHt' $Zint_dll &= '8e7x7/Hx8fDx1cXy8fq29PGumgj/////0sfeysvcs6K1orn0xPXx9vHEwfvBsNb38fjxqsG4xtu++fHPtPrxsu2x7eDL3tLBy9jV4sjfwKG8weuk0OLWx7bYuMDrzri/66azybmr1vS3yrfnvL63xuvH67mwz7/F6/3TyOvJ6863wuvE6/bJ19bN1bLQz+u4ztDrqLWzsdLrpczWxdPr0evfxc7rpMrV6/uw+rq32OPxyuvL68zrzevW68Dm2evov8jS1+vc6+y42Ou6vdjQt7Dd69zErNbgtPbCubza69vr4NTqxtTE3+unxfXZsbLk68W94uvj66y40c3l6+Hrs8GixvPM5uuwwLjS5+uvuK246Ou7x/PN6uvr6+3ryNDy6+7r8ev5yPzR7Ovp67m42c/lxO/r8OvazMjN8rD26/XrsrLguPfr7LHFzKTEpc/566Ls8sX668XJ3+L+687NoezbsbfT3NL96/vrvLOw6tTXq/T0s8HWwtbp1cq+p/So0qj0qfSq9Mu+39PgyeHJwvPmyvLMtuK0y+jO29at9K70r/Sy9L26s/TjsLD0sfSivdWytvS39Oa2sLLPz7T0rLS19Lj0ufSnzbr0u/S89NLLvfS+9L/03vS8wei8q8ne0fXls9zV0rTcrLC13Nq9udzC2Lfc89PWybrctty73KLDvNzF3L3c386l1s/czdzS3Oa9q8K43Mvczty+3NK3xbDH3L7Qwdyou7y3zNzG3L/c28e/0cDcytzQ3K3OwtzD3MjcydzUstHc1cu31Nvc39ymzObc58Pc3MG/2dz6sLa55dzT3MTc1tz0yOC/u8m9saLT2tzV3LvG3tzC16/DtrfRx6nD4tzY3Ovc1Nzd3KW+19zg3OPc5Nz43OHcot3n3Ou8xLSjw+ey+tzy3O/c/Nzu3PDS6LLXyOPI+9zt3Pfc9dyjvvTc3bLz3Pa86NzEu/PA1Lzp3Orc8dz23PnctLXZyOe7/tz93KvTod2j' $Zint_dll &= '3aXd8dKk3abdp92p0sm6qd223bHdtN2w3c7G8sCvyezcrt233fDcr9243azdud2z3a3dqsSo3bPAq8Gq3avdst3xu7XdqNO63bvdp8PS3bzd0d29udW++r7Kusrdxd2/3cuyw93L3aSy1d2+3dDG0N3U3eLBxrfO3c/dxN293c3d0czJ3cLdyMO8xq7OzN3I3cHdxt3cwqnTqtPT3fTP+Mjm3cfd4N3kwuHd19341tnd2N3wuNbdz8attuLd+brh1Ofd0LTa3fu/493f3d3d2bXb3dzd3t2vveTd5d313cnD4svy3eHY0cb03fTV893w3ezd793o3e7Q2Mju3end6t3yy+3dzbG2wLu88d333fbd693uxfvdpN6j3vjd78P7wuHVtc793cyy6MTfyr7H+t383f7dot6qsM6xrN6m3ra978ih3qXeqd6o3qferd7M1LPeqt6u3tnAobG23rHest6m0bXer96w3r3QtN7tyrneuN633rve5b3YsurDut66xbze2cyqt+XUvd6/3qLEwd6+3sDeutXC3q7yoruywrDFx8Kv8unQ3dO96+azsPKx8q3K57qz8rXytPLky7rPsvK0ys/S7MLDzrjy9rC38r7yz7LB0bryvPLp1LvytvK/8r3yufLH8sTyxvLK8sLywPLF8vvWwfL5x9/JyPLGubC1w/LJ8tDy1vLXu9Xy3M3r1tLy1PLyuMvyzvL5wt3VzPLN8s/y0/LZ8rzT6rbxyuS31/LY8try3fLb8tzy0dHR8snNz86p1uPy28Pg8q/A7PLe8uHy6PLi8ufy5vLp8t/y5PLq8qzT5fL1svLyq9D18si7+fLw8vby+PL68vPy8fL7uvu17/L38u3y7vLr8qbzo/Oi8/Ty2sj78qXz+MP98qfzqfOk8/zyq/Oq893CrvOw86HzsfOs86/z/vKt87LztPOo87PztfO30Ljz+dm587fz5Mi287rzu/PAtMPuvPO986rRrPTG0NDQ3NHO' $Zint_dll &= 'z9a9w9HiuunhwtLC8bmy7bHD8cDJxLPy2aXLxPHU1sXxwPTG8azUx/HAsMH0wvT8tNvFu8zk0ODNyPHz2buxrs+kuMrxy/HDstHBsNfJ8czxzvH22eHSo9TD9LnIxPTN8c/x47/Q8dTx1vHR8dHJ4cXjwvy50/HV8dO52/HWuv2w2fHY8dLx2vHX8ezIys3d8b3l3PHe8d/x5c/F9PO94PHh8ffOqtL78bK4+7zbuea52cPTyujqwMD1vunq6urr6uzq7eru6u/qx7379f31/vX89eK9ofaltKL2o/ay7NTR6tmk9rrustX+09zMxMrA5aX2r76pxqXaxryptry4z8ilvKbap9rWzMPIqNr9xrXR6dK20ce8sr3ku6naqtrI0ava7dDvttvCz8vtt+jJw7f3vqTWrNqt2sDG59e2yqnV38vv1a7a39bKtLDar9rr0rHastqz2tTKtNqryrXattrPs+/Wt9qwu661uNq52u65r9Ho0rraw7jqz++yu9q82uu93M7v073a886+2tXT5bu/2rXL0MvA2uvH7tbB2rXFwbbC2sy3zr/D2sTarcvF2ve1xtrCwbvXx9q4zOrSscTI2v210bvJ2rPQytrL2r3OzNrN2s7a97LR2s/a6NHQ2tXD0trT2tTa1dq70KXS+bDW2qvH19r3vaHD2NrZ2v3Dt8za2tvavsDXxtza3dq0x97a39rIue27ubb49Pn048259eDr88+/u8C6pdTZ4fT1qrHysvX19/XRuvb1ssP59fj1tLHq1bq4sbnGsvDUzc/csMvV9bvK1re3sMy2xuGxurn81uG5obf6vNrq2+r5zPO53Or7tLPD0bfYut3q9NTe6ta837vf6t7BuMLf1MrX4Orh6uTq4urj6t7Js7jEtuXq6srNyc202eLixebqtcC41+fqrNf8yNPYzdje1PnUxMmu09O44LPiyfb01br39N/X8fSwuNTVz7jwxsOz8vSss73U98f09PP0y8yk' $Zint_dll &= 'yPX049e/xcD1u/XD9cL1utbB9b7UxPXM9c+w+LXJ9cr13MXF9cb1x/XL9eC+yPX6uND10/Xnv/K5vPXN9beoCP/////C+Mz5vM71z/XR9eW20vXV9b311PW70+yzpMzW9df14b7Y9d/M2/XIstnX2fXa9dz14vXg9d/13fXh9d715PXl9ePMv+W4teP16PWjzOb15/W+9cSxv/XFteSy7PXp9de27fXq9ev12rTq1O71+bPv9fH18PXy9fP17cmqufvH47bJzKbqtbP+1Oy5+dDt6arX7unWwu3I5Lrv6fDp8enh1vLp8+n16fTp9un36eHH+OnY1Pnpzr366fvpz7386ai4vsH96bKx1Lv1uf7poeqi6qPq+LetvOTKzuCv1L3Pt9Wk6t7VperB0Ly5x7TZsbHA5rHnseixvbPoyMHl37HJwe+0qMfY0/nGuNH9ufXCrdPL1Py9wuW1t8Plubvi1fi9ttSlzqzB2bP2zMblxOXI5crlx+XPtcjG/LXF5fbKyeXUw8Wxo7y318vNzcvKytPMzOXL5ebEodG30c3l0OW4zfDWz+Xdtb7N0eW6tqjN5LnFytGz2cvs1NLl6rfO5dXl/rTW5dPl1OXd0t/CxrHi09227MvX5fbT6bH0ttrl2OXZ5cC1xdLc5d7l3eWyx6PS2+Xi1NrV4OXx1+Hl3LH70eLl5OXj5eXl2NLLtd/n9dr42vba99r62s/Qx8TusLDQ+drK06q6otvxx/za+9rbyf3aodve1/7a2sGl2/TTp9uk26jbvL3JwKPbptuj1qnbrduu26zbwrqkv6vbqtvH1L+yr9v5ubDbu7Omtby2sdv1trLbybG027Pbtdu327bbuNu527rbz9P69PXHw9fkxfz0/fT79Ma+79DTt83Uqsyi9aH1qLr+9NbLpPXSwOqzqs2l9aP1tL2o9an1zb24w+G/4cuq9ab1p/XwxKz1vLTt19e0q/Wu9a31r/XR0NHDqciw9bH1svWz' $Zint_dll &= '9bT1tfW39bb1uPXJstTTzcrvwNjWsNK/wfC9qrj4vMb2x/bI9sn2yvbM9sv26ffN9s72xO7F7sbu69Wktsjux+7J7srupcfL7szusLf2tc3uz+7O7sa40O7R7tLu27aus9PWxsS1sda40+7U7r/U1cf7vtnOs7nW7tXu2O7X7qXF2e7a7q7H2+6vx9zup7Ld7t7u3+7g7uHu6tfi7uPu2Lzk7svT+syssuXB5e6mx63D5u7n7uju6e7q7uvu7O7t7u7u7+7w7vHu8u707vPu9e6tzcHC9u737vjuodX57rPP+u777vzu/e6h7/7uou/1uPrDo++k78K9v9L5sqXvpu+n7/jSqO/91qnvzMaq76vvtMGs7/rP+Muu763v+rP4ua/vsO/i0LHvsu/mt7/Qs++077Xv8cjgzLbvt++477nvuu/g1bvv7bSqw7zvve++77/v/c7A7+DCuLS21/W9x8/D78Hvwu/E76e2/LzivszDxe/G78fvz+/I78nvyu/Cx/HvzbbL78zvze/Gtr7Dzu/Q79Hv0u/y1dPv98TU7/jE1e/W7+S497DX79jv2e/a79vv3O/d797vtb7h79/v4O/i7+PvzcHk7+Xv5u/n7+jv6e/q7+vv7O/YwO3vrcHu7+/v8O/iz6SzxcPF48HJxuPVscrOs7TyyMfj0M/I4+S8yePK48bDotXWxOu5xc7L4/bDzOOnt/O40rrN487jxNTP49Djy9HR49Lj0+PU49bR1eP7srvA1uOrwNfj2OPZ49rj2+O3uOLa07bk2uPa5truyOXawLf00fXS89XXvejX6Nrn2qKw083p2r24yry9wqTCwrPq2qrCsMS1vd7P69rCyd2x7Nq4trrU/bPt2snU1c/jxe7a79rw2urB1czdz+fTocLx2uXL8trmy/7S9Ljz2q+wts/P1e3L9NrE46XBv/bA9sH20cS4yOPR29DF0a+8zbn078a0utPC9vuzw/bxtcX26tOn9qnRqfao' $Zint_dll &= '9uPB18Cise3O6NCr9vbPqvbw1az2ucP0u672rfbexNjBqsu8z6/2sPax9rbC1LD5xbL24Mem9ri+sr7ltce3v7/Sw+bDzNjvuPm9pdHQsLD3sfes0LCwsvez97T3ysfPvrf3tvfesbX3uPe596TOzcirurjouei66MK+9NLP1NjJs9KlturH/PHuz7PL69Dv5+fNy7nZtv3x5LDMy/7xpNStwuzBxMaxvqHy1byi8qPypPLD0rXGx82l8rHTxb/izKbyp/LV0e62qPKp8t+1qvKr8vyyrPKt8qfI57ep7Krsq+ys7K7Greyu7Mm3s8q44s/30PfNstH30/fS97viory84r3ivuK/4sDiweK5t/vSpL3OyqWxx8vC4vy2xMjD4si9/bHE4va2xeLZxMbi2s/ducfiocDI4vayyeLzwcriy+L4wszizeLO4tfKuNjl2ePPpfCw3O3CptTUzbHR27P9x7Wyv8Lg5rvK4ebi5tS+4+ak19XN5ebdvOTm5ubn5u7Cvr3o5ubCp7rp5urm0rPp0aW/6+bvxuzm7ebu5q3G7+anyfDm8eby5rnl8+b05uLC9eb25ujW9+b45se5u/e69773vPehur/3wPfC98H3xPfD98X3xvfH9+jL37jU99X31vfY99r31/fb99n319fc99333vff9+D3y9uq2Pfl7bn9v+q7yffHxsj3yvfM98v3zfe6zs73p8Tj08/2s8LQ9tH20vbT9tT21varsdf22PbZ9tr22/bc9t323vbKz9/24Pbh9uL24/bk9vDA5fbm9uf26Pbp9ur26/bs9u327vbv9vD28fby9vP29PaovvX29vb39vj2+sj59vr2+/b89v32/vah96L3o/ek96X3pven96j37rGp96r3q/es963328Gu96/38cSv8Ka8sPD5w7jFu9Gx8LLws/C08LXwvNHs0bfwtvCn1NLNuPC68Lnwu/C88Ou4vfDour7wv/DpvsDw7LbB8MLww/DE' $Zint_dll &= '8LXIxfDG8Mfw9MXI8MnwyvC998vwzPDN8M7wz/DXutDw0fDS8NPw1PDV8Nbw2PCl09fw2fC69bnC5Pfl9+b35/fo97TC6vfr9/PC8PTv9OnC4ffi98a75NnyyujApPDauq3HrMTs9+337vfw9+/38ff09/P38vf19/b36e3q7evtvPa99r72pra+2MS5u9ix3PPK9/f49/n3+/f698ex/Pf99/7368a07N2zs/a09uTBtfa29rf2uPa59rr2o8i79vrBqLno7eq539mho6Kjo6PnoaWjpqOno6gAo6mjqqOro6wAo62jrqOvo7AAo7GjsqOzo7QAo7WjtqO3o7gAo7mjuqO7o7wAo72jvqO/o8AAo8GjwqPDo8QAo8WjxqPHo8gAo8mjyqPLo8wAo82jzqPPo9AAo9Gj0qPTo9SAmk9gPXo9ij2aDTCqPbo9yj3aDTDqPfo9Cj4aHjAqPjo+Sj4q6QkAo+ej6KPpo+oAo+uj7KPto+4Ao++j8KPxo/IAo/Oj9KP1o/YAo/ej+KP5o/oAo/uj/KP9o6tBoQIUEOo/SjrqBf8aAZABAwADAAUkAFRg7A4GAAM3DQAAjBYTAAIAFAACCAgWAAAI71hAIGYYHMAACBkcwPABQAYaAFUVISzA8CSAMAIjHMDwHP7/MgAm+wMfWzD7A89aQAwkIABABfD/T8YAdKoMQMgAlExQyQaVAgBgM5sAQP7k0FCDAMoDDM+BYFsOQL7l0ATAwP8PN9sVDPPgOw9AAAxvEEgLIECGCwAQ+gQMAA9SjAAAEHHMBccAMzDAzRzAQALOACAxAM8swPAEBADQHADI8Dz/A9oA8P/mpp0D9i0CAgERAQw/8K/yL8EAIgwgwwBCDAH/D05cwPAAAwAAUAEMAFIBwMhjVzzAcGAAWRzAcAAFAFsBL/9oARj7AG88wDD+/36qbQCODODJAK4M4KsQ8AAgzAXRLBAOygDxDBAg8P8fASDwh5AhAP5PAsgCNAL/' $Zint_dll &= 'Az4CAEAADI/yP4AksPhnifD///9TAnt/YAK0PWkCVe90Aqj7fgJd84kCQwKNAgtAkQJA+5kCPo2iAvd7rwIsjLUC/27CAvrjzQI6HdUC7ajeAgLm5AKDz+0C9Yz2AlU1/gJI4AMDq/8QA7mSGANZ2CADGKsnA5IoLAPp1zcDIIA5AzjEPwOD9UgDSudRAwpFVgMAsFkDFJdgA2J3aQMAVGwDiNFyAyAUdQMgEHcDwMh8AyEhgAMAAIADqBOGAwQMiQMAgIoDQASMA8BwkQMoCJQDwAiXAwQAmAMCAJkDAICaA3srpANyFKoDJHmxA/s7vQMnM8UD5BrMAzWY0wPvON0D0ZrlAwIo6AMTqO4Dab/5A89lAwTGLwwEEWsTBMmvHQQPNCQEU1AqBKKGMAQEoDMEBgE2BAnoPAQPP0YEDsBLBIgKTwRFgVQEEABVBAHGWgRhoWAE4SZnBEtEbQQAznIEqsd7BO7UhQTfypAEu4WZBHQ6oQQgpaYEbEOtBECIsAQGP7gE0ovABHn/zQTvO9kEWvfkBO/o7wTL+/sENlsEBUkNCgX9GxUFVAEZBe45IwVV2CsFdS40Bdi/PwUaqUYF1/NSBb/2XwXgZ2cFDLRtBcKCcgUTCHYFndR/BYvQhgVaBowFYRCQBfJ0mQXgWaAFn4+rBRKzsgWAALMFqmq7BTAywAVesMgFep3SBaxg2AUD098FAMnjBZgw6AVWiu8FAHDyBZAT9wUUH/4FQhgCBmDABgYIAAcGCIAJBoAQCwYABAwGkOwTBhcoGQYz5iIGWAcoBgCQKgYI9zIGCU44BoX0QAaD/EkGU69TBsgYWAZ8GF8GDAhiBt9qbQYUAXAGDMh1BjSnfQYRoIEGECeGBsUojAYiQpAGEwSUBiEAlgYQMJkGEkGdBiAYoAYAQKEGKwKmBgzGrAYAA64GABCvBiIAsQYiALMGEFi3BkkCuwaUoMAGcJbHBrDu0AaSF9cGlsvgBvIF5wYlAOoG' $Zint_dll &= 'WCPwBt4l+QbMQv8GOM8IBwRKDAdADA8HnzUZBygRHQcAiiAH+hMpBwqRLgcpAjIHVhA3B0EGOwcgBD0HhARAB/CERgcAAEYHBAxJBwAESgcsQU8HBhJTB1QRWAdLCl4HAgBfBwACYAfAAGIHAABiB5QAZQcBAGYHu79zB3wWewcrJIEHu5uMB6h/lgd/DJ8HeeOpB/QQrwcN4LUHMkG6BwGfwQdShscHcjXPB7QQ1AcS/94HJ8/oByNC7QdrwPQHAob4BwYx/QfTHwcIDDoNCKqhFAgSCBcIBAIZCHIlIAgBCCIIzEAnCFBIKwjQYjEIEGA0CIAcOAgAKTsIAJo/CBAAQAgEAEEIACJDCAAAQwiAAEQIICBGCABoSQjmy1MInmBaCG6RYghzP20IwGBxCII5dwg0EHsIMEh/CAYAgQhcvYsI0YySCPvWngjhIKMI6EOqCAAGrAhOCLEIAAWzCNDEuQgfjcIIqonJCOGm0QgCFtUIAQDWCO0h3ghWNuYIixrtCLcf+AilE/8IAmUECaAwCAl4shAJxyMYCZNsIAki6ScJf+QyCXQ6Ognjj0QJIJhICQ4oTQklJlMJnL9eCUm/aAkYMm0JVKx0CUm5fAkWGYIJYAyGCSK1jQnB+5cJWQadCUPjpQkghKgJ2QiuCQCArwkAVbMJIiC2CYQBuQmhALwJAEi+CRAgwAmAE8QJgEDGCQQNygkWAM0JQADOCSCA0AlA/dgJ543iCTZU6QmY4O8Ji3v5CR4J/wnI/gkKSdIQChEGFArujR4KNxkmCiK6LQr0dzgK3Z9ECuzzTwra8FgKhkNeCkLsZQo/jW8KBCZzCmz6fQohwIEKjmKICsIMjQqF15YKRQGaCq13pQqZVa0KUOKzCkVAtwoLJr0KVKHDCieYygoZWNAKQzTWChCk2gryBeEKFEHlCoAi6AoAB+sKtADvCmZC9QoQcvoKoRUACyVgBQuFQQoLVAANCwAADQsBAg8LBAERCyDI' $Zint_dll &= 'FQtwyx0LIJMiC2JqKQtMGC4LlQAyC4AYNQuLmj0LsqpFCwEySQt62FILxABVC+XzYAvDBGULTdRtCziicwuhoXkLclB/CwqYhAv8hIwLUsGSC9FEmAuUEJwLwiCgC4BBowsQQqYLAACmCwA6qgtAAqwLndK1CwEvuwuxqMILQL3JCzIkzgtN09cLS9DeCyOn5gut0O4LkgrzC6F1+wusrQQM6QEKDBqADgwfdxkMJZIfDBugJQyh3y8MyiA0DAIGNwyMcz8Mf1dLDDsAUAz/C1sM0ABeDGqAYwyIAGUMxKFrDCkAbgwFKnMMJAV3DAlAegwjFoAMImiFDAWAiAwRIIsMEaKQDAQAkQyQZJYMSUibDIIToAzVI6gMMBmtDIApsQySCLUMAlS5DBGIvQwBIL8MBKDCDAAEwwyAgcYMAoXKDCJgzgyQANAMAQvUDCIA1gwCEtkMEUDcDIMA3wwBGuMMAADjDAAA4wwAAOMMAADjDAAA4wwAAOMMAADjDJ8A6QyERu4MyBLzDAAC9Az8BPsMABr+DN4uCA1MDA0NAgQPDbiAFA0mqBoN/AoiDQKMJg0oIioN4KAvDXuPOg3Wx0QNNSFKDccGUQ2x+FoNEwdgDVViZw1uk3ANGYp2DfpugQ0O+4sNMBaQDflImA0vzaIN632uDZJYtA2ETroNoEy/DS56yA3q7dMNHlbbDUnG4g2QEeYNJFPsDTro9A3bzwAOJIEEDvEYCw5CYxEOU1gYDooaHg4gdCMO0yQqDjuqMw4UBTcOGGA7DliJQQ4ASEMOAMBFDmiCSg4BkU4OpIRTDtYsWw6GiGAOusRoDncDcA4QAnIORIJ2DjgAeQ4RroAOSkCEDsAoiA4AUYsORGCPDhQVlA4Qc5oOABCbDoIAnQ5IAqAOBQKjDgZApg4DwKoOAACqDgAAqg4CDK0OCACuDiACsA4AkLIOAECzDgC4tw5h0b4OIUbDDnQyyg4A+M8OijvXDg8F3Q4Ai+EO' $Zint_dll &= '0LvqDoAi7Q4ABu8OaQf2DkCA+A5DAPsOIFT/BP//////DgBQAQ/QQQYPDCULDxCEDg8QgxIPAREVDygCGA8IQBoPMAAcD6FAIA8AAiEPQAAiDwAgIw8AFSYP46swD4AxNA9EqjoPxsJBDyTGRw8TrE4PBIBQDwCwUw/RA1kPHmFgD4VCZQ8D820Pnx13DwpEew/oeIMPJl6LD5LDkg8AIJMPhQCWDwGwmg8AQJsPkEqgD0KIpA8EyqkPjQyvDwWntg8DQroPoSK/DwQAwA9ohsYPAQzJD2RV0A95ENYPAgDXD6De3w8AIOAPwUDkD4tI6g8BUO0PgAPwDwAE8Q8AAPEPBFD0D13A+w/QgP8PEKACEAqXCRAguxAQr00aECHZIRAQHiYQYAQpEBSDLhBIiDIQ1qY7EDvYRBA/c08QvCdYEHRJXxDcDWcQE5JtECsUcxChi3oQdS6DEDnRixAJMI8QUFCTEAiIlhAAaZoQ1EmhEEoCpRAQQKcQFoCrEGTlsxDXibwQIMC/EBZTxhCSK80QAIbQEEWj1xDgFd0QiwDhEAMM5RBuGe0QAOLxEDFw9xAGgPoQpRYBESmoBxEAIAgRgBgLEax6FBFI4RoRBzIgEda1KhHoMjERkV86EaFQPxHlIEURAHxKEYAQTBGAclERip1ZEaoAXREfQmQRIg5pETECbREAEW8RlARzESIAdREIQHcREAB4ERBcfRFDA4IRyPyLEaWhkhGABZURM4SbEQAEnBGAAJ0RCG6jEUsqqhEmga8R2Kq3EQEpuxFNaMIRkETGEQkAyBGIus8RQADQEYIA0hEAANIR0YfaEVsh4RHmseoRYTHwEQiA8hEACPMRQML3EWmg/REApgESWI0IEjJKDhJxXRcSClUdEqCaIxJXLSwSBUAvEqZKNhIhIDkSsTA/EsY/SRISAUwSwhBQEgomVRJiRFoSglBeEoCYYhJAgGQSwARnEgCBaRIDIGwSAABsEgAAbBIYOHES' $Zint_dll &= 'AAJyEqbxexI0RIASDnKHEqI1jhLgkpQSAYGXEgAJmRIABJoSAACaEoWInxIAAJ8SAACfEgAAnxIAQKASgAChEgAAoRIAAKESQECjEgAAoxIAAKMSAACjEgAAoxIAAKMSAACjEgAAoxIAAKMSAAikEoIAphIAAKYSAACmEgAAphIEAKcSAIipEv+/uBLv58US///VEr//5BLv7/IS//0BE//7EBP+vx4T//8uE38FNxM0ADoTs4VCEwZHSBMWQk0TAlRRExDkVhOSgFoTBbNhEyJUZhMwgWoTY0JwEwsYdRN7OH4T9ROHE+UHjxPqqZgTTDyfExQFoxMABqUTAoCnE9karxNIvbcTN+7CE5b0yxNfcNQTwH7cE7K/5xNfNfETROb4E19FARQAkAMURkEIFEAdDRQ7BhQUoWIaFBP+JBQFhSkUAjkuFEgFMhQIDDUUTxQ8FAAAPBSINEEUGFhGFHcwThQV2FUUDr1eFPtLaRSQim4UAIVxFADBdBQd5n0UFO2FFIazjRRy/5kUm2OiFJL9rBS+2bcUe4i/FJIKxBT+09AUshzXFIC53RR6F+YUyYLsFBfc9RT7/wQVgDkJFWBCDRUMWRMVAQ8YFd83JBWjlCsVULExFSMGNhUHIzwVWvhFFQIxSRXwAU4VAjFSFUAAUxWCHlkVCjpfFWoFZRWEW2wVgBJvFQKAcRUUp3gVEiZ9FUuggxVpEIgVAZCLFQAQjBWKhJEVAhiUFYA/mxUIB58VQEKiFRABpBUUTqoVsICuFQAYsBUQxbUVgQK4FQKCuxUpEL8VEALBFQCIwxUgAMQVQgDGFYACyBUAEcoVAODNFRNE0hUEWNYVAv7eFQc85RUoMOkVmJfxFXME9xXRzgAWE8sIFhBiDBYfQxQWjSccFqxVJBYuQioWksgwFoBTNRaIAjgWOUA9FlF4RBYsKUoWiIBNFgC5UhYoJFYWQQxaFg4IXhYhRGIWAEJkFggEZhZoCGoWBgBsFgQS' $Zint_dll &= 'bxYxMHQWkAJ3Fj5bgRaF4IcWNimOFkQQkRYUKJUWghCYFmZCnhY0g6QWPAGpFhtTsRYEBLMWDQ65FiIMvRZRAMAWEgDCFgDAxBZAAMUWAIjHFkoAyhYAAMoWAADKFgAAyhb239cWR1TeFmiI4xYIAOQWgQDmFgAA5hYAAOYWAEDnFgAB6BYAAOgWAADoFgAC6RYABusWCADsFgAA7BYAAOwWAADsFgAA7BYAAOwWAADsFoAA7RYAAO0WQADuFgAA7hYAAO4WAADuFkAQ8BYAAPAWAADwFgAA8Bb/7/8W/fcNF3//HBf+/ysX//s6F///Shf//VkX/79oF///eBf/AIAXwhKFFyAEhxcGDIsXCAePFyQWlBcQAZYXAACWFwAAlhcAAJYXAACWFwAAlhcAAJYXAACWFwDgmRf+/6gX//+4F///yBd5f9QX3yjdF/kA4xcyDOgXEoDrFwgA7Bc61fUXWNj8F8LsBBgYnQsYqC8TGCCWGBgQ4BwYDNYjGCImKBiXDzEYBgI0GECyORhVkD8YooBDGBFQRxgAmEoYBARMGABATRgAAE0YAABNGAAATRgAAE0YAABNGAAATRgAAE0YAABNGAAATRjA+1YY//9mGP7vdBj734IYCAuGGENijBi2QZMYO/ufGHRvqRiJI68Yf667GNfsxhhH4M0YYFnTGJag2RiPCeAYLGHmGDCg6hgNCe8Yqir2GE7U/hh7TwkZssQQGYs4FxnGqR8ZEGEjGRQAJRkAQicZDIAqGQICLBlI/jUZhWQ7GT7WRRn341EZoDpXGQcMXBkM5ABiGTAEZRmA9gBsGQIQbhkAAIAMDwEB8JYBAATHzAIMABTHAQwQIMfMAQxfADTHAQxEQMfMAQwAWMcBDEhgx5ABBHDHAgwfAISHzAEMhJDHAXkZ4AD/hBm9/pEZ/yD/oQwQm/H39wuQcb7PnPH7v42Q8X+vzgT6Gf8A7wkafv8XGvcA3yUa9/YyGt8A+0Aa/r9O' $Zint_dll &= 'Gk8EgFQaAAAMX/C+BaDx/6em8fefB6Bxb1uoYUCUCKDhhzupUb/jCaARgziqYXmxCqBBDwCrAZZqC6AROcGrAQjQC6CRJEesMS//DKBBAhCtEXBoDaCBLLStMT1eDqCBBJWuAUCyjqBRMATfBgCvwQSgZK9xIrCvgQUA8a8BgiKwYQEQYLCRgLqwQYEB0LDhHAIMAuxDwbCBBnDBAgyPAP4PILLxfwuzsd1v0LNxD0DEBAwABFC04XLstAEYAAbFAwwAErURAIAlxQVTPMAwMABVABuo/2Ab97RrABvzrXYb/wOADBsgAYJswPAZ8IYAG/v/lRv3naEAG8/9rhu/AbYAG8MVvRsnGMMAGwqBxxtCqMwAGwAKzhsIgdEIGwiA0wxQvUEAgIG94TsqviEBA0DeAMDwMZDmG+YAae8bN9z5G/8AawYc/z0THPgA/B4c+fMqHAQIACscAAwByMIB8Pabw+F+XsQB4P89xSHatcUBgP1TxrEArMYBQJjgxsEAKscBAAQwxwGRhscBACHexyGRS8gBUGq4yAGg9cgBAIAmyZEoYMkBUACpyQGo9skRAAEAyjEAINoFAMgAgKMc+R+uHAAAjrIcAQCzHAH+/8Ic///SDAAlzgDyDCDQ8f8HE9EhZAQMv7ACoMIC0eLy4qwUIiUmJwgoKSorPKGzw0PQ4/PzBcIFAAFQAtuIJgiPRfcAGxwdHgwfISIjP0UX5Au0BcDV5fUFtsfXB+CXAOABsAMgBwCgCtAOsBNQCRCgH6AmUC6wBjLQ7/0DCwAoAE8CAJIA2gAxZJAAIKAooDGQO1BGQxAi8BTeSdBACAkAUS2UMFIBkAGQRQtURTUAMcwg2AQgBhAVxQ7CbQCSAHkNAAAPAe0AywCpAACVAWgBOwEOAQThAAkCz2UAWwEAIQGKAkIC+gEAsgFpARoDwgIAagISArkBuQMBTwPlAnsCEfoyAIA+sDbgLhAnUBBS8EjQzwLZDkUAICEjFpUX' $Zint_dll &= 'F0dHkOdn16eXMhEQACQAAAMCBwUKBtrKUYUEBA5LwFMDzkdQoMwAqjgAkMBCCgzwoMoAFAyQwUUTDNChygAnDBDDAAi9ABCoDIDBACAMkBKAohYw+gvBEyQMAMMAPRABPAHPBRMXARYCBCICIQEtLJATIIIjoLQCAxcCTDAwygQETDLAIMAEHQQAIwMiAi8BLgQFOgQ5AQyRARgMgEXCADAM0ANQ0EAAwDCgEZBhYFIQUCIwIyBT8OO6AwAMBgsDGAQXBQAkAiMHLwkAAAA7BzoCDQUMBQkZCgAAnFAgwwEAPwU+BQ0BDAsAGQMYCSUFJAcAMQcwBT0JPANA2A0EcgJzAnQCAHUCdgJ3AngCGHkCeo0Ed0UQfgJ/AAKAAoECggKDAAKEAoUChgKHCAKIAondBtcCcIAVBRICEwIUAhWAJQIXAhgCGQIaAAIbAhwCHQIeAgIfAiACIc0CIwACJAIlAiYCJwACKAKLAtYCbyACEB0GugG7AbwAAb0BvgG/AcAAAcEBwgHDAcQAAcUBxgHHAcgAAckBygHLAcwAAc0BzgEpAowAAtUCbgIPAriAH0lAbAFtAW4BbwIBcAFxAXJHSaB5AAF6AXsBfAHPIAEqtkxALdAm4AAicFuGEBIgEjACEEASUBJgEnACXVlwsQSx8rEE3BcAHYBJ8P///ysCjgLTAmwCDQK2AWcBIAHhAOIA4wDkAOUA5gDnAOgA6QDqAOsA7ADtAO4A7wDwADMBfgHRASwCjwLSAmsCDAK1AWYBHwHgAKkAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgDxADQBfwHSAS0CkALRAmoCCwK0AWUBHgHfAKgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAtwDyADUBgAHTAS4CkQLQAmkCCgKzAWQBHQHeAKcAeABRAFIAUwBUAFUAVgBXAFgAWQBaAIUAuADzADYBgQHUAS8CkgLPAmgCCQKyAWMBHAHdAKYAdwBQ' $Zint_dll &= 'ADEAMgAzADQANQA2ADcAOABbAIYAuQD0ADcBggHVATACkwLOAmcCCAKxAWIBGwHcAKUAdgBPADAAGQAaABsAHAAdAB4AOQBcAIcAugD1ADgBgwHWATEClALNAmYCBwKwAWEBGgHbAKQAdQBOAC8AGAAJAAoACwAMAB8AOgBdAIgAuwD2ADkBhAHXATIClQLMAmUCBgKvAWABGQHaAKMAdABNAC4AFwAIAAEAAgANACAAOwBeAIkAvAD3ADoBhQHYATMClgLLAmQCBQKuAV8BGAHZAKIAcwBMAC0AFgAHAAAAAwAOACEAPABfAIoAvQD4ADsBhgHZATQClwLKAmMCBAKtAV4BFwHYAKEAcgBLACwAFQAGAAUABAAPACIAPQBgAIsAvgD5ADwBhwHaATUCmALJAmICAwKsAV0BFgHXAKAAcQBKACsAFAATABIAEQAQACMAPgBhAIwAvwD6AD0BiAHbATYCmQLIAmECAgKrAVwBFQHWAJ8AcABJACoAKQAoACcAJgAlACQAPwBiAI0AwAD7AD4BiQHcATcCmgLHAmACAQKqAVsBFAHVAJ4AbwBIAEcARgBFAEQAQwBCAEEAQABjAI4AwQD8AD8BigHdATgCmwLGAl8CAAKpAVoBEwHUAJ0AbgBtAGwAawBqAGkAaABnAGYAZQBkAI8AwgD9AEABiwHeATkCnALFAl4C/wGoAVkBEgHTAJwAmwCaAJkAmACXAJYAlQCUAJMAkgCRAJAAwwD+AEEBjAHfAToCnQLEAl0C/gGnAVgBEQHSANEA0ADPAM4AzQDMAMsAygDJAMgAxwDGAMUAxAD/AEIBjQHgATsCngLDAlwC/QGmAVcBEAEPAQ4BDQEMAQsBCgEJAQgBBwEGAQUBBAEDAQIBAQEAAUMBjgHhATwCnwLCAlsC/AGlAVYBVQFUAVMBUgFRAVABTwFOAU0BTAFLAUoBSQFIAUcBRgFFAUQBjwHiAT0CoALBAloC+wGkAaMBogGh' $Zint_dll &= 'AaABnwGeAZ0BnAGbAZoBmQGYAZcBlgGVAZQBkwGSAZEBkAHjAT4CoQLAAlkC+gH5AfgB9wH2AfUB9AHzAfIB8QHwAe8B7gHtAewB6wHqAekB6AHnAeYB5QHkAT8CogK/AlgCVwJWAlUCVAJTAlICUQJQAk8CTgJNAkwCSwJKAkkCSAJHAkYCRQJEAkMCQgJBAkACowK+Ar0CvAK7AroCuQK4ArcCtgK1ArQCswKyArECsAKvAq4CrQKsAqsCqgKpAqgCpwKmAqUCpAIAADAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcgBzdHV2d3h5egAgAEFCQ0RFRgBHSElKS0xNTgBPUFFSU1RVVgBXWFlaIABhYgBjZGVmZ2hpagBrbG1ub3BxcoDcB7LS4sICAAAAgOTEVNUkBOACgMECJAzAEQzlpM0AAKHFQgxFyAA86mzEEQwlxwAeDKDyzUYsBcaCHAEQXMUdf0gNgADRAdETLwAQ/RCcAd8BwRAswSYBUlICrbYTjyClOwEgvhOcTiQFAAw3Ujg5+hMURA4AAF9YTSalhPkQAgMFBwALDRETFx0fJQApKy81Oz1DRyFJTwZx8NHx4UEAwBDCCRAVEZEREQEdEVEVUBQRAAAAERERRURMEQkQgRFFRHhMVJRARYUBwBURURQCEBERFFFkREUkUkQEABEQHUCQLgIBwQK0h0AsUIRAxASFTQNFwEcUEBATLQAVUJAVCQBAQHgQQEQFAABBCISX9e3+DtDb7X3yQ1gBCEStQQBcCbCf+xUAAI0GGHgPQEAAAwAdK/RBgU8C/fz/1yVLggUABMHzOKU0AUAAUfEA/ec6u5+aQRABBFeFQAACQJUSBxAACARAFgYAAB4/QNgTABERACFJBRAQCBABARFCAgAZgBAQBAQURAAAxAthEJhRKBEREADRIVFARAAERIQeBcgAAAMAQQQEQEBk' $Zint_dll &= 'AhTRA0CA1AcBA0W4JQYAyAAO1gtAQEAAF6BVAGEAPhsA+FfbP7D/+/tzRIoK3dvVrTr+eFHisgA2dgRA5TcAVXVuCbBpdQC1JgIQbnAAVRG2D1BkowB95Q+mlhFQUR5gYCMBSy4SQFneABEuIG+xAUQDbgMAmgPGA/MDIgQAUQRmBJcEyAQA+wQvBWQFmgUA0QXpBSEGXAYAlgbRBg0HSwcAiQfIB+UHJggAZwiqCO4IMwkAeQnACeAJKAoAcQq9CggLVAsAoQvwCz8MYwwAtAwGDVgNrA0AAQ5XDq4O1g4aLg8V7gvwLWmRY3IAVKr+BiDn9wCHrgWw6qcA0aKeEbDfGpASEGRiAGKItQGXAbRWEtAesKAioGIQAGtWFqBpDADiAAIGAywDUQN4AAOhA7ID2wMEAAQvBFsEiAS0AATjBPcEJQVYAgWIBbkF7cUBVQAGigahBtgGDwAHSAeAB7sH9QAHMAhMCIgIxQAIBQlECYQJxQAJCApJCmcKrAAK8Ao2C3wLwwALCwxUDHYMwCoMEUUEInYKEGPqAEaqfhEA5pEAcU4S8OiUAK+ifgsQ7UUB9wALthOAghLQ42MAasYQsBlQq+hrAegBA4YXwNIbYAZqiwGkvgdALlAwQCEwcDOANdBXHGAMMMA+MEEwQrAEQEBHwElQTPAOQLBRcFQgV3AIUEBbEF4AYQAEYhDXHEBtoG7AAXDwdFB4gHvgDnAwgsCFMImwCoBAjuCRgJUgCZDQnJCgYKQgpqAAqtDg3gAaRQ8lqk0ENh4NoORBAVcODtCG6lIBh94KEFob0gzQrWpxAfX9CBjmF9DjjgBmqrYY0GiAAKzWGaBtdwAKqq4awONuAGDeG0DpXgDNIgLqlQQlAzG+IQAHMOA48DrwPBAvMBBBQEMw1HaQiEDgSiDdStBRQARQYFXAVzBa0AxQQF/gYXBkIAdg0GkQa8BtgABwQHMgdvB48CtYHyCAIIOQ4BQBFKpWErBRRYDi' $Zint_dll &= 'QgE2fhEQpOoBAVGuFjBWG3BXrdCI2nFQaoEBtZ4NAA3ArWiaAfsACMUBJ5Ya4INqugBgxhsg6KsAqAG5ur4cUO2gALpI0KHg45sAXaj+HsBooQC5ThmwLjAAMMAxkDIgNNAFMMA3IDnQOpAMMGA+QD8AQdACWk2gVnpwSmBMUC5AUE9AUWDTH4AHUJBZ0FsAXgB/UiChRBIOEAoEYkIAPQ2TIEBRwRESEyQBMv4kABIkwSEgWe0AohLVQQ4qJfBgVSAPHBABCwATFRUREBIREwESFBMVFBETBMFQMVEhgQIQYBHRM/EAAiwCEqBRARKRDQAUFiBxETFhbhDuAKN3EgA0AGACAAAwBaoAZABQBwCEAFAJhgCkoBBQIWICABFgFmH3BgAR0KAiBgARQJYgJRAAEPBhjUIBGbNoNfFhDwEAAQ9eQgAQKgEq+CVCXRoeChSgRCGyQAEujGXCWB61jGUh8SIgkJMIFTPnCQEJAAElaOVAEdCQmQsRYCT8BQARoGOKA4YAEYBBESBtBCAAIYERIAEVAVSJUEaF9VAaFgEcuRACHQBIDHEQAWMVUigSAUIp+PKhEQBiLgMAZAIdAGkiAXKBQgIwqD1BAq0AGlAhIMER2go0WCFFYxGQkwiCsIER0AEiFSABSRMBEQGHqVE4GIwUw4GRCwASFiABBk0AiwaZ6RAAEOCjESAUlBECwhEQAhIDCBEaARYdIFYQAUFVaRIBRx4BSERBIFACEjACEgMUQh4dQF4SAV85EgIIMxYBN60QAx4aqK0wBM0BEUQRgEYBEpBWJCGQgxHQI4gWAyEcASQdEATIHQDNMXMW+TICQRyEjGQCEhCCFgUTEBwBDh0gfhgBfYY5IkYeAUX40gHQEQobBR1giBoBifii2y6wgybBIQBg0BNQIRgoEUDJEVBZKtJToREABBIHnQQX9RBLBl1SA2sJRQM9Ae0iagdNBoxy0BNAwShzrb1FBK0APx0gnQQZUBGG0AqR' $Zint_dll &= 'I0JnEaDXHNHOGB0wjAASFsEYGDEkVX9NRgUNBD5ocdBAUDbCKD1RAoddQgVdUlUH7QIe0RAL/QcTySIKaRQBedEQBV0COapEkdAKwEEUCs0BEoUFJp0eAZbUUdBJlYXQASCCFowg8NABQt1JkCZy0BNgkyMy4gESUMIYDw8WAQqqREHQCnCWOHHQE9CCGnCh0KOwgR8KERomAxSpFAOLzQGtEAYIQhwBQviRQOKhEiCSI9HQExABEgYKVBABUo0YBk0GRJF9IyMeeRcgHA3tAmgUqSGtAF6JEAZKIPIpCckSzREdQAMQsSh/cBh5B/jRCsXggRFQhVFI8dAKddAK4NQKYXXQCiBUBsEQCgEbDsDtCwvfEgAFdRYBdbYdEAgdAMkuCx0JrSAPDRQeAhGtIP0HkrBBgEDkEWAEGwokFCADJkQB0RPmhyGcXMAYRhwCKyDRsADCIZDSChHBCJ0kUAWtCYT4UTDkQTBAxBFQxOHQSaDxKQQSEhoDENkKHAMMjhoDja0gzQFJIAABSiAMIh4DIpR5BxwSzQEbgSt0FgECZxQBZhQJfQNBSjkiIhwCICBpAloTjJBRe9KRUBdesaDabaCTCPHQJbBRBkFR3UmR9WHQEyCIFgvtAkA+HUADIiABHh4cEhQeTQZ5By0FAnNHFlUKCksgPQHJEh1QUxb9BxAZHQaTfUMdACECQR0QEiEcAi0uUBY9ARwgYUBnMQDb4rLQAdBt0jDCYYDaCnLBCBolJ2kUBIBuAMIwxBHw4xEQ4ANS8aEhEBINUcoIAu0rCnQNTQztAmBOrSCOAXDiEZDCMZbRN9Fk4odBoAcgHQAqAkK5EBWdBCewoaHdE8EYCc0KfSMNPVEUrh0JI2ix0RzFGA0tDQpHHgJEGREUrRAcAAEmHBgUIAUZ4Jkl7QK9JQpJIARKgskFHhAkIAY9ASVLHh0AAxRVLYkyUgASBQxGHgRLHRAYPQFCKNRxQQGC0CXigPAlEWDVLtGQ' $Zint_dll &= 'BGIz0EQUjCDQE9IcUCBQ4RFw4ZHQCuCY2ArjYWCUtgCSwQhCImUQHRUgBA4GslDdHKB8IBB9A09EkdFbYJUBEiHtUg59DHoJMhHsKhBEgVECIoDSQKDi8dEBgFEYodAKcDmIFg9HHgNH6RaMEDJgkkFBMuExIFEgcA8dYK0JXgSyYQIioJqPYtK+INEKFddSEbEw5DHAVQbh0S7QtWJG0m2SpLAg2X9AHRS6HQA8OSLNARkhKA1dA4ENBIgaCn4YFs0Ba0vWKdJSMAMSKs4DARJADA0NdhYBdBYT1F0raQIePQEdaHFCEQAiUKIRYKLBCCMDiEEQFUYe6ggAAloiPQEsrRAdAAJJChJgHIyR9UBnkdGjASLgw1goIAEpIHQt7VvtAl07GQ1UEiMlHhFJATIgHQAGCgFQ8cAx0S5Q5jwQIV4EsBUUi4HiDwAJJTEdAH0jahIdAB0pGh0AUKkRI4AdKQEkHDQSHAJqJtEpvhCl4QtRLe4EkJBaIUHjL1EQ3QZyFhoGEHFh5KGgEEIcKM0BRCt04ULhoaAQEBxdE00Paa0QnQTaA/HDKAIqIAErIDY+DBVR3UDgciAYrQlKWRMwDQ2AKhFiM8Fh8KARUOGg0dET1dETZeAYAAMkHiYhHDo9Yf0Hqs4M8hEKUIIfMO0CF6IgUdM3E8FBEUBgCNqa0dH9gKMhkKNR0ELiIfBAHTstBa0eCxLRAWBIHe0CBe0rVC/NATAgAdQ3EOKh6hcBFrEOhR0QIeECSoL4sULiUbChuxA5EBQeBaoGASKBqLEi4NgBEdIKENMT0r7Q62AgQE0mGRoOBpKJAMIIKjcaSQExPQESaBEEIMFRsOER0OEBRdGRIIgfHksgAkFHaOEy4mFwAhIFAwweRhOCBDLpSkFCI31TMSMeBS0uRq59UxXuBLCZhtK+olQBNqxdAi10QeROAKoPMMGB2hNQ4CEgIU02QBw0l20HKSApCUNdUnJckAJQSA0gRh4GPSo0' $Zint_dll &= 'zQpbGz0RSQ0E6hpS4TMAjGLgoQRikJQI0QpAYIWCFkvODOXRmuBTIQMILRY3L/IVoqHhQ+h3IU8SHAQyBuJGdyAWI0Nm5oFjmi/gheO+AEHFAA62wREM5ZWTiv++OuyXkwDRBO2nEwzhchsA8e+pEzzBUWzFEwDBVv468c8QP9YULAUQojjRIK/QFAUQ8B0QDCGXIwDwF9BXgFBXVwfAAAV9AX5/kjRAAGpFwRAE4JYDH6MI/////y8AgB43AIAdOwCAGz0AgBc+AIAPTwBAHlcAQB1bAEAbXQBAF14AQA9nAMAcawDAGm0AwBZuAMAOcwDAGXUAwBV2AMANeQDAE3oAwAt8AMAHjwAgHpcAIB2bACAbnQAgF54AIA+nAKAcqwCgGq0AoBauAKAOswCgGbUAoBW2AKANuQCgE7oAoAu8AKAHxwBgHMsAYBrNAGAWzgBgDtMAYBnVAGAV1gBgDdkAYBPaAGAL3ABgB+MA4BjlAOAU5gDgDOkA4BLqAOAK7ADgBvEA4BHyAOAJ9ADgBfgA4AMPARAeFwEQHRsBEBsdARAXHgEQDycBkBwrAZAaLQGQFi4BkA4zAZAZNQGQFTYBkA05AZATOgGQCzwBkAdHAVAcSwFQGk0BUBZOAVAOUwFQGVUBUBVWAVANWQFQE1oBUAtcAVAHYwHQGGUB0BRmAdAMaQHQEmoB0ApsAdAGcQHQEXIB0Al0AdAFeAHQA4cBMByLATAajQEwFo4BMA6TATAZlQEwFZYBMA2ZATATmgEwC5wBMAejAbAYpQGwFKYBsAypAbASqgGwCqwBsAaxAbARsgGwCbQBsAW4AbADwwFwGMUBcBTGAXAMyQFwEsoBcArMAXAG0QFwEdIBcAnUAXAF2AFwA+EB8BDiAfAI5AHwBOgB8AIPAggeFwIIHRsCCBsdAggXHgIIDycCiBwrAogaLQKIFi4CiA4zAogZNQKIFTYCiA05AogTOgKICzwCiAdHAkgcSwJIGk0C' $Zint_dll &= 'SBZOAkgOUwJIGVUCSBVWAkgNWQJIE1oCSAtcAkgHYwLIGGUCyBRmAsgMaQLIEmoCyApsAsgGcQLIEXICyAl0AsgFeALIA4cCKByLAigajQIoFo4CKA6TAigZlQIoFZYCKA2ZAigTmgIoC5wCKAejAqgYpQKoFKYCqAypAqgSqgKoCqwCqAaxAqgRsgKoCbQCqAW4AqgDwwJoGMUCaBTGAmgMyQJoEsoCaArMAmgG0QJoEdICaAnUAmgF2AJoA+EC6BDiAugI5ALoBAcDGBwLAxgaDQMYFg4DGA4TAxgZFQMYFRYDGA0ZAxgTGgMYCxwDGAcjA5gYJQOYFCYDmAwpA5gSKgOYCiwDmAYxA5gRMgOYCTQDmAU4A5gDQwNYGEUDWBRGA1gMSQNYEkoDWApMA1gGUQNYEVIDWAlUA1gFYQPYEGID2AhkA9gEgwM4GIUDOBSGAzgMiQM4EooDOAqMAzgGkQM4EZIDOAmUAzgFoQO4EKIDuAikA7gEwQN4EMIDeAjEA3gEDwQEHhcEBB0bBAQbHQQEFx4EBA8nBIQcKwSEGi0EhBYuBIQOMwSEGTUEhBU2BIQNOQSEEzoEhAs8BIQHRwREHEsERBpNBEQWTgREDlMERBlVBEQVVgREDVkERBNaBEQLXAREB2MExBhlBMQUZgTEDGkExBJqBMQKbATEBnEExBFyBMQJdATEBYcEJByLBCQajQQkFo4EJA6TBCQZlQQkFZYEJA2ZBCQTmgQkC5wEJAejBKQYpQSkFKYEpAypBKQSqgSkCqwEpAaxBKQRsgSkCbQEpAXDBGQYxQRkFMYEZAzJBGQSygRkCswEZAbRBGQR0gRkCdQEZAXhBOQQ4gTkCAcFFBwLBRQaDQUUFg4FFA4TBRQZFQUUFRYFFA0ZBRQTGgUUCxwFFAcjBZQYJQWUFCYFlAwpBZQSKgWUCiwFlAYxBZQRMgWUCTQFlAVDBVQYRQVUFEYFVAxJBVQSSgVUCkwFVAZRBVQR' $Zint_dll &= 'UgVUCWEF1BBiBdQIgwU0GIUFNBSGBTQMiQU0EooFNAqMBTQGkQU0EZIFNAmhBbQQogW0CMEFdBDCBXQIBwYMHAsGDBoNBgwWDgYMDhMGDBkVBgwVFgYMDRkGDBMaBgwLHAYMByMGjBglBowUJgaMDCkGjBIqBowKLAaMBjEGjBEyBowJQwZMGEUGTBRGBkwMSQZMEkoGTApRBkwRUgZMCWEGzBBiBswIgwYsGIUGLBSGBiwMiQYsEooGLAqRBiwRkgYsCaEGrBCiBqwIwQZsEMIGbAgDBxwYBQccFAYHHAwJBxwSCgccChEHHBESBxwJIQecECIHnAhBB1wQQgdcCIEHPBCCBzwIDwgCHhcIAh0bCAIbHQgCFx4IAg8nCIIcKwiCGi0IghYuCIIOMwiCGTUIghU2CIINOQiCEzoIggtHCEIcSwhCGk0IQhZOCEIOUwhCGVUIQhVWCEINWQhCE1oIQgtjCMIYZQjCFGYIwgxpCMISagjCCnEIwhFyCMIJhwgiHIsIIhqNCCIWjggiDpMIIhmVCCIVlggiDZkIIhOaCCILowiiGKUIohSmCKIMqQiiEqoIogqxCKIRsgiiCcMIYhjFCGIUxghiDMkIYhLKCGIK0QhiEdIIYgnhCOIQBwkSHAsJEhoNCRIWDgkSDhMJEhkVCRIVFgkSDRkJEhMaCRILIwmSGCUJkhQmCZIMKQmSEioJkgoxCZIRMgmSCUMJUhhFCVIURglSDEkJUhJKCVIKUQlSEWEJ0hCDCTIYhQkyFIYJMgyJCTISigkyCpEJMhGhCbIQwQlyEAcKChwLCgoaDQoKFg4KCg4TCgoZFQoKFRYKCg0ZCgoTGgoKCyMKihglCooUJgqKDCkKihIqCooKMQqKEUMKShhFCkoURgpKDEkKShJRCkoRYQrKEIMKKhiFCioUhgoqDIkKKhKRCioRoQqqEMEKahADCxoYBQsaFAYLGgwJCxoSEQsaESELmhBBC1oQgQs6EAcM' $Zint_dll &= 'BhwLDAYaDQwGFg4MBg4TDAYZFQwGFRYMBg0ZDAYTIwyGGCUMhhQmDIYMKQyGEjEMhhFDDEYYRQxGFEkMRhJRDEYRYQzGEIMMJhiFDCYUiQwmEpEMJhGhDKYQwQxmEAMNFhgFDRYUCQ0WEhENFhEhDZYQQQ1WEIENNhADDg4YBQ4OFAkODhIRDg4RIQ6OEEEOThCBDi4QAQ8eEA8QAR4XEAEdGxABGx0QARcnEIEcKxCBGi0QgRYzEIEZNRCBFTkQgRNHEEEcSxBBGk0QQRZTEEEZVRBBFVkQQRNjEMEYZRDBFGkQwRJxEMERhxAhHIsQIRqNECEWkxAhGZUQIRWZECEToxChGKUQoRSpEKESsRChEcMQYRjFEGEUyRBhEtEQYREHEREcAAsRERoNEREWABMRERkVEREVABkRERMjEZEYACURkRQpEZESgP6tEDEUEYVRFAEQRZEUESUxGAEQg1EYEUORGAEQI3EgkcCxIAGQoNEgkWAxIQGQkFEhkVCRIQGQMDEikYhRIgGQSJEikSgxJAGQhFEkkUQxKAGQglEokUIxMAGQgVEwkUFxQAFQwLFAUaDRQAFSYKF2ChkVFAUVACMUhRglFIUUAEMURRiDFCUYAAMVFRgDFg0YAAcYAxwLGAMaABMYAxkjGIMYAEMYRRRJElERAOEQRgxKClIJAOIITAZUBeQEBlgD6ALwQl2gJwgYqgqCQGGpBAwagSChDQgKtRZJYKDtFeorkGDKAQXeGAA04FsOECIAgAgkCACABCju5QADAIgUYCQHEEKGzEAEACRAgAQAJABlGAdggjYaEAgAAiGoKQuECAAgBIimhAAJAAKojwEQEAIBEAgEkB5ggBCAAgIIEAIwAggmzoAEBAQQAkUEWIAgAIEGCCigCgKg1nNg4HEGEI578KVqQSUtRllQ52kFPsZWIKFqNwcp5neQY0IFcwYbEKZqjAd/ZleQ5mQHeoZ7IKfqgwcYlnxA5HgFXqZ30KRq' $Zint_dll &= 'YQdGpl9w4n4Fa25V0KfqzgcKRlVgY88HFLZ04KJqWAcIBnrQ4VkFY6Z8oKVqiAV7rnyQYfcBgaZ8QKDqXAVgBnxA4mIFC152EKJq1gEVfnsQYbwFfI58AKTq0gcqNmFQY9cBDp4csKHqXgd+jnmQZRkGeM5ZAKJqZgdcTncg6LQHH0Z8EKXqkQc37nmg5HgFZeZ/oKNq2gcw5nZgYoYHXQ58MAXqvwdJdQVFcnJvcgAgJS45M3MAVwJhcm5pbmc0EQM25zb2AXZvL9DiAkLyArBSAgCS5gYig0EEMvaXcQkQsKEIMBD/AMAS9E4IENzOZsEQ4CygHQdVBAAAY8ws8MIVAwDAywLWU+HOEOylAhmoXGA6FQyB6c4CNn7BEIgsYC4VDEH3zwKNCNUD7NeLwGJqzMBirSZTQcYLDRzAEFAscG8uFQzBWH9cEUBcYOsSDOHNVQJZAcMFv1wxXCeBFSDvXGB/EgwBwQIPXTEAwALCeijBEPBNCBAO8wTwBs4C7iQFzQJKoeAvL01Q59opwVLqmQAAzAhSKcEQfqwsoHAJTQhNAyzgIleE7yzg+BYMQccCoirBEB1QrX7zQcYFIhzAEFAssO4wX4zlbxJAXFDCAQzRxcICJhzAEIx10hGxywUoHMAQXJXCgn51octSKyzofBcs1cKCLvotFk0APprBEFwFwwL8DUwIEDEcwBDsLLAmwwEMwc0CMxzAEFrQLEDDAQzBywI17RzAEB1QNt0TXHDDAa0MgckCOBzAEIQssJbDAQxBxwI6HMAQruy1wwJgXODdUlzV88uCPj0UjDCcMsEQXKUVF78sFcQfjKC7B1UP7QMs8DbEAQxBwQJqcuAFAA0L8CzgIQfVDu0LSwgQRtYcwBDgLHDEAQwBbc0Cji1FzAJJHMAQsLUsoMQBDAHKAksc0MoQjCzAxAEMgccCek0cwBBtUV57QcYFT9ccwBBQLADFEc0RLHCvoQduANBzwAJSHMAQ7FXruR8Y' $Zint_dll &= 'XOAsUwQsUMUBgwxBr4QAYcUBDNEFzgJXHMAQ7IXVInHLBVkcwBDELOAMEwyxylhbLEDLBVwcwBBdpCzQxQEMwVheLFj31WfBCI4zhcgCYRzQyhB0LCDGAQxBxgJ1YxzAEOxFxoJlPRL2jOA6EwzBVWedFVyA9s4BDMFVaX0fXPChFsN1bmu9G1zAxgEMwVVt3c0aXODGAQzBVW/dEw9JCBBwHMAQXPWlFtHNUk42Qc4IvgXBENQsoC5PEAzBWHUsaMeCd7csiOcGEOyQxwEMwVXVzqPBUnssyMeCfSy45ceCfyzRBADIAQyhBcoCgRzAEJAsIPjNAQzBxwKPIzUdBCzgdRitDEHFAoUcwBBALLBmyAEMAcMChxzAEFogLIDYZsEADCyQOMwBDEGPhADhyRMMocXNAoscwBDMLMBo3bHBALws0MgBDIFaywKOHMAQmCzwyAGtDIHIApC9EQyAxwJikRzAEAAA+okNoIApDshCCtcjPEYATkZOTExOTFMfRkZOIEciIMA2ZAU2RVbBCwECBAcIAAsNDhATFRYZABocHyAjJSYpACosLzEyNDc4ADs9PgMFBgkKQAymcXGBsdHhEYIgQnKCoswIMDM1GjY5OhIBcMoAcWD8AA295gkAYfsAInJixQA2qoHgxylWDDYRIOGTABVUwBoIrazyQAsVNgngkBABFQDVvGHTWRG8MEEMGCYJUKVXcwBoLgGGFQWMBQTV3pbhcRme3n1A6tQJqm6iUAXrtAe2lnjA698Jwv6YUO1pGQDBZygBgrUGiKUFdY6VBN6X4YEZoM6aYGqWB1WsloEg6zIKuD6i4OsbCGrEnnngeRkxIg/gZ0ABhK5FB4o1BpAlBd6Y4ZEZoqoGfYDqKAquLqRA60AKurh+oQBs1AdemOGJGTMDMi8DHG6hYOHGCT6Y4YEZ/pdR5e+nCfiGgCDvSwrsJntAZO42COAA3+6wkA1wQQ0w7ZkpNN0AjkpguAdYF96aEOGR' $Zint_dll &= 'Kf6YARDwr+rfCfkeozDvaQrt3qZwDupxCuFGfLANYA1QPeipKTYDNQMg9oHg0Qq6fp0w4aEp/pnhnRn83nxgr2r7B/COp6DufArkroLgXWgACNgA1wCem3HTDQAl4pQKKGZ90hJAEwAwE6ATkBMAFFD3458pPprhpxlYjpvg5QoKVGTOpaDmrgpwzqqQM1CBM0DiogoqloYA454KETYBNYawsBMg5GwI6v6a4bMZfpuhZXAIYE6jYKbqhgpszqsg57oKOt0AJqgOq8BiowgyzqqAE3Dj6vUHPb6bMOS/KT6c4ccZXKrOoCBmqwhoDqvg5soKdIaOrMAzsDPgvBmum+HYai4IiE6jAGV8IA4U0eAhKrU+FtHitgHOoCHojQp8Lq3QZefWCj1g4MwZrpwB6dYJW4qOoiBlhQDeDwFRluAxGqLme+PiLQBvAIQeqOAXap8IeE6u8DPgM+DcGdeuneHYGYzOoUBlowGulwUQqs6lAWP/AHI+HmDodQqAtX6soOfyCpaRAODsGaben7DAGrAa4C8aOBYP4GMRqABZ0a5gZZ0AsgGxCAG4AbdOsdAbIEQxEDTg/BmofqLgGtDSGuA/GjqmDwKwF00MRVhmCkAbMOskC7kuspDxGzDUDeAMGqoB9kRgEfAa4E8aPJ4dAPAAGIq+CpAFYOutCLw+syCs6jELRR6QIO4sCtzup2BN71gI7hLhZREADxDgCgI1AFXQrrKg7DsLxP6zYNQNcEXuIAreLqeA7cQa3D8AcFTS7rHA7EkLxkaSgDSwcjTgIhrgbqag7bgadhQg7vpHAGzgESsA1C6x4PzqVwvIvrWQ1A3gMhpuo+E6Glpixgzg4y0CAA+w4eEAW1QAbqQB4IsKBt6tsDSgozTgQhpupOFKGmRWDQBEbUIhANthsAFe5g7AH3C3b1wItibgBwtM3QAupeFWGvqupeGmGl6rYRJIADZhuQFgqs4m4O+rCAT+raDgMQtOAgNNAzACL16T' $Zint_dll &= 'kDLqlwsjvrnQIaBkQgGuG6EKcAuurEJnygAYfroggeyrC469IPDUDSAjEIPqGAkrXrpQ4qkLHwJM1rYU4hUSB04mMGJFAO4VUaRoUQJ1ABpeu0DhuQsOgl64EDUANUBj3QsuKQIt5oxw4vQbAk5GFdIlYlMACcYoYPMRfhZx5GkCFXcAHD68YOHHCxDWTFAk1Q1gI1DjCQk7/qei7oMafqjhixpazqkA5u4KZqoOtMBmaglyTr6A5+ILfqAOvkDo3gtUA1MDOC8CN66O0OOPKj6p4ZcavqlRxeXGCmKOsYDmagtuzrtQRefyCHoOvwDo7guGzr5QVNUNoCOQ45sKP/6pou6jGn6q4asaXuaPQOZCC2qqTrkA57MJdg7AwOcwCYKizr+A6PoLVwNWfsBwreq3C9F+trDsFwvFfqzwW++rKp6q4acaXqoh6s0KnP6xUGXpcQuQPryg6AgMWN0AFdoC2R6+MO2RC80etOB17PEKwb6r4rkafqvhtRqkqh6s4OkTC5hetiDptwuMgJ7AoDWQNcAtsK3qCwzVvrvw7GsLyb6xMKzvyyqerOHHGl6s4cMaoH6woKnqWQuUvrrg6P0LW90A3igC3d6YMG5hCekC8AAC7wL2AvUC/CQC+46PEDAgLgQDDiADDU6ZMDGgMZAhMAAy8DFg4moJLCADK8aTwDUALvCNImBuvAzsJpQgLxAPIIAvcC/gL9APIkAgBgkKAwkDEAIDDwMWAxWOlLABNOBvDAMoAycDLgoDLQNe3QDiNqCADiBwLuAu0C5ADyAwL6AvkC8AADLw74IJBQMMAwsAAxIDEQMYAxdAA0pxMEAyMDKgAuhZCTADLwNgA19vA66RBSAANLrXAiOXEAD0L9USNOgvOUAH0JKTCPAI+pMfEC5AeQABQwQFAwSxAX8EPRMgwBEoA/ANVYAAPwAsRwEmrm/gwdHhMQKyViPi+gO+MqBDJTT8jwAsnn3wCSA2aQA9cGmAJEcCVNIO' $Zint_dll &= 'ZMJScmLSAuGCkkITKi8rLPpxADkBffALDrHB9w4BlQYB4HoFgCk+NtpCovPiMrdiZRN2bQIQMjIYihD/LIRTCAExIMVk0Agw/zWgyEMwJMlSnIJWcVD/6IQR3XHBAd6zX2DgAVos4UsA7gTJMwBDQUAAT8A2PtUUSHoItg2gRAAozghQpUAiPFVgMjTAZAEBVgjmEcBBA1JmLAIwGNfmBkAQGJRCRAYGDdUX1w7wAO4dwRYQBEYTBJ4MogdCYwRFOmYNh2AyARy7FMDBAX3QzTA+7fAJAPOHUQUEsGYyAfAM1RBdMMrI0F8XViJj+gseDiBvK10jQgRoXTgBUAgsgNJg2g3Ho08rZVBNELYoATB+3UMc9u0gnGFLVy5AwdBj0lJBtE4K/AFQflUhfF0g3P3F0RzEZfkCpTFs1wtTWuffJwFQnTFVEp1S3Mc2Qq8uD6DTC0JkjiMA10BHcr8Ah1E6VFjdLlMR0XfRevMPkJ0ztXMAxXv8BVCdMeoFVh2cXRMi3ksgRUBO7dRgU1xtln59ZgCFVyvwXyzBMSQDUL0wtRQE0Tx7z1sExZ39NUBEwF5Nl/ds3Y8DEL1wTj1lANUJVV8g1yBXv9WXL+DQ1UhQGVDdZlkdgWTBA2AMgNQjpA5QdXEN8gBCxjhgZvUBWtUt8QEsIUYAUnYAYEQA/WzZiUVwPXS1GgTD1zVf8Eowcl0gPD1o3Nkg3UP1BtPK0MH91zzeglcZzZ31fX8WBFOvBRAiBKhCIP++BcdcvMERnZHEU/PREg9w7wBQJTvtHh1VHjYFSJDdGv/1E7ThWpDFE80T7RMEL2ALPf1lEQDP0RNR3APwDDUVAmUJ9+USfXmlNjYCJ2ZBJADJHe8FXR11LRIC3sXiHnAAW29j38vBnbdyF00TfMWDAKvzXbnSuQHSEsBendH9lb017/4C08/dTGPQG0QQrRYukfPdBNPQA1efBFA1kE3QAPNH04hEEMZTAZCd8QQAU8P53zUH' $Zint_dll &= 'MB21DZ1dE62UXTIAVc893d0A0wsB0iNA0Av6XU5TUSdhkyIAWRnXZg9QvPsPsPV8/ZwA47CwAFsLWfvx3zbp1xBODNXP5SIUBNXIQzDvNl/hBvAAXX4wNOiiUARhgxV9IN4DUsJvYK1wnf8AAAHRHPAm1YJAEFIsUKZXrcUU/xRhD7OtEk4BUVoBkIVUfgjxb1jR/ZAtsb1WjRStFN2WlRDbAG/AHVpeCGB/EGJ+CMJ9unYO4eFaLe5gYW3xBAqtASi/5QIoHGBIFgAP8EFY0Z0LUNsd2y0RepYKQjFmPafWGI/w72Yw3pwJ8ALGGlcCxR22EtUS3c82HRRl8ADMA/AOTgllU7Tw6nRRHo1rGrUDBOXJTAD079PxCgBnbVGWG1Fy5UpKAFg2t98nDVDlVRU2AAXSckAeXijNCRa1AWYTAVBsR6FbISDiPwBW7uXAFRK9IGi9HGDCLd2W1gbjDlAgLgPkX+Fhe3GuF9sow/YEVMH2BjL+7iTC9gSWpMX2BFzB9gb9FSi/xgeARAYUQRDtct4ZL2AfMP99EgYZ5UlRPgLTJ8P2BH0ybE/g3yDD9gS9MHYZ3axTnsH2Bgj63gXC9gQWcsP2Bu0SIn5DEPJteAUUEUIDvTgdNWYZ40gQ/wThlxEA0Rljl9Hc0zXD9gT+XTNsT9ALw/YEzTNsbwBQQd3+BNIyIcICAOEeEDzNAd/1MaYiI0YExRQNMt4ZT9Ag88/2BA0yvhpvwPYI/TXeGY9goFJOHvkNUA4xhcMAZgFjXhYA01L359BA4O6wzTBsT9BSx/YALXX9bA/QUsfW/TzcjwAQPjZN8JVhZQVIHGB10N4Z61lQrZj/bhndisnWrZhs3YPJ1k4C9d+6L9BDw/YETgLlj/EEDR1sL9Cb8yfg2iAE5XJwHTVuGU/Q0A/QNU/wz9YN/QBs19AP0DxP0M9PABD9Fv8uAuHNkD4l4c4z/ZwA0dDde6nf0N2eD+Cr8QZsj9AEJ0IJFL9u' $Zint_dll &= 'NYLkgSFeJE/Q0NcExd2OIbVvwDUA4dgE34sgAFngMwYM8wpQB/4McGDKAPaKARCWbnHbOZHxQwADIARuDsAQ1PXvUvEA9jljmjIA45wy5j0DUIpPUN8J4P0WAMUXDzXgEK5m8M6d5y4QAA9gcMgC5hhXDgLXCPFNMGVQAiYmViplGBfcUwdl9cADBgyQUAZGHQq9haEPlQDGk8F4NiDhwAP/RNcB4RxUANMKwRDUSRN/B8UgAFUk0yVJVG1yxTF/AnWFdTOFk3xTQFczwRPebXf1EAsE4CwyANET8/BPIQDTJNEl44ZRjNH8USH3zzeM2TdDGVV0RNUg1QHzf2ID0VLVDlcP1XnRW2t0POWUvz55w2AmJgDjJXD1UF0QZbB/CT5w8IED0Q8BMO0ydZXdUt/NsQTRUHgCEIxVD8cY/+0UHXAVcuVUpVAVkjxFtP/dMQDDVxVydVplmRVb7VJ/B1VtDVSFE/W3BRkEw1j9fZ0AXQbldPQAAHH+e7FAb//tE/23AOHOMqVS3TAlOwD3Z+D9Jw19zysQNkMDcNTRAvHPPa1wfVPuNdd/14BV9UUd/wUYBZbV2ABR8FEGBxCtsP8AUecLEA14AFUqVU/HGL8uL3vQE/AFAwEwzRLlMvZ68Q9Q7TCFka4CCxAFWABXgPUPcIxBHV10pgLhM3A9GEUz+8VRNXqeBmlbEBVwBQ4ubg4w/9YHW0jhnRKFGwBjfRitEl6kcQ8wdRaOiAMwBdaIQhwWM/furFAVkMZ9MWBGYDX6AEUQ3Tar/VcGFgtg4QTkBD0uAHnvAxh+fg2QZRAOTgFSBmW2GP22QdujYb/QFgtVTlVNQdEf8k9d7RU1FQBnuLAAZVNQzTN/B64CYvLQhggJkEVQ1TZ9mPsGDwPQdRM9eN4Ek1FOUKi1SzQLHSj9OWUTBEUBjPdbX0PQNGiS8ABET2LMMIxL1P8NGefRFxQBMI4KWSxjpPAKRK/xbaTwAERP4tA60GRT+WWi' $Zint_dll &= 'EEYK7/BP9CTWEWUmsCYA63sZxpfhcRkA8++o8AhEz0BVROWo8ACWBuPV0P4F8U8RAGMUECYJ24dB1F4AQZT/1gFB1EYKXS1BtADRL8Ee/wDnEBDGBVEd0xNhpNCOAUGU/30cRFsjwdg2BWXacB0QRPtXQMSlEURbFmGbsO0SRgr73wrDmK0wtbfWCt0BQdRmCw/wTxJNG0WYzqAFMA4U46iQ9RD/REsfRNsKQf0EjgrpFHEFOMXUxXh8AP7+njBoeQmqBGlMBXw1BRzWJ8Amb5cCJgJBsNwxGGAmEA6ilIDjdQXgAMC2l+Cv6usJ/hRgwAgYXMAj3h7wJAxRUeEfgO8FJjCoBABGAMTWoMAY8E9NAE0w/gQATCD4AGr8/SgEweAZCfgtITiq3IJPCcedQcNuocD3B1AA0QfhkhB1MH0wBNEncyXIAHwE4E5u3MEWbcftQiUQfhUhBRBg3QFWfjZMMEygZkxgzxIOut4vYGNbBIVRBIVTBGDsXo9SL9MBAVwiYNYSbRIGtg0iPs0DPTP8Lm1SNEf22DPADPBPAB0RRi7hGzR/eF0AVTrMVTPBHAUydTH/bTH00QbRD9EyRRA9MkZrocdDAGVSzEEW5zw0DssCHu1hAAP/swFAUDmgIIBj/ggpAwDtADQBtAEcAVCGbo7A6hQKEgEyAhDoAPP2kcAgEDIQQAhwEkAHoGv4CRAnASpuqhAEkBYA8COgOdAgAAtQpOQwCUEBGDaOUMoAAK8CHAHBAAUCQBGmmnAQMAkQJQAAMrAjABQwMgBUWBNgGNAqoBQQ8AOgGbAhYNqCQNEF4OWcCMXmnyAmAPARsAaQH9AtUNA20BdA1hTA7b4JBKwArgFhnpFgMxDxIYBXcwAZAGrrCAAbAbgAuAEjAAAHAh8AzAFSAhDhABeWmwAW0CVA4AmwKJDsyQn2AUCIbpHQLDAFQBkAEAaAETAwgDQAUCdAANAXsDRA8CaAEPBhpwk2ARFgAyNtAEQC' $Zint_dll &= 'KL0CATUACwOBA7yFAACdA+0CnwE2A0BdFqsADQA6QA8AdWR7CfamrfAbcCcQQRLA6NIJwAIEJo9QkBywOCBVGiBKBUEQFtXAKgAb4GprCQVcAzkCwR6rEGjSCgDsAB8BwAAHAxAWAa3GS7AXgCwQ9NxIgDCwCrBulwoA+wKcANwCXwBBDkajoAWwHwDjsQpWNa6SIOgvCZeGmOFoCgagjqeg5TgJUAFZAGYCAlcAsAGeFpnQKQBgFyAPYO2HCQ2oBqcgaNoJxj6pIAjgIjCwJEAyIGLfCkqAjQQpATsDYQMlgD0FQgM7ASYCVgoAIQME5Q4bVQZ+AgNLAP4Ccg6XoCRel+CUBO6WoA+QaD8JiiAA0F0DwgA3AZEAAxMBvgB3AVIqA7ZlBcIlBMkMwAMyUO+YCS4DlwNZiM5SkCOwwA8cA10IAhwCkaaVwCvwATCQCHAbIBoABWibCWEBWwNyAbYKAkUB8G6uEFCIUIIgEA1AVxNgBJAEEpDRQiAR0DYgCgDQLsAywCrQDOjWCngBUQMJAjOA/q0wMoAsMAFgpmizCowDZzUPM7YCUKBaaxBibQp93pkg1LRQCTLQYGcKPgPaArECAVADSQKIJqCgCDKg5akWAecCxwAFjwKHA0mGpyDSaQAwFsAkwAvgHEClYF4LdE0J370D4wIQRwAHhq5gF5AlEAAM0CXgCBDaoACgDiAtABgQC1AEb/sJgALHRQqxXptAUTIQ6NANPMUFbQIAfwMgAgUBVAMEjwI1AbkOmUAvUMTTp1AwIOvBCtYmoRBxH2Dn1AwbAyCmtRBAH+AOQDSg6EALATYCPwEJAIdGoxCQBCA5YBXg524FAakCSwEYA2z8ABAmkBtAC3AxENE3IG/8CX8B5FUDEfgC1U4BkBJgSAEAQgMrAZoDvwARjgMUJqHQM9BrxwFAp9amgDYQHDAFACAZkAIAKZAfADEkEN6KQBmwD1AEW4YQH7DiCQofPQQFnwCcAy6+oHDD' $Zint_dll &= 'BAEKAGABTQB1RqcAMQJw1evwDJAZUOAjYAcgb2oLfD60AMAeUAyQEIA5ALRZGbASUA4wKCBgEnA2IBNg4RrBiuzQMOBUf3Ak/w2zgC0MywCaAvkAWqBU0FY7wBCgMWABaFQKDQOYAYYBhAgCZgDcvqogEoAHaGEKJQBaA5QDKAACKQAeAiEBeiIAEBaxADJQbrMK8AAC2AH5AmsAEKJunyDp9QkiAcxlA5cIAVcDVbaq4AMgLlo2QNExMBwQVYngqAKAUnvwYQ0AMVao0IggMDiQ7V0K6AKGkBadAAzQ1gEPYCAQoTGwqOELUAMzdgAAARiA6sMLOgNIAQBUAhIDLwE6AlR91rIQ2M/Qbt4LrQEFEwLPAKRVClkmvEAEY0ELKADEJqYgCiABNlBuKwBdA/6tIEBACtAd0O0hBGYBVRFeulBWtUBkbAvgZQdAXmUJ7gFyAAkCBAIA8wFTtgGACQCV7eoJX1YKkBYgJEAxFIDlEgohBQqsAgDSARUCNAOdAgAtAIYDxAGnABBWAfTevTAC8BxQsCgwA7DriwrExABV4nAAKpa6gCKwAgCwGnAHYCmQMEC0XQzAL8BGB48DERsBx8UDpAH1nuYQISWg6DYARwFNjAC0a2wKKwCYAUoDFX8B0ZYCAGOmCsoOrgDl4xgMaU4AkCzwCUAE6nsKcAI7JQahAUCerrwwI0AjcBUAUytgSw7WrNAWUAsAQTBQ6jcA+ABhARDEAppFCGYDaQIUSQN4ZgIQ0kwwAgCRMKBmtwqoAUEDCU0AVQLlBgH1JqxAdOtwCksB9+7B0AJQMDGAKiDhlQCXTrwAZGMQC+QAZQI+AwWaA7UBB0UBiWamEEVqxwu55QgsAXwVBBWNABlFBZbWsYDjsgBAVW4C0DFgNFA0UAAtAA4w400APeUIUTBNAfQOqdAYgGLaCkE1BrWwMaAX8NHDEDA5sBxgMuDU9ECQGoANQFKTEBQAFdcycGG8Cg4D0gAULwOJzQZL' $Zint_dll &= '/QAZAQFJANUBFwOUbQZE8lbAsAlgamEAMQNBu40IEACpAReeBEDl4YoLd67CIGZ2ALcABJsDdACbZQJhAQA+AG4BswJ7ARGvAkpOBFAWAO2rAFVKQqBwwgg3Frsg39tAFFQr0CnA4/gLKwERFgJp5IAeAGi/CkRAdgPAE2DeVCAmEIrw////LgCQAr8BqwBoAtABvgATAikBQQH6AvACFQKvAIYADgB9AbEBzQItAG8AFABUAhwB4AKKAIYCmwFtA50CjQCXAy0ADAOXAaQATAGDA6UA1gJYAkUB8gGPAmUB8AIAA98AUQOHAj8ANgFfA/sAbgEwARoB4gKjApoBhQH0AB8AeQAvAQcB4Op49b76cOo89Z/6YNQ46jDUIKgY1BCo4NZ46771cNY865/1YKw41jCs4K54177rcK4815/rOK4e13ivvtc8r5/Xvq/9+nDpvPRf+mDSOOme9DDSHOkgpBjSDukQpAzSCKRw07zp3/RgpjjTnukwphzTj+kYpg7TcKe809/pOKee0xynj9O8p9/TnqePp2DRuOhe9DDRnOhP9CCiGNGO6BCiDNEIogSiYKO40d7oMKOc0c/oGKOO0QyjBqO4o97RnKPP0Y6j3qOw0FzoL/QgoZjQTugQoYzQR+gIoYbQBKGD0LCh3NBv6JihztCMocfQhqGDoe/Qx6GgoFjQLuiQoEzQJ+iIoEbQhKBD0IKg2KDMoMagUKAX6CbQI9BBoHDlvPJf+WDKOOWe8jDKHOWP8iCUGMoQlHDLvOXf8mCWOMue5TCWHMsYlgyWcJe8y9/lOJeeyxyXDpe8l9/Lnpffl2DtuPZe+zDtnPZP+yDaGO2O9hDaDO2H9gjaBu1gybjkXvJg2zDJnORP8jDbnO3P9iC2EJIMyYfkELYM2wi2YJO4yd7kYLcwk5zJz+Qwt5zbz+0YtwyTDLe4k97JuLeck8/JnLfP24633pPet8+Tz7ew7Fz2L/sg2ZjsTvYQ2YzsR/YI' $Zint_dll &= '2YbsBNkC2bDIXOQv8rDZmMhO5CCzEJHO7EfkELMIkYbICLOG2YPIApGwkdzIb+Sws5iRzsiYs87Zx8iMs4aRg5Hcke/I3LPOkc6zx5HHs++zoNhY7C72kNhM7Cf2iNhG7ITYQ+yC2IHYoJBYyC7koLGQkEzIJ+SQsczYZ+yIsYSQQ8iEscPYgrHYkG7I2LHMkGfIzLHn2Maxw5DDse6x57FQ2CzsF/ZI2CbsRNgj7ELYQdhQkCzIF+TQsEiQJsjIsGbYI8jEsEKQwrBBkGyQ7LDmsOOwFuwT7CHYFsgkkGSwYrBhsGDFuOJe8TDFnOIgihjFjuIQigzFCIoEimCLuMXe4jCLnMXP4hiLjsUMiwaLuIvexZyLz8WOi96Lz4uw5lzzr/kgzZjmTvMQzYzmR/MIzYbmBM2D5rDEXOIv8bDNmMRO4iCbEInO5kfiEJuMzYbECJsEiQSbsIncxG/isJuYie/mmJvOzcfEjJuGiYab3InvxNybzonOm8eJ74nvm6DuWPeu+5DuTPen+4juRveE7kP3gu6gzFjmLvOg3ZDMbvcn85DdzO5n94jdhMxD5oTdw+6BzKCIWMQu4qCZkIhMxCfioLuQmczMZ+aQu8zd5+5DxIi7hJnDzIS7gYjYiG7E2JnMiGfE2LvMmefMzLvn3cOIw5nuiO6Z54juu+eZUO4s95f7SO4m90TuI/dC7kHuUMws5hfz0NxIzDf3yNxm7iPmxNxCzMLcQczB3FCILMQX4tCYSIgmxNC5yJhmzCPEyLnm3EKIxLnCmEGIwZhsiDfE7JhmiOy55phjiOa545h3iPe5KO4W9yTuE/ci7iHuKMwW5mjcJMwT5mTcM+5i3CHMYdwoiBbEaJgkiBPE6LhkmDPM5Lhz3CGI4rhhmOG4dpj2uPO4C/cR7gvmEswRzBSINJh0uBGIMZiwwiCFmMIQhYzCR+EIhYbCBIWDwrCF3MJv4ZiFzsKMhcfChoWDhdyF78LOhceF74Wg' $Zint_dll &= 'xljjrvGQxkzjiMZG44TGQ+OCxqCEWMIu4aCNkIRu4yfhkI3MxmfjiI2EhEPChI3DxoGE2IRuwtiNzIRnwsyN58bGjcOE7oTujeeE541Q56zz1/lI56bzROej80LnQedQxizj0M5IxibjyM5m5yPjxM5CxsLOQcbBzlCELMLQjEiEN+PQnciMZsYjwsid5s5ChMSdwoxBhMGMbIQ3wuyMZoTsneaMY4TmneOMd4T3jPedqPfW+6T30/ui96H3KOeW82jvtveT82Tvs/di7yHnYe8oxhbjaM4kxhPj6N5kzjPn5N5z7yHG4t5hzuHeKIQWwmiMJIQTwuicZIwzxui95JxzziGE5L3z3mGM4r02hHaMM4T2nHOM9r3znPO9lPfL+5L3kfcU54vzNO+b9zLvEecx7xTGC+M0zhLGdN4yzhHGct4xznHeFIQLwjSMG8Z0nDKMEYT0vHKcMYzyvHGc8bw7jPu8ifca7xnvGs463jneGow6nHq8ebyggpCCTMGIgoSCgoLYgsyCxoLDgu6C54JQw0jDpuFEw6PhQsNBw1CCLMHQhmzDJsHIhmbDxIZjw8KGQYLBhmyCN8HshnfD5oZjguOGd4L3hqjjpOOi46HjKMNox7bjk+Fkx7PjYschw2HHKIJohiSCE8HojmSGIoLkjmKGIYLijmGGNoJ2hjOC9o5zhvOO1PPS89HzlOO059vzsueR47HnFMOL4TTHm+N0zzLHEcNyzzHHcc8UggvBNIYbw3SOMoYRgvSeco4xhvKecY4bgjuGe477nur76fvK89r3yfPZ94rjmueJ47rvmee57wrDGscJwzrPGcd637D6XP0g9Zj6Tv0Q9Yz6R/0I9Yb6BPWD+gL1sPXc+m/9IOuY9c76EOuM9cf6COuG9QTrg/UC67Dr3PXv+iDXmOvO9RDXjOvH9QjXhusE14PrAtew19zr7/Ugr5jXzusQr4zXx+sIr4bXBK+D17Cv3Nfv65ivzteMr8fXhq/c' $Zint_dll &= 'r+/Xzq/Hr6D0WPou/ZD0TPon/Yj0RvqE9EP6gvSB9KDp2PRu+pDpzPRn+ojpxvSE6cP0gumB6aDT2Onu9JDTzOnn9IjTxumE08PpgtOB06Cn2NPu6ZCnzNPn6YinxtOEp8PTgqfYp+7TzKfn08anw6fup+enUPQs+hf9SPQm+kT0I/pC9EH00Ohs9Df6yOhm9MToY/TC6MHo0NHs6Hf0yNHm6MTR4+jC0cHR0KPs0ffoyKPm0cSj49HCo8Gj7KP30eaj46P3oyj0Fvok9BP6IvQh9GjoNvRk6DP0Yuhh6OjQdujk0JsM/////3Po4tDh0Oih9tDkofPQ4qHhofah86EU9Av6EvQR9DToG/Qy6DHodNA76HLQcdD0oHvQ8qDxoAr0CfQa6BnoOtA50KDyWPmu/JDyTPmn/IjyRvmE8kP5gvKB8qDl2PJu+ZDlzPJn+YjlxvKE5cPyguWB5aDL2OXu8pDLzOXn8ojLxuWEy8PlgsuBy6CX2Mvu5ZCXzMvn5YiXxsuEl8PLgpfYl+7LzJfny8aXw5ful+eXUPus/fi1SPum/fy0RPuj/X60QvtB+1DyLPmX/ND2SPK3/cj2Zvsj+cT2QvLC9kHywfbQ5GzyN/nQ7cjkZvLI7eb2Y/LE7cLkwu3B5MHt0Mns5Hfy0NvIyebkyNvm7ePkxNvCycLbwcnB29CT7Mn35NC3yJPmyci35tvjycS3wpPCt8GT7JP3yey35pPmt+OT47f3kyj7lv38siT7k/1+siL7P7Ih+yjyFvlo9iTyE/lk9jP7YvYh8mH2aOQ28ujsZOQz8uTsc/bi7GHk4ezoyHbk6NnkyHPk5Nnz7OLZ4cjh2eiR9sjos+SR88jks/PZ4rPhkeGz9pH2s/OR87MU+4v9frES+z+xEfsU8gv5NPYb+zL2EfIx9jTkG/J07DLkcuwx5HHsdMg75PTYe+zy2HHI8dj0kHvI9LHykPKx8ZDxsfuQ+7EK+7+wCfsK8hr2CfIZ' $Zint_dll &= '9hrkOuwZ5DnsOsh62DnIedh6kPqweZD5sAX7BfIN9g3kHewdyD3YUPGs+Ff8SPGm+ETxo/hC8UHx0OJs8bf4yOJm8cTiY/HC4sHi0MXs4nfxyMXm4sTF4+LCxcHF0IvsxffiyIvmxcSL48XCi8GL7Iv3xeaL44v3i6j51vz8mqT50/x+mqL5P5qh+Sjxlvho8yTxk/hk87P5YvMh8WHzaOI28ejmZOIz8eTmc/Pi5mHi4eboxHbi6M3kxHPi5M3z5uLN4cThzeiJ9sTom+SJ88Tkm/PN4pvhieGb9on2m/OJ85vU/fi6ft3S/Xy6P93R/T66H7qU+cv8fpm0+9v9frs/mbL7kfk/u7H7FPGL+DTzEvF097v7EfFy9zHzcfc04hvxdOYy4vTucuYx4vLucebx7nTEO+L0zHLE9N3yzHHE8t3xzPHd9Ih7xPSZ8oj0u/KZ8Yjyu/GZ8bv7iPuZyv18ub/cyf0+uR+5ivm/mJr7ifm/uZn7CvEa8wnxOvcZ8zn3GuI65hnieu455nnuOsR6zDnE+tx5zPnceoj6mHmI+rn5mPm5xf2+uJ+4hfmN+wXxDfMd9w3iHeY97h3EPcx93D2IfZj9uF+4qPBW+KTwU/ii8KHwaOG28GThs/Bi4WHh6MJ24eTCc+HiwuHC6IX2wuSF88LiheGF9oXzhdT4a/x+jdL4P43R+JTwS/i08ZLwsvGR8LHxNOGb8HTjMuFy4zHhceN0wjvh9MZywvLGccLxxvSEe8L0jfKE8o3xhPGN+4T7jer8fJ2/zun8Pp0fncr4v4za+cn4v53Z+YrwmvGJ8LrzmfG58xrhOuMZ4XrnOeN55zrCesY5wvrOecb5znqE+ox5hPqd+Yz5nXi9vt48vZ/eHr0PveX8vpzt/b69n5yfvcX4zfnd+4XwjfGd8733DeEd4z3nfe8dwj3Gfc793j2EfYz9nLy8X96evI+8X5zfvF68T7wvvFTwUvBR8LTgW/Cy4LHgdMG7' $Zint_dll &= '4HLBccH0gnvB8oLxgvuCavi/hmn4SvDa8Enw2fCa4LrhmeC54TrBesM5wXnDeoL6hnmC+YZ1/L6On45l+O34RfDN8N3xjeCd4b3jHcE9w33HPYJ9hv2OvJ5fz56ej55fjt+euL5e35y+T9+Ovoe+Xp7evk+ez75cvi/fTr5Hvi+eb74uvie+F75a4FngusC5wHqBeYFt8E3g3eCdwL3BPYF9g1+HXo9Pj1yfr89On0efL49vn1i/rt9Mv6ffRr9Dvy6fbr8nn2e/LL+X3ya/I78Xnze/Fr8Tv6+Hro+nj6yf18+mn6Ofl4+3n5afk5/w1fzq4Kn41H7q8Kh81D/qeKg+1DyoaP3wrfzWZP34rH7WYv18rD/WYf0+rOj6dv38ruT6c/1+ruL6P67h+uj19vrk9fP64vXh9ejr9vXk6/P14uvh6+jX9uvk1/Pr4tfgpfjSfunwpHzSP+l4pD7SPKQf0h6kNP34pn7TMv18pj/TMf0+ph+mdPo7/X6ncvo/p3H69PR7+vL08fT06fv08unx6fTT++ny0/HT8KJ80b/oeKI+0TyiH9Eeog+iGv18o7/RGf0+ox+jOvq/ozn6evR59Pro+ej60fnReKG+0Dyhn9AeoQ+hDf2+oZ+hHfo99H3ovKBf0J6gj6DfoF6gT6DglfjKfuXwlHzKP+V4lD7KPJQfyh6UtPz4ln7Lsvx8lj/Lsfw+lh+WdPm7/H6Xcvk/l3H59PJ7+fLy8fL05fvy8uXx5fTL++Xyy/HL8Np87b/24LR42j7tcLQ82h/tOLQe2hy0D9oOtPCSfMm/5PC2eJI+yXi2PtsfyTy2HpIetg+SD7aa/HyTv8m6/Zn8fLc+k7n9Prcfkx+3Ovm/k3r7Ofm/t3n7evL69nny+fb65Prt+eT57frJ+cngsnjZvuxwsjzZn+w4sh7ZHLIP2Q6yB7J4kb7IeLM8kZ/IPLOf2R6zD5EPs438vpGd/b6zn5Gfsx35Pfs98n32feT9' $Zint_dll &= '7P3IcLG82F/sOLGe2Byxj9gOsQexvJBfyLyxnpCesY+Qj7HfkN+xuLBe2JywT9iOsIewXpDesE+Qz7BcsC/YTrBHsC+Qb7AusCew8Ip8xb/ieIo+xTyKH8Ueig+KWvx8i7/FWfw+ix+Luvi/i7n4evF58fri+eL6xfnF4Jp4zb7mcJo8zZ/mOJoezRyaD80OmgeaeIm+xHibPImfxDybn80emw+JD5tN/L6J3fy+m5+Jn5ud+L35PfF9833i/eb9xHDdvO5f92C6ON2e7jC6HN2P7hi6Dt0MugfdBrpwmbzMX+ZwuziZnsw4u57dj8wcuw6ZDrsHmQe7vIhfxLyZnoi8u56Zj4ieu4+Zj7vfiN+Z37tgubjcXu4wuZzcT+4YuY7cDLmH3Aa5A7m4mF7MuLmcmE/MnLnP3I65h5iHuV6I3phPiN65z5jPubC4XNwv7pi4TtyMuEfchriDuFyYL8zcuE6YzrhHmMe4L4hvmO+4WLgu3Ey4J9xGuEO4LphuuCeYZ7gsuBfcJrgjuBeYN7gWuBO4eIW+wjyFn8IehQ+FvoWfhV34vfB94f3CcI28xl/jOI2exhyNj8YOjQeNvIRfwryNnoSejY+Ej43fhN+NYJ24zl7nMJ2czk/nGJ2Ozgydh84GnQOduIxexridnIxPxpydjoyOnYeMh51ehN6MT4Tenc+Mz52w3lzvr/cgvZjeTu8QvYzeR+8IvYbeBL2D3gK9sJxczi/nsL2YnE7OmL3O3kfOjL2GnIa9g5yDvVyML8bcnE6M3L3OnEeMzr3HnMe9L4RvjO+c772gvFjeLu+QvEzeJ++IvEbehLxD3oK8gbxYnC7O2LxMnCfOzLxn3sa8Q5zDvC6MbpwnjO68Z5znvFC8LN4X70i8Jt5EvCPeQrxBvCycF85svCacZrwjnGO8F4w3nHe8KLwW3iS8E94ivCG8Fpw2vBOcM7wUvAveErwRvAucG7y8gl/BnoKPgt+CuIZew5yGT8OO' $Zint_dll &= 'hoeGXoLehk+Cz4awjlzHr+OYjk7HjI5Hx4aOg45chi/D3I5Ohs6OR4bHji+Cb4bvjqCeWM+u55CeTM+n54ieRs+EnkPPgp6BnliOLsfYnkyOJ8fMnmfPxp5DjsOeLoZujieG7p5njueeUN+s79f3SN+m70Tfo+9C30HfUJ4sz5fn0L5InibPyL5m3yPPxL5CnsK+QZ7BviyOF8dsniaO7L5mniOO5r5jnuO+F4Y3jnee974o35bvJN+T7yLfId8onhbPaL4knhPPZL4z32K+IZ5hvhaONp4Tjna+M55zvhTfi+8S3xHfFJ4LzzS+Ep4yvhGeMb4LjhueO74K3wnfCp4avgmeGb5egU+BXIOvwU6DR4MvgW+DWIeuw0yHp8NGh0OHLoNuhyeDZ4dQj6zH1+NIj6bHRI+jx0KPQY8sh5fDbI+3x2aPI4djjxeDN4d3j6jP1uekz9Pnos+hzyiPlsdon7bPk8dknyKPYp8hj2GfFoc2jxOHdp8zj3Of1O/r99Lv0e+Uz8vntN+Sz7Lfkc+x3xSPi8c0nxKPdL8ynxGPcr8xn3G/C4cbjzufe7/K78nvis+a34nPmd8KjxqfCY86vxmfOb/F74XPjd8Fjw2fHb+ugaeBrIPXwaaDo4OXgbeDqIfWw6SH08Oih6GHloO2h5ODs4fUx+vj0sfRx5SHy8O0j9vHso+Rh7GPi4Obh7uP6ufp58rH2s/Jx9nPioeaj4mHup+Zj7mfAOXnxcfNz4WHAI2PnZ/WgdOBANSD68HSg9GDAMuB24Pqw+nDAMqD2ofJg9mHIPXjzzEQnQMZAlVAApd8+AQ3Ag8CbgIBAQEhAWoB9bZMENEMkGcdBkAA9CZTQJE0IMMMCq5k4BwQ0QJQY+8FOQPVTnIARORlBVoCiANVAlBgnl6QbI4ErAJbAQB/AIQBBwBFAERTBlGQLGBl9AZeAhFHAkKOXmAqwGzsBASKAbQCnQZnoAlAsAsQD+Bh5QViARDeAZOF' $Zint_dll &= 'AEEDaQBA155l0DPAHdAGUIA4gClg7hkHUP6pAGRiSAWTAGQDggKAtmjvcBEQJLATACdqNQVXRmEwLoBncgU4IAHKRk8QFJAOQK9ouQU9Amw+Z9BgjgWBiBZOkCqQ4ocGzAL7KgK1plIg5v0Esw0CpYLGUjAQgCOwWzhwJ+rfBRSOZtAdgO8cBWCAFmSQB/AJ4DPgCxLQ5/0E9QC5AcYAAUUBWgODAE+qxQKpvmr/om5mBraGYVAoAPArECEQ3Q4ghOjzBZ8A4h5UQBjAiiDQG4BaDTAlYIYgkA7AYv0FHAGSAgLpAuUAX+ZggAnquAYqvltwDtAHUAfopQXcASQAkwJQAAOmAkAA/AJIAAOdAJMD1gFsIANt3omAJ1AZEIracKDsAwZ47mrQGSDcIOAbUPG0AmGVBgueaQBU7fAEMALnAPYCAGcADwE8ArQBAFMB2gJSAB0BQJuOWQAksDbACQAl7P8EUbZloDawGRAAGqAwIAPQbP0EVLyebNDo9AV9BQYWAhRgAD9uXoDQT3A5ABAlEDagATAkUPAm4C8g6b8H475rQPEHcNSJMF1IgDkQwDawGkAz4Gz7Bf6enUUQHpXpxhgED2B6/gSuihHx/tICYv4aNHVhLwkunHHnAmPUHFsgLnbAcu0CRNUHBOJJWtvmhGPfFw+ccP0CIWFZCaylJ0MIVC8AMCUwB56ZgqFoJAs5AFT+WmBkHQZzAACFAJoAtADUDwD6ACb1C1QvIKv+HQA/EBCAQDKRkBGAIQAbAQcPGSUBAR4VDwGaVoBSuIsVEQUJHR8ZEyiXAA8UESEBGDKCJSERCSUvMSsoBzBgTDn8GMEBKAESSpOAUiIDEKIDslYAIDegNwChM6BrywXaA8oDBIoDCgMaVnAgOUAgPWA9QO1vBrQDAKQDpgOuA6wDQaiucsAy4DJgYmgHALYDlgMWAxQDADQDdANkA2YDVW7VB2jedYBldAZevmgQxGRLBkYDQgNiHQhQTlYC' $Zint_dll &= '4GLBBjYCFgIAEgIaAjoCMgJEIp0OcgJ6fncgLxBgL2AnQCdAVsMQYCQgJCAsIF7aEEEuwO5hBywCKPZzAIV+LSVC7GsGhgKOAkSMnnGAKYBrPgaQAhDQAlA+XMAlwC3A5a2neQyWhKB33gBwgACAQMBAQICAgLDBQMAAAJcUcAxkgAX9rxfwCHAACJsX8Ah84EOKDKaIACwEegCmoUDxIFEBoMBxgWFB0QAREzHxLgHnZgsXAhn2n0A8MwFvQAUYBwh8j6BRobbhtQlkoMAFEFSAAfjJA1Fy4mKjY4QEIKXF5hfgIHAAMJCBAFEQkWAAoLDAwTDR0EEB4FFh8XEBEiLyHz5hkRgFEuaeMVYJ8isEJLwpZURCVQBS/RMzQzAzfzEkixJEyVBkhTaE989WDEVZdEVVNEVQ+xRg/wSyaQFGQyRBcwxFWQTzT77vH2Dmp9gzYdY+XGMCGm6V8+98OQCRNsUWvOENOYzDHY+cYRREtAEF8REGP8EZmIYD07IcDsWOTMfENPUNIBzBRAAgxCI0h2efGAAAgBMAgSUEAEL4fENjeIYBPyQgAgEDOwEEC0AQsm5wDRBBIF8IXg1ANPA2AkEwUGBtAAEEKAIEJyIQBUakEFAgwFMwcDUCouI6UgeBAjMzBjAwMzIxDFAjEYMBIzPDAQEFMzEyPzAzBJJUQTFEwAWI0489qIEuYBAAAi8wUVD/QQDolQMTBRQEgF45MPAkCB41MDQxOF0VMVg3nGDDDERBA1MDWgJgww83MTEwOGsxxSBkYEMFNwFZnLDOUmTCRDNUdMMxLQb+fEYnfMNAdEIqJBDzjgcNAvEBMyhSMoEiZABEExUwI0MzQyPDH3FAAihCAmzwwQMxMwM1mdoAKEQtqkxY6BR6ttujOEDQHAT3I0Dy//9fYnIrBoKi8J+isqIBcCxQ8V/2P3kOH/B4DgQwYbgAN/YWgMAGgAjgCQEA6AAEEgFEAXKuFtAcQLAg0CRw6DYBGwNA' $Zint_dll &= 'XYYH4D5gRGBJQMBPoFXAK2sEXwYAxwYzB6MHFwgEjwgCCYLSAOCooMCvwLhwCALBYgcAVqpFAHxeDGBriQj+7obgBBLQ5ucHxQH7ATOoHozQ6bAHDmaAMYA+AGBCgEaQSjBPANBV8FpQYPBlANBrQHGgd4B8EGCDgIrgkdBgQAtQIpaT4GPGAVgAbgBUhK4N4mwiAQU2GVAUEPAW0BjQG1BekkCEY4cAmALOtgiAMgBwNvA4kD2QQACwRTBJ8ExgUACgVCBZ4F3gYlAhaJBgMAAaltLg4motQVYul6AHwAjg2QQAUAzwDdAPsBEAkBNQFRAYYBkQoRsA3bOgIUBlngAUlQK99haQYeUIhQNAwRYM4EGARGBHgGVcM6BRK/BEB2EIwAroyQnyACQBWgGUAAHSARQCRQKPoM6S8EIM3wM9BIQABOoEVAXCBTQABqoGJAeBBwMACIkIEwmhCTMACskKPAvaC3wBDCINzA16DvYR9W/lOwRjshoEZbQaBGUoEQQTFEFgKwA7AE1WEuC1SIIbLF9A8gJGmmFwHSzVHPBdDvPTEjBBAismFFLEUABgAlDjJw5qNuxQAQMwVFXwZ8wHOL7woEEGgOlQK96mgWFPKhGq9QUheQ8LjQEXZougsup+KxQkMOK/CA8lBe4agGohAhXFACYNAEwA/1r/dqTx4GUhD0gQDSQAoloTQMQBIQaOIFQZ8IBKBi/lAFk1BxUAKYAlBlUAcQCmADOiDiJw1qFwDNBTFaD3AwBaoyAXEH6s4ewbHOOaHP8k5R8JLGKNMUzlahoeGfWeBfHPGPa+wTH+ykFSVTA1UBzzT3IFEHoDQxkcpVgRLfAEHPVLcgiCBOYOHAVQZrrTAg9Akv6mo+OzCwBhIBEeEzLzDbLvDaHwrjcBSU9NHxi2GUAJ6zoweAGksOsFEREhQVFxAZChwdHxETJSYmCCstLy4sIAmGEAZOAzAQoMEAwREAASFRQXFxkbHRAiIiOEATNT' $Zint_dll &= 'g+Ow4xNExAk1EJywALAAASEBMVGRAZCRIeIBMlKCAqQCCTY5PD9CRh1KTVG3PXChMRAyADG/DECARkxERkKQICgAEKFiUOFIAh1lByUdBy21fQc1lQmX6BBFhQlNziMAVFV50AUQBlAGgJZ24w7yPgjRZ/IJhQCJIACNDo1QCZAJ0CkAEApQCpBq7QixBwALDQ8RZ0AwAz6wS+SwrzvkMAbfC6AG33sgAOVuHADnZ3CPAkgTfxWQ3HGcBwEwBv/lC59XcBUQt3gQAOOlGn9TcE0Q36d3EABjULlgcn6FEH7tVwHz7cZeNAFjqk80c24DATBNMN3m/0UTOPdzIABBEzpvcyDzAFEIc0wLVRaDBHAmB9EEd/8dB9EEdxUHQTo2vgjwDAdRHfVHdQQHUgj3cAtTCHXzBtEEeesGsd4E5+wabEFDA2inbSDVUWtsH20gFRA8TQBwl2wghXDWD2wQhXCSTcCWHSW+72HGarkBmtWBhK4HUB2HCFAlWg9i0wvgVghgWgjqp/pFCPVjBXISCPE9CHHwB/HQBRGjek8FsmHPAFNmkCBhgQElYFGet5BAsLQFAJCPUAQA4GzuAJdPACAAoHkFxHcAAPOCYQOqfQAAnWqx8AKZQ4AxZvUPbAAAdghpAACJ8Qi+EwAnAOd69ACd8REX4eMB8hlAwNAAALAjmwFfNRUAAGhK7hBj/QAGoQdBtMruMBgCAKCdh0DQvgIAQKnMD7yFAAAAmZoAANOkCAAA9rsNAMcAACBH2A4FYA4AgJIPAACAtxAA0EUBEABwoRIAIFMDEABgmhQAMGgFEACQjBYAwH4HEABA7BgAEB4JEACw+hoA4AgLEACgwRwA8DMNEABQ1x4AACUPEABQnSAAAG8BIACgiyIA8HkDIACwsCQA4EIFIABApiYAEFQHIACQxigAUEQUAAAgFwQAsBKRgMQROOBa1RQABQBAAPwFAHCfizB5BgEAQBqG0N8GAACjjNYUkHfwNAcA' $Zint_dll &= 'EGTRHxCSBwDgLdgBVOnCHQDrdwKHgh1QcwE42g4BALDVAQDAJqhdDwglAAA/AiNghvACABAVyjBOA4ACQC1KAY25C7o7AAIAsvoBAJc6ENANsB0AgE8cAMBGgBsAkHSqHQqZAQAAJoYBAA5/AQAAK2ABAGFeAQAAREEBANA9AQAA9SIBAL8cAQAAmgMBAMrxAAEA7+4AAKXQ1hUA9WywD7PNBKwAAHuViQheja0FdJ4dsNZxgNolwNNlgJrg0JgCgAJw3Bkg3llwNj8AACDEPgCAID0AANDSPACQGzsAAMDpOgBgDTkAADD/OACwbTcAAOCfNgBAezUAARCJZG8ANAMAIAArAwBqFQMATwAKAwAf+AIAOgDnAgBw2QIAVQDGAgDBugIA5AClAgCumwIAiwCEAgCjfQIAhgBiAgDMXAIA6QBDAgB9PwIAWEgg7trgIeAHCwIAewQKAgBeFZ7XsCIAABBDIwBQiiQAAAB4JQCgnCYAAPBuJwBw/CgAACAOKQCA6ioAANAYKwCQ0SwAAMAjLQBgxy4AATA17/0hACYeAwAAbCADAEk/AwAA3UMDAPhcAwAAsmIDAJd9AwAAv4QDAJqbAwAA0KUDAPW6AwEAYcYDAETZbuEQcD4AsII/AJAqkAKw2KAQrDgA5D12GoDaclDVtPChuQs6fwAgABJRDjeZAAB9AKcAAFi4AADMQMS9BtsAAKPlAAAAhvoAANYIAQAA8xcBALkpAQAAnDYBAAhKAQAALVUBAGdrAQAAQnQBAGqNARAAT5K25cAaAAACMBsAQPscABAJAB0AsO0eAOAPEB8AwNQUheT0EyQ0NgYiZhIuA/GeCGXaG8YC8W/2G2zxNwhhJRA8wRY76yD+NPHPQIffIEzoZRCm/MEQbGFfEP+W/MEQbOGLUq4t5Y/SAC8gnNP/zAkQPGnvHM4p8ZIJpUATGjLx7/QSbGG6HJ+YEDzBFnbnCRD/DRFM6bMSH5tQXOG2EtNdMEwj' $Zint_dll &= 'ecwMpZkJEMm/1JMEOw0AlMUhL1Pw//8iMENCTQhSWUdL3xwRLsiWAD9OEG4/LbJdCD/NzEw2hwAGZGPTPMkSto2AZnYIYrmAAFCgMOCQcGDQALLAoAwKCAMGDAsBBQoHDg8NCTgMaDMoEgIFEwsDHQAGGxQIDBcECgAeEQcWHBoVGQIJEA0OGA/AAQFQoEDRoBFx4AApLQobE/iAUfHgMZBxsWCRIIH3DX0gAAYCDAcaAyANACMIMBsSBBghABAONCQ2CS0xACYcKRM4BT4ZAAsiHxEvDxc1ADMlLDcoCj0uAB4yFicrHTwqBRUUOzk6gSAgURAgMCOdACgTJg8eAjw7NSkRIr0AOAAzJQkSJAsWLAAbNi8dOjctGQAyJw0aNCsVKgAXLh8+Pz05MWAh+N/SH/Ih4ANyBjBw8PMQQoXWBUDAh5AH9AQxByCyUGWS5uI1A1Ag1ceTwKLXBBA0BKUSUUR3ATBix8BhlXGSA6A28ZL1dUTjBmDgMMXl59FjBqBQ0iKzh+ckByCUQmQRtbPCBCCBZdRWt4GBA0AScxfXsNVRBnDFpnGDUqGzBLBmQ6EEA6dFBgAWhiRWk/Q2BhogA9QZgJQhQxYEGBuAlSPXNvXiJVCj1jVjVlQmAgaQtGHDFrViVQKg1KFDF7b04QPAF7f2deNWNQJklCwBlSLVotUDoNc393Z14lSBoEIVIhQpgJa1A2FXNtQygJe39wdxd3ZUMwGXtvUD4Fc39nThwhUDINY0YcIUIUIEnA/f1k+SISCjYTwA8D3jvoF2vEQAQAbuQNP4HsgBEJyGj4zAFFcAoFj2Ek7yEFIDMOmoDS8hWNQBUCvcp3aSn5sMoJmA10QuZ2oA8LsoZtYN0y8OgFkyCxEpgmgDAE3p/Gi53RsPID3BNYhjBOQBIGQ7Oozk57YGoINCpV+o26MM4LX5qVCRt+IEQF3OOjd/enUAAAd8zwg41nAGoOTdHlPsjzEOUJp5Z4JLyxcBQCSZ' $Zint_dll &= 'PQKS6HID8BO9Vcn73AwJcHgpy83vGyYPYDW9SqHS5UkIwJMzddQWJPoB0DKEfbtHakcMcJHE/sfwZs8GELojldJZpboPAGYYu8vso7UMkPUFy5kKGrUAUG+xrlfHcv0E4Fqdbn7eik4XYE2vjgqF9RpQRASYRoDefBhVgNkioEVbp578mE4DDNB54sRZokRZA6BGXXvnHvw5AmLE2GwC2qWbJg2Q++Yd+uUbJhyQ+eLFW6acWGsBAN9/Pr27Zh0L8Ocf/j26ZRtXIJ79OmTYaYDYdEEA3XvmHJhfgN8OcDy5Y8defDkDYcZcWHOA26adSvDkGSJEWH+A2gSgmSJFWqWaJAmQI0defTtnHg3wO2Yc+ePHXw5wPbtnH/8/vg2wumQZI0ZceRPgxl165RokmH0AgtyYhwLefTplChAlmiWbJ5//HjC8uWLFWqQYhgEA2aNHX38/vw+xvrzYhwHbp58e8jyYhIDdeuSYL98O2K8CLxAeXzNgAiBeKL9iI00wDHAiN65myDHPCMBycWM3rV6wDUAMhuI9d0buBLDWd4jQIUqvC9BI2zKGEYPTAHKX6WUPWwZM3NkAxQthuCkk3/0AdIpoweVWT6sAbKV+kYgiCUoAHiCjVPWtu8wAjlG1vi5YZJ8AGecyzzmTDkMAeICa+NWnyD8A7G5csAehTXwA3WbaX8ZaDJgAYjC5syrRJYQA4DT+73XpixYAaRvCcebOV54AUL2sy22vpj4Af/eSQonAI/wACrdL2B9TIUkApJBVqvZBrj0AvMrNnY+pUkgAtte/+y+yWZcAZV6gexpw6BUAM+7QgzpFlBIADxBEEXmVgRMAmzv5Rtb6qEcAyZxAPO2CbxQMXXqxlgFX2QZFioDJCOXn4+v725ugeRedaRldulmySWqSGSgJKo3dCJW5OO0A98Ore/bBr3MA5uHv88u7W7YgQYLpCWXKuV++BFGiadKJ0QnVh9jFB/EHhRkIcRp9+tlin5EYuRj9' $Zint_dll &= '14OJCXUJ6vnfk1kpTZopGgC9V65x4un/00CLgQv1x6Nr1oGAcQxVqnnyyb9TAKZhwql//tGPiNkLtUeOEQulZ84YsU+eeRyJCsWnYwTGoW/ekRktzbc4Q4ZBDOkJvTlt2pmQ4Rzdl11KrXfu8RjPs0v58u79KsUCiwDGbAMyjMDHJQBtUQQXM+6N2ADB6sgMJvduhgBSfAVCGJE0cwDvTI7O2dHCvQDr9MktDdwntAD4pG+wh9RTHgB9ngZkQzcZgQCS4zXhdHbwmgBNeI9Kz/LaogDSnMNqvk/s6AD1esqsLggOVwDdZigStUX5XgClOXC6sRuIIgDVg1RbH5R+lwCf5QerZVZEEQA4XRq5giGTWgDkljZj4oB14AB3mfFJm6FOaQB555BBS3LQzQDzvNsso7PTrwCdHcT+a4q/MQBQJO0W6df2CwB7hcs/rSov/AAJFA+pWLfeYQBnRyk+E/u2qABGYPo9X6emPAA6O3FAu8yyKwAcron9IzDWFQCEClWqXBAguACVWX9imN+gSCHmaAFXY8bvvf0YAfOFadLH7blNGBBz5q9ZCIt16reJ6SbD5anJCOu1MScAQ4Zv3t/d2dEQweGhmQhr1s/9EplRopEKW7b5KIMAZcr3jXnyh20A2tfN+ZFBgmcFzv+dWbLdN6NRCQJLlk+eX75FGZMFRYp37r89G7OlOYDBC3v2j336l00RmleuCQybVarNCADb1cnxgWHC51CtjQmrQQzL9YlxOeKn1QnpK1FK46X9DNhNDOkLu7UcnQv7lUkAkkeOf/6fXbrMORrtHFOmRQyBGtPFMOmx+fLtTvHQdwABpcoAcAwAyQDQDACR4ncwPwoGyQIQfzxXCdAQgHwQyACDDKBEyHkQhjxwyBOhAgDBA98Hm7KyAIUQwEDArqAeCiJGCH4EFDC/TxEMCggEBgQFBwlOs0Fg4O8nDTzBAhQgEw1EUNgxEOkkDQcF+/wRAAMIZtEgMVBQAAEDBxAQ' $Zint_dll &= 'EJVgFw0HytEgUGAAAVMDvvhRAAYBA2DALgAJGwIGEjYEDAAkHQgYSDoQMABBJSARM0pAIgAXRTFELjscAADYAjYZywBoCcDuwGA3CxENCQ8LE4Am39AQsfBwMAEQZyDOHn66oC0NBAUBtvcA2AMQFRQxA+SgQlBiIUTB0waRlCIg0nDCQaWkpn8D/87TAGB67kCDaJkiwXYq7/DPhihAY4xCahxBetTwT4ogQkO8xE0UxIbc998AQmMYWRdWAVIQxoYVUP98RkP1UEWAIJgrbm8dyfMF/2DAhqDLCTQGAqRIE/+kByYxcoGBGMJtNMNd/2bbQ3qFMHmj+AQgFUA09V8B0wVEihVwGBtTC0AZl/+5svkj1YE0lBcXNhl8Gjb7n5AKJzV0NNw1SCrZ8gIZkf/JckjZNVUIFakZmBpSG7D6HxOcbegkjvGENFdVhmBRof8x55G0CfsDqbbBrGXwFmnhpPafCBZkSaNpnWX1GlGVLXXJs+AAEp9jZRBcAWwFhBQLlA+uyEHh7w1oAHnMDgbFARoG4aIcBwXuBVDLAQIu6eGULAMOy7Bhdg5UIM7N0EQOPO72YAdQ9ei6DhWu8tDrdA4Nrt0QVGd1D9EAzQDBducAEQMw6d8NOQCrAFVbvt+ga+0NxbbnUGUVDxaEALkm6MDr6g3/JREkqkbPEOf7Da2+6ABllQ5XqgbgYGn+DVRu6bDn/Q00oob84GL5DcsAu6b04Kzqew+mhuAQYfQNmf7p8CZqJg6blvQQCADrCQ5rqj7gcOcVDhB2zwBp1wweoubQsOOXDm0AdObpgCwCIGskDn0ApB7mIC0AAA2gDIDrLg6zIgBzzuLwC3DpNw9dgsbzwAzgC0Bphw5CIgDGdvngBXB0JgoioeoNDaKG/QDsJQ4o7tFQieoUDkvuzqDiLQ6nAE+iNuLgZBcORQDPHvTwqupDD2J+4WDiIw6DLv7Ap2jAAD0At8b2oGpIDzUtAJ/24VBqyg6v/hBI' $Zint_dll &= 'D98gBC0AhwDC5vSgAzDk6nMPWQABCAruop0ALAMGJGPgxA56CxAQUGnFAAMCTxUgCI4EYKDBALG6C2DQg2C7AAEBCaUWolrSRyAObQEGA9vZYAo2AwjTs0AocfB0AYMSCXYMfxUgIwNQKKfg8QMotfDFgDIIVMA7AF8UIghwEAUGA/PC8AEKAwQN/NcEsROJEVBRIQJwULPAAH6kHQJQUPMAUWEx8S4+fVMYsFAfEGGVAlAfIHYfUIgeC0EabVDghhEACjSjMjNjhA5QLkVAKAgPBIAMgCAUGSgZiAkQ6BSoHLgY2AcQyBR4H+gXCAgQ+DkIOhg6KAp47Vl/8TsIPBg8KAx46Vl/YUQIRBhEKARAOERIRFhEeARAiESYRKhEuARAyETYROhE+IRACEUYddVZ3wBHGAdCKPfNWXRHiEeYF0CoR7hHyEd4zVlvAWBH2BXIFRgWCHgCW1UfaB9IFjgGEBgfyBjYGGhKEOgYCB/451qBGgi0+tha1B3oHOgdCIAbmBvIFzgeCFAeeBioHYgcCJAc+BvoG3geCIAeiBhoHkgeCAAeKBj4HVgYCGR421rCG9gbqBsItHvhWvJJqEoISgiwShhKyEooSgjQSkhK+Eo4SgjgSlhKqEtYSwgAS3hKyEt4SwggS2hKaEu4SwgQS4hKiEvYSwgwS5hKmEvoSwhASxgaCBo4GgggGlgaSBr4GQjgGbgZ2BnIGQjAH6gZmBmoGAiQGEgfOB8oHwgAFBgUKBRoFUiAFZgVqPUzWz9wGijE+jxbAhb4KfjFWi+pBBC4FEgVWBUIBDAYNCg0ODRIBDBYNGg0eDSIFDCYNKg0uDR4wVov+Irw////RYFbgVKBU4HqiJqStY6cluSPT47jj7qJc5Vel6CYTomOiqGYopDAmXWLuJXlj7yXwJWimIaSo5j4i6SY24pPkuWOpZimmKeYVJR2i1aU4ZPBjFKWaOWomOaPqZizieOL7oznlqSbkJf7k6OKVIuq' $Zint_dll &= 'mKuYuZdcl4iRrZiWjvGTsJhdid2M3IzkiGqYaZixjZ+IsZiymLOYU5a0mPCM5YiSlpyLnYuei+CSupe1mLaYt5hskFmPbZC8mLqYu5h3i6GN7om5mLiYp5VljmSOvJG9mHSV5ZBXgb6YwJjjkd+XyIi/mLyJwouHko+MwZhDlOmKwpjJiN6M6oqalbCUeIvvieWYYJOMlMSYupTgl0yQZo6Xjr6Jz5JBksiYyojhklqPso1Dl8yRvYnHmF2Xw5jFmOyNxphDm86Y0ZjPmMCJuZXJmM2Y8YxnjqSK0pjKmOGXmI7LmNCY05jMmJ+Ly4igi7+JRJuZlo6V8oxOkLWX1pVXjKOR4olyj9eY3JjamNWYrZHYmNuY2ZjbldaYTZCTlt2Y3phDj+uYb5RVleaY7pW0ieqY5JjtmHGRwox7lMXg7Jh8k+GY9IzzjN+Y2I7nmO2VbJLjmJGM4JjomOKYz5fpmGCY5IuQjO6Y75jzmMyIzpXymPGY9Zj0mOKSkoz2mMOOpJHjkvSL95hVi/iY+phUloaMUI71lPmYw41il/yYQpn7mMKNnY9YjEOZzYtAmUGZrZOckaGLbJZEmbuXRZlImUaZbZFHmUmZS5lKmcaVVotNmU6ZrYlMmfKOUZlQmU+Z1JhSmZ6PU5lEl9eWVZlUmVeZVplYmVmZ8oizjFqMW4+bkqKL5pD1jI6NW5nGlmWTmY5amVyZfZOVil2Z/JNTkV+ZYJmqlPaMWphhmaSLupW0ke+LVJOTjGKZY5ngk36JZpn7jWWZxI1nmezjaJlglmmZaplrmeePyo6lim6ZbJm7lm2ZeZVvmXCZcZl+k3WZc5l0mXKZ4Y12meiW4pd3maaQeJl5j3mZnJK9l4CTw5l6maPqw4t7mX2WiI/6kX2Z4pN+mYCZTYqBmaWLypOaiW+Pn5SCmYGTbpCDmaqV2JCgiqeKhJmGmVmMhZnxl4mPu5TKlYeZmJeImYmZnpOKmaeQ/I2UjIuZaI6P' $Zint_dll &= 'jeSSjZmlke2NjpmPmU+RjJmRmVWWhI2QmZWM3I2NlJSZkpmbleiPm5mEipWZk5lukZeZlpljioCMnJmrl5iZnZmamZmZzZf3jMGJ8peVj3eThY2gmaGZ45dKmKOZ+IyimU6KpJl1lrqSRZfXlaWZ0+iuk6aZqIqxlp+Pp5nllauZqJComc6LqZmpik2MrJmtma6Zr5nZjvmM3JbmlvWT75WwmbGZs5m1mbSZtpm7iWuW+o23mXiRoI+ni7iZ2ZS5mbqZu5m8mUOV5ovjiL2TvZlcj+eQv5m+maGP34zBmbyUwpnalLKR7JGmi+yTUJKOlG2WxJnokFSMxZnGmUuJ84jriqaRcIuRl8mZtYnImaiLypnvlsuZ0Jf6jLSMzJnOmc2ZfpBYiX2Jz5nQmbWM0ZmOi1GO0pmUlrONeYtGl2+RvZT7jmaP5o7zjpaPvpTVmWKJcJH7jMOM5YvZmUCS/JGpi6KP2pnYmcKJ5JG2jmqORYmQioaNaY7bmdyZaItlioeNZ4vdkkSJr5O8lkCNmZdmk/yMTozlmeGLaZbblOSZ3IrfmeCZ4pnjmXqLgZCrleGZ3ZnhjN6ZQ5jwleaS4IyQjeaZ25PqmfyO9I7tmeuZoZbomfGZ7JnvmcSMvZbwmfKZ9JnujWGY6ZnnmfOZ7pn2mUKa+Jn8mUCa+ZldmueNUIr3mUSa9IhDmqOIaZVBmvqZ9Zn7mcaNRZr1iE6aRppHmqOPiZZMmkuaTpNNmkqaU4m0jU+QSJqCk0maoIhTmkKXpY9ZmliaT5rBkVCa7ZFVmqSPUprilluMVppXmlSaWppRmmCaZZphmlyaZppQkWiaQY1emp2SYppbmquK7IqFimOaX5qWjGmaZ5pykWmLqotkmvKLY4ltmmuapZpwmmqabppsmmuOb5pymneadZp0mlGSw4lxmnOapo9SiXaa3ImCmvqPfZp7mnyafppciViReJp5mpqKgZrtioSagJqDmqyV05O2lIaahZpk' $Zint_dll &= 'ioeaipqJmoiaWJSLmoyajpqNmpCak5qRmo+akpqUmpWalpqXmpiaZJn6jmyO8Yn2iGOSmZqijc2IfZCamsWMkY2cmpua3pWdmp+anpqgmqGal4yAiaKapJqjmqaaeZOnmrOI3Y1cjG6SqJqpmquarJrijc+LVpaqmq2av41CjbGao41Skq6a2JKymoKQsJqzml6MtJq1mkONX4q3mriauZq2mq+aupq7moSW6Y+9mr6avJrAmleU5oh1lcGa+4+3jnyU7orpjXiWsJOYjM2Rv5rCmsKRw5rEmsaa55Ksip/qgYnxleqPZ5Pkjcyau5Xbl/KJyJpZkcuag5Nok4STt5TLkseNx5qWiVWTyZrFmm+QzZptj6uLzprmlZ2RxJLQmm6W0ZrWmq2V1ZrPmtKa1JqkjceV15pkkvOJ64/ZmtiaiI3amtya25remtOa4Jrfmt2abY5wkHOR4Zq6kOuIhJTZkuOa4prkmuWa5prnms+V6JrEiemaW5dPiseZZ4+9keqa6Zayluya5ZFWk76RdpXtmu6am4m4ju+azojwmvGagonvit6T8pX1mnSR9JpfjHqW85qFk/ea9pr5mvianIn6mqeP/JpEkvuasZWXj3qTQJtEjUGbQJTclM+WRJRKm1eLZJetlqqbQptFm8ORV5Zpk0abhZbIjaiPR5tvjm6Ot4jGjKmQz4hLm0ybSZtXia2KSJvDllCVpoj3iHCO0IihiFGbT5u6llKbUJtOm1CQTZvYleKMVptXm6mPU5tLmGuUVZuljVibd5VZm1SbuZZ9lFqbUZVbm1+bXJvFiV6buY5dm5mMa5tkm2GbhJJgm2KbY5tlm2ab8Ipom2ebaZvsj2yb2pJkiWqbbZtum3Gbb5twm3GOcptFjXObmo62kXSbdZt5jkaN0JZHi8eMdpt3inebt5F4m6GbeZt6m3ubfZt+m4Cb7pFGieeOwIh2ka6Ks45HjYaTQI+vioiS6JK2iFiL85XAjnGL6ZC6' $Zint_dll &= 'jkeXgZt7i8mNUYqDiaqPxomCm2WXaI/ijoOb8YrQk6eWhJuFm3iVh5umivWLhpuwilGQi5tAjseJipuIm4ybiZtKlMueUpCNm76XjpuQm56Sj5uhkJuOzpH1jpWV6pC6CP/////LjpGbq4+Sm5Ob0Yi4kXGQlJuxk6yPrY+Vm+uQro+Wm5eb3paYm8SLQY+Zm5qb2o5LkPKTc5D2lEGUx4ubm4+LnJv8i82Trolyjp2boJufm/uLnptXk66RapPGjneRmpeim6Ob1JNSjqWbppunm/KKqJupm6qJWpHiiqubppbQkXiKrZuvm92KrJuum7GbsJuym7Obu5Osi+OJtJu5m7eb9ZX0lYeTtptzj7WbkpC6m+iNwJvBm7ubUoq8m8WbxJvDm7+bvpvCm/aVyZvGm8ibkpfHm72bk5DKm7WNy5vMm8+bzpvNm4iTuJvVm9Gb0JvSm9Ob1pvkl9eb1JvYm96K2Zvbm9qb3Jvdm+yQQo+Ej4ORSI22jUmNkIvem7eNyIzfm6SWYpTgm0qNqopGktCLc456lb+U4ZvziuSbn5Ljm+Kb5ZvpkoOQdI7IkNGRQYugkuab55vtj1iW6pvpm+ibnZXxm3mW65vtm4uW7Jvum6aU75u8lfCbsYq9lU6U8pvzm0uNsor0m7aMY5dIl/SK9puhkkyNr4/dlLCPmI/qkveVWJNNjXuV95t4k8CNyYzrksGIjo9OjWaX+Jv5m3CU+pv1l0yY/Jv7m2aKQJxDnEScQpxflbGPRpxFnEGcR5xInEmcTJxKnEucTZyEieySTpyajPSJVZRPnPmT2ZVQnE2YUZy+lVScn5ivmK6O85NVnHyLopL4iFacpJVPjW+S7ZLtlreMyoxXnFicXpzjjqOSrYtZnEqVZZJanFucrotcnF2cX5yWk2CcYZxinFOcUpxjnGCMRpXKjVaVpJJqlWScso9liWWcZpzwlt6UaZydiaqQaJxnnGGM0pFtnGucapyll+OMmY9s' $Zint_dll &= 'nGuTXY++k3Ccb5xunHGc5IxynJyVeo9znPeUv5Olkk+TdJxKi1OQS5X1ikWUdZx1jlmWWpaeiXqciZJ3nPWJq5x5nE+UeJx2nJqNfJyDnImcgZx7k4acfJWAnIWc5Zd2jtORfZx9i4icq5CFiYKc9omHnK+LhJyKnIyclpyUnJGckJz2l5KcsItQjZqPmZyLnI+cfpz4iZOclZxwkqaNtomNnJicl5yxi6eRhopijI6cmpydnJ+cu46lnO6Sm5yjnPeJoZyinJ6coJzljEmXs4p4iaScWZSriN+Ue5yqnK6c45annImTrJzuj62c1ZNmmKmcr5ybjcmQ0oionKaceZGcnFOOxJG7nHqRtpyznLSc5I63nLqctZxEj7icspz6lvmWvJy9nNOIsZzwi6SItIq5nMGcwJzFnMacxJzHnL+cw5zInMmcvpycjsKc1JFRjbCcVJDWnOeVzJzNnM6c1ZzUnJ2WtYrSnGSMU4rPnLaX0ZzUiNOcypzQnNecY4zLnHyXSpfanN6cnpH3l9+c3JzZnNic3ZyulbKTZYzgnNuc4ZybjK+J6Zy2iuec6Jynjeac5JzjnOqc4pzsnPmJ7pztnKaS8ZzvnOWcnIzwnPSc85z1nPKc9pz3nPic6JX6nPmcXo+skOSJ+on7nL2IypD8nMHmQJ2BjEGd7ZBCnUOdWYtEnUWdRp3VkcuM35ZbloqPR53ukLvn4JTojsuNSJ3FkaWV75FLnUmdTJ1KnU2dr5W1iH2V4ZROnVGds49ai0+dVp20j1CdY5R9l1KdU51XnYqTVJ1SjdyQZZ2ylPCR4pSrnfiV75KVllqdn4mKkmOdU5JdnWSdX51mnWKdYZ2PlFud+4lZnZGL8ZFVnVidU43ZkLWPYJ1xlJKLZ4qHikCQaJ1tnWmdnYxunUGOiY1Fj1ydnY5rnXeObJ3CiGedp5KTi7KLap2liMGNVZDwktKUcJ19kaiRSo5xnXOdb53flbuSe5H5lcyOgJ1+' $Zint_dll &= 'nZiQnox4nbeP5pNQlHadfJH2jnudto91nXqdcpR0nUCMfIp8namXzI1Uknmd2pBUjYSQholbkXedZItmjM2SfZ1+kYGdg521kYmdhJ2GnWCV8ZKHnUuXZ5e3iqyIhZ2CnfaKh4mInWiXjJ25kZOdjZ2KnZGdcp2OnZKdwJSLk4udj51njO+N25CXnUWTlJ2AlpWdlp3MlqCQgoydnVSOmp2ZnVGUs5NQk5udnJ2PlWSUQo7vkG+WaIqjnZ6daZelnaGdop2AkaCdXp2knZ+dqZ2qnUaTrJ1DjqedW4utnaadsZ2wna+dsp20ne+Ps523nbWdtp2QnbmduJ2Ynbqdrp14jrudvJ2+nb2dv538iVWN+pWtkMyMwZ3EnXGVfovDncKdc5TFnbOLx53GnbiKVY7Wk2iMlJDIna6QR5N+lcmdyp3LnbaVfJvEkGuV1o3jlMGUbJO/l82dzo7OnbSI0ovLkICVz51hjmaSeo5WkNCd+5WXiXuO053RndSdt5fSnfmQ1Z2wkdad+IrYnded2Z3anfmK+pNVkoyLfI6BkXuProjbnaCJ351Wjd6dqY24j92duY++lqiN1YjMkOSdr5BmiXSPhpbwjbqPpZDjneGd4p2LkkWe6J2ejleN5p3nnVeQ5Z1Ojuqd6Z3une+d651Biuyd7Z3TlIGVaYzwnbCQu49xksWL8Z31ncmJ8p30nfOdi49nksOI9p33naiS75dijumVXJZBnvmd/J37nfidQJ7ck/qdQp6Mj0OeapeYlESeRp5HnkieyItniViNSZ5KnpGPgpHWmV2RXJHWkcWN8JiOjEyX/JWelUue8Y29kkyeTphdlqmSTZ76ik6eT57YlqKWlpZ7lkSOUZ7pjnCWU55WnlWe94qAi1KeVJ5XnpmQm5fHiN6NupHbjvGPWp5tk1ieqZFZnvCP25ZbnlyeiJdhnlmNdJRenoyT3J3gnW6LZpRgnryPwpRmnviUXZ5jnmKezZCNltGXh5bK' $Zint_dll &= 'iX2OZ5hlnpWQZJ5fns2Ma55pnsuJZ55tnnOexpG/lXWeQZV0npCUXpa5ivWQX4/Rkk2XcJ5vnnGebp52nmyeap5ynmiejJL2lsSO8o24jY+WYIrMksiTaInwkLKQSYx4nlqNnIp6npSKgZ59nvGQaoqqjWmKzY17noWMaoyNk3mexIh8nn6ey4tLjLqKaouCnveNkZZWjoOeT5WPnrGJhJ6VnoWewJeMnn6UlJ6HnrKIiZ5bjYueip6GnpGevY/rmuaMnJeInvKSQoqrjYCekJ6Bio6ekp6Ok/yKsJ7Hlpee+4qenl+Wn56hnqWemZ5Jko+TqZ6cnqaeoJ5YkKqesZConruKb5iWnqSe1oiYnriWnZ5BkMWSk56jnpqQrZ6Rip+Mr56anq6ep56bnquerJ69nsyTop65nrue1pJrl5aVtp7IkbyeXpGznsCev57tk76e6JPCnrWexou4nnyPgJS6nsmLsp60nrGeT5h5ireewZ5UiuWNfInSnlCY1Z5ZkNSe057QnsSe4Z6pCP/////Dntaezp7Jnsaex57PnqDqzJ5cjcaShJHKnsWeyJ5sl4qWzZ7Xnt+e2J7lnuOe3p7dns6ShZHbntme4J7mnvOU7J7nnuqe5J6UkleV2p7inr6PzZb2numeoIyhiX6K0Z6/j+6e9Z73jpKKTZLrnvCe9J60i2uL8p5Ai8mT8Z7znu2e756AimiS+p74nueM955An3ee+Z77nvyeS59Hn42eRp9Fn0Kf6J5En0OfSZ9FmEyf+YtIn0qfpZRNn1GfTp+Tl0+f3J5Sn1OfVIlVn4eMn47Ti6KJfpdXn1afWZ9ci9SLvIpcn1ufXZ/MiVaSXp+9imCfX59hn2KfY59+jrOQn42QleCVY5iVjs6N8Jdkn2WfgI5mn2efaZ9on3eWfY/qjmOOap9sn0KQa59tn26fb59wn3Gfc59yn3Sfo4lpknWfRY5rinafYZPKmkKLd594n+qViJbFk3mf5JT5' $Zint_dll &= 'lNGWep98n3uffp99n4GfgY6vloKfg59Di4Sfhp+Fn4WQWJVpicOU85Jgj4GLxJSsjoifvoqYifCTh59djXKSiZ+Rn4qfv5GCi5KfiIxEi5Cfjp+Ln4CXvpLXk4yflJ+Tn0KMq4m5jY2fj592lvKRl5acn52fzYmmlfuWn5+hjsCPmJ+en4iJtYuVn5qf8pCRlOWUl59Alpmfop+gn5ufQZZnlIOLRJONkqOfoZ/XkZafaoltl66frZ/0kKqfjJe0k6Sfw5JriV6Np59Gj6yfq5+mn6mfiIqon2iUrJfyj/OQtJ+yn2yVr5+xn1mJX41RmFyKgpWBl0OKWpCzn7ifwY9Pl7WfsJ+2n9yXk5PAk1WKdIm8n7+fwZeEl8afwJ+9n9KXw59pj8Wfyp+Rk8ifwp9Xksmfvp/En8uf+ojBn8yfW5B+j6OVrI25n8efWZO0kImKz43Cj7ufYY9rjLqf0J+Nj7iM35/Zn5SLbpPUn92frYhRibeJ1p+qkc2fz59gjeCf25/Tn9qfqZbYn9yfzozDj1iS0p9Ol9Wfzp+Sk9Gf159wmLyOnpbhn6yU7Z+5jICP45+tl2GN8J/siO6f4p/on+qfbpfln02T55/vn+mfxZbkn6CO/J+Kiuaf65/sn+qR2JH0n/qf+J9Ik0Lg9Z/2n96fmYtZlb2Ol41SmPKfQeCJiYaRmZS/iviXn5bQkvmf+59RkUDg95/xn8GKiYxO4Eng9pCDioGPUuBL4KqSSODXkmvgReBE4E3gR+BG4Ezgn5BD4E/gUODAilXgVOBW4FngYpNT4Ffgg4z3kVHgWpRY4F3gW+Be4GHgWuCKjUeUt5+Ul1zgYODzkV/gSuCJ6GTgaOBm4GLgY+Bn4GXgbZVt4GrgaeBs4NKTbuCVkuuRo5Bv4HHgcODzn3Lg5ZNz4M6JlJNEioSL3I7QjUaYhpCKiXXgdOB44FmSe+B24HrgeeBfk9eI85d94EeJgOB+4Hzgd+BCloLggeCL' $Zint_dll &= 'iYTgsJWD4LOWxY9SkcSP+ZeK4PeQhuCL4IyJieCBlIXgiODGj8+UjODPjviQj+CH4EaMjeBvl5DgpOpuj5HgkuBNlJTgleBSlJWTl+CZ4NOXluCY4I2Jk+B6mprgh5FXjpzgm+BDkNeZneCf4I7gnuCg4JqUoeCi4KPgpODckqbgpeCn4Kjg3Y6DleqWqeCq4HWRoo6r4KzgreDQlcWUruB2lKuSr+DliY2LxJa0lrKJU5hxlqiVtZCw4MGToYyx4NKNs+Cy4LTgteC24F2Lt+C44KKMxpS64POPueC2i7vgveC84L7gz4y/4OeLX5GdjcHgwuDA4OuOxpO3i8TgS5LD4FSYgpTH4MngxuDSlsjgyuDCl87gzeCWkkyUo4zM4MvgUJdRl8/gjomWjYKO0ODR4NPgYo/V4NTg1uBsitjg1+Da4Nnguoyml8qLpInoi9+K5pfc4N7g3+DPidvgWI6/kt3g4uDsjuDgXYzHlOHg/ODn4LuMhYvk4J2Xrpf0kebg6ODUl9WL+pRplOng6+Du4Org7eDojGyJ7+CQkOzg2pfy4KLq8ODz4OXg8eC6jfTg9eCel/bg9+Dj4Pjgwoqjjvng+uD74FqJQOFalUHhoopC4UPhROFG4UfhReFylUnhSOFL4UrhTOFN4U/hTuGZjVHhUOHDinKQW5NS4baQWY6ZiVPhcJfhlVThY5NSl2KNXJBqkrKZrJLmiVXhVuFb4VnhWOHAnUWKV+HYiKiUyJSvl1zhWuF7kqSQqZRMlV7hqpdsjF/hXeHUlGDhYeHZiPSPZuFj4euTYuFFi2nhZOFl4WjhZ+FElWGRYJFei2rha+Fs4W7hbeF1iXbh5pRw4XLhdOFdkHXhc+G+jm/hceFhlcePeOF34XnhpI6tjZeTeuHJknzhn5d74YmRguGE4YXhc5KD4YDhfeF+4YHhiOGG4YfhieGL4YzhjeGO4YrhkOGP4ZHhw5eU4ZLhk+HgivyWyJWW4ZXhl+GY' $Zint_dll &= '4ZzhmeGa4ZvhneGe4Z/hoOGh4a2Ub5Oi4ZKUU5Wj4aThSZNGimONpeGm4afhSI6p4ajhquGr4eeUrOGt4YnqruGv4bDhTY6x4XWUfpZtiXaJsuG04bPhkJO3kFifteG/lrbhxIrVlLfhuOG54dqW05a8koqRu+GCj8iPvuG94bzh+5TFiqeMxOHB4V6QsJbA4cLhw+G/4cXhxuGtkuGKhZLH4cjhy+GHkMKTzOFylsnhyuHP4c7hzeHR4dDh0uHU4dPhy5V1j8SX1eG1k9bh1+Hb4dnh2uHY4dzh3eHe4d/htZbg4e6W4eFtkoqU6YtakuLhuIvOkOPhu43k4eXhpIzTjefhdZPUjW2LQ5ZqlHaTe43p4cmPsJdkjaWMoZTr4e3h6Yzs4fSS7+FWiurh6JRPieqNcZju4fDhyZXXkPLh8+Hx4W2K+eH44aWO+uH14fvh9uHWlPTh9+FB4kDigZb84emIQ+JC4sqPROJikUbiReJH4ubh6OFJ4kjipo7nl9COSuJWjF+LRouDjlOXUOJP4mORTOJO4mqPX5BN4kviSZTLj1uV1Y2Yk1HiUuJo4taLXJhUkVPi0In1kp+VVOKai1XiV+JY4kiUWeJa4lvi14vRicOTR4+EjlziSI/IiWKVXeLplGSRYOJh4omUYJBe4oGSX+LMj9qISIti4vaSY+LFkKuWQpVk4mXidJLFl2fiZuLtjmni7ohs4mri0oltjGviZY2SjeSVbeJzlr0I/////2/iz5BuibiJqohu4nDiceL1j3Libop04oqMhot14vOLduL6kMuT3pDzjXfigpKLkXnie+J44nriQYx84kWMh4txl37igOJNiYPiloqC4oHiheJ94obip5eH4oji8pqK4onii+KM4rOXjeLt6M2PjuKP4naPtpOQ4keSkeJbkpLio4temXySsY7GipPioOKW4oiLleKi4pTizo+Y4pniSpOa4n2KeZCElZzi5pGX4pvineL5jaTiTZWk' $Zint_dll &= 'lJmT2Iuj4qHis5Se4n2Sm5Oak/SNtuKm4qjiq+Ks4qniquKn4qXin+LNldOJs+Kw4rXitOKTlKWWWo6u4rfisuKx4q3ir+LHilyS+5CglLziopTfkLnizZS94tGVepK44rriu+K+4sKOxJPD4sLiv+JVmMjizOLJ4sXixuLL4sDi05nH4sHiyuLQ4siKzeLO4s/i0uLR4vSU0+L6l+uV2OLV4tTi0JDX4tni1uLd4tri2+LE4tzi3uLf4sSV4OLglsyLSIzh4rKViJCuluLisZeUlGWRU5Rsj76I5+Ll4uPin4rPj+ji5uLk4uzi6+Lq4uni7eLu4riQ7+Lx4vDi0IxXkfPinJPy4vTis5WMkWaN9eLGl/fi+OL54vrihY774m6MiotJi0Dj8ZZnjfziQ+PklluUUpWDj0Lj0Y5ojYaOiYu0lUHjZpFhlvWNh47bkkbj3ZfXjUfjYZBJ49CPro1I40mPvIxnkUTjSuNF42+MTeNR44uMTONV42mNjZe6iFLji4tP41DjnZNO40vjR4rikKaMV+NU41bjU+NwjLGRWOOOkWXjYeNb41/j+I7biFrjYuNm42qN1JbUklzjZONZ412SXuO7iMiWXePZi+qUjZHOl4+PjuNn4/yQY+No42rj95Jt42nj0pXJismW3Ihs4/uXa+OPieqTbuN142/jduNy45uUyI5043Hjd+Nw42OPRJZrj3PjgON7437jfOOB43rjYOPRkMmUfeN440CRcYxKj0SQVZGE44bjh+OD44XjeeOC44rjieOalkqMiOOM44vjj+OR41uOjeOS45PjlOOa41qTluOV45fjmOOZ45vjnOPKip3jnuOf46DjoeOi46PjpOOm46Xjp+Oo46njrOOq46vj341yjHWSsZSQj2yU65St4+ucruOw44WXr+Oy47Hjcpez4/yUtOO347bjteO441GMQZFgi7zjueO6473jvuO740iJpYnA48HjwuOCl0uPxOPD44mQxePG' $Zint_dll &= '48fj44rLisjjyeN8loOXc5dWmGyNzOPSjsvjzeOnjs+RzuNrjdWWz+PQ49Hj0uPT46iO65bV416S1OPX49bj2OO5kNnj2uO3ldvjj5Hc493j/Jfg49/j3uOukuHjRZDi4+PjV5jk4+Xj5+Pm46OU95NdmKeU6ePRj0mV6uPo48yK0oyIjuyUqIxilu3j6+NtjW6N54jmjXiU3Yjy41+Sd5TZkfTj8OPz4+7j8eNFltOM+4jv4/bj9+O3k7mLReRclImOuovGkGWYrJb149KQcov44/rj+eP740WSXZSvkkLkQeT843SQhZVE5EPkb41ymFTkSORJ5O6OR+SYjUbkSuSwkqCVQpHakU7kT+RL5EzkTeRwjVXkUeSGlYyWR5VQ5FPkUuRjllbkV+RWkVjkWuRe5FvkWeRelFzkXeSwiWTkX+Rg5GHkn5Fj5GLkZeRm5GfkYpDniWjk1ZepjkyPio52kmnkauRQiWvkbORt5G7kb+S7i6idcOTjkHHkyY5y5K6Yc+TcldqKQ5F3j5GVTY905HGNdeTKlITkd+THkZWUvYx25ESReOT4knrkeeR85HvkfeSA5H7kzYqB5ILkg+SvjceXheRGkJCJhuSH5Ijk8IiJ5Irkh5XFjozkSIqwiIvkjuRtlGOQ1IlGlnyM2ouN5OiJoYqRiZLk6JfbkWOVnuTViZzkmuSR5I/kkOThjuqLl5LPk3CJlOST5JnkleSY5M6Wl+TWiZ2Km+Sd5HOMoeSq5KvkqYiy5O+IqeSo5KPkouSg5J/kg5L5kaXkpOSn5JCRdIxgiabkco2RkbjkueTXiayJtuSs5LTku+S15LPkluSx5K3kzoqv5LrksOS85K7knJSJl7fkzeTF5JuQZYvbi8Dk2YnSj8Pk2I1wk8jk7JW/5NiJ1IxIlcnkveTG5NDkweTC5LiTx+TE5EeWyuTeiL7kzOTL5IuU0uTd5J6K4OTO5NPkjpfc5HSXqJeYkouKkpXi5J+Tr4jb' $Zint_dll &= '5NfkkpHR5Nnk3uRLlKiI1uTf5JiV2uTV5NOPTo+qjtaWZpXl5O7k2OSXivaP4+To5JOR5OTr5H6S7OR1l+HkV4rn5Orkqpbt5Obk6eRIlkCY8eT45PDkwY7P5MyVoJb35Pbk8uTz5FWJ9eTv5NOS9OT8iKCRwZX55EDl15T85NSPx45C5byLQ+WZlfvk1OT65G6YoJOTlUrlUOVR5UTllpRO5UblSOVS5UflS+WSieOTTOVP5UXlRZFJ5UaOZJBPjPKW95aSj1blVOVtmFPllZdV5VflWOVb5VnloZNa5cuUTeWTj1zlYeWUkWDlQeVi5WiRXeVf5V7lUJ9Bn2TlY+WWl7rhZeVm5Wfl1Yxzi2nlfJmVi7iX8Ytq5WvljpJs5fiTuIjhiXHlcuVt5VyObuVhlG/lcOV65XTld+Vz5XXlduXWjnjlYJJ1jGGKe+VeioHlfOWA5biUfeV+5WeV2JSC5fuRjOWI5emJhuVJloflhOWF5YrljeWL5Ynlg+V3kpTlqJaS5ZPljuWQ5ZHlj+XkkFiYmOWZ5Z/lSZCb5Z7lluWV5aDl2omc5aHlneWa5bGSl+WIlKXlWpek5aPlrOWm5a7lhpex5ajlqeWt5bDlr+Wn5arlu+W05bLls+W45bnlSYphi7flouW25brlteW85b7lveXA5b/leeXE5cHlwuXD5cXljIzH5cblT49zjaWfyOVwj1iKyeVxidWPyuV0jcvl34hclczlipDT5dDlj5LR5c7l3IvN5dTlVYzckdrl1uWzkdXl2OXP5dnl2+XtlNfl3OXe5dGM0uW/iN3l2Y30l9/l4OWVkaCX4eVUl+Ll4+XileTlvo2hl+nl6uXWj+jlh5fl5eflu5CekObl6+Whle3l7OWMikqW7uX65fDl8eXy5fPl9+X45fbl9OXv5fXl+eW16KaJ/OXdi/vlQeZA5kPmQuZE5lCPReZG5kfmvJB2l0jmopVllEnmSuapjEuLS+aLjmCUTOZv' $Zint_dll &= 'ik3mT+aXl07mZZBQ5lHmUubPilPmVOZV5lbmcIpX5ljmWebwiUeQWuZb5lzmvoz5kl3mdox1kGDmopNf5lCMXub1kUyLYeZi5tePjYxj5kuW3ZCWi/OWaZFk5maQkJLYj2XmaOZp5ryNwJFn5tmPXZVm5oyOcolt5neMjo6NjmyYbOZr5qkI/////0aRbItimFmK2o9q5m/mcOZu5taMX5ePjkaUc+a+kGGSVZd25uqMvZBy5nfm64x05nXmcebgkMeTTpLbie6UYouyknrmeOZrkr+Q0Ip55nqQyJdfmHvmh+azkobmg+aL5oTmgOb6kn7mfOZAl5COgeZ95oXmlI+/jPiRZJZ5ieCIo5OJ5ojm5JON5oLmjOaO5qqMiuZ1jdOOj+Z3l5LmleaT5lSVkObei5Tmluaa5pfmmeaY5pvmr46d5pzmiJWf5niMnuag5qHmY4u/4/ePoubsjKPmpOZdjsydpeam5lGPp+ao5qnmquar5kqSrOau5q3mpJOv5kyWsOax5rLms+bYk9uPtOaLjayYtea25l6Vt+a/5rjmuua55rvmZZa85r3mvubA5kyK5ZKJleCNdo1uld2JzJTD5tGK05DC5sfmmZLhlsXmxuZNi8jmg5Tdke+UXJPE5maW6onK5keYwJJkmJGOyeavkdrmR5H2k2+VzeZejpKO3I+FlKuMzObL5oqVv45xk8/m0OZ3jc7m0ebS5tTmoZHT5uSK1ubV5tfm2ebb5tzm1JDNjt3mcYre5paR3+bg5ouVTovh5rSSeoni5u+OlpCrkeXm5Obj5uvm6ebm5ujm5+bq5peL7ubVkO/m14zs5u3mSJi1kkiR8Obz5vHm8uZ4l6WT9ub05vXm9+ZI5/rm++b55vjm+5JA50TnQef85kLnQ+dK50Xn1pBH50nnRudM51KPS+dN507nUedQ50/nU+dS5/SWVedU51bnV+dZ51jnZ5Ba5+uLW+dd517nX+dc52Dn1I5h50+LUoys' $Zint_dll &= 'jGLn7pNdk2PnZueyjmXnZOd5jGfncopp59qNaOdx52vnbefjlWrnbOdw527nUItv53LneZTWl1OPc+dBl3XndOd452CXd+eNinbne+d653nnUZN8533nfueMjUSMgOeB54LnaJCD56uOhOeF55+ZnpmG55Djh+dDkkqQX5SI59OV0pKejUiSSYmYlnaQfYzfi9SVieeL54rn3on0k4znl5RSk43ncY+P58CWnueR55Lnx5LekZeRppOQ53SLmeeW56Pnp5OAkpPn/JJyk5TnmOeAkIeUypLAkJfnrJGikZXnp4hBmJrn35FUj2mQnOeb5+2InedOlaXn2ZOLkHiS9ouk51aXXonVld+Jn+eg56Hnoue5k0KS4Yim56fnoeq7kajnk4lrka2MeZep50uTmJHVjqrnreeFj6vnSpFJkeKIyZev5/CUseew567nhOLSio7ns+ey57TnV5ffk02WtefXjrbnt+e450CT6Ih4jVmYvOdTjLnnuueUlXOKWJe9i3OTvee+57/nQZPB58Dn0ZPC51WP3o56lJGS8I6MkMPnxOd8kMXnxufH54+XVo/J58jneY2TjV+OzOeGj8vnyufnke2MwZCulFiPzefdj9DnzufP59Ln0ef4j9Pn1OfV586U0Y3fjtbn1+eil2SP7JbKl9jn4IvZ50KT3OeYimqQ2ufb596SdJb6i97n3+fd5+Hn3ZNiiuXn4ufk5+Dnbujj5+mX2Izt51OT6Ofr5+nn7ufv5+fn9OeUiebnq5Tq596Peo1nluKLZY+6k0yR8ufs5/HnwZa2kvPn8OdLkffn9uf1506Wm4/4592Vc4lllZKSmIv653yNS475542QjpBA6ELo+Y9B6EPo0YtkleCOQpj85/aNXphF6EToRuj75+eTdJPVkkvoYpJH6EjoTIxK6K6MSejfj5mKT+i9jZmRyJJaik3oTujBkkzoUOhW6FnoWOhMk1HoUuhV6Ffovota6FToU+he6F/oYOhd' $Zint_dll &= '6Fzo4I+ok1voZOhi6GPoYej2kWXoZuho6NOKZ+j4lnPoaehs6Groa+ht6G/ocOhx6HTocuh16Hfodui3kuWWeOhNkXnowpV66EqKW4nVitSKe+h86H3ofuiA6NaKdIp9jbSUguiB6IPoe4mG6IXohOiH6IroxYiI6Izoi+iO6I3oj+isk5DokeiT6JLojJWU6JXo442W6JfoaJZqkaKIyZGY6I2Vm+iZ6H6NmujAjMOVneif6J7ooOhAiXeQnI/XiqHohpSj6EGJoujCksuXqZOc6KSXr4x6l/eLspdHjOCRQOSk6EuKj5B1iqbop+il6ISM243hj0KJ15ep6KznqOis6Kroq+it6K7o6pev6LDox5C5lJ2Q5YpZl+uJV4/ZjLPosuiTjrTosehHjrjoq+XUmZeQtuijl++TSonhkLSOtZVfieuXi5e56GST+Y666Lvoa5C86OyXt+i+6MDov+i96MHowuiakeCJw+i2lsToxehJmFCexujH6MjozOjJ6Mroy+jN6MKQ9ZbDkM7o8ZTP6HLqypbQ6NHo0uh2itToeJDV6EOM1uja6Njo2eiTitfo2+jc6MaI3eje6OKP3+hmi+Lo4ejg6JHm2pXj6OTo5ejm6Ofo6OjYiuno6uhClOzouYnv6O7oQ4m/i8WVuJKgjYCNh497kPHo8Ohhl+aK0JTak5yQzJd6jPTo8+hqlqqTb4n16PLocJWKl/bo9+j56OiReop7ivjo54qwjOiKXpPel9qM+uj76PzoQOlC6UHpl5VD6UTpRelG6UjpR+lJ6fKUyuNIkFGLSulL6aqZWp/RlPmIuYiUjk+W/I9M6d2WTel7l2GJYI5O6eyJT+lQ6VLpU+lV6VHpVOnZilbpV+lY6VnpWulc6VvpXulh6V3pX+lg6WLpwIvxjmPpZOmBjWXpXYpulGbpZ+l5kumTaOmdlMqRd4nsi+2Lk5Jt6e6L7Yls6Wrpa+lp6Xfpbulv6XDpcelz6XLpeI90' $Zint_dll &= '6XbpUot16ZuRsYx46cuReemrk3rpgOl96Xzpful76YLpgemE6cGLg+mF6YbpiOmH6Ynpi+mK6ZyNjOmN6VuKjumP6ZGQkOmR6ZLpk+mCjZTplemW6ZfpmOmvlJrpRZWb6Znpnemc6Z7pn+mg6aHpoumj6aTppemm6afpqOmp6arpq+ms6VSfren24lOLQIqwja/prumjlrHpsumw6bPpgpa06ZuLRJi16bfpvIi46amVtum56brpu+m86b3pjpZMjviNTpG+6cHpv+nC6e+MwOnD6cTpxenJ6UmO4pHK6cfpxunI6X6MzunN6czpsYjY6dTp1enR6dfp0+mCimuY1unS6dDpz+na6d3p3Onb6WiV2enxiN7p4OmPisvpVoni6eHp3+lMkpCWANiX4+nk6eXpAObp5+m5kujpALWU7enp6erpAFCWwpbOk+7pAO/pvJPs6evpAKiJ9+n26ZWJAPTp8+nx6ZuKAPDpsI6niYONAPrp+en46fXpAPvp/OlE6kPqCEXqTIl3/xSUjbcAlkLqUZZK6kYA6kvqSOpH6nsAjEzqTepO6kkA6vLpT+rfklMA6lTqUupR6lcA6lDqVepW6lkg6liH/0RomFrq6RCR642n/3SyjGPqBGTqrY5lt/9Ea+oAaepbmGrq7ZcAbOrZl23qnpRAbs//JG/qjY3LlgCDlvWbgJ+blgKpiXPqb4sPADWVAI136tLg2ZbhApF46nrqeS8A9QlDAJPbjIrqbJGLBOqM6kCVRwAVVuIM2Obr6F8AFVcANe6XQpFnACWY6pfqXwAVmRDqtJdvABVz4p7qAEmBlIGQgZOBQJVHgCaWgXuBQ4EARIFegU+CUIJAUV97xkaBR4GDgQCBgYSBSIGXgSBggl979iBtgV+BbgCBT4FRgU2BgSCCgl979h9vgWKBcASBUIGPgTLKT7CrYbz1CgLAjBEFds+wxgGRwO0tDQ+wEAocoMIcDA/h/7+gAbA/8KM1B3ALI8Iw' $Zint_dll &= 'SgJW1fD/f3MNwcUAbLAMwMcED0YSfQBhMxOEAGMO1dCA8DgkxfAYLQgAL0RCCP/GEAxP8HBzDILKcBQO1ADAQI0JmgAABGSeAIEfpQoAMCCoTIBqbg2pCgDDDK8s8GpMDbOsHDDrhg20HMDwBAQAALUAD5C7AJk5AMMAOZnLAJmZBtMABAjVbMDwAAMAANcADDDbAMAyyOA8wACA4RwQHmueDeMcwHAFAOUcAMgApOgA7//3ABg/EP48wDD+/w0KAf//HQzQwgA9gAzQFPCAVxXgr/JPxgJ0DEDIAJSTCP////8B//+kAX94rwGLb7kB80PCAUIkxgFGm84BLOjVAeDj3QEEAN4BCkDhAWVf6wE22/UBd3kAAkkEBALX7A8C8OMYAjhgHQLFCCICAuYoAgM0LQIAgC4CUTU1AsjgOwKrfkYCAIJIAmmYTwJIqVUCQilaAgPoYAJggGMCHERoApOtcQI6wHcCaEV9AmCqgwJWhooCej+VAkAClwKIg5wCYRShAiAQowJ0IakCISCsAgIHsAIAMLICvEC4AiSmvgJiRMMCqGDIAiAKywIXAtACdIXXAgIE2QKEnN8C+3vsAhUU8QIkf/oC4hEAA2W2CQPvAhEDdR8bA/8gJANwOisDQDgvA8MmNgNjZz8D2U1IA5IgTAOwRlIDyQ9aA5i8YgNQSGYDOIZsAz+gdAOII3kDFoh+Awk+hQMyUosDqiKRA6TjmQPdAJ8DLMenA2ahrgPhJrUDC4S6AwqPwQPrJ8sDnlXUA0HC2QO7ieIDFADkA0CF6ANhY+8DSQjzAwx//APQigIEPv8PBM8FFwQa/yIEA6gnBEF6LgRAezUERUc8BAKAPgQABUAE6zhJBFHYUAQFAFIENJlZBAxxXwSXA2YEAAFnBGZjbwQEJHIE0IB2BFEAeQQAwHsECkOABHGQhgTIMIsECACMBABYjwSZDpYEAPedBIBfpARBAKYEsACpBBCUrQQYAK8EgGKzBEAC' $Zint_dll &= 'tQTQCboEAIK8BFYBwQQEUMQEAQjGBBAdywQQBc4EwYTTBBAA1AQlQNgEUBDbBA9B4QSKTegECUDrBA2m8gQZq/oETJEABcAhBAWBCQgFhcQOBQMAEAVSBhUFAIAWBQQLGgUIABsFHQQgBQkAIgVJSCcFXJAtBQkALwWQFjQFZQw6BSAiPQUShEEFMyRHBQMMSwWWR1MFBApWBSVCWwUoAF0FiJBhBQBJZAUIT2oFohRvBarTeAUw2H4Fhz6HBQSGiwVhH5MFpH6cBYZBoQWQw6cFswWuBaVXtwUYIbsFHiTBBUgqxgUoEcoFBErOBUAK0QUbFtgFYA3dBUCI4AUKAuMFApXoBSGC7AVgEO8FQwLzBQAE9AVEFPgFAID5BQAA+QUEDPwFAAD8BQBw/wUGGgQGwQAHBkoCCwYADA0GABoQBkAAEQYEFBQGRUAYBikAGwazvSYGeAosBisFMgapuzwGoL9FBnxASwZ5g1MG/BJbBh3oYwb2S20GacV1BvbvggZKBIYGFSGLBgL/lAZj7Z4GK0CjBjPQqgZCAq0GABCuBhMAsQYCG7YGylm+BqAAwAYAAsEGA6fIBkEszQaASNAG8o/aBgQC3AYAANwGAFjfBgUQ4gYAkuUGSADnBpQY7AYBIO4GBFDxBoA09QYAMvgGTGj+BupJBge+aA8HTBgUB0IuGgcgqB4HySEkB7lQKwewgC8HHgAzB3z/QAeahEYH4BRLB8EoUAfgAVQHDodbB0msYgcPE2kH2911Bxq+fgf7iYgH4KKOB6JRlAcCVZkHyjKgB0Y+qAeLkq8Hvx26B49DwgcDZ8kHGDLOBygw0gfAM9gHEQjbByOp4gcAwOQHZTrsB+OP9gcCBPgHTiz/ByWGBQg9vxEIoQAUCBo6GwjUjCIIyQYoCHwxMAjgADMICpU5CIsBPgjbDkcIS+NQCCCMVAiCEVgIEPBdCJR9Zggop20IrMl1CPtAfQiERIEIUwaHCJBajQhERJEI' $Zint_dll &= 'yD+aCAEAmwhIAJ0I1PWnCAF3rghX7LgIQsS9CB2JxAiDa8wIKEnRCAlB1QhC0tsIHQbhCP5Z7AgAGO4IIjr0COS3/gifOwkJA/APCerAFgmGExwJAoIfCYCJIwkA5CcJALIrCaEQLwmASzQJxAw5CQnTQAlEiUUJrx9QCTRIVQlZglsJRQxgCQpCZAlQBGcJQKBqCcgQbglAMXIJUER2CQRAeAkAAXkJgIJ8CUAFfwkIAYEJLESGCTBqjAkFGpEJpiCWCRQFmgnPkKIJVmSpCSEAqwkAMa4JGJy0CfDLvQkgocEJ4mPJCUwQzQm1AdMJjFPaCYOa4QmyuOkJgTLuCXqY9gmECvoJ5zMECgIMBwrM1A8KGJATCqGhGQpwkB4KHoolCgTgKQrUwzEKUQQ1CppDPArCIUEKREhFChBTSgqSAk4KQDZTCkECVgq982IKCatpCvDocQrAfXkK0qWBCkLChgpL0o4KP6SXCq/QoAqgGqUKoTSrCkeCsQrYA7cKUsS9ChtlxQqU0swKOsjTChwA1grIQNoKBg7fChQz5QpPYe0KG7L1CogA9wrQwPwKKqABC5ioBwvFoQ4LaxYWC1AuHAu0hSMLi8ApCwQGLAsz+TYLBB47C24FQgtRokgLAARJCzh2UQsH7FkLuHNiCwZEZgsyGGsLgUBuCxbIdAuKfHwLCWOCC4AphgsEqosLJByQC5zKmAsOTp8LYCelC5AJqQsAg6wLRgCvCwSBsgsRYLYLgRC5Cw1UvwsICcILDgDFCwrMywsABc0LAAzPCzAE0gtEoNYLiwDaC4Rn4QuIUuYLGYrsC16G9AsYi/oLWS4CDGBBBgwQjAoMvpwUDGFoGgwciSAMAJgjDAgAJAwAgSYMmggrDBgALQyQQTEMB0A1DKHkPAwFBUAMDWRGDA4xTAxNDlMMBkhXDAr/YQwyFmcMqCptDC6FdAwLAHcMABh5DITKfwwgDoMMbGmLDDIAjgwAFpEMWFaYDJAD' $Zint_dll &= 'nAwgUaAMKBqlDACApgwkEaoM4RiwDCZDtgxSXb4Mqg7FDKAPywwortIMe/reDABF4QwIZOUMQInpDIDI7QxEwPEMBZD1DEGx+wwkhP8MxCQEDTQaCg06YBANAJASDZTBGA1Ggh0NOgAhDQ0YJg0GwSsNIgAtDRCZMg1Q4DcNERU8DVdAQg2CAEQNGgRIDQoCSw1PAFANMIlVDRPYXA1KRGENAoplDSLtbQ3AEHANBUBzDQAQdA0CAXYNCIh5DQExfQ0ARoANBAKCDQDwhg0IB4qlCP////8NAImNDQCikA0AAJANAiKTDQAClA0QFpgNQgCaDUAQnA0AUp8NYAKiDfRSqg0AIKsNEIWvDTCCsw0AEbUNAkK4DQhDvA21gMIN4XDJDSCazg1AINANAQjSDQA11g1l/OANwRnmDQSr7A2GAvANFGL1DYcA+Q1EAPsNhZAADkQCAw5cQAgOhQoNDgcyEw6AMxgOAAQZDsC4Hw4gziUO0MAqDjDALg6AAC8OCAUyDiUNOA6QCjwOQAA9DgACPg4MCEEOBWVHDgBASA4hZE0OAkFQDmgCVA4AAFQOJABWDnyEXQ4CAF4OIN5lDhmGaw5JQG8OCAhxDgBAcg6EAHQOASB2DgCEeA4QEHoOzUKBDscBhw44cI0OKtWVDmgZmw6PHaQOUL6sDhI+sw71Lr0O2YHEDsTOzA4SJNAOKAjTDi5z3A6sJOIONEvpDgwC7A4d1PQOAir4DgCA+Q6XAP4OEQgBD8QRBg9EEQoPhhcRD0V9Gg/ZSSIPSQYnDwBAKA+Rhy8PTCU1D8TYPA+6REMPFElID5IbTw8AyFIPcQJXD4AVWw+BAF0PAAxfD2oJZQ8AwmgPAEhqDwJAbA8hMHAPSbp4D4Ageg+AHH4PrOKGDwgQiA8EEIoPNACND+EAkQ8UhJUPIACWDwAglw8AmJoPFBCdD8Jwow+qBKgPiIatDyBUsQ9iDLYPEwS6D4CRvg8QIMAPgkDDDwYC' $Zint_dll &= 'xg9AHMoPAFTND4MD0g/p5NsPJSHgD4CE4w8z5OsPACDsD8BE8A8J5vcPAwr7DyaBABDaEgcQAQgJEAFpDhCQlxUQAUAXEIb4HxBN4icQgQApEA4KLhBRpjUQGgE5EOyBQBAAxkQQQYRIELitURAstlkQb6RiEEGHaBBUjW8QAkt0EGEReRBoAn0QYLuFEFcgixCgUI8QMwSUEMComRC0t6MQAiSmEBIBqRDTmrIQACCzEHEiuRDIALwQgSC/EJ6AxRCKDMoQgOHPEAmw1BBRgdkQMRDdEChA4BAOKuYQpYntELZp9hAOYvwQJUQBEUTRBxGFgAsRVE0SEXUsGhGxHyMRB9gqES2GMRF82DoRQUg+EU5BRBFuIksRAIJNEQieUxEM+FoRN+1lEYCMaREmdXERE5N4ERQIexEyDoERBMiFEU5IixGmbpQRSiyaEXBmoRHAJqYRAbqsEQzTsxFdGLoRAAC6EQAAuhEAALoRAAC6EQAAuhEAALoRAAC6EQAAuhEAALoRQAW9ESBwwREzgccRgU/OEaUD1BHsVd0REGThERjD5xFEI+wRYhTxETQA9BFDCvkRCRr+EXsYBhKlEw0SAgEPEkioFBJABBYSRMUcEgaBIBLd4ioS8BoxEkgtNxImtj8SFgRDElhQSBJAbk4SMoBSEhIxVxLkB14SAAxgEgiCYxIKQmcSQEhqEjuAcBJgSHQSE4d7Eg2FgRIoNIYSGQOLEinlkxJFI5kSCoefEqklphIYXKwSpne2EsXZvxIAXsQS6APKEoEAzBIAp9ESVM3ZEsZB3xIAKOESBKLlEmC46xIKK/ESIADyEp7a/BLqCAITGg4IE3xCDxPAERMTCIkXE3YDHhMhhiMTBQEmEwAAJhOoGCsToEYwE0jENRMFDToTIiA9EyJUQhNIkUcTAYpLE5coUhOYeFkTCABaEwUWXxMiMWQTQEJnE4AIaRNO+nMTogZ4ExQIexMRkoATAiCCEwSbiBNSLo8T' $Zint_dll &= 'QwaUEwBQlhMQkJkTQQCbE7qFoxNCMKcTICCpEwtPsROgBbUTCCe6E4BAvBORBcETkxrIE1Df0RMABtMTAqLXEyEw2xMwBt8TgE7kE8QM6RPIBO0TBKDwEwGA8hMAYPQTMdT7E4AI/RMCCgAUABwDFCgABRQYjgsUQQANFNBqFBQQyhkUEPIfFABLIxRNJysUBhUwFCACMhSQiDYUAFo6FKiCPxRJRUUUUIFJFAQgSxQAgEwUBIhPFAgsUxTRCFgUBQBaFAGAXBTESmIUIOBmFGIAaRSOAG0UQgpxFFUwdxSMan4UDgmDFKXgihQGKY8UxEKUFBRImBSzgJ4UPoCkFDCzqxQCAa0UHHO1FJQUuhQNYL8UIAzCFEAJxRQaMMoUQMDNFFGk0xSUwNgUyo3gFMgF5RTCluwUDKTxFAEA8hQENPYUyAD5FBAB+xQNVQIVyakKFSgkDhVaHBUVQgEYFTdIHxVNeigVDxAtFbQyNBUqRToVezFDFQWSSBWUuE8VRFxVFddoXhWKRWQVl1BrFdEucxVDGXkVCEJ8FQLSgRVAnYcVQJiLFZcgkRUJVJYVTQacFQAAnBUAAJwVAACcFQAAnBUAAJwVAACcFQAAnBUAAJwVAACcFYCEnxVCVaUVIQSoFQYcrRUAF7EVJHa4FRBhvBWH/8gV3bnTFZ9l3RUKXOMVXSTqFQA87hWwrfYVWQD6FQAA+hUAAPoVAAD6FQAA+hXQKP8VmwAEFiIEBxYAAggWCAEKFghEDRYEmBEWQKwWFgqNHBYokCAWAIckFgHgKBYABCkWMQAsFpQXMxYhgjcWGQA6FlQQPhayLEUWGgJJFgKcThYDQFEWYD1YFgSIWxYMCF4WAHljFigWaBY8unEWQIZ1FgjLexZ0coMWgJCGFh4AihYAAIoWAACKFgDYjhaI4ZQWh5ycFjRAoBYSBKMWZK6rFpEnshZr6LsW++bHFo9AzRZmU9UWpu7fFn9T6hYr4/MW5LX8Fp+G' $Zint_dll &= 'BRcCAAYXSIULFyIBDhcCRBEXAAgSFxYhFxegIBoXBAAbFwQCHRcAIB4XBQAgFwB+JhdUASoXLBYwF6wBNReEKjoXhRA+FxSMQxcwBUcXw/tSF0O5WhfKAF4XYJBiFwBgZBcyQGgXABJqF5CAbRcwC3IXgUx3F1QAehcCQHwXKQB/F2odhxcAIIgXgAKKFwCAixcEAIwXECaQFwwVlRdAgJcXAQebF03ZpBckDKgXECirF1AYrxcBULIXIFC1FwAQthfQBLoXgHC+FwECwBcIAcIXwyHIFzIBzBcAAMwXiADOFxkH1BcCCNYXYAXaFxIA3BcOTOIXBQTlF6Hw7BcCAO0XAADtFwAA7RcAAO0XAADtFwAA7RcAAO0XAADtFwAA7RcAAO0XAADtFwAA7RcAAO0XAADtFwAA7ReAAO4XjY72F1oD/Be9IQQYBFoJGIg0DhhwERMCGCYAFhgADAUBcIEhUMyBQYAI8IFRgWuCEYAPwILBRzGD0V4CwIMB1k6EAbsBsISRWACFcb0BoIUxr1eGIaYBsIbB0ACHUawAYIcRXf6HoSQFUIgBSYCIUTAG4IhBNTCJQSQFgIlxtRKKIWEBYIohh9qKERABAIuRlGKLgQEAgIuBlMCLgQAB4IsBAAaMwYYIYIzhFumM8VgAUI0hAZONAZkD8I0BhF+OAZMEoI4BiNiOsQEAFt8XwECF9BhCAAD2GFgA+RgAmAD8GATqAhkUcAAHGSgWDBkdYQATGRNRGRkAYAEbGSQaIBmnf18TgAwIPJCSARLnApCBARGTIRdgA5BxkuqTQQAWBJBhkGiUIQKsBJDBINCUAZDwBJARCCSV0QJyBZABysiVQeMgBswODBhClhEQcQaQEQGolqERDAeQwcSOlyGJwAeQAQTQlwFQCAiQwXqcmGGA0QiQ4QNemSFRkAmQAQComQEBsAmQgQDUmeEMOAqQEdCWmgEhsAqQEWQIm2GFUAuQ4RGgm3EC4AuQAXVTnNGD' $Zint_dll &= 'sAyQIQMenVHgdA2QARygnUFI0A2QEQjwnQEUEA7cDsDwBKAa5hlZAADqGchD8BkkiAD0GUgd+hkAyAD9GVIBARoDcgAHGhOQDBoEBAAOGoCCERoABAASGhCKFhoUDQAbGlaAIBoIAgAiGkCgJRoEJwkqGgAADMDUwgGADA8AMiqjIZBhA6DhCtqjAWYiBKAB8J2kAQHvBKBRsXelERK4BaABrSOmARhUBqCBAnCmMQChBqABgMSmAcAMB6BBATin8UyxB6BBDOCnAQDyB6ABAiOoEQAwCKCh9/2o8f//icoArwzwywDPGv84P92tAAzPcOIqAQAA0QkgcD/rPBEEYZVUMTz0PMATAgAzMzTJF4TFR/88RFg0QCy8BgN9sADxT3x40QdbBNUPRZP9QMT4TxKECTM9gTkgfZEAQ1z/JTH9oX0gvVAsQIP9UsT3nwfTP1oc0g/IswBCfHky//20ANEHhiP8TIy0Q3j/eVE9YzlAfYMARDwtJijw329LEf12NNdvRmwtU31w/8Ej/bZ9oABBfC0w/dJ9gP90wc/EmSfWb9oTGBjUL/1PXLUy/aEFQP1gNNhv1x/3XwzVb9kPyrMAQ2xxR/z5j2j9dvxMjLRFWHmBPPMfeNhvSzy1Xv2qDQL9ijT43+8HEP2OhFbX1a/ZBwsQ/8SXd9IHWoTVr8ffxFm799+vyIc5SH2BAENctUr9kf/BQf1+NNfv2B9WbNXv2g/5z7MAQny1WP3WfWD1N/z7T4x5ZoSkF4D9ljwHYMTzH7vUL0tI/X4A0S9KbLV1/31QxTv9on2gAEF8eWf9sv99cIFI/d4A0S9IaHmJ/XL/PAlQxFQr1x9WQNTvSGP//Z4A0e9GaHVx/WA8CzD/xJanxn+Fjf1+ANHvyn/8ANjvyEc5gDwDwAgKAggKCggIDByikL5dBsICSMAAEwoOfF5PJhxAAADgwFsG5PDBgIDAa5wCCB0gXCDNU5jgwBEKDvDAYMfweSzytSxx' $Zint_dll &= 'SBTRxADHQxFZ4wzwriwxAhPx///PABwBilEAr9giaHR0cDo2Ly/RMzAxR1NkdKdxd+dCdjRihowAwnwDQC5jb20wVyZCVgdzZ292MJdmOK4tB+DSljYhEwEwLiJuZWT4JneGiW8sYmmdgG+nxhIA4iJml/ZTFAEwaQBmP8cSANImEJbGRvemAzN0NGVsJBQAchYDBuDCEzYXAwYjMzQRAOIC54RGhmh0cYIwkB3mMjRHg2ZpbGWhcCdt8QjCl2cRx2wxIC4sJawRBjrOFpT2/zWu8/IzsgXQBdTz5RfiwgK4cS0BsNcHhpIiArBywuPDR7JjcsPl9V4TUQTHUlfyIQoZCNH7exMRygDaGvA3E6KbBAB3TBB8Ha1BnzVRS08QHzQRs04Q81IAc1OrU2tWc1YAS1dzV4tXq1cAa1xzXMtc61wA81xLXXNdzlIA7lJeU45TblYATldeV45XnlcArldeXG5czlwA7lxOXV5dzhoAzhxOF04djhcAjhteFl4aXhwAXhdeHZ4XbhYAbhzuGq4XyxoAyxxLF0sdixcAixtrFmsaaxwA6xyrF6sbcxYAcxrzGnMX6WIA8WJZY3FjmWMAqWNZZmlmcWYAWWdxZ5lnWWoAcWrpaplr6TIA8TJZM3EzmTMAqTNZOmk6cToA8TqZO6k7WTwAaTzpPFk9zTwATT2NO106XTwAXTNdPZ0znTsAdTp1PPUy9ToA9Tx1M3U9zWIAzWpNZ41jXWoAXWNdZ51jnWcAnWt1ZnVq9WIB9Wp1Y3VnXYEDlU4wALDGAG4MMMcAVXUMsOSiAk0M4MQAVVkM0MUAXgwQxwBVcwxQxwCLDNDIAFWODJDJAJ0M4MkAVqkMsMoArtzhAgJeqgywxgBzDFDHAMuqDNDMAM4MkM4A66oM4M4A8QwwzwD1mgywuNEGwACODJCpygCdDODJAKkMsGrKAK4M0MXRBsAAa6oM4MYAdQywzADNqgzgzADpDLDOAO6qDBDPAPMM' $Zint_dll &= 'UM8AS6pBB00M4MQAWQzQpcoAXgwQxwBzDFCnyQDNMg0ADJDOAO6qDBDPAPUMsGQ3AE2qDODEAFkM0MUAXqoMEMcAcwxQxwCLqgzQyACZDNDJAJ6rDJDKAKsM4Mod+QtVXQzgxQBpDLDGAFVuDBDHAHMMUMcAVc0M4MwA6QzgzgBV8QxQzwCL8n3QyABVjgyQyQCdDODJAFSpDLDKAK4MkMVT3QfAAF4MkMYAawxQ5cYAcwxQxwDNDFDlzADpDODOAPEM0FTPAEs9bQIM4MQAVVkM0MUAXgwQxwBVcwxQxwDL4gTQzABVzgyQzgDrDODOAFTxDDDPAPUMsDRV3QDAAFkM4MUAcQxQNccAiwzQyACODFCVyQCdDODJAKkMYLXKAK7MYdUNwABeqgyQxgBrDODGAHGtDDDHAHUMEOzhxABVWQzgxQBxDDDHAFWLDNDIAI4MkMkAVZ0M4MkAqQywygBarszB1QfAAF4MkKbKAGsM4MYAcQwwp8oAdQywzADNDOCsygDpDLDOAO4MEJ/KAPMMUM8AS10NAaoMkMUAXgwQxwBzmgywLMYODODMAOmqDLDOAO4MEM8A86YMUM8AS2OdBAzgpMoAWQzQxQBeDBCnygBzDFDHAI0MkKnKAJ0MkMoAq6xhVs0KDODFAGkMsMYAVW4MEMcAcwxQxwBVS0YI0MQATgyQxQBVXQzgxQBxDDDHAFV1DLDIAI0MkMkAVZ0MkMoAq7yhxguqDODFAGkMsMYAbqoMEMcAcwxQxwDLqgzQzADODJDOAOuqDODOAPEMMM8A9ZoMsLjWB8AAmQzQqcoAqQywygB1fQNNgY0GQkJCQUFBEPCPASgBAkBFI2iEARzxTzCghUXM1ACFfWjEKf8EVQSHOHSGMDTEV2lR/3iFEp4KACCYQjfpYBSXjnco4UwBMueDETIxBFAlMxIYEkMEMqIUQuNLAf1goV0RlEEDAMESNIijjwrIgQio5FURMFUAjqo1AdIM4M4A' $Zint_dll &= 'hgyArcoEthyAyAF0HGAJygBYDAAcZNM8ofAD8G7OBfAMAGrw08zM3PMaFemxUAf/LgvkCBnOC/GfBiESGbu8EBtpEH9kEfceDKFjAK9UISo7AKBBAF4M8kgV8fqAFwHCACIM8H4v4dIQt2wR+gY4IdoQQhnxxBYhhhE0DFBzzQDP9BI4DJDDADYQ8WsisfbjZ0GeFkHEAEUM8MAWoe5oEW9XET/yEkq+FsTkcUFPvgwAxQBvkBBOF/F4FeHxEFX+DPDBFuH2EJ4X8YQVcakpkZAAcP/tLpHRYCgJb1gxaAzwuhZhKBHal2sRShMxxwCmFZHHAIDqDKBcGedqEYMMQMgAhasMYMgAhwyAyACv6BK692oRix6T5DAZrpLxyACQ/wzwei7TTecXEe3UbpbhXRmLdBC/HRUPHUXfSRIt9QoXcxFP/xJN9QJoIV2Fr2sRgwEBMi4xAjEuMAAAepoZAIJAN8aGolEBYixvAGJqKSBkbGwKACBHZW5lcmF0AGUgYmFyY29kQGVPBhN0ayBpbWECZ2VzClVzGKBDogBCL2VugEIWBkAXBgKH9kb3BgDy8wZHl/bmBgBiF8ZWV/YDUuDi4qIAwic6lAOOCNBUBYFWBjKXl9Em9lYNwD86IIgAM8YWA5QMAoIW5gZAxlYGgnICdwIAEmZGVyYHcsIINmNyZZkRrAN3kpQSARBk57QBYWK4INoRM1caAALSUiI1JoD2ljZWphMN9AZwlscCUjdXBoJ2EiMCZSeVEWdldIQtAWxpc3QFIGFkAmRvbmdhcNkBdABlZ2VyOiAoNwIuLjEyLCBOGhAGUMdGpwOSkwJiNAcdZGQtAQOsA4LUhgZpcD0RZiBtEW9kdSQwl6ZXIwBQBTX0UhTk1BIzNNQdkRhwBjJWDwAcBhABIRY2tnYmh/BW50ZGNSBhcxAgNiAcgAOCVgaAByInd3YmJoYSFkY+aZQg9vYGwqZTXDEHEib2BmBX9iJWxvZ2p11IUi7B' $Zint_dll &= 'Ug2TBpKHDG8JcmRlcvTzxkZfxykTOEJXhlctwznNcgV3aWR0aCkSYaAQiyZhkTEldi4gVRkANHdpnFAW8hIBgAfyFZMDhBcaRQLo1ByQGI5WlhhaMDDXEDf0RgYYaPA2tgZixAKCQfRGxwPsAEVkBEATc6MD4lbXBieWFZAYQA11bW5zgQVAbXBsaWFumQEYaWdogQARIXdhcgxuIGlmRQRQ4vZmRjceMQIqLCDVCEUjc0Z0JBAmRxZqFQRCJtMm1zpRARHEFkpBBBin0RRGJ5eGBxIhVTbGDGd1bGUCAEV4dGVuZGVkmNTzRtcoEhmjAyJ3EEaWVjeHAakJyRGAfAFiJvfWBgLD4QITU5ER2kBedHnAmYWkkuY2R1cW1kZGHj0EZegQeNDWEENcRNEuUzaW1q1WNBSXVAVRAIAmZmFzLVPxURA4UtcSFOEGghIleBuZYxaZmgtQFplvwQplAUAgRQdhcnl8dW5BaYERfGdzMToZAhhwdXR1P5TjAkIk3sTESQUwdWxsNSxibnluAVEdEtZOQnX5FWFgY/EhLRN4UVIsIABIYW5YaW4sIA5HcmlkcTM5IOkAbg9vY2hlHQgtMMABBbhBDm8pN2ziIQBpZGnq7QR5FYkRKM0gc4jgxtaSdpauMxc5EwEAF4YgV+Y2FwYdlDQ3mEfB9jZXRtb2QSmxSQlz6QUthnNxdWAgASIm1/BQRhdhc9YwN1cG1wPdXHHW62A2V1PQAhBGBwYdUGYYbmMxATZBR29ubGt5fUF5AGR1B2PxALECR3W2A6ADgtSwkw+AJ/dVLYylIRDqATKnHWA5gPVLvCFQUykjTVzox4pwZTdyctkFNTJ0EgaBWykCsXDQQge4kuaW1pcVN+RqMBQgFDBpdGllBWRzoTn5NCAoKR8gMTEyOF0P5dltYXMKCiDuAFD1GUSR5nZWUUAH7oQAMgnQtQKCEiX1YtCUNib3xgHpNy/+kgAUAuSeMCGAxSslEGiCotAU' $Zint_dll &= 'hpfmFDBDNQlvE3NpdOTk9mZlgFUyg6oGTCcX5jZXdUNMAHF1aWV0em9u3ekExEPWLKCnEDIBBAIoeyCEgkzyBQFLbgoMUBpAIAcnV0ZXOsOWluRWwwMn58AAcnmqBgIYXUAnVzdGVyf335UAVrE6MfIHYeHaCmA/cFmRmmEUd2jgUCYwFg8j11BmVyYniyDkIUVDrA4AUeefACi0UogAIlbG1jbQCyP3ViBQJlUAXmeRGEn+DsIkVRJKCgATwZIDow4QMjcwbQMfZ3JlPUMpCO4Hb6B88ACw8Ugtc2NhjRRJWjSiqBDG3hATJECHlqZLAKoA8CaomDBzY212dp1wUBFyZWbNDFNDTSYLA7CV4sMlBRPDtXUECSig0RSW0kgXKoMxVzbWUZACVzQEAsYUOFCnEKRHVzYm7yEwZTpuApciwwLiKxBVYWwZCD2QZ04gexIH0Vtk0VcjEFbQIuFyECaZNj1jb7UA1QVmAMELbSxh5RRdUBYS4BQb4ZIgOcA9QKoABePiQgOC4qgvYTEpICEY0gEhNFBvD2dpZXOVGsjl/yAZMGFtHgSQmkiX5pYXmy8w3xQQs6Q1UA4DNVYmzaAKBYQfGqH/ALDDPW0qYXBwNCB7OhHglQBjrQx0IA4/aWQ/NQMFHfWKQTNwcLoNEBJg9gYvZRn/LXVuAmN4AXYYhDhxSpgHDTx0ac0HFYsiA83saG8tcmmgQEf9DOIDIWc0UD9vbqEQDgthIiEGAZAaIsgB4JRBPDSwhwcDkhcBA/LTTvID8qNKML7tEnB5DDUq/gzhkxDSHKeQpqC0oRkmTC4bABImyGH7bAg7jQiQ3o1BRxKM9IBWxgZHMmUUCRReIwOwR+F6FK5H+AND/280EgCjGoAAUIAASQDAzoTuTMAGwAQALyDNFg7IggBQ5ckAqAwAywC6DFBFzADMDIDNAOIMcOXOAPYMANAIwQBamaACgMEAIgygwgCKq2zAwwFGDADFAK+u/CYQsgJz' $Zint_dll &= 'QgTgRmcGAPIrEJLgNhZGBxDiKYBEAEwCZjYPguiZAgJmb+UIAE8CBGZmbHVzSilgJpBhdicXeeBTAwJmOgKAAQDAWwDRZgIAgIwC8EUCbipPsBrwBdygoI4QAAATAV9pSm9qKhApUMfx5nwTAkBmcQZjAFUCZmxAb+AQD/BlRvcGwAaAKdBW1tYm6PkBAEECY2WGUdFjJlDYIP0EQALlCexymiZgywAoclsOMYbWDUATKpADILcCWl0gcwBBXW0RYWQAZAJiJQDAxgYgJmA2VxZStubmAl9DSWZVATMAWKSQK9MqEBqQA6ApQwAAnx0QjQDBVTNwQXlmN2A1JEXlYpAC8OYq0CFg6AAxD20AnQAAX2FkanVzdF8RZmRpjlTQBUCksDAkVGjlEExpnhMglwc0FBowB7BUJOXEUMQ0I1MBA1DUp0OKui4BIDKA4PAkziuhyRAoAv0FDADPAGAAZwQAcJECAPAAiwIAIIwCAOCALADYJgAAyiZAAQDkxgNw1jPgKMABAAzJAWzBATBxtgzQyAQMAMocDABnygJQHABhyA09EJbBTNAGAIBGANDTD1AlxQBiDJDHAIYMUFXJAKUMUMsAxQxQpc0A+gwQ4oIMQAxQVcUAdQzAyQC7DFBlzQD4DCDhZwwhDFAlwwBDDNDEACt9In0CjjDwnhtxlhtxxxvxaB7B4AMDUw4+MADhAgMSAE8mE88mM+AGMBHT0TvyRcTGViTgRieXB/WGBEAFMTIAWkLaK/PFQQhOYW1lUFhnZnZSJsfTX1byIhCKgGURQ2FwMMhWFsaWwlIWwnNEZWxlPFnUbPoiPP1lpJAFUD/wpdMB9l3hfE/QGY7ZUNEZeD71UXY2B/UD6fAKfJwOb4Bp+unwBIHwCW3wEFnwAThsJSoSSWREQChYMABamPCVNJzTQDJVbmxvwQ4A/2+aUMAEgQBBxAA8DHBFwwAsDIDCANqi4Rqq+c6W5pwGYMQhIFBCJhAEd25iTyL5' $Zint_dll &= 'BGY6MOYUFv4zoDw0D2RpZ2lyVSC4JKzkRxMEdG9vIGwKYACCAlWCnW3yPtBW15aC7aMYzSAwcfAYADADk7MfCA9gMgSB8AIecNAGzxEjVwVt0CoxM23wBTRt8B0zbVB3Q3JhEGxlbmeiQ9AHj2Bl0wffUdMHXxDTBz8QbEEDBsMsjfABRFBJRCAdKGZpwpHgpgVoNidfBIDhwEFVU1BPU1QAIEZDQzogJXOqdjpCIywHOMJykCMxBzRyMB3yFzZFkh0kMxMHYFPOLw32F/wZY8MPNbJ0INqjAtNazxDGBqfMBnUDbWVyaWNzVmWg3RSJNmMiMiISKkUD01/wEVQ3p/QE6j8hACTuRJF55V85mKjJDU0I3J5Yq18FMVczDGDDADhOTtJ02GjYV9O6Kbckfk7hxzZ80QQTEE1lc8JxAdIDUqLhEmMTVMLlOJ01N1EwPSBzIiyQNpbmsBSwjjvwpjIFIRRSZWVkKS1TvkLQJpYUb2dWQrTfEcL9JX5FEPNSTXKnqwaxBIs4UDY2RjMpVQEeZuJMI35RUUKmxAZGX+CqB2WjlkcgJ0cFJWQAvnVkkBV4Yc0INlslDiU9AGxhee/ZA8wgQBYtcUOiY9Qe0JMAr8Ek7WXVEZpcrwBQ4qKSNeeGFzW9G+wPMAcnbQQ9ZmkyTNFU2BRTD1LTj+PsBbAk0Rbm8ASBEiJRxObtIgMZAEWKc9A7EVnRDVFy7v0DURBZIzoKLQMio2DmBM8WTJArAAJlLwYREDTRZQJX05rReWXANGNvcnLvcQCSUCJHJS3uXhBAocVVGmR033TQm+D39AAKUPNWIGB9FVJZ8OjtBTItMpUcHRiNDU5QLzAsDxXMG9NSQtai0+WD3zTaGVA1JjoFGnACEjTVMZSUlLPIDqnwAEN5Ebr9EixNANUAKETEAS49MzKZCMhQK2AYQDd9E8cR8ADKAjAW5iY1N15RkPdgW/Iy1xrQNDCENi5+d/QyFRP5IpV+I3wT6Ydq' $Zint_dll &= 'Y/LvaQaed6IBBL5W4AIEvobg8yY9Qa01GymNESpBLRxl5E0gHVBhc7EWzI0bMgE+aDUuC1dJC+MoFTI1NZMOAwGD44HwGzUwgl/QVUgTJhcE4ZjwBDZdI291/wJ8kDbh4xQhEewhvRp1EgElBTBzKQB3Rklg0/3xzHsmWTFH5wwGqRCic8SsYjaNN54ATyDUBFUJIyat+DMAICN1KzIAVmLR01cicQdCe4MSpCDHBWcsQaAAUDJDlsUBoJCtv1bJPU5aY9JMtBSTgAKyJBPFpGCUxMQkKN4IClNoaWYcAQJR5ETEEUZOQzH/PKIJBhzR98EBwpLQ+uTrBO+pFpVazgtR1ysQFxPGFCTxaTmRczrVEP4U0DsRIeI+F/AZCAEV7RP9BTAsIDkVLi42ngxA43UQUt5mMQ/5AMphoBAZ7gTQ4hNX4dAHgKAwVCcHwlOSxuejRCeFUEBTOoUjCgBWT95e0CYhAHKuYuGiBGN/aDESbCF/Ni6/05HSiGWBF+NZKMpale3AAiLTiPfHIqLLAUOoWLIUBMKjigdlfT6cBApql9CgL2HcIC3GDfbOHZ4J4mPBMkITP+BLGyJHUOzjm9QHYJspEMGSTSFOEG/SYuYyfjqRGTUj43VhMhBYo+x08QXuGh9gc8P6BDJ+BA+AQjTjufEEUFpOPSszMuztLk0yUMASY6odAScxfDDHEBJokFqBt+4INCPj653xHTLeGV+QJU/AC62ofcAs6t4HnbHhHyhlBk4wIy8XRT94cBkFPoESTS7dQD30BB4E0t5ZPyEsOn4kQ9N60Kk5ppYwdmuyDaUcAD3yKDONBj3yBzEnMDdB8gkzM237AsjA+gGbosw5M9NboD4Fdb554IzwAMcRDi4C6OZW5hgG3RTtA+3Mr9AF4kPyHTPd+wHN9wYzDgsaGFN3UjJ2AoJi6SefmgGRk9JLYWMBahgCFw6lYJ0IAj13toVQIpQHQmYwBu8qCaoVATZpCyVjCgAoUHLq' $Zint_dll &= 'cTDGHlZJTs8iGmIkMDMzXYyt/w6JIh0REGNsdZKEIpIkwpIAIvIkUv8TJdJe8d/I4mryAQGDlpSgvDG+FOSPMg0x8XIZySYdGHZ7kHbmZigJ/y6MkGCgJxGSbMMHjQmeHICXq7JbBKInCwCoCJABwBD3sSFcyUuOGeYkUQcGhBAo8N89ADL+Gdd70WYsuKH94c4R9h9EIlaCbNA6plNKQYARUgKsMO/HYSYJ0xRpfwF1YioK1BjY71JgXfALviHRBuxKIEnQNf4t891XI3iJKKFk6hgkUgmlN5SkW7RU4xMzPfEMsQU3nRBN8I6l5S5ITQA+FVEHB/fWJ9dHwexOH5+hQwHBGDdNGL9OH99x05jh1fED2gLiyGd5EcYVwvLk1m9y4y8Rfh2EFvZjV9YAH5CTqdXxAg0A/QPcD+AcDg/QNajA5P8ZdizRYANysVVC5ksbVNIboSRBnhjCVaQYEnUGJdA7gFssIDR0cBhSpPBFMmRiwiDSh0JVhEUVejEUQgPTeyKURVUUBFELE0SKi9DKQjRWQQJgmAYIYXRjaCwDN4UWz1nKB4BSLEFEhKL+AccONsATLT5C/p/BARUwHC0+VG6JwQHFMFBBAkRFc2MgAHoaIAMIHFNBRXhHcnC97TlBJKOuEUDBEUTiKnDIFlwlMDaya1EvUiIg7Z1yHgVA48fzATYw2gyvAPBnpMUROhWkyCEspMkhLFIKdd4H4aTwAfJAXzBD49TyAS3xDc1AmMVgMzSOFB/QC1+wBQNTmHYBgAID458wNJ4T3xFH4zlhvg0orPAEWzAxrUBmMezkcPIcMzQOJ+sx9As0gV4ISARFBJJGVqngqzMTcgJAhW16DGAhMa67MjcBMiNj7CoyN+kgbkZx73L0BmEQrgtv4LMANC4F0A7itPAB33Ym4LTwBjSOG9H9pHI7wFD59+7m8gbc0H7Q5HoDCQMynKwz0N+BIpYzQeMgMk2UDYquJuAa8gC77gcg440nvfAd' $Zint_dll &= '/gRC43YRPcB9NK4YfyCMcMYYz9AF0cgfgOOI9ARZMn0bVUayo4oAcXUGCpCebSD2K2KaQBdiADLjIgr0YpcgkLAuLtHiMWSdA3Vwf3QNYIERbNKj4N9KDrqq8DPYkrHlDCQyLRqsX0H1BncDMqfnAiY4JKSQC2a5QGT+bkrTiuFO8QERBPadoeYrK99TNP/dPH3PAgUA+wJO+ZJBD+AKIVgP4K+SIOLE408h2gzRBOWtKcFRNOEtPs02vq0zNNQyJLw0/1QTMtIA3BXWguIaEJPik4IRqeslgzSOASFmEUashBIDk9KvXQPuSNMtkAElxhptElJS+LA3FouQQVMdExgQ5C1TKTXHcjJBMlZhcvUVMCOHEGtXcgjCXULcXzLE/Qao+seiVhR2qdNHxU7yF+vcY7YH+e62EY5TEQUxJIZMjVUuCQ/gq6G/g+jDNN4IH8D7DN3+EP5P5uUSgkwjwAZilFbGptMjNCAwc25WlDT1ZEMDZOMDAUxQSEFOVQtNRVJJ+tkBgFL+0sDYNFEyBiLSKDJD01RmQYf2FgIA00rC9gQx9443oEwbNsKUDqbSExBDputwM0JECv2yMzpjdaWrHW3wCeCuO9AGT9AkQteCAMGmygBoDADGAFwMgDXKAFAMICRTUyvgShEcRgBYbkDgVRGtIDQwtE4UkeTYHR7eUeNYEE9s/7YHIdmqfgAl7wwayxBbwwiqAonvjgGdL55CT+CcKoKxEiYn5xem1x0dGCYgpgsBriGhBmI17T444Ri1Sgdg5l8TPlJW43bzAZN+JK/QFGb3CzA2fhbCMkE1LCIFBQJw43wT7+4cDyG59AQiHR9Q47kQrkw/INXwDC3wAj9GTnoZ0hjgggD+IX/hJEUdEej+Ie/hohP+IS8QIwMDMDNkQCf6Mg0T0yJTQ/MvRQaKIkAolNIC5BPyAy2AKRMXSUQyafAdN3490QUvEALvcd8Y4m6B3iU/oIaxN90YnD+g0IHPajXkQJY3' $Zint_dll &= 'Nv0FTfoN3kzix4IgR1PuIUEDElQC8yKDRQROHGDtFI4C41AA/RbJ4f0L8r3i5kCuBdDnAcA8/uTlKgAk1OvAIx0PHKJgqNBLX2xlZgJDoWRicC9yb6ISMGdjIqTgMxMgsa93AhyBAJYfkRrQxTTVEf8owFdwBwDMTVZch+btnQQ+G9E7zyDUJJQayaJrBYPasBA2N5aWhiN9wr6REzceQ+Ma8ASJLT5VI0QRQnxBEQUuKsMheOEwk2Vk4H7s4LwSDALTBeJUhcPE5HAWttHiqxFhbEr33UCs7gUubFPT59Er3+BbAH8tSlDQXsEhTQEcYq8CHALfGsAhjQYcolD0RLSD0qZRBTUGFBJGAd0BnnEjX3KCG5KB4ncAOFiGQ2ZGg7rGgYN4MTLmNJYxIu8CNDBIGzah8BsOOtcPH6AeMP1gONcPQXP//SA41w9Bc+kQNOV9EF0G/yra1LGABBY8JSMTjRTdH14HN0oIeMkRV3hIPhqAqvys0I/QAi/gsCxqt6DTIQAA+g4TwisOCNAG34BOAM0PbHR57tjipx0dEmgxAF9zyoJqkHMFgEQEIEQFIsdjLAcxANEwICrmFJPyAfICsnJK4aMAGSC4JGIU/w0wzmQkWKasodc2ohbHRNZx9wxGndEgKJpvJnMhyhfl/1H3kRF6GAOEoHDleSF0oyFC92TU0uBSEl4KbzFjcxbM4aXwIf4uKOHV8xXq39Rk4COEUkcBAEaZ2gNgNMMAWg1QRMMAjixQJPMiQyAcINsgRasUQMQGRGxAxEYcoMwm7goAMMREQ4wwpM4IPMAmQhAQxABDLTEvzgRi438ybmk/YeO3MY1OAk9Q1GSkYFamaGXjzxG1HmqfMScpDhrYIPcgAWHjOxPzzrnj9gwiEmItEAA4/i7j2PEPbDi+i3/AuTa+TtMkT8CkxXUVI2XjfTScH+Hq9hhHSRRGODcVATYOR1HnlrDm9nbnSg1peNp48K4sPn0hLm/PUeMjc9oo' $Zint_dll &= 'zQbuSp/QK6XxBTUuM9MDX+A48QO+F79Q42gV7w577+GgNY2rNU3+BPIUIlfxAGoVcJvlUOPPlh4VH1Hj4BUN+A3tOvXiEcILbgfhXfEMM94VH6AgQfAB8PoN0dviowQc0ZSERUTIEVVQUFIcwfQUd8UhPiiQ5AEwhKTCBeD+cSK+RNIlNIWUZER1KMwkIAAyNf2C8SEOBNTZIBGU1A/gbgE+OWHj0hi7PAXi7WWZKMIRIOOJER1Qo9xZ0y9Q1AYntQ9pM87+J5HMLFPjSYPsEEOLMi+/H95VpROElBCU1Dqi4QD//K9ABBYLYj0OSjXCCw2GvH9w21aRwgp9C0bC9KIXDy0byKr81f0PIFPTlNAUxgY/FgCRalEGjm5kb24n870W5lDQRuKNEkVMdZLKKvMvhpXe8aBiAp0wPgCiTw22TMn8DX02DQ+2A8CbrGHAD23y2/HcVCINhjI1PQY/CVAiiJ4KjyAjU9MJ4IMhZG9qQUU3F2aODqY7Ih0EQUn+YRBkH3DrfEZCQo0gdiZzoj2AFFpo9Z8IQDj+YsGPajHhrAgi7yBBH8CIkmY1NFVEBYKzJtMIruRzbk0BJ2JW0QXimrGXR2VVCgXkSQ8KWTD2lmcbIXQxwzx8JigQvQ3veJn5DyAVI2U28bCzAaW2AN1wFyUgZS74AOf9Il3wBlERNU5lLQQ1ADB5BHK69NBbBZEndxTqgdEhqPEBdX5H8Tu/AYRmfwBdYowFJbsJIM1yvmyVprEDbQZ2AmFSEPEjWjtlcscKMOFnvHfHCV6T4m/5BLY300vDLHoXIABVfRJQP2llUn4g1EThMN5tIbAJzhnxbSYfXXVUPMJKmpCkXQ9ihJD31gHLxp0XzlIiVqZIDw8gSUJBZnDRQx/Qgwg5/wF5bdd8FITanMH9AumpOgOQHwLRARsTH8CIdv7w5tYzMN9flGPD+QGdKjM5nerdJP9hS/kE1cX8l9si5iPg0zMJz9bMZiAgMmuUB2LE' $Zint_dll &= '9hZmbVddcFNOOuGeN0oe4W4PHiBUbw3NjKiVJg3QM5SaHgBVp74ILu45EOeCDamMJSNXAIzvEERG9ucCaXcRIJTXIh/guQlOIiFJAfwmR0A03gvQIy/Atf4dIlU2arAJbJo8QQQwVUEQn9DvNzmsITMgVQSVDvqAkLbjATIv2QVA0SpoUhBDb8UB9SXD3MCGRmFtaZkBqSD3XNku5hEmXAvQONgGzob3baBd9AIuCMK1AG30BI0OLlL03wYvoLpojNtfzvcGDgDC9gAthR4AAE/2HNESHC/tTmBzDyBWTEn9+gBcn8AkHMCXJmIAYlsgEx8eO8IbbWlyc4qn4ZqwnhMhVSYjAnbfRQ/+O5Amexl6peumAsU4whDwHoDDhFcjMG16+qAoEAcSIG4Oks2nPGDk3gr2/hHWJnxzu9EPeBzR48HWNU5T7+D81/8ucR/Aq96rT8AN7hvf4WsS5wlAxRMKbyBHQpa2AKNSCWL1uGD0BKDh9mIAkQwuMy4w795zZesy+hUgpzomLOBTBR0z4LsVIFTl6wZURVJNICIleIIwIVV2ZhAod2Nv4lVj4wB4IFvtAPAB77wBfGTAB3wDguL0ROm4EGlj3xEQKe5oACOz38Wh4EHaQ+IsUx0lWzZDQRKBnkEzdZVENYTkPwTxJzQQPSAxMbYyAYNXEg/wTx8tCB04vSHiHJE44EAjKrKyLTcWXBDmNwoVB2m/QRBlc/4OiKo6IyBDX5KuohgirgGQdOFm9uZ+IjRubOGkEc1ViWofqJUEpZ0wKDUupMCekiKihrJvS+PAEab3BJK07iiHggqDfSmOki9A4ws3Xhhh3xEfoJEkGSwxITKWnRgRSvPtvBEeox9C47ERLp/uhJHWJddacLyURMEhJTA4LMrzAkwFIBQkNfREVPSFIdUUNWcswlNVTFQmUkE8CeUEKDx1BCCVRNQURCWVNF4BwFQQ8eRUxHOmYEDhVMTEY0Qg8FUUgAU1RbX0NWQPBo5c' $Zint_dll &= '+tTkxPUDUNQRN8QdBsCjQTzZCMXkTFR7REzeDMCUfgXw5cIGDaENRUFOWIwJETN+ymDIU0FaUlXJAjzWNBCUxNQUJPV8K8JUiRkDWElOXYJPVByRyHdJQkMhAFRF3YCBTCLE9DS0ZMS0D01JQ1BOYsCkQNELSc4UtQU8StTEszM58zwbLtAAmQkg9dQAqNkHniwXZORCJg1z6SE8tjQcdcBSSVRGMSKywVMAVEVMRVBFTl/Ani/AZFBMRVNTRUFZTXZTUFNfSSUU4z3B9ycw3BjkVFQS0IcfAN6GL9CF3iC59CRVFBRsNB1MqBQEFeTExBtOVkUr8BI9l0GZRUwWbgEK/Zf9okRBVEHd2whSTTRTzZhJU0JiTnEdfWRVU1K+UiAVUTRExaRPVVTrWBCfnAvFtIEFwZQFIv2ZqQbZ+1kQTBaFIQ2aWElEM8x06TRDT01QTM2DAEhBUk1BX1RXXE9MqNUyxzdsx/QkdZS6MMVjRklNd009U0ld5yESwRYtv0gdpv9MwcN9D4yuJhBN2R3ojBnvAFBM3obAlEZMQW2rthCR49wNPEnjpw09pTbKbYkG3lDk1ChHFDGQ9N6o2F/UjxvU2ecgQP4B3C/7zRQ8ioURQQ/dwUTBYw8yNUlO9QI8mF/ggDf4jJmnwLw6EMDIU1RBDk5EQVI+ANck8jsJBAhBBgBBENASABBqcAzAFKAcAMQAsARnABDgbe8IsSBJNAQQDMEpyry0KwDIIXC5ABAgFwAQEJAYPQDOABDwBNcAEDBv/Af4gDAAATbMAMoDEAHA4QMQgPEDbMLcBMmSsP9dMAAvAJePyDawBgOdIRC4AhQQ4GsNArlcA2wNIgDBEFCiAhBgcyOdMH0R/AWewbIMBdgOAZgwAAGNERAAAb4MAAGa1wSQAAUAAdwqAAbBBXkELTAdIgzQIQEuwDQAEO0CEKBcAhACgPcCEHDzzUAVpR0DCywD/dE10MAyqwDS3AXw1DHgxgwMAN85' $Zint_dll &= 'xkIcbwEQMFUBECkQNL3zAZcN9AggR/0ABr8CEJDtzQUMHwFUJddJwNdkQNw2MNYhENBAAAFxNgAhYgEvLmfSVWAGIC0BAOJ+Atx+3Olu/CkyftLhA/4AGgwBwrSU5OgHMTHCxT8g4zsmj0Ug/64YPMEFJQk69svQB2AfFFJkgfoETzKkcGPjJAI/U1Ai2B8QLaDtUUeeTHB0OwWO/AE1wHLjZeOkBFcnS2AzZFC4D9AbdJNn0yXAi8plBPwHNzZeTeAntFUG0wbv4OcC6mUiVRLyICHz75IXrycwzk+ksALGvCDuAuYlxAiCriZZRWXUguO79AA3bzeNArID0SQPABq0H7CzBqZKW//tII5WIZayj0QQtkiXAOOipI6H8+96Za4fkxnCBv5rlgE/YIgi7knw7l4tzSH9AFSm5KWmBAdKgH0RPzc3HoLRA4/QJC/QeNAXMYYF8a1PAtM9MDJOtNIBFlfJBj5w9s/2Af2gbOx4G2xv4JkWbG/QF9DrJVlQHiYgEwaONSIOyjK+4/Ev5gCuaEDGbOGqGEdUEPUKpvUwC9gybvDRD19wc9MyFoiULzEz/lPyEAWmbBT9eDc3XsL76RiWNzf+ygZfSQBSKGR+JO+M4TRjjDhnAgNxDNZo0qjR3wHWCP5bAy+wggcozTI5K1+VGe1+liB2AmYtkYQ2z08wX/LH4U9zSQE0GA9AE/tYIChwtv3gBOGFRl9DelBZQGb67WKsB/8clCTgnzcJMOkyZn9BEwrs864/ALUyWCGi/hUqzIBmmqEkpEMWMTBzIk50c3OfG9C21upjOWwoCgXgxQ7GZvEn8z4A00bpdzZ+B+LLYuiWSyTPBp7SbyDJlZac8JJk6Qs4BTg1OS0xJi4l4/k5pO44fyHjtRZVbgI68Ha245b20AbhVjXeb68g45Wb3qz178oe6N9gNQ6+rQ/A/A7+8WMOVNhv8e/pHq1wjfAO3m/TCNYGD9EvwvsY916DIapVQnMlIUQy' $Zint_dll &= 'DnvB9gVaeAAAMGV1BFAENSUCQKUEClRJRt5zARADNeSsAnIjAOV01Dfw6Uz3CwB3LgjiBRAuCA+ggXXKXvAvuABwYJ8NF3wQzOEfgU9oYKdoIOz9Al1qXnZSpq0mTQh1bv+fUhCeftF44D5kjDI/AOE7RMp1Sd8C0LHGKW4AKeN4GFVu+d5/YtkACSBdNDp4DiDnfg99Mr5145n3BBVxMvc2RQsh4zUXs39KEG5Sn1HQU4PTc2CRRDMoMXbBKt7zBzU4zn3i7Tz9NnQh/xTcf6BFIdzUVjDkRAnq5Q8uUpEKz5CjeCFBKFH0l+ISH6N1UNJyNmsA4bo0bkfGMyBEVg5LQgQ1BEInl1eb4HdI1zfzCkFCaKLka8BKVVTTHOEhh9MREEUtIhslcyI/uZAelJDlOgQAMcwszY9JdGVtkRN9BOXRe25GYYm8NThuFDglwQC/VlSBNk0Awf4SHkPP4Hi8VRQ+GOMtNFSe5dfkHwUOByDYCH0UNUs4nkMfIGPjOfQDNU5E0xDzPyQHpbkkbNEX6GmE/lW1UgHECfE+ciHypi5kKBMlcnZp4QF/Yw0ofQIF0K0Qbn0/4Br4BGbH8Ffjuheege/hvzSug0/gMxxuj1+ROfXtilsOvAWVieTlMC8OII0CpHHv5UQZQyks0FTjy5fbeBCOZ/QvRU584Ef9BlFqPfQFDsLSVIf7DPy80OjAxdID4yIITsI4hUSslgu8wDS0BCJMQ19IfoIyhTEcYB8ZzgEAQnAzHMQJHLKV4uMxARPTodAWADN+eRZc+zXjKyIzFvbgiE2+T0/hbX2eTy9An69PwAqeuNUQS9MQYUNTUHMDA4NTETHjGZj/DfETXt0fMEcCH+AxQCod8RIAJCZ6BnLFa4QlY27f5BcYXri0ZwElEoRqRh9CEDHk1AJyICJ9ROunEA0BvvXPYDMQxVEzPRx7RIYjla4h+Sdp8AMzrR2s9iVm0AVutJ/QHOEkpvKG8lIB3C91PR0h' $Zint_dll &= 'nvLmI67x9QLSQTHjshj3XfUabovTVf8AGzYNFg6It2YKvC7gJ6Z7YFQKeP6aMGbpGp1wfzb+iHvMCcz+Dr0D3fAKMQqznSC/cyzwATatG93wCuyv4BwsrqBf4e4Ss96an5GjWQNtEjkywqIAAH85ktfgAxBO8NAQYBUqHu7hJV/3TpLoLQYeLnFnAYXn+/0Cm4owxvWhR+NaE4Z24wb+BXYAktPkQVPffsF6mxxAafACMyIBQtN+0Te16QjxBQohby5yKwsACv6u+KOjIMEe3WEwsIoBo+AcUh3yM3SlVFpKaeKVK67c0SqlYgP/NhcgLBJvqCABAJ8IIH4m4rMdDy7wCvs/rODM0TbwxwESBo9w43oTXfAdfzTePMH8FAETvOA2YFMg4H6I8+dkdQe0IHiBVrDFEXSEE+uE+icCAgEKgRRyDgqgtFPbknTJBzQOBNEPX3DjyxoeEW/hlwMQ3kDgARIuse/hsBIuoU8gN+6UE4oyYqL8BTAtONkQDQDr3snf4YYX/qLvACMw+gA0/jTjZ6rg1vzRS5G/owBQJCW18yQFBK4PcGMDQyXgATYecGsnTSDznTAmH6XwpgLhGyrNK8++PEYVcmXtFWYjoGMivRX9ekKViNIf0GLhiyAC2KbgBBL7R5tAAromMjR5FnAA54YNnsFwv9kDRGm+y1PZH8DS52BKLl1YD0Nob29TuBB5nm0j7Rb7pWp4qOt7NStiMUTjHBS8r7HvmhS8n+FDALHzAI1DNJ5I0QLnror0AL0grj2PQON4FO4QFOeT9y9IMFIbss4KYTBWrOEi+wTPGjCDVRD/EMASDykQOEISLNBD4Xb3Fd1eJyN4dzNtFO4P/iYCXyDjNwr87RBuQeP/8BguQdcID+HAAzQ52Y72jyHGEzROJ9/QE01z42Fv/Qb2ZWpqZSBSf1/Q5eJ58gIzMhNP8Efj/hJd8RvO99YVb9ATUBXx+ARp798AXjLRFH/h1PEcNB4y4fXxFTT1' $Zint_dll &= '/i/pvvECqhoJAUS+GlNUk/WbpHDDAM8oMI8HUc83IDTCE+3vBTEMwxU1BMAoNB4xk/2dANwZX5DTb9CHX0GD8wwDr0D5lABPQIPj7v8BNT4dT0CTs+0j8xp9QDn/LfACvfYFOQ35DBEF9CUFYSVVD4kvVD1VNDnlXfgBTlwQCi9Ak9OF35HThR/w+2IGX0DjMnVuNfhbAc/wTQOiMDF8wUwC3pBDk/PTAq+hw7g0OfiN+AHGjRkQuJkK8c8MAwBwpu/WADql4TY5EwcQOiZw588Ac6QSmyA3lgpB98YWLTKAHhBgBwDgVnYG0AH3BufJUDe/MB0Qc3KfsM8BDUAaFTKJC8MEMASQAvNrVhlmEPNIDHIbA/FIDdEKUALij4oNAZihUCXvuBBOIcERCnAAZ9RQ5yEwKWIASGVs1OBgegktnlHANNIFEQOQ9gL1ATKzgXaIBZHmVgbDHyQkPwFdImFAzpigfCkAL/wODSIOEQlgRFYBwCh7MZF+F/Ri5IgTZSB7ZIDRB7KXBpAH0QeSNmBWxjZX1ufGEIoO8MgsZHVwMgTVCmHOMmTg9hJP0BZAVivTJdgoKpTzxiboAT10EEJF5NEppkw3A0FUQz1EEF9C5YbUdNEASeXcGTDmehFUf0V8FGTCBxzCd13wAlEGDmNteWvb2SA+n4PXciNnYnTkVnYnjAFFGNuNA5rNsFdGwSB9iikx9g3CCBcvVFJsQEsgNP8WviBjDPJmUG2RkVRb1Y0w8wDxSwQwfINTnQpwOHcLUgPCvhEFkQvcCyDUC+CdCW9wWXlsD4DEBj0PZXQtEPiOFRMRFAeE8Qrh8AsvVEPnnfICAg0QEgED4jYDMshgtwGfEWA0INZdACmXzxB8QSjdKsPQCc9A1AnYBdcyL1ACAB1FbmTGJeAHJkwm5BwTj8ELQm944mNAAF730nvACwBQbkGgQxb9JgBAlfZHZ00Wl6oQD/NgQiNgRCCMdRwLYvwvDkEpJWQuCNID' $Zint_dll &= 'EQIANdUSRPYmVlbQMuMCA+KhBUYgcc8d+j7gM/MX4oZh48cSTuMfEJ3qzgmZKhAXAwFMDREA/2CBeEyDvUyII0wv0AP8z/QC3cAVnO6BgrcdgOkhrcD+fMmD/J0u1yTcA8kzZApPBxCkDEDOACQfUAcQyjUncBJmKOLvYmz3r3PCCvxGOqpgdh8EeE0B0WTgXA/+rkSzmgLlINvr9RSOtb/hGDSOtf9x0++hFL8O8B7+PuES8x6eQuFa/h03LrH57w7zEk5C4U7+Ic5zMGgA4toLtn0hB0u3B3hACQ4IIMEcbsEu1kBnWU4/ICjWLrCVB1Jk408XbwFQnUe+WjGDYsVAmNEEwBmMEeTvPxGIT9AVVANzEASC+QScQjNYA7AU5qaWBvkFzw4wgK4towOiAADy8mLtNSNWYVHy3gAkRC7GM1PEM0cnfATJEla6JFh1ICjNr2lQthdxNnfvBhGjUuNAFMG+vr8y/AZBB6KUNCXs+wS/XrrZ1MIirAWWM3ExAOObB7Jpwt/ZJUYFDfwbfoniqvEIR0qQTTKC7VgsIEEtWuKRShJQorLS4vKiI/1i3o6H0gVfEeMP3z404QP2Bh40n1Cz7jsUbH/QTVD0KghPECXBW17KoN8U9VUR4koTlYEuhjT3PAhvwHT7GQRU47oUrfAFSN5iywre+Y/gnwyQ0c/Q0DFPAVWTEFjA+xwzr7zfQcP7HDUOideSr8AJD5bwBt8N/AFhBTUuOiH6K0qTL2BGAdrox80Kbi0oJw8MAcu+CS8A0vMDIhXHEsvQxOKm9QFeCb/gWHP/7s/P4aASjfkHvmsbN1AjwQyt+AhfTMxfYNMjIQAIsoC0wA9l8AfvnjLj0iffWkA23Ru+ANEC4i4T26blJ4MQL8NAUBoKMue5BT4A8v4aA1/waADi0Gc27mbD+hVPmPAJrD3exMP6BPIt0hYGh3u88O7+9wlNCrRp4242zfEV7SisX7H9aAOvwLozTRpuOV8x1tMi' $Zint_dll &= 'KTMPIGNfctDxhgfmkDPfcvAE86ty8AC84HT2HR5DLxBD83kFT+AAdP6SpS9gdCUA1Ab0hAhf0B5/4En0HDP+vkMv0B5fsGkGItwE5wOR4lKkAyAv/gKZ5DUAKoqRUCXAEJYOoFcFY//KXxBVpBwhkRB/SFBpIno55EUSXnOeYcPyCwb1uAT4uAipThhG/4YFkH0wyQDOFjpkVAp4/QnqNDf/rkXzjAX7AwjWBQ/AHB6sUE1h6Q1PclUEb2QeFmC6V4kkkPHujDG9GQ3wBDO+h9laOo4E6pRp71T1zQDTY9LzCgulHNaM44ch34xQDDPjq/QH9JgMF3vuewj4Uv4hLDZXQVCk0QYwVUbXnpFSKtQM5mTUBYekMG0TSSD3zVS9JljR7fG2MAACONCgr7olbPGdBDOYAsLUMUyAA/w5Bn/g4rk8L3N2Zz6HXhsAAsLzAhLdRzixv/YCQRQ8AwA9RCC8ofwjm/IH0SOi+zM9BCyeNwEhYSluedEf4EbXcicZICY9IqkIZCItcGxixqs6Lz2yewIk+guBAy4xcmYBAB1BGREgeFQhw2EmAkIbIIIVLWE4bmPGehAA4hIEaWRkuDoUADDSAOIANL4sQCf3trXWBDDSCAEzLeY20gFxNtMBYD4TPSI7mBDNIQBSwDOWJjdmsABj2WBmY91gtRAuKn2BJjVCVtMjYqIOrjvGxPIpWh0RfzbeA+E38xUJQoUSTVESD9E8H6AfLgYT6rtDQ10mL/1Gb/dSHqBRB4VDTdAwQSAUUAPFR9YCyAI1gc+iEORwBsKX1jegUQhVG4DZi8bzgm/6Gx1JKGKM8wV8gNfGpuA21yOylxahc5cWc9c1s30W8SIRHDkaWRA8HBAcGG+gaUE9IjEuMUauEdwEUAMfcCQXBocm5wRQLwql8EIKL0RURIF1EDExLmR0ZI0gACFET0NUWVBFRCCxEFBVQkLFIdIi8PJyNTP0ghsgwejgSQMxLy9FTqEAPzw/6QH1' $Zint_dll &= 'kA0Eog2jRQCJCQtubyI/RRM2jgzhqvMB875IZn0Auy+AXrxgZuZiEwbJwc8xDsnDEU7JxTGOyWMSFqrwBzscEFf3RscREWFtcBgAYMJGE68ccMYxM85Yf/DyBo/xpQnohHDeXlkv8A0KXzDjbzWuoGYeOHIMgLXbEUFlwwFlGzYCM+Og9Q1+almH9XAK6Z/1Al6LX2DjcxJG2woQ/15+chMR0isR18QHDQF8twwRczg5A4IWNoc2KgzjiyG+ItH7NQt/scIL/of6NQsP4fAST0GAm1pyJpbmNBIusGAk1FPXtyBncFKcs6YGBgLVLQA2SPEHpY8RUJR7EARAFSiDNdWEwjpNBswTEfBApNA/n90mUmV7YRBGFvAyBCmLVw50wDs9BDn0vwlXHnJNBGI0N2J59yhhhVceOSGRQzW9Ga6DH6BM8gf32rUgKiAuFCH4CVIWwUQCBsFS70ghNJFCQBNNOwBQQSDVzAagVDTUFCIjpDVdGA9SZXZp8i/yowBl1ibrVhHLD1Uwbj9vEdOi5AA435Mwf1Qw609c8BnfOPADfj9a4/fzATWdHb4swa/TOB8r4FMsIc0SX29Q8hg4RIOuLhWRVsISoXNnAAQAsPLLADJtE6IXcPUU8eoMc1QIGznRbW6HohQm43+Wc3owQhU/IOMeMN6vhvAAPplfIOMUcLxP4Q4yvA8Qw/s8AE8g4+p2vF/hzWG8e8NiB4IMcnYtI2AyfnJXRMyyByKbB/Rwgg0RAI8g40CQfaSf6ywRIite4ebV9gJrDTANAY5uL/FvAgcSBSBTIFVg7PHoCj+B3dyQ++oKHxDzegLZRqdeDS1BRqezdybWASQjmrDONiLjQTR+KH/x7ZGHjSBFZTBeQNEA4OMCPNODJgdCyfABDTARADLeO/PvyEwxEK7J5LmTXOragFzaQ9rbIB8hwwz9pcz/4GgPLcrc0R9E78AZFQvd9BHuJtoP/yDjFJPdvm2A/BEA3wIQHIERMr51' $Zint_dll &= '8//HC3/QmaIkMVAxsAahEoG6RtIcgO8Sg3EQItcgbDAGrpdzg3NoIjg5NzkijS59iMzyWx4PIeMUM63xCwoVCBZlEH0F140RDgFfkJP0AOPLDU3/Bh6OT3HrReE2XTQ+Ok9g56eRrOHP8wn8rKTdEAbRwxt+Pp/QBoYX9nXm6Qs2TgLD+gvCJtMF4RP0CfysJCZa5hrAC29b8Am8CgBQgN6JAIHNAMgMUMXLALAMgMoAoAxQBckAjAwAyAB4DFAFxwBoDADGAFgMUAXFAEgMAMQAOAxAxcIAGAxAwAD8nBUIEPQMgM4A4AxQRc0AzAwAzAC8DFBFywCsDIDKAJwMUEXJAIQMgMcAdAxQhcYAYAxAxQBIDBDEwwAEkQgQNBxQhcIAIAzAwQAQDBCEwAD8mwgQ8AxQxc0AxAyAygCgDFCFyQCMDIDHAHAMUEXGAFwMgMUAUAxQhcQAQAxAwwAsDFBFwgAcDADBAABNEAqaCBDkDMDNANSqDIDMALwMQMsArKoMAMoAjAxAxwBcqgxAxQBMDEDDABiaDICf2QDAAOgMwL3KANQMgMwAwAzQk1FFywGoDMDJAJAMUEXIAHgMwMYAYAxURcUASAzAwwAwDFBFwgAYDADBAAgdEJoMgI/ZCcAA5AzArcoA1AzAzADEDICrygC0DMDKAKAMQLnKAIgMwMcAdAzQEVGFxgFcDIDFAFAMUIXEAEAMgMMAMAxgxcEAFAyAwBsMgK922QvAAOwMQM4A1KoMgMwAvAxAywCkqgzAyQCMDEDIAHyqDEDHAGQMQMUATKoMAMQANAyAwgAgqgyAwQAQDIDAAACaDIBv2QjAAOgMAK7KANgMAM0AyAwArMoAuAzAygCgDICpygCMDIDIAIAMQPfKAGwMAMYAfRIjTlEsg+9pP0dPYUyhsBIcQfcG8H8SFccDg1ExHKA9EnksLPA5FfXLImfjDxAc8bUBwRFCo8ER3wOVEBxRw0HuXcERHqPBEfzCHMER' $Zint_dll &= 'fg3BATtYERww1jZn58EIHLBPFAHQYkArHPIupBMcoEAFcidJEUwg4QBvXkF/AJ9fUVwiSwChERxAiFzy7wZ8POHYT89kIRyhPgWOOXFvFvrLcwBDaaFcMasWwiEjbEEs8+S22xYD0DKiDyHNL66+wQaPEujUYnbGAMYJ0ABhigT/zSGK5iAtEhzhm1XzdSEcIQJl4yFBTOPsLy1ib5erIRt5Qf8coa0YHOB8BBzSCmBpQ5yC7X8BmggQ1myhmDIAAGngGgjg7ipMUEdn1jKTJuOzMiwjxmIxNlwDcyY2sgPCAWsAaXMBbzIwMjItay0HPWdituYQZWCjAskWAM+CIPHs1HbRANMDMwYXc9gJws8hzMAhIQcc4jkDamk/czBO/tAHIUM/rMBidQD/LBaFwGJhCCzWAsBiPQD/LNWawVKdGSzVmsFS8RH/LNWcwVLdGSzVntEHxgL/Al4CAFNiYSzxPAM0MhbncD77yhD+zuOwyQ3x8AphtxLa5yDgVGdhQS3wRycQj68gfMRFT21uaftsb8BFDyMQKMEBQRzRCA9wDDpcx5TWFvLQDA8QC9f/CQsEI84XwREtEi8zEEH7AxE3UnWRLGbl0WRWDh0Q02Yx/b9CEG+AMIMTEKzCFizQInItv6J2YcQzTrTFVyjDMiUEkxxC1MQxMzkc8x0D9HsyFwTwFgPVCfUSA/EQA2WWQyp7MOz2BIozMFeWB/AKA6HTGw9sbGlnVQ75ES0warb0QQRF1B7yCgPVW3/QUzvXAGTfP9FZH9AV4QQKYQLkwQJKu8oy4MZCfzBQaYMAPzAQHzBQ8SEQRp7jXgPfL0BBdXOqWPA/LgbCIpIx0MjCJYLtwEKFIP8xEv8uUHEZbub56AJ0zBDEUxxwqIcBbWFUd28JED8uEDwj6ccFb2fKBDAH8N0C0dQylZREBfDZAqUsIisyIPLMMm05LUFM6KQdXUVt9AHHjfkBnaQAAEY+OeBGX58sEOcc8ccC0Sli' $Zint_dll &= 's9RfMG0EwgE/TGVyBtEv5BBeXVp9FFVB3H0qbTo5E3FQrUpdAEluBGQyb2Y17RJpY8MkwgRBVEFDLKVmHD9sZbKmwDnFBtJmgkf9MODBDzdaETyB41IDgNZTxubVIA7rpXQQRv+VFsXwaZ41AABjDDAOVOC8I7IJ8cEK0VgCcAZC1R2RXbCmoR4/VGu6ILIvFdE7AhdWH/K9FnPz0zKFAaOAMz/nthDPbnBrbIH4jlswsQCkuVMC5aDZEHRpdu+9Jz0xdibBNsMWYR1HVj9wYRfnz4gGI0I6BjzgPxBsL+BtSmz/P1IQoxlg72Eg4tGrfA0NE+jz4hh3A1D3kgDjywoxfVBvcBHxwL+8QfMTER+gz4N9cWN1gRnwAQ4m0umFCTgwzt7g/hoaEvFiBhF3LzLd7q0Q2g3wEmoBxirzca+iWMj8qgkDxVOreWFgu3MCH8AHsG4Cz+DKCCslMFC6mQIjVoZvnAKqmeGaLD8sMBZSAQDQFpL3lZjT4mN2pkpO/pJAsZ0Cho7qOSwPAfZBqJ5HN/5L2DBdK5MYQF4R0MJwyRcRF1DH+w4ZEWYpFdd8IEoU4L8UdHVRYnUJZf4q4JY25wYvH1RjbI604H0Yx4MwTVTeR/PrJQB1QmkAhRdhEMNjQDkgNk/zrwID8SAtD60sKRyEcR4DbwDw/zINtxT/////EAAAlAAAABQwgjCJMMYwzTBzMaQxVDKEMrQyNDNwM6EztDPYM/szCzQqNDw0zTTTNNk0BTWoNeY1UzeSN8M4AjkwOlg6lTrOOtU63DrhOvY6/DoQOxY7QztfO2Q7eTt/O6w70jvYO+o77zsBPAc8TzxVPGU8rzzKPOY8Aj0+PVs9Zz2tPaw+sD60Prg+vD7APpw/ACAAAIgAAAA+MOEwqTGvMQsyOzJCMmQyjzIBMxEzLzNFM3YzlDOqM9sz+TMPND00WzRtNGA1ZjXJNc41+zUBNg42EzYuNlw2fTeDN+s3+DcPODU4OzhX' $Zint_dll &= 'OF04ajhwOIs4zDjVOOg47zj2OPw4EjkeOSQ5Lzk4Ofw5aDrwOkY8vTzDPDI+Cj8vPwAwAABIAAAAJDBEMEgwTDBQMFQwWDBcMGAwZDBoMGww5DBnMnAyeTK6N8E3zTeeO6U74jvpOyM8KjxgPGc8CD0PPdY+Jz/tPwBAAACcAAAADjA7MEEwdDB4MHwwgDCEMIgwjDDAMMQwyDDMMNAw1DDYMNwwFDEYMRwxIDEkMSgxLDFgMWQxaDFsMXAxdDGMMZAxlDGYMZwxoDGkMagxgDMvNk42cjZRN443JzjiOOg4AjluOVI7bzsSPBk8Aj8RPx8/Kj8+P0U/UD9pP3s/iT+TP5o/rj+0P78/0z/aP/M//T8AAABQAAB8AAAAFDAYMBwwIDAkMCgwLDAwMDQwODAoMWQxKTJcMmIyxDJFM0szVDNjM38zhTOoM7YzwzPRM+0z8zMINCw0MjRHNGk0bzSFNKc0rTTENOY0+zQBNbs4wDjqOPw4IjljOX85ijmUOeI56Dn5ORA6NzpROl4/ZD8AYAAAoAAAAC4wNDAOMngyfDKAMoQyiDKMMpAylDK+MhQzGDMcMyAzJDMoMywzMDOuNO00PjVSNa81tjUhNi82iDaYNsg2zzbVNt424zaONwc4NjhgOJQ4sDjIOM441DgIOVM5XTmJOY85mznoOe45fzqFOos6nTr8Og47Pzv5Oyw82DzePPY8MD1APRo+Vj5hPoo+tT5dP54/qj/mPwAAAHAAAJAAAAAIMDQw3DDiMOsw8TAnMUUxTzFYMZkxqzEOMhsygDK5MoMzkTOdM6QzwTPIM+4z9DP6M9Y0XjWENaU1sjXXNcA5ADpROp06wjrIOtk6+ToAOxg7HjslO0U7SztSO247gzujO6k7szuQPLk8AT0gPSc9Sj2APbQ97D1lPms+Dz8VPy4/ND9CP0g/AIAAAEwAAABBMPowADGnMa0xxTHVMZ0y7zILMyAzTjNnM3EzpTPRM+0z9TMD' $Zint_dll &= 'NA00GTUfNTU1OzVJNU81XjV3NQc2FTYtNjM2TTYAAACQAAB0AAAAoDWpNbA1vDXDNfk1JDY8NkA2RDZINkw2UDZUNlg2XDZgNu859TkvOjU6YTpnOgY7DDu7O8E7BzwNPE88VTy1PNM82Tz7PAE9ID0mPUU9Sz0yPjg+jz6VPtQ+2j4iPyg/cz+aP6A/1D/aPwAAAKAAAGwAAADPMNUw6TDvMCIxcDF2MbAytjL5Mv8ycjTBNMc0YzVpNXs1gjWJNZA1ojWpNbA1ljacNsQ2yjbaN/05AzoXOh06Mzo5OlA6VDpYOlw6YDqOOzo8QDxRPFc8hD+IP4w/kD+UPwAAALAAAEwAAAARMaAx2zLtMvQyCDM3M00zbjN1M6A4WDlcOWA5ZDloOWw5/DkDOmo8gDyQPJ08sTzOPOI8+DwYPSo9ND08PUs9Xj0AAADAAACUAAAAJjAtMMgwCTFjMXgxhzGQMaIxqDHEMcox3zHlMQAyUDJUMlgyXDLfM+Yz5TT4NAc1GzViNXI1ejWINZc1kjaZNmo3cTecN/M3EjgZOCA4OjhAOGA4ZjiAOIY4nziSOek57zlgOmQ6aDpsOtk6DTs2O0c7+TstPFY8ZzwXPVg9AT4vPjY+kD6sPrA+aT8A0AAAdAAAAFAwYzBwMIAwkTCrMLsw0TD5MBExGTE3MT0xUDF1MRAyVDIfNCY0OjVpNYc1nTXUNds1AzYkNjA2KzdJN3c3sDe0N7g3vDf3Nzc4rji1OHg6nDzHPEs9uz7APsU+yz72Phw/MD9OP94/6j8AAADgAACIAAAAPDCsMLEw1DDkMGExgjGgMb8xjDKqMtgyITRgNIA2hzaUNpg2ADcHNxQ3GDfQN9c35DfoN9Y49jgTORE6NjqeOtU6BzswO0w7kTvBOwk8Pz1MPVA9VD1YPVw9YD1kPWg91T3bPQ0+OD5yPsg+3j4hPyc/RD94P38/iz+SP8w/+T8A8AAA9AAAAKYxpzK9MiIzRzOV' $Zint_dll &= 'NJs0tzbWNi03TDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DcAOAQ4CDgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDhsOHA4dDh4OHw4gDiEOIg4jDiQOIw5kznnOSg6eTqAOs468zosO1I7fDuDO4o7mTuyOw08NjxzPJs82DwBPTw9ZD2GPow+oD6kPqg+rD6wPrQ+yD7MPtA+1D7YPtw+4D7kPug+7D7wPvQ++D78PgA/BD8IPww/ED8UPxg/HD/HPwAAAAABAFgAAABVM10zczN7M+szEjSoNK80vDTGNC41TzWINao14zUGNjk2YTZeN2Q3YjhoOIQ4mTjHOFw5hjlNOyE8Jzw8PEA8RDxIPEw8UDxUPFg81z3dPQAQAQBkAAAACTBAMFkwTzFVMYAxhjHSMdkx5jHwMfcx/zEFMj4yrTKIMwM0DjQXNK834Df/OHs5nznCOeA56Dn2OQQ6EDoiOlM6WTp7OoE6njqjOrg68zoKOxk7UjtuO+g9AAAAIAEAfAAAADw1czV6Nac1rzW5NcI1zDXWNUI2wzb0Nlw3aTeMN5M3qTcwODc4VziJOI84rDjXOAI5CDmSOao5sDk+O0Q7DzwVPEA8Rjx8PII8uTy/PBU9Gz01PTs9iz2RPec97T2bPqI+qD6uPuc+7T51P3s/qz+xPwAAADABALQAAAAtMDMwaTBvMOIw6DA7MWsxcTGQMZYxwDHGMewx8jEMMh8yVzNdM5EzWzRhNJ40KjUwNY41lDXGNcw1IDZyNow21DZxN7o3GjggOFk5XzmvObU56znxORc6HTpOOlQ6ozpLO1E7XjtlO287djtjPIA8hDyIPIw8kDyuPLs8wTzmPOw8DT0TPTQ9Oj1fPWU9lT2bPag9rD2wPbQ9uD28PeE+lj+cP8I/yD/YP94/AEABAFAAAACEMIowoDCpMLgwyDBsMbYx1TRgNmQ2aDZs' $Zint_dll &= 'NnA2dDatN7M3XThjOJs4oTjIOM44ADkGOb05bDpyOvc7/TtcPGQ8azxzPHY9/T0AUAEAkAAAADcwPTBtMnMyrjK0MjozQDNtM3MzoDOmM9Mz2TPyM/gzDDQQNBQ0GDQcNIQ1kjWbNaM1rDUaNjc2PjZgNsU20DakN6o3ujjBOMg44TjwODI5ODlxOXc5lDmkOak5tDnQOd85NDo6OpY7nDv6OwA8pDyqPPY8/DwQPRw9Iz0tPU09XT1kPWs9ez0AYAEARAAAAIA05DXqNZ03vjcyONo4ZzluOaw55TlgOoo64TroOhE7lzvsO2w8mjzZPGM9zT3UPRI+sD53P6M/qT8AAABwAQB0AAAAXzBlMKgwrDCwMLQwuDDUMNgw3DDgMOQwADEEMQgxDDEQMfo0rjdgOGQ4aDhsOOY46zh3Oo061zrtOgM7RztdO6c7yzsXPC08dzybPLE8Fz0tPUM9jj2kPec9pz69Pgs/IT83P00/Yz+nP9I/AIABAFAAAAAXMDswUTCXMLsw0TA3MVsxcTH1MRkyLzKXMr8y6jIAM4Q1ozXCNeE1/TUZNjU2WTboNrQ30zfyNw44KjhGOGo4+TifOxI8Xz4AkAEAWAAAAGgwhDBNMRo2IzYsNjI2uTe/N8g3zjflN+w39Tf7NxI4GTgiOCg47jkvOlA76zs0PUM9UT1cPWo9eT2VPbw9xT1iPmk+fD6HPpU+oj79PgAAAKABAFgAAACzMfAxCDLKMuwyNjRONGY0qzTKNOk0CDUkNUA1XDWANQ82MTdCNw44FThwOKA41TgKOV85RTp9Opg6szrOOuk6BDs8O1c7XzxxPIo80j0AAACwAQBsAAAATDCDMJ8wuzDXMPswijEeMtA1lzYlN0Q5SzmlO7Q7wjvNO9s78DsJPBY8HTw2PKk8sDzDPM483DzpPAQ+Hj4xPms+fT6QPrs+xD7WPuw+AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPwDAAQCAAAAAqDFo' $Zint_dll &= 'NRQ2GzZNNm42ezalNrM2uzbENtI26Db6Nks3djeVN6Y3uzf+N244dTinOK441DjrOAY5MTkEOwg7DDsQO0A8Rjw6PUE9WD1fPYE9iD0UPhs+eD5/Ps0+1D45P0A/ij+RP5Y/nT+kP6s/sj+5P78/3z/mPwAAANABAPAAAACoMK4wNTHRMdgxGTIfMlwyYjIvMzUztTPPM9UzHzQ5ND80ljSwNLY0dTV8NeA15jX8NQA2BDYINgw2EDYUNnA2dDZ4Nnw2gDaENog2oDakNqg2rDawNrQ2zDbQNtQ22DbcNuA2+Db8NgA3BDcINww3JDcoNyw3MDc0Nzg3UDdUN1g3XDdgN2Q3eDd8N4A3hDeIN4w3kDeoN6w3sDe0N7g3vDfAN9g33DfgN+Q36DfsN/A3GDgcOCA4JDgoOCw4hzi2Odk6+joeO2w7iDusO9w74jtkPMg95D3qPUo+tT69PsQ+yz7bPuM+AOABACgAAACQMOw0EzU1NWM1izWcNtI2+zZGN3A30TgPOVI5dzmHOQDwAQAkAAAAGTsgO9k74DuVPJw88z0lPiw+MD9lP3A/kz8AAAAAAgA0AAAAVDRjNJI0BDgTOEI4MztNO2I7nDukO687uDvBO+47XD1rPb89rT7nP/Y/AAAAEAIAQAAAACYwNTA+MU4xfjWNNec27jZoOXE5ejmDOY05lzkDOgo6sju5O8I7yjvTOyQ9YD2BPZA97T7wP/k/ACACAIgAAAAmMDEwWjBlMIowBzIWMpIyoTLXMuYySzRSNEA1mDamNsw20zYQNxc3OjdBN2M5ijmxOdg5/jk7OkI6YDquOuQ6Bjs/O2Y7pTvPOwA8LzxPPKU8AT0lPUw9jT2/Pec9OT5WPl0+fz6GPqg+wj7JPu8+9j4UPxs/LT9zP3w/7T/2PwAwAgCcAAAARzBOMG8wdjCMMNcw4DAUMR0xPTJpMpUyuTLhMgUzTDVSNXw1hTUVNmY2bTaGNpU2pDbWNig3Wzd6' $Zint_dll &= 'N5k30jdVOFs4cjh4OIg4jjjGOMw40jjfOO849TgCOQw5EjklOTo5QDpEOkg6TDpLO1I75DvoO+w78Dv0O/g7/DujPKo8yDzMPNA81DzYPKY9Yj+DP6c/+D8AAABAAgB0AAAAEjA5MGwwcjBGNLY0vTTeNKU1qzXGNRI2PTaVNps23jbkNkU3jTeTN+E36zfxN284dThGOVA5VjmSOZg5GzohOkw6nDrqOgE7ezuBO687tDvBO+87FDwYPBw8IDwkPCg8LDwwPO899j39PQAAAFACADQAAAA/MIkwjzLiNek18DX2NRQ2GjY0Njo21TfbNzw7UDvJPAc9Kj2jPdY9Hz4AAABgAgBMAAAAATALMGgwfjCfMOU7KjwxPEo8UTxpPHA8gjyJPKo8zzzaPOQ88zz+PAg9FT0ePfE9Uj6wPuA+/T5lP4k/kD+/P/k/AAAAcAIAsAAAAKgwrDCwMLQwuDC8MMAwxDDIMIUxozHFMcEyxzLYMvwyDjMVMzEzbjN1M7kzDTRJNL00MDVENcs12jXhNQc2PTa7Ns825jb9NhE3JTc8N1M3qzfFN+A35zc3OFQ4Rjk8OlI6XjtlO3o7gDufO9Q72zviO+k78Dv3O/47NDw7PG08iDzgPOc8/DwAPWA9Zz18PYA9ED4XPiQ+KD6jPqo+vD7UPvQ++D78PgCAAgCsAAAAgzCtMLQw1DDvMC4xUzGAMYcxlDGYMWAyZzJMNHg0nzS+NOo0DjUtNXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1cDbCNhQ3aTe+NxM4Yji0OAY5WDlsOeU5OjpBOlo6qzrLOgo7EzsZO1w7bzuwO9k7Jz49PnI+fj6aPqY+vD7DPtI+3T7xPvg+ET8nP1o/Yz9/P7M/xD/PP+E/7j8AkAIAlAAAAAAwCjAsMEQwVjBfMFIxmjGiMbIxozKqMt0y5DL/MgYzITMoM0MzSjNzM3ozjDOQMxA0FDSYNJw0+DT8' $Zint_dll &= 'NFg1XDW8NcA1UjZZNmg2bDYxN4o30DcwODY4YDhMOVg5bDmlOf05UDrYOt86CDsgO1w9Yj1pPXU+ez6WPpw+qT6vPs4+8z4hPzY/5D/qPwAAAKACAHAAAAAbMT0xYTGOMdEx2DHiMe4x+jEGMiAyJDIoMiwyMDK9Mhk0czTANOQ0EjUYNSk1LzWFNeg1AjYJNiw2gTaGNpk2rDa+Nik3GTg9OF84Hj0lPXY9iT3oPRs+Tj6BPrQ++D4rP1c/gz8AAACwAgB8AAAAazD8MAIxPzFFMX4xhDG7McExPzJFMoMyiTKTM9Mz2TP4M/4zlDSmNOA05jRoNWw1cDV0NXg1mjUxN0g4hDhROZg51znnOtw7CDxcPJs8wTzZPOQ86zwoPdg96D3uPfw9Az4YPiE+vz7FPs8+1T4BP4Q/2j8AwAIAlAAAAA4wxzAWMXMx/jEmMmQyazKbMqIyUjP1M/wzhzSONDQ2OzYoOCw4MDg0ODg4PDhAOEQ4xDjIOMw40DjoOOw48Dj0OPg4/DgAOQQ5CDkMORA5FDkYORw5IDkkOSg5LDkwOTQ5ZTtsO9A71DvYO9w7TDxsPHc81jzhPPI8/jxTPV49bz17PfE9CT4VPmk+ANACAKgAAACeMa0xuzHGMdQx3DHsMfMxAzIOMhwyKTJWMrcyvjLrMvIyKzMyM4szojPUM+szJDQ8NFQ0WDRcNGA0kDSUNJg0nDTMNNA01DTYNCI1KDVxNXc1rzXPNdU16TYnN2s3oTdPOK84vjjfOPU4XTlyOXg5kzlNOpU61TrzOvs6BDuNO8I7zzsNPBM8XDzsPC49rD2yPc491D3pPe499z0uP30/AOACAGwAAACMMJAwlDCYMJwwoDCkMKgwNTGcMr0yxDLgMucyBzM5ND40YDR5NIA0hzSONAw1GjUjNSs1NDWNNrc5vjlbOoA7hDuIO4w7kDuUO5g7nDuNPbo9HT5QPoI+ij6oPr4+8D5QP54/APACALwAAADK' $Zint_dll &= 'MdUx6TH9MRIyKjI+MkMyXDJuMnUyIzNMM+sz8TMNNBM0JzQtNDc0PjRFNFQ0dzR9NKg0rjTeNAo1SDVwNa411jURNjs2bDZyNrc3/DcaOCA4bDh2OMQ42TjgOAk5DzkYOVk5pTnhOSY6Ozq6ADrFOvQ6+Dr8ADoAOwQ7CDsMADszOz07XjuUADueO7s7xTvcADs8PI481Tzfgn4KQNfj1/PpEwKxijYYgNwj3ThwUO3AU/Nj5P0DRz0SmO0By844ECARcxLjFrPnPQBE4DYTkCQT6NoDvDIEzDLQMwQOP6BGExBHU0pTS0PvkwIi7jUmGvFkc2xnAvsINgI3Cy4v0HFjInITaR6h/jdDlQ5xir4mMIoz6/kDQj41gArYH+Cfc7gjuaOJsqNtQQAdpikQxxMqwBPfM+ID5MsA+ICtDqY/4z8AEAMqANwuCpJhkwHCJjFgp+oSA4omHYDgZQo77QxIIjOzdkegQSPS6cAs2IFATgNPc2EmAUcANVE1ZDVvNYMgNYrOKzBcA12TjWgRAvs1Or0BaDZ1CjZ+No+mFQDkTAFpgoYz8HdzeCNq1AHNIjfVtgaQfxNhRwEkgDUMNDhrOJw4v4h+LLCPw1KPQJyTAKAToaOn86tzLKAjs6OzM+lxAKsKO8g8Fq4dIGiYAs2g/jWw07eg52Proy7gY/Pz8/NkAABfAj9nP28/d1YEwIhqDSS7XgTA7yIBAwD4ql0uIRZFkOSNBFZGEnAHatgEoTYnwAvzD0OgELMQI+FpAyBFBS4KMTUxX35HkGd5II4iMZWGRzAao1rOQAAggyDDIAMhQ0Ejg9HOYC9wNOLHwCNDBWRMBH8mJ4DbYAAsE7TZOKBOc08j53kDRM6ON8Bg42F5A0I2AOs29zYMNyE3VTamDaDgEQI6vgpwVo0ABVhdYOmdA6k4vDhQy64tMO5qBPI4/ThAG74VYJtDqIOoQ8CoA6lD6QICnDoBoDqHPI08+u4KAEHRo+EnBC09' $Zint_dll &= 'vz5Axr4KoO9j9sP2Q+To2wPRP9euLTIAUC0FGz5HoWXJBLqmDWBRJkCRHiNSHmDndwQ8MwBCM2AzZjOYM1Gc5ilAapIExjPe9QsA+jMmNEg0UDRRXVYG0Nm8gF/jb54CUTY2QgBm0AFIN03NDwR6N5M4yp4ocMJTEfOD009QZKMAaQ4GEJXoywID70oi+jOmRhMA4EuzTlNis2KDoHATcWM9cDg6jwg6qDrR1hJwsDMk6qICVj4gANeDZ5ABigA9lD2cPaU9riA9xLYF0N4j4NPB4DP081mZ4A8hUAOgriry4+wErTBmMp0KMuIyYE5UAFIKwKtAs0xDY3kCBrUEHEA2hh61fxOAU58DsJ9Tv7O/E+kTdekzIQNPTCKqMrG1BRC+MtwNAPwyAjMQWjPQ9gOAPcM9U/BHE0sTZxwDlc4OAMBf02OzfxOCQ2RlsgSdONxlBfo4ABE5wDnIOQw6QB+eGqCo86nDqgPRrMPukgQXOx07FSo7MZ4mcOTXAVYWD0BQtrO2s2iEAew7ETc8xRYYAOPjafwEBME/AHADvgNSDBPAE7MUExXjWYgAles/Ac4tD/MxAjIQCzImBivAJCMlU7AlQyejZ64AlQYPAEAsAy0zMcMzQxE1g1Zb8NsbgFoDQF4TX6Ng42lTlWuJAUyVDEg2PMDpjwISpDio1jYAi+M7BYBRA84X8uEEAY4win0JBM0y1jKm/kswrgMU470EVztnO8Y7AOM7PD0gPlU+EWA+CC4LATkA8O8kASAD0wRTFGMwE3VuLRqgHTAKMGLGRRCAGAMukzVD7RYARB2WO0Bl49WhsKRDEa8DY6IAMkUGXz3URhLg4wADj1MimCYwMBEDkBUTGdMdQyNDgCTzJaNbTLA1UyA2I1XT5UwBinZOUDRrVADgNRzeLXDl4QEUxzbOpgIgUWEweENxeUPa+vBvlSKMOgGZOrE6qT22BgkA6oIUAz9UIpYwqjCsADPpM0U0TDSNIDQAbgMA' $Zint_dll &= 'dvN20wpqNgD6/QY4OD84fyA4iq40ALhjuKMm6qwB+LZboNIT46sDQYpWSSDV0+cTAeFGIQCh4iPiWwF4HibAbAIE5bTGMYBh6wG9BdBNOpkxBJ8xEjVnbQebNRC6NVCdAWw2oTYEpzZEOEruBJCTA/TjYCPhOYY6oDtApk0E6TsbPEU8QEteB1DOg9vj28OR3XPtcgBWQelxFAMAQeQYQDEzMyPlvAFEig44oDyT5SYB3zYVbTexngPg3o8gVAhQJeVABF3mNABnIgKljgYQsYszXPvSj6PhBgEARjlROYw5rTkEyjnVOS7mN2CkA1Crw6vzrKOtE+CuU6+juoNsaQIEIjwuPF8mOuDIU/Xp/AXnzhBQVVpg1i8QJGlZA8E95T3w5hAAEeFzYrcERz5PPkViLQN8PrF2MDDs6AJA22ZE4O6z70PwQ9VgWQIjniWw44IETj9QW/ZY0Ob4A4M/jT9Am+4u4PqD+8P7QwVspgHIhkgA7RsFAPCo3gqzYvMLN+Y/sAmjrOjGBEgxTF5MQOVvBVyAlhowHJMcMx2TgOhHADUyXt4UACiDKSDjKWMqA1vZIA8gszkTQQNEowXo/wBmNNc04jT1ADQfNSw1QTVZIjVfPQVxNXn9B7yAtklwf+OIM4kzLYDDuSO6w2g2Br6g1QzX9QTtPP08BKDGA/DhOwA6PaA9vtVuByDLEQR9KSZeI+Dp7ARAve4WQBrDGuNUQ7BvM3Fz4v0CWDcBhjfmN/04IWY9UDCb46YT6TQBEvYOELC408NTz3PkSAIQDD4uLgkQ73PvE5Hw81A1kPJTZd4CFIU/+h4tQuCoIw8wRRX2CDAEU2V6Anb1AkXLPQsqMTDWWhBrIQEU2zHvpgyg4lIGRjMVVjNqfhOgYDwETM4vQKTqMAPsNQv2B0BnU8RmMwEAIAQ+HYLkswIA0jNpNH40yTUQ6zX1zgIAaPN1Q2B243bj5x8GnjdEroYhMI3T7pIBJzkQdTmWri7Q' $Zint_dll &= 'oHOiQ9XTcUDhuwUc5h5AshOBssNSIaC6k+yrAgIHPAs9Ej2+N8ei6BkFND/+/ixA4NMhTQgwgTDbtkbgDlOPAoPhsyC+tgEgL4MEQNNYI13TcmMHgFOO85HzlJPpkkPuCgTs5mZgO1FOFjeEaowCZe0I8B5CENNDpOgfBGo9f74GYGmBAzQgPmQeH7DrM/GjQVuDcOldBH4sQeAjJgcwABswIjA6MF4wQGuVBYswlTC5MFG/1kgQ5GEmeDF8RiFAcR8D4/YBrD4vwCwTUDazNpM38+ikBhGvM7zWHTBA4+KzAUBPNlvQTDNco1xTVF48AGdjZzMDFwZYUPB6Y3ujbG8BS3UMUWQWEaDlbASPOoW9AQXKO/Y7E54rkFW8ECDHg8ezzfNujAJWClYWYGxlAdoeR/BpWQGAAiBs3QOWFQbRMgOA1gvwRDNJo0mjDUIT7vsFIDXNNRcgNlW2KtBug3GjBegtAfM3BjhZOJcAONE4ODlbOaICOdw5Qjpmdg5QhLAzthPnWAGUPpjiPlLiIhWVHyQ/Qb4HMI3qZgYE3kxCYzoExDDjIDBHZlAQHWMfg6NoogORN5/+K4BrngPFIDfR9jnQfWN/k4PoFQJNOFW1D2U4bapOSqDsBCH1dhQAIr8MRyg5VCZmQGY5Ap85wYAmCjCfg5+DocOBoAOiQ2IxA1E6VgA6ajpwOo46sgI6uTpbO2A2ZPCLangA7z0DAN5S8MVjKGgRBME86DxDzg1AKVqVgG6oAT4+WsZmQM/oJQAHP84GCFDHAEeg6oUlAMUKg+Y1gOn0AaqiDnGw3oAQETNjZwJIADHoMfQx+zEuisUOSjJX/h3QZ5sGmaJ+U8Br1QDjMgp+caCDMhNkNACRziYAPrOB6vcDRlYRgOYVAX405So08c4qcGFUBoNmYoIM6jIDFS4JUGZTaHML6IsCETciN1Y3XYj9DaU3wvY0YIGTA4CjhdOHE4uDq4LzbB4B5Y5LwtgwYKqSM2w9' $Zint_dll &= 'AORmZQBgjQEcKjot3Qkx9g3Q4A4HMaq9Am6+FIBgRwdHxQlxqr0OKrYYAGYsAK72LUCN2JrA/QPuuwLoP+yNrgxAAMCeLGDtdjwmV+DrK/cEcO5xbD6yfjTtJHc+TYEOAMMOAw9DD4Mv6LkCADFCMbM1B/CAdljAIKMhUyKzAiIT49wBUzJtMvWjxi9wYfwCSDNVtgzgahFFbFZqYDfTaGwBqN4TABRsTiTbM+EzQjRFwu4dgF3j7YQD9r4WUMBgE2FjYXoEJoZqUNBjI2Xj5ToFhiZhQETv6wMdNyrS1AFeAOpSISweAkATgxPD8xADFEPUZOBkEEYGYUsX3a5009gBaPwAznTdAGHgwCNUiB0IoF4ogGttAdA9QdxFCPQ9AD4Mli0AQOID48Pjg+RTRWUWAWw2CUDoqgScNidQRetEBsy+XkBudQL8zhFARWEeACwmGUDkVwdcPwVoP3Q/gBYfgGmTAFawLgmA3FkA3lfg3SPwEQYAxBhAAAPhWAdVKJUFQHUFWFUFcDUFVYgVBaD1BLjVBNC1BFXolQQA5lKA4YAHMI0CVUi+CQDWJYDnFQOQJQIVqDG03lrA7DUD5AUFVfy+I0Dh9gEsTh9A5KAGFFwyaP4VAFilgCkTRGqiALwyyDLUNisQwC6DL0MwA+FTBxAoMzTuV8A0gzVDROb3B3wziN4BADpDwDqDO0PsZwHcM0ToBnMAQMPggQUkNFswHgKA5KICslZx4H0kdjCJawYTUGUONm1h0hYAEAiQDhYCAWOTdwAgCACKFzUSND04HmQAZFEASNw2ReBKEAiOUmL+VB4HhfMTxFNEwPRD9YNVRbAG5ukAZRR4dkUA6DwDdm+hhWnKBaSuDmDqUNgta/Sjvh2C4BAiADAMtQRWey+gX7fVtlW20bXRtMVZs8D6WrLA21NC3VNgklVuftuQiwEAhzBSEOL9NBg2AEKQHQEBAAB4hQSANDOElQTmO0FpLoKsM1SwPQu4xgcA' $Zint_dll &= 'XE6APEPEbPNh4DPkFQXsM1DwJQX4PggAQENAo4ZQVGDnVSBlBSjefQCDQENDg1NYAERDRFtZwOQ/Ag41RWYcAGw0FHA0dK5AwGfnAIQ0EYg0jGY1BkpDahYDRazeUkBLg2shAsDOfgCF7Ftj3B4XQE6DTgPG7ssChj4BUENQgyBQw1ADUUPhygMcqI4IQGJkAyy+D0BTg4NSw+OSBUR+MsBUA3VRQ1Vj8xNgdi1guHNuQq9QhWv+I8QeBMBc8kDd8kDF7dMB5CY+wG5GAPQ1Vfg2VYxhSQIg9nKAYukDXzD+SIDjq+diw/8ffgA=' $Zint_dll = _WinAPI_Base64Decode($Zint_dll) If @error Then Return SetError(1, 0, 0) Local Const $bString = ASM_DecompressLZMAT($Zint_dll) If @error Then Return SetError(3, 0, 0) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\zint.dll", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Zint_dll Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode Func ASM_DecompressLZMAT($Data) Local Const $MEM_COMMIT = 4096, $PAGE_EXECUTE_READWRITE = 64, $MEM_RELEASE = 32768 If @AutoItX64 Then Local $Code = "Ow4AAIkDwEiD7DhBudFM6cLNi+EQ+zAICBZEJCDPGgGeB8HoJg0Ch0TEOMPG2x5myFDSX8xDwQbKZkl4RXDBOwjpzQmOTEFXTlaOVc5UfjuCU0iB7KiAOYucJBBjARGJjMPwhCOUwvgseoTxwxgxuv8DQbjOEgQMREcIqCvZ6CKUDSmLhDM8RmgQQ28KtDuy7sCooKgyIAKHiM8/zsf/n42PAd/5tZiDTw+2Bojzi6dxtxbGikhH/8gPCUjn0CWGfzQbxwSDQYExwN28V3EwD4bwA6Roi1jGqQxFMe3HDlTcHzN/Z4K9mQpwQwUvIfnClDhcQBMuZ4BfQAiyEVASEeqQF/qvI9c8VvIZiek0TOgwQSgp7pCgToP+ZgP8ii8FixA7UP8OwXCfxoRLBh7z6MG7fPsJgf0+RAUZvgJPD0fxgMsIweoJDIl0JCh0yimB4ssxugyT0DnOCQ+PTgEeGfFBYDnpimBUDtwKjTMTN7KukhBAkdR7PHwFaEG8ATakmglYjXX/L0BZeIifJUGfdrIXjCLrK0vsmYHjQ2hCM3ibDAKDOTG0KNqqA731ssm2oY0JS8/gTWPZYUfgFB9mv/CZdcds/vUBjMK6Dgt3AgxFhfZ0t0ldjCO9zkyJ3gChDjoIdUieSyDGiLJYMQn/6xREIbaD6gHdOs116q8Zr8GyH9lZhajlkuLnCSptqC7HI6qeVDBSKck5EvpyIgYogAgkKHYKjADqweIHOdFyEA1CjRTtSwexwQ+DOIdrifqBao5BTI16+1DKGRD91IcKQAdMKQO8kKDDYc0G/OkNQ2AQuX7+qw4iB0U59DkEe+aBqPwCuWL0gIB8kv+gpOcDmWIUECWZ6ARgMxcfSY1XdyaDwOkTGohPCWtsjRROxpOpfniQYTPXi3JAPSIw1rpivrk3kBw5Rf4EUCyTQkjKpBZQAQdOyU7wDArrBJlhDosI38TugeaIgMEM6QlmAx/Q/uGT9xwUvjosgYPFAUw5ykH1lLMinB51y76mhGtqKCRpbeOCOMXpe/2q1GAJUIUBsZXBgZ8r+OQsjAiEHoVUDdGJMu8rKFSD/dVExQ+zOMn+BVPmSORHDYXNiwEmEQQFEIzWEjn1DQMFGQnKIuaL9igT9gmE/hsPJMpHyiRSOgLB4QQIDqoPDb1Mm1M0VXrldPjGQpKELDu8osGDfgVINy+RJCDeaVR2nFBmiC5w+CTQ/pFARI1FAZr7owPViJ0wscamAcmqAAkxBoyDIgJSAM6HElnI7S5RxlwEQ2RUdZuyuiaD4k2yKig5RzJ6dAuIESuElluxawJGjTw44h+FPT7CxsQQW14OX11BXFsIx28pw7JtgmRMAkTA+j+YayEMrTEk5wESgQhdPpQ4Ag2IRI2HozXx6cERJEnJTQJDzAFPiU3KPJkR6v5B5QwxOiFEJD4CmkzITnQ1GgwZEZi7q1nSEJncxaSzNCisDO5BweV4gynND1CWOjON6ZmIKjI9Z5oIlwrWmmVJTLA/aCYzBp6BYKr8YZMYICrumZCJhjwmYIMvZj8WkYE1i1QqIsM4i48CmLfSQHhq/KDfBO2EgYDlRzxzgM2TJYP8FhMJxSOt4KuIrUiBZ4hqAWr+nQkzEOjHLweIDiJGAaYLDBKE0X5n+/M9UljdpYM4xkHT/yIIA3gEqhEpfKH1BcZGzQ+SGVTEcgGFBNYB0vEq6ff2zq2yIpgtEjSVBInFMAsHc4m6KfP/oDnwdW/xMhZJbsdkGeeSC1TFGcqrXb6SNWWFb9y3UIQW6b/8VPRuQPeFWETnt7eguHqJmZjk6SHVVXTPF9I0xIXmZMfJ+U23q1G7BYdF/jUtI7P9OGT2SCXEg+GCOApk+ywuCCe/lM77fQf9f0ON5S2CnKJiKxnnyWM6TV8/ClF+4krULFnN61ihCok4waBmnZwoBsdAAoKpOASaFAESUbIwHQLpudb9B29W/I2EhIaB+guikE0BF4SWMYhO+0CDUAQ6c1aj6oyyJn1RBev2I+sQADIyg+kBQDpyE/91DCRQC57EBzrJxOjgGekm" $Code &= "5/o1kEQsAf7ChQJKEWf+KPU06QsjULCtlHGUMyrwiJMbCggKTje0+TgXdGmQGXisYu9BxgKaIwr4HApKAQw/fMgSArJnA8oeSdHJqVNxagiueGUCImaKKhdshPB5iEkCHQnGQAMYF+nk0TdpgoAK8OuH/JE5agKytTp0np6Md2oBNUARWlgo5ukqCBEPM8DqFFEU4sX7H0lHQRVGyjMdg+gB5l6gi9M1J/HokAOWAfx2ZkGJJMMQiQIWuiDb/YIUHMFqySVhq4Q/EoD5Ib0MLCkZJjioUnA8/SgzlwEgZ+l9+kmBIKC0SwEvhHYkd/kuc1LVL4gDxlvdTLhpnpUVrlgn0tgHBqF6VvdwlLTPoJJ25AaLKogBuFfhaNsouwhkkD30gC3PKfdMOUUXg6RCPEWE5GmqAgGJ34M5dDgBRS4MLEkU5osYwO0ICfUwg8MkMfbrGC6J3jNUMPudSzS61JpAOsDuDkQJ1uWIN6HSnU1B2MYJ/ggfdJxF1O1noN92jOjoIHOIFu14FBrh3UCvPDk0dbGeRUnrwDOA0IQkEmvC5TiHZDxswO9VBGiYGv/Q1z2Uv0e3v8aGuFuA7/qDMecDPuoC3f/PO4A1wZASAyFgkAEpOdKgg1TWthyYWinmP54MgPQ1rpzBR+OdCEYCHEO1BcMDOcaC9fR5oBo8GGDxgnnegRnF2iZt6RmJwkbrjn4p8qoMCSAYRQ6cvNeaxiJiGCSvOZAFRYXbkA70MXZ1sTmh0KG2oM9Bt5W+SEs/+hTR6rtEiKKLuvOtooQEl+AwB6Sx8Mb1KK6aJBq4YaVSQDXA6wSRHIq227VjhUtlKx3UBa18GgWXOfkOr+nyMcp0ZSdGEbZc1CMS4wQlSgtC30Omp/KB+1oPKnRQ9EQShmkMl24oN7gEjZ+pwxjrLDDTqDNh1hKn5n9lRwVE6bcp2xQSMVB1sGCmVDoaAtoCuIKBAW5VeSOErdLKzbsNjZ8RTZmcApMQdecB3HP+FAg/JJ+NmvzUTHOjIt7TkJgYBb9/EUQhUO/8PnQEJDQ/sBD4jRJdaLEkJ5wDdiOD7unrB7ILGRdBcdoxdoGIBEeLFBAsbWhG0TzMfyziHYvp8ajvXg6NsmoEqsjRi+nXKl+X0QMJB/nqHkS5Qo10HoCvOfFyf6I9r6rpHxgxHDB1vqaa+0OlDh2qtDIng0TpiGhjPsVSGmVkO6kF9olT69UaI5FKwyILSDvNuBQ4vvLDsAuJAjMxwB+4vj8769/2oQfYYkoFt3Qw+wqswICLAfaIoUIRAx3rvNQQBxe1VwyMzwbQlQD+/POqX2DDAA==" Else Local $Code = "Uw8AAIkAwIPsLItEJDDoUHwId1R7EMwINBEM/+syDQgdOCcE50A//X+c6DUwAoPELDjCEH5k224cXHz02VkIIJERCCIsRAQooy+qChEcEFVXVgxTgeyMf4sZnCSwD8eyXwwEjgis/wOJbhxejA4/hPCgi7uU+qSFB4wjDrTyqCGDwAHpvFYRy3tMOwKNBwHfg8F8G3zp/wHkD7YGiAeL07i3FsbAJEv/wegJHQHQJdh/2QSD3GkUMepkfKxAAQ+GAwSpZKgJopmGNlgBGXNnX87CvKdAyhlgERQ/BSFLDS+AUe+FZ776CGRUchiKQCuUeLREZSuhkhhMYgPeLM6D+dWkMSD0dgEQCo1yHP87Sv8MhFcGHXTBPoHuP0RHk2Z8FIAIGcAK99AhxskBAsHpCYmCPByNBAGYyYs8A4M5/g+POvUythhOFzE5x1RMBkHVjSJIGHiiUSSSMDJcS88wGDgxIIPuZwGdcHXoJ+CT6yroy4tMyj34XEOEgTYKApo0YxzEyAMzr/ikwBwRidmZx6U4gMocPmY5y3VVyaYDyAEYurkOC3cM3znOhfattJnr4qyYkgH9kIxwRQk6AnWfBXRmQ4JS6xB3Ig4FAYPpbzrOAup11QHwhcmNcIwS6Tt6MNqyRY8Z80QGi2zSiEygo8UBKfkfOfVysdkYgDQpdm8LN8DB5Qc56SlyDwsQA3oxgztrgf5JiROfAqCHpQeSb1OEhVVv46a/hP4o6RNddwo1kf4OKRoi9CQ7Fol2BBkc+J19GSBmgOQ/miqE7vqBtAJQ3SjB4AYECAaJ9R2Il8Do+oh2RlC4QdChhy+kUtRsTETUglZmIijlbyAq3yKKuwfk/6bHNJhDwBgcdgW+N99ZisYB4pIYGxlVt6Q0wL7PgeeRgAHB7glmA6Qe5ImB5hiQLLM5iQzM339AORj0rEi7nYV1z0KrHDmEZmGhMh5CZlTGe9tEELDpgf2r5nu6kF0SD5XBRztE+PgBic52CISKIoUi3aB6kplpWOoQjSnH8OnKHUDzkks2L0pv2KdK8S8IJQQWgwY6OXwvPocY1uVI8KQi5vbKIEB1hA3UNxtlektd8InB4Q8rtQ4YwOkUTwGRTY+NfRJAACh0BMZF80mC8TlirQqD6gU5RD+ZOubHZhmIKmBCgbxJrIsigSwYyqgb9VfqqbCqDIM5iTTJSBqB4h4ajMSJ6eCMk5nBqx6Nh+KBE4AvFBaFsKTNVK3VRIPh4gGF0iMqfZVLk3I7iBEutHJiK4QZA3LCBQaBxIzMOFsJXl9dw5SLoHhBApHzpIQS5hWvHzU/JCI3gYgLVD8ULgIOyESEh+EDTu4JESJPzgJuXiZmBCBsxvGRMrUPHy8T/RAD2gnFAogNNyCyClZ0CYMy+BExoKu9PRDyhk3ZtxmNSO5tgyGkFU0xuIRdisuITZZpLKWSCNmHHunbLmuLAqYqJBqIgXwkEKazERsJRDnPmKuGNZInicZUE/tNi1wqRJofQMHtbFI6C41V/IZ81WmBwuJDOyWC/MkiysgJwppwwe62B4Pg1YjWpYhfRNViAZlRQRjiBIlCiBdrHt2RL0cBSAoMgkHuwlLXX2s3tNiOQJieSMZPQYHVBZ0OA/IIBC9qD4GkowDwjTzvAe2xOgJ0IIu8zNNI6ow0AzmDAgffNQaFKwsF6oVE8gmirmoQUh7d+vMXKCXhHBa/iatAki1YmsclIB6/E+ml/ElsfGpDBaL9FNFDTeKG6RkxrrMhNQFi7gROttRZrWpbq1iHVVP+MVCl/ZOaGBRxg+HwiExN7cUvCJAc6cL71d+rEwH2IEB/dpyaIPkJ1hPUCjRtWAiI29SYzs/F2+uZSdxACppmh4nGZjQQgzkEsMdAAtmeDAYlyPvUssIL6bv+mAkguEoKCRqDgVyB+QuLE3cPpxmEBQLN/GDy6JBpB7ZKBDpOPC7sSAENzzDRKLkFDIne6w08HGsKSo6ywv91B+iJhcDu7KnUMNHzOQfD6bj6VOtFAbsNCoXz2awNxHQBiA7p/KMhyCorVQ/DSZHU6dFS" $Code &= "/id8kUgoGcQx6d+KOQN0d42I71gbLXDqiaQjkCShGg8y0SwBdmp/IAxNAuyIAxEMjZ1rWqFq5KNJslERd1oWbQJAg8rwiFZAKkYDpA6gQ+m+0DV3jICU8LqooVCJssR4BJCC6UOvryGF5gG/funUP/0JA3VnuSrYwlk7kUyTCc7NZTuRQY/pjfmmZn0gdJowKggWDjLA6hRWhKlwjUclqiIz1Yh3mr816TY1iU36JAPdLd+EZAqzN5cUEPdH9UCZavcmEkP+bTBBCK9U0y2OyBEwBArp7/grkhiJkXCOQLEbRwGbJIJYoJJfEukL+jQ/zCX1IYgGYvT4RXnKmbLed054IOL8uUuTuCXnyU5ilktxoulxgIVVMe1XVr6hUVNskdyszpdIJyPGOOVSiG1pIYbi6yAG0ynROc7MVRS9jx6E21zTO1DWMd0xPhQyLB9UTYjeJPIdMURi0Bf3o+sqwFwnRTMl598XV8HjArXaiBHrRp5N62KZAwh0kNBkGWyJ6UbRRnnpe/EnhnmJS+Acg3HxM7I4FBd4GTXJgIvBhNIpdaZaY+uwS3YcS9KPjYaQLwySxhsUU9mpCbcMMSMxCctzEks9Mly+xH37cTEg2OuYNHP595luKIJo7gwaA8gSnmQBCnPv44nZLFY/nKHzHIjkTgfqgPLOrNVAr5mElhwKIeOpH/vyILUvgcMDOcFwo/TEF40UD9dmgsiNtD4LhgrIgcKDCusBKcrLagESEE+YKO3Rx/uywkNwazfLYRk7QfEQdmjNFjGJEEOga1EAFtt14YvSEyAa6cH+wpPL0euIlaSbvNO61pOm+vWAldmB4f9BB9nBbGdwr6+KhVGBoa+qHkTr26S1KYVLlz/gHY1UMwFKORTcDsSCL1p0gGx0dotUhCQcMsZtpKV3JnvTZSWB+6KvdGeE9BJGhgyVvLgJuASef6p+mI/pgqq1sZ8cCIjBFhTp0v2U99kWQMt/kWCyOIiDoOmbQll20GeGdZlTVCilAoSAobMBjPXP/Ir6OrfRwiViCcEiIZJYdA7SZioLVNR4txuNmhFZIKYCWxBUzhNp1TE/TQsKTDP8dR3hopA4XAUzgRSD4n+O9BEEhxwSf4nQEdU8qF+VJHQw2Ql2LBl9621xUcdEaoNTDVAbxgSj0Z49Fw6LKlL8xkZcC4kpdeUBgOme/FneaKTJKBJUgrBBBAqshOmg/ZknRdMQzx/UFFTVA4MkoEEdRn5FgYwyJwY4j0TpxJeA8aADdEgrY6fF2h6zJKgaDmVUcEoTTBGNFowTQYEw6Tmmi8XkMWVaJl8MLH8xxG/ry4yDt4CBw5E2CenFJCy4jUBF5CjfRDSJAx32vBi4Ajvr4e/ahQfamHtUBzH7geLAiyANDBLpsaFCAxHrvN0QQQe1V71NEoXJF0hFiQxpxhcDsuYJCPfHA5BaCqpSSQoAdfaJysHpAh7886sW0V23xqpfwwA=" EndIf Local $Opcode = String(ASM_LZMAT_CodeDecompress($Code)) Local Const $_LZMAT_Compress = (StringInStr($Opcode, "89C0") + 1) / 2 Local Const $_LZMAT_Decompress = (StringInStr($Opcode, "89DB") + 1) / 2 $Opcode = Binary($Opcode) Local $_LZMAT_CodeBufferMemory = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", BinaryLen($Opcode), "dword", $MEM_COMMIT, "dword", $PAGE_EXECUTE_READWRITE) $_LZMAT_CodeBufferMemory = $_LZMAT_CodeBufferMemory[0] Local Const $_LZMAT_CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $_LZMAT_CodeBufferMemory) DllStructSetData($_LZMAT_CodeBuffer, 1, $Opcode) Local Const $OutputLen = Int(BinaryMid($Data, 1, 4)) $Data = BinaryMid($Data, 5) Local Const $InputLen = BinaryLen($Data) Local Const $Input = DllStructCreate("byte[" & $InputLen & "]") DllStructSetData($Input, 1, $Data) Local Const $Output = DllStructCreate("byte[" & $OutputLen & "]") Local Const $Ret = DllCallAddress("uint", DllStructGetPtr($_LZMAT_CodeBuffer) + $_LZMAT_Decompress, "struct*", $Input, "uint", $InputLen, "struct*", $Output, "uint*", $OutputLen) DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $_LZMAT_CodeBufferMemory, "ulong_ptr", 0, "dword", $MEM_RELEASE) Return BinaryMid(DllStructGetData($Output, 1), 1, $Ret[4]) EndFunc ;==>ASM_DecompressLZMAT Func ASM_LZMAT_CodeDecompress($Code) Local Const $MEM_COMMIT = 4096, $PAGE_EXECUTE_READWRITE = 64, $MEM_RELEASE = 32768 If @AutoItX64 Then Local $Opcode = "0x89C04150535657524889CE4889D7FCB28031DBA4B302E87500000073F631C9E86C000000731D31C0E8630000007324B302FFC1B010E85600000010C073F77544AAEBD3E85600000029D97510E84B000000EB2CACD1E8745711C9EB1D91FFC8C1E008ACE8340000003D007D0000730A80FC05730783F87F7704FFC1FFC141904489C0B301564889FE4829C6F3A45EEB8600D275078A1648FFC610D2C331C9FFC1E8EBFFFFFF11C9E8E4FFFFFF72F2C35A4829D7975F5E5B4158C389D24883EC08C70100000000C64104004883C408C389F64156415541544D89CC555756534C89C34883EC20410FB64104418800418B3183FE010F84AB00000073434863D24D89C54889CE488D3C114839FE0F84A50100000FB62E4883C601E8C601000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D3C1E20241885500EB7383FE020F841C01000031C083FE03740F4883C4205B5E5F5D415C415D415EC34863D24D89C54889CE488D3C114839FE0F84CA0000000FB62E4883C601E86401000083ED2B4080FD5077E2480FBEED0FB6042884C078D683E03F410845004983C501E964FFFFFF4863D24D89C54889CE488D3C114839FE0F84E00000000FB62E4883C601E81D01000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D389D04D8D7501C1E20483E03041885501C1F804410845004839FE747B0FB62E4883C601E8DD00000083ED2B4080FD5077E6480FBEED0FB6042884C00FBED078D789D0C1E2064D8D6E0183E03C41885601C1F8024108064839FE0F8536FFFFFF41C7042403000000410FB6450041884424044489E84883C42029D85B5E5F5D415C415D415EC34863D24889CE4D89C6488D3C114839FE758541C7042402000000410FB60641884424044489F04883C42029D85B5E5F5D415C415D415EC341C7042401000000410FB6450041884424044489E829D8E998FEFFFF41C7042400000000410FB6450041884424044489E829D8E97CFEFFFF56574889CF4889D64C89C1FCF3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3" Else Local $Opcode = "0x89C0608B7424248B7C2428FCB28031DBA4B302E86D00000073F631C9E864000000731C31C0E85B0000007323B30241B010E84F00000010C073F7753FAAEBD4E84D00000029D97510E842000000EB28ACD1E8744D11C9EB1C9148C1E008ACE82C0000003D007D0000730A80FC05730683F87F770241419589E8B3015689FE29C6F3A45EEB8E00D275058A164610D2C331C941E8EEFFFFFF11C9E8E7FFFFFF72F2C32B7C2428897C241C61C389D28B442404C70000000000C6400400C2100089F65557565383EC1C8B6C243C8B5424388B5C24308B7424340FB6450488028B550083FA010F84A1000000733F8B5424388D34338954240C39F30F848B0100000FB63B83C301E8CD0100008D57D580FA5077E50FBED20FB6041084C00FBED078D78B44240CC1E2028810EB6B83FA020F841201000031C083FA03740A83C41C5B5E5F5DC210008B4C24388D3433894C240C39F30F84CD0000000FB63B83C301E8740100008D57D580FA5077E50FBED20FB6041084C078DA8B54240C83E03F080283C2018954240CE96CFFFFFF8B4424388D34338944240C39F30F84D00000000FB63B83C301E82E0100008D57D580FA5077E50FBED20FB6141084D20FBEC278D78B4C240C89C283E230C1FA04C1E004081189CF83C70188410139F374750FB60383C3018844240CE8EC0000000FB654240C83EA2B80FA5077E00FBED20FB6141084D20FBEC278D289C283E23CC1FA02C1E006081739F38D57018954240C8847010F8533FFFFFFC74500030000008B4C240C0FB60188450489C82B44243883C41C5B5E5F5DC210008D34338B7C243839F3758BC74500020000000FB60788450489F82B44243883C41C5B5E5F5DC210008B54240CC74500010000000FB60288450489D02B442438E9B1FEFFFFC7450000000000EB9956578B7C240C8B7424108B4C241485C9742FFC83F9087227F7C7010000007402A449F7C702000000740566A583E90289CAC1E902F3A589D183E103F3A4EB02F3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3" EndIf Local Const $AP_Decompress = (StringInStr($Opcode, "89C0") - 3) / 2 Local Const $B64D_Init = (StringInStr($Opcode, "89D2") - 3) / 2 Local Const $B64D_DecodeData = (StringInStr($Opcode, "89F6") - 3) / 2 $Opcode = Binary($Opcode) Local $CodeBufferMemory = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", BinaryLen($Opcode), "dword", $MEM_COMMIT, "dword", $PAGE_EXECUTE_READWRITE) $CodeBufferMemory = $CodeBufferMemory[0] Local Const $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $CodeBufferMemory) DllStructSetData($CodeBuffer, 1, $Opcode) Local Const $B64D_State = DllStructCreate("byte[16]") Local Const $Length = StringLen($Code) Local Const $Output = DllStructCreate("byte[" & $Length & "]") DllCallAddress("none", DllStructGetPtr($CodeBuffer) + $B64D_Init, "struct*", $B64D_State, "int", 0, "int", 0, "int", 0) DllCallAddress("int", DllStructGetPtr($CodeBuffer) + $B64D_DecodeData, "str", $Code, "uint", $Length, "struct*", $Output, "struct*", $B64D_State) Local Const $ResultLen = DllStructGetData(DllStructCreate("uint", DllStructGetPtr($Output)), 1) Local $Result = DllStructCreate("byte[" & ($ResultLen + 16) & "]"), $Ret If @AutoItX64 Then $Ret = DllCallAddress("uint", DllStructGetPtr($CodeBuffer) + $AP_Decompress, "ptr", DllStructGetPtr($Output) + 4, "struct*", $Result, "int", 0, "int", 0) Else $Ret = DllCall("user32.dll", "uint", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer) + $AP_Decompress, "ptr", DllStructGetPtr($Output) + 4, "ptr", DllStructGetPtr($Result), "int", 0, "int", 0) EndIf DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $CodeBufferMemory, "ulong_ptr", 0, "dword", $MEM_RELEASE) Return BinaryMid(DllStructGetData($Result, 1), 1, $Ret[0]) EndFunc ;==>ASM_LZMAT_CodeDecompress Example1.au3 #AutoIt3Wrapper_UseX64=n #include <GDIPlus.au3> #include "Zint.au3" Global Const $sTestFile = "out.gif" ;default output name If FileExists($sTestFile) Then FileDelete($sTestFile) Global $pZB = ZBarcode_Create() If @error Then Exit MsgBox(16, "ERROR", "An error occured!" & @CRLF & "Error code = " & @error, 10) Global $t_zint_symbol = DllStructCreate($tag_zint_symbol, $pZB) $t_zint_symbol.symbology = $BARCODE_CODE128 $t_zint_symbol.scale = 2 $t_zint_symbol.option_1 = -1 ;$t_zint_symbol.show_hrt = 1 ZBarcode_Encode_and_Print($pZB, "12345678") ZBarcode_Delete($pZB) If FileExists($sTestFile) Then ShellExecute($sTestFile) Else MsgBox(16, "Error", "Code was not create", 5) EndIf Example2.au3 #AutoIt3Wrapper_UseX64=n #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include "Zint.au3" Global Const $sTestFile = @ScriptDir & "\Barcode.png" Global $pZB = ZBarcode_Create() If @error Then Exit MsgBox(16, "ERROR", "An error occured!" & @CRLF & "Error code = " & @error, 10) Global $t_zint_symbol = DllStructCreate($tag_zint_symbol, $pZB) $t_zint_symbol.symbology = $BARCODE_QRCODE $t_zint_symbol.scale = 10 ZBarcode_Encode_and_Buffer($pZB, "Hello QR World ;-)") _GDIPlus_Startup() Global $stride = BitAND(($t_zint_symbol.bitmap_width * 3) + 3, BitNOT(3)) Global $iMemSize = $stride * $t_zint_symbol.bitmap_height Global $tPixel = DllStructCreate("ubyte rgb[" & $iMemSize & "];") Global $hBitmap = _GDIPlus_BitmapCreateFromScan0($t_zint_symbol.bitmap_width, $t_zint_symbol.bitmap_height, $GDIP_PXF24RGB, $stride, $tPixel) DllCall("msvcrt.dll", "ptr:cdecl", "memcpy", "struct*", $tPixel, "ptr", $t_zint_symbol.bitmap, "uint", $iMemSize) Global Const $hGUI = GUICreate("Test QR Code", $t_zint_symbol.bitmap_width, $t_zint_symbol.bitmap_height) GUISetState(@SW_SHOW) Global Const $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap, 0, 0, $t_zint_symbol.bitmap_width, $t_zint_symbol.bitmap_height) _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_ImageDispose($hBitmap) _GDIPlus_Shutdown() ZBarcode_Delete($pZB) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Example3.au3 #AutoIt3Wrapper_UseX64=n #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include "Zint.au3" Global $pZB = ZBarcode_Create() If @error Then Exit MsgBox(16, "ERROR", "An error occured!" & @CRLF & "Error code = " & @error, 10) Global $t_zint_symbol = DllStructCreate($tag_zint_symbol, $pZB), $sText = "12340984576 ;-)" With $t_zint_symbol .symbology = $BARCODE_CODE128 .scale = 1 EndWith If Not ZBarcode_Encode_and_Buffer_Vector($pZB, $sText) Then Exit MsgBox(16, "ERROR", "Unable to encode!" & @CRLF & "Error code = " & @error, 10) Global $tVector = DllStructCreate($tag_zint_vector, $t_zint_symbol.vector) Global $tVector_Rect = DllStructCreate($tag_zint_vector_rect, $tVector.rectangles) _GDIPlus_Startup() Global $hBitmap = _GDIPlus_BitmapCreateFromScan0($tVector.width, $tVector.heigth, $GDIP_PXF24RGB), $hCanvas = _GDIPlus_ImageGetGraphicsContext($hBitmap), $hBrush = _GDIPlus_BrushCreateSolid() _GDIPlus_GraphicsClear($hCanvas, 0xFFFFFFFF) While $tVector_Rect.next _GDIPlus_BrushSetSolidColor($hBrush, BitAND($tVector_Rect.colour, 0xFF000000)) _GDIPlus_GraphicsFillRect($hCanvas, $tVector_Rect.x, $tVector_Rect.y, $tVector_Rect.width, $tVector_Rect.height, $hBrush) $tVector_Rect = DllStructCreate($tag_zint_vector_rect, $tVector_Rect.next) WEnd Global $tVector_String = DllStructCreate($tag_zint_vector_string, $tVector.strings) _GDIPlus_GraphicsDrawString($hCanvas, $sText, ($tVector_String.width - $tVector_String.length * $tVector_String.fsize * 0.55) / 2, $tVector.heigth - $tVector_String.fsize * 1.33333, "Arial", $tVector_String.fsize * 0.75, 0, 0xFF000000) Global Const $hGUI = GUICreate("Test Bar Code 128", $tVector.width, $tVector.heigth) GUISetState(@SW_SHOW) Global Const $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap, 0, 0, $tVector.width, $tVector.heigth) _GDIPlus_GraphicsDispose($hCanvas) _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_ImageDispose($hBitmap) _GDIPlus_BrushDispose($hBrush) _GDIPlus_Shutdown() ZBarcode_Delete($pZB) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Please test and reply.
-
mesale0077 asked me whether I could code some CSS loading animations from different web sites. These are the results using GDI+ (AutoIt v3.3.12.0+ required!): _GDIPlus_MonochromaticBlinker.au3 / _GDIPlus_RotatingBokeh.au3 _GDIPlus_SpinningCandy.au3 / _GDIPlus_SteamPunkLoading.au3 _GDIPlus_IncreasingBalls.au3 / _GDIPlus_PacmanProgressbar.au3 _GDIPlus_StripProgressbar.au3 / _GDIPlus_RingProgressbar.au3 _GDIPlus_LineProgressbar.au3 / _GDIPlus_SimpleLoadingAnim.au3 _GDIPlus_TextFillingWithWater.au3 / _GDIPlus_MultiColorLoader.au3 _GDIPlus_LoadingSpinner.au3 / _GDIPlus_SpinningAndPulsing.au3 _GDIPlus_TogglingSphere.au3 / _GDIPlus_CloudySpiral.au3 _GDIPlus_GlowingText.au3 (thanks to Eukalyptus) / _GDIPlus_HypnoticLoader.au3 _GDIPlus_RotatingRectangles.au3 / _GDIPlus_TRONSpinner.au3 _GDIPlus_RotatingBars.au3 / _GDIPlus_AnotherText.au3 (thanks to Eukalyptus) _GDIPlus_CogWheels.au3 (thanks to Eukalyptus) / _GDIPlus_DrawingText.au3 (thanks to Eukalyptus) _GDIPlus_GearsAnim.au3 / _GDIPlus_LEDAnim.au3 _GDIPlus_LoadingTextAnim.au3 / _GDIPlus_MovingRectangles.au3 _GDIPlus_SpinningAndGlowing.au3 (thanks to Eukalyptus) / _GDIPlus_YetAnotherLoadingAnim.au3 _GDIPlus_AnimatedTypeLoader.au3 / _GDIPlus_Carousel.au3 Each animation function has a built-in example how it can be used. AiO download: GDI+ Animated Wait Loading Screens.7z (previous downloads: 1757) Big thanks to Eukalyptus for providing several examples. Maybe useful for some of you Br, UEZ PS: I don't understand CSS - everything is made out of my mind, so it might be different from original CSS examples
-
Here a small tool to watermark any image supported by GDI+. This version is the enhanced version from AutoIt Windows Screenshooter. Screenshot: Download: AutoIt Watermark Image v0.89 beta build 2014-08-25.7z (942 download previously) Source code is too long to publish here -> PASTEBIN You are not allowed to sell this code or use it or just parts of it in a commercial project or modify it and distribute it with a different name! Some fonts may no be displayed properly because it is not GDI+ compatible! Appreciate any feedback (bugs, feature request, criticisms, etc.). @JScript: I created this on your request Coded and tested on Win7 x64 with Aero and AutoIt v3.3.12.0. Command line parameters Credits: Authenticity (GDIP.au3), funkey (_GetFontInfoFromFilePtr()), Yashied (WinAPIEx.au3) and Melba23 (NoFocusLines.au3) Thanks to (alph. order): davidkim, funkey, JScript and Myicq for active supporting this little project! Br, UEZ History
- 76 replies
-
If i get a graphics from a call _GDIPlus_GraphicsCreateFromHDC How do i convert this graphics to a bitmap? What the function below return, isn't a bitmap? Func _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics) Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipCreateBitmapFromGraphics", "int", $iWidth, "int", $iHeight, "handle", $hGraphics, _ "handle*", 0) If @error Then Return SetError(@error, @extended, 0) If $aResult[0] Then Return SetError(10, $aResult[0], 0) Return $aResult[4] EndFunc ;==>_GDIPlus_BitmapCreateFromGraphics Theres an example in the docs: But the variable name is $g_hBitmap? hBitmap? Trying to understand how to use the function to get a bitmap from a graphics and save it to disk.
-
I was searching for a way to highlight zones (regions, provinces, counties, etc) on a map, and I don't need super precise maps so I wrote this script, based on picking up black and white maps (2 colors BW .png or .gif tested) and filling them with colors, writing down a sqlite database to associate zones with names (and other data as well), and reuse the map and the DB to display data, in my example reading a simple .txt file. It's all based on this thread and this other thread. So I have two modes: The Map "creation mode" : you provide a map image and you start to pick up colors, set "upper level" region/state, and by clicking on a region you fill it and you name it, and all the data are saved on a sqlite DB (auto-created) when you have the map image and a DB with the correct associations, you can switch the "mode" to "show" (as by .ini file) and the script tries to read a "datafile" showing the zone names listed in datafile. The code: #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=Icone\mapFlooder.ico #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;MAP Flooder ;(C) NSC 2021 #include <GUIConstants.au3> #include <_GOLLOG.au3> #include <SQLite.au3> #include <SQLite.dll.au3> #include <Misc.au3> #include <GDIPlus.au3> Opt("mousecoordmode", 2) Global $prgname = "MAP Flooder", $ver = "V.0.7", $Buttoncolor = "0xFF00FF", $MPini = @ScriptDir & "\MapFlooder.ini", $btest Global $dbfullpath, $dbtable, $dbFields, $mapfile, $FloodMode, $datafile Global $HDC, $hBrush, $hGraphics, $obj_orig Global $Pic1, $gui, $width, $height, $bColor, $realtimeCoords, $lastclickcoords, $inputSup, $zonecountNum,$labeltest #Region program Gollog(">>>>>> Start MAP Flooder " & $ver) ctrlini() Gui() SQLiteDBcreate() If $FloodMode = "createdb" Then Gollog("CreateDB Mode") DBFlooder() Else Gollog("Show MAP mode") MapShow("show") EndIf Close() #EndRegion program #Region funcS Func Gui() _GDIPlus_Startup() $Pic1 = _GDIPlus_BitmapCreateFromFile($mapfile) $width = _GDIPlus_ImageGetWidth($Pic1) $height = _GDIPlus_ImageGetHeight($Pic1) If $FloodMode = "createdb" Then $gui = GUICreate($prgname & " " & $ver, $width + 150, $height) $labelLoadedMap = GUICtrlCreateLabel("Loaded Map", $width + 10, 5) $labelLoadedMap2 = GUICtrlCreateLabel(_FileToFileName($mapfile), $width + 10, 25) $labeldim = GUICtrlCreateLabel("Width*Height", $width + 10, 45) $labeldim2 = GUICtrlCreateLabel($width & " * " & $height, $width + 10, 65) $lastclickcoordslabel = GUICtrlCreateLabel("Last Click Coords", $width + 10, 100) $lastclickcoords = GUICtrlCreateLabel("xx - xx", $width + 10, 120, 180, 20) $realtimeCoordslabel = GUICtrlCreateLabel("Real Time Coords", $width + 10, 140) $realtimeCoords = GUICtrlCreateLabel("Real Time Coords", $width + 10, 160, 80, 20) $SuPzonelabel = GUICtrlCreateLabel("Supzone (region-state)", $width + 10, 200) $inputSup = GUICtrlCreateInput("sup", $width + 10, 220, 80, 20) $bColor = GUICtrlCreateButton($Buttoncolor, $width + 10, 250, 130, 30) GUICtrlSetBkColor($bColor, $Buttoncolor) $zonecountlabel = GUICtrlCreateLabel("Done Zone Count:", $width + 10, 320, 100, 20) $zonecountNum = GUICtrlCreateLabel("x", $width + 10, 340, 100, 20) $btest = GUICtrlCreateButton("TEST MAP", $width + 10, 380, 130, 30) $labeltest = GUICtrlCreateLabel("", $width + 10, 420, 130, 30) Else $gui = GUICreate($prgname & " " & $ver, $width, $height) EndIf GUISetState() $HDC = _WinAPI_GetDC($gui) $hGraphics = _GDIPlus_GraphicsCreateFromHDC($HDC) _GDIPlus_GraphicsDrawImageRect($hGraphics, $Pic1, 0, 0, $width, $height) EndFunc ;==>Gui Func MapShow($showmode) ; reading a simple text file with zone names, searching for names in DB and fill the map using stored coordinates If $showmode = "show" Then Local $aLines = FileReadToArray($datafile) Local $iLineCount = @extended EndIf If $showmode = "test" Then $iLineCount = 1 If @error Then MsgBox(48, "MapFlooder", "There was an error reading the data file. @error: " & @error) ; Gollog("There was an error reading the data file. @error: " & @error) Close() Else Gollog("start filling zones") _SQLite_Startup() _SQLite_Open($dbfullpath) ; open Database with zone definitions Local $hQuery, $aRow For $i = 0 To $iLineCount - 1 If $showmode = "show" Then _SQLite_Query(-1, "SELECT * FROM " & $dbtable & " where zone = '" & $aLines[$i] & "' ORDER BY zone ASC;", $hQuery) ; the query EndIf If $showmode = "test" Then _SQLite_Query(-1, "SELECT * FROM " & $dbtable & " ORDER BY zone ASC;", $hQuery) ; the query EndIf While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK $hBrush = DllCall("gdi32.dll", "long", "CreateSolidBrush", "int", $aRow[2]) ; fill color read from DB $obj_orig = DllCall("gdi32.dll", "int", "SelectObject", "int", $HDC, "int", $hBrush[0]) DllCall("gdi32.dll", "int", "FloodFill", "int", $HDC, "int", $aRow[3], "int", $aRow[4], "int", 0x000000) If $showmode = "test" Then GUICtrlSetData($labeltest,$aRow[0]) Sleep(200) GUISetState() EndIf WEnd _SQLite_QueryFinalize($hQuery) Next _SQLite_Close() _SQLite_Shutdown() EndIf While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd EndFunc ;==>MapShow Func DBFlooder() $zonecount = 0 While 1 $mp = MouseGetPos() GUICtrlSetData($realtimeCoords, $mp[0] & " - " & $mp[1]) $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $bColor Then colorP() If $msg = $btest Then MapShow("Test") If $mp[0] < $width And $mp[1] < $height And _IsPressed("01") And WinActive($gui) Then $mp = MouseGetPos() GUICtrlSetData($lastclickcoords, $mp[0] & " - " & $mp[1]) $hBrush = DllCall("gdi32.dll", "long", "CreateSolidBrush", "int", $Buttoncolor) ; fill color ok $obj_orig = DllCall("gdi32.dll", "int", "SelectObject", "int", $HDC, "int", $hBrush[0]) DllCall("gdi32.dll", "int", "FloodFill", "int", $HDC, "int", $mp[0], "int", $mp[1], "int", 0x000000) Local $Zone = InputBox("Map Floode", "Zone ?") If $Zone = "" Or @error = 1 Then ; when manage wrong click, possibility to repeat ; set 'temp' color to highlight the 'wrong' click $hBrush = DllCall("gdi32.dll", "long", "CreateSolidBrush", "int", 0x4ccfc6) ; fill color wrong $obj_orig = DllCall("gdi32.dll", "int", "SelectObject", "int", $HDC, "int", $hBrush[0]) DllCall("gdi32.dll", "int", "FloodFill", "int", $HDC, "int", $mp[0], "int", $mp[1], "int", 0x000000) ; restore color $hBrush = DllCall("gdi32.dll", "long", "CreateSolidBrush", "int", $Buttoncolor) ; fill color ok $obj_orig = DllCall("gdi32.dll", "int", "SelectObject", "int", $HDC, "int", $hBrush[0]) Else _SQLite_Startup() _SQLite_Open($dbfullpath) ; open Database Local $SupZone = GUICtrlRead($inputSup) Local $data = '"' & $Zone & '","' & $SupZone & '","' & $Buttoncolor & '",' & $mp[0] & "," & $mp[1] _SQLite_Exec(-1, "INSERT INTO " & $dbtable & "(" & $dbFields & ") VALUES (" & $data & ");") If @error = -1 Then GOLLOG("Error insert record") MsgBox(48, "Error", "insert record") EndIf $zonecount += 1 GUICtrlSetData($zonecountNum, $zonecount) _SQLite_Close() _SQLite_Shutdown() EndIf EndIf WEnd EndFunc ;==>DBFlooder Func Close() Gollog("<<<<<<< closing...") _WinAPI_ReleaseDC($gui, $HDC) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Exit EndFunc ;==>Close Func SQLiteDBcreate() ;complete path e filename If Not FileExists($dbfullpath) Then GOLLOG("perform SQLite DB creation") Local $dbfolder = _FileToFilePath($dbfullpath) ;Local $dbfile = _FileToFileName($dbfullpath) If Not FileExists($dbfolder) Then DirCreate($dbfolder) ; =====================>>>>> START SQL DLL _SQLite_Startup() _SQLite_Open($dbfullpath) ; open Database ; creating first table If _SQLite_Exec(-1, "CREATE TABLE " & $dbtable & " (" & $dbFields & ");") = $SQLITE_OK Then GOLLOG("DB table - " & $dbtable & " - creation ok") Else GOLLOG("Error creating DB table : " & @error) EndIf _SQLite_Close() _SQLite_Shutdown() Else Gollog("DB already exist") EndIf EndFunc ;==>SQLiteDBcreate ; #FUNCTION# ==================================================================================================================== ; Name ..........: _FileToFilePath ; Description ...: Returns a folder path from a FQPN (Fully Qualified Path Name) ; Syntax ........: _FileToFilePath($sPath) ; Parameters ....: $sPath - a string value. ; Return values .: Success - String ; Failure - Empty string as returned from StringLeft() ; Author ........: Sam Coates ; =============================================================================================================================== Func _FileToFilePath($sPath) Local $sReturn = StringLeft($sPath, StringInStr($sPath, "\", 0, -1) - 1) Return ($sReturn) EndFunc ;==>_FileToFilePath ; #FUNCTION# ==================================================================================================================== ; Name ..........: _FileToFileName ; Description ...: Returns a filename from a FQPN (Fully Qualified Path Name) ; Syntax ........: _FileToFileName($sPath[, $bIncludeExtension = True]) ; Parameters ....: $sPath - a string value. ; $bIncludeExtension - [optional] a boolean value. Default is True. ; Return values .: Success - String ; Failure - Empty string as returned from StringLeft() ; Author ........: Sam Coates ; =============================================================================================================================== Func _FileToFileName($sPath, $bIncludeExtension = True) Local $sReturn = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1)) If $bIncludeExtension = False Then $sReturn = StringLeft($sReturn, StringInStr($sReturn, ".", 0, -1) - 1) Return ($sReturn) EndFunc ;==>_FileToFileName Func colorP() ; modified for BGR color GOLLOG("Color Picker") Local $color = _ChooseColor(2) If $color = -1 Then GOLLOG("no color selected") Else Local $sCr = Hex($color, 6) Local $RGB_Buttoncolor = '0x' & StringMid($sCr, 1, 2) & StringMid($sCr, 3, 2) & StringMid($sCr, 5, 2) GUICtrlSetBkColor($bColor, $RGB_Buttoncolor) ; BGR color $Buttoncolor = '0x' & StringMid($sCr, 5, 2) & StringMid($sCr, 3, 2) & StringMid($sCr, 1, 2) GUICtrlSetData($bColor, $Buttoncolor) GOLLOG("new color " & $Buttoncolor & " selected") EndIf EndFunc ;==>colorP Func ctrlini() ;ini read If FileExists($MPini) Then GOLLOG("found: " & $MPini) $mapfile = IniRead($MPini, "map", "mapfile", "") $datafile = IniRead($MPini, "map", "datafile", "") $dbfullpath = IniRead($MPini, "db", "dbfullpath", "") $dbtable = IniRead($MPini, "db", "dbtable", "") $dbFields = IniRead($MPini, "db", "dbfields", "") $FloodMode = IniRead($MPini, "mode", "mode", "") Else GOLLOG($MPini & " NOT found..") Close() EndIf EndFunc ;==>ctrlini #EndRegion funcS All the needed files plus some example (image maps and DBs) Link to all demo files To test, copy all in a single folder and adjust the mapflooder.ini, also you can add to you includes the _gollog.au3 (used for log, you can avoid it deleting all Gollog() lines)
-
Hello. I've been recently experimenting with _WinAPI_SetWinEventHook and _WinAPI_RegisterShellHookWindow functions and this little script is the result of the experiment. It allows you to change window opening animations (still working on that), menu popup animations and some window behaviors (including wobbly effect while moving). Screenshots: Download: AutoItFX.zip
- 5 replies
-
- gdi+
- wobbly windows
-
(and 1 more)
Tagged with:
-
This is an update or derivative work of Beege 's Scrolling Line Graph UDF https://www.autoitscript.com/forum/topic/109599-scrolling-line-graph-udf I noticed a few issues for my use case with the UDF one being that adding a sample required updating the waveform High CPU usage went hand in hand with that requirement Another issue was just how long updating took to complete I've hopefully rectified that with this version There are a few changes (only 1 line per graph for instance) The addition of a function AddSample (uses graphics paths to speed up drawing samples on update) Gridlines are only generated once A sample finished line can be added UpdateGraph allows you to compress the discarded portion of the graph (it looks kinda cool but uses more CPU) Lower Cpu usage Uses real Control Ids - it is a label control underneath so you get click events and can display text when control is disabled Example (Waveform.au3) Example 2 (peak.au3) UDF Updated: Previous Downloads [38 / 38/ 0] SSLG.au3 waveform.au3 Peak.au3
-
I was inspired by a CSS example to create a procedural graphic without any shader or ray tracing technique. Here the result using GDI+ only: Blue Orb.au3 ;Inspired from https://codepen.io/bradleytaunt/details/VwvzKyb ;Coded by UEZ build 2020-05-07 #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> If @OSBuild < 7600 Then Exit MsgBox(BitOR($MB_TOPMOST, $MB_ICONERROR), "ERROR", "This demo requires GDIPlus v1.1", 10) _GDIPlus_Startup() Global Const $iW = 1200, $iH = 700, $iSize_globe = 450 Global Const $hGUI = GUICreate("GDI+ Procedural Gfx / Blue Orb v1.20 by UEZ", $iW, $iH, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) Global Const $hCanvas = _GDIPlus_GraphicsCreateFromHWND($hGUI) Global Const $hImage = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Global Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hImage) _GDIPlus_GraphicsSetSmoothingMode($hGfx, $GDIP_SMOOTHINGMODE_ANTIALIAS8X8) ;~ _GDIPlus_GraphicsSetCompositingQuality($hGfx, $GDIP_COMPOSITINGQUALITYHIGHQUALITY) _GDIPlus_GraphicsSetInterpolationMode($hGfx, $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC) _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, $GDIP_PIXELOFFSETMODE_HALF) ;draw background Global Const $hBrush_bg = _GDIPlus_LineBrushCreate($iW / 2, 0, $iW / 2, $iH / 2, 0xFF1E88E5, 0xFF1565C0, 2) _GDIPlus_LineBrushSetSigmaBlend ($hBrush_bg, 0.95, 1) ;create blurry edge _GDIPlus_GraphicsFillRect($hGfx, 0, 0, $iW, $iH, $hBrush_bg) ;draw blurred text Global Const $hImage_text = _GDIPlus_BitmapCreateFromScan0($iW, $iH / 2) Global Const $hGfx_text = _GDIPlus_ImageGetGraphicsContext($hImage_text) Global Const $hPath_text = _GDIPlus_PathCreate() Global Const $hFamily = _GDIPlus_FontFamilyCreate("Impact") Global Const $hStringFormat = _GDIPlus_StringFormatCreate() Global Const $hBrush_txt = _GDIPlus_LineBrushCreate($iW / 2, 0, $iW / 2, $iH / 2, 0xE0FFFFFF, 0xA01A237E) ;_GDIPlus_BrushCreateSolid(0xF02E86FB) _GDIPlus_LineBrushSetSigmaBlend($hBrush_txt, 0.66, 1) Global Const $hPen_txt = _GDIPlus_PenCreate(0x801A237E, 1) _GDIPlus_StringFormatSetAlign($hStringFormat, 1) _GDIPlus_StringFormatSetLineAlign($hStringFormat, 1) _GDIPlus_GraphicsSetSmoothingMode($hGfx_text, $GDIP_SMOOTHINGMODE_ANTIALIAS8X8) _GDIPlus_GraphicsSetTextRenderingHint($hGfx_text, $GDIP_TextRenderingHintAntialias) _GDIPlus_GraphicsSetPixelOffsetMode($hGfx_text, $GDIP_PIXELOFFSETMODE_HALF) _GDIPlus_GraphicsSetCompositingQuality($hGfx_text, $GDIP_COMPOSITINGQUALITYHIGHQUALITY) Global $tLayout = _GDIPlus_RectFCreate() $tLayout.width = $iW $tLayout.height = $iH / 2 $tLayout.y = -$iH * 0.05 _GDIPlus_PathAddString($hPath_text, "AutoIt rulez!", $tLayout, $hFamily, 0, $iW / 8, $hStringFormat) _GDIPlus_GraphicsFillPath($hGfx_text, $hPath_text, $hBrush_txt) _GDIPlus_GraphicsDrawPath($hGfx_text, $hPath_text, $hPen_txt) Global Const $hEffect_blur_text = _GDIPlus_EffectCreateBlur(20) _GDIPlus_BitmapApplyEffect($hImage_text, $hEffect_blur_text) _GDIPlus_GraphicsDrawImageRect($hGfx, $hImage_text, 0, 0, $iW, $iH / 2) ;draw shadow of the text Global Const $hBrush_txt_shadow = _GDIPlus_BrushCreateSolid(0x40000000) _GDIPlus_GraphicsClear($hGfx_text, 0) _GDIPlus_PathReset($hPath_text) $tLayout.width = $iW $tLayout.height = $iH / 2 $tLayout.y = 0 _GDIPlus_PathAddString($hPath_text, "AutoIt rulez!", $tLayout, $hFamily, 0, $iW / 8, $hStringFormat) _GDIPlus_GraphicsFillPath($hGfx_text, $hPath_text, $hBrush_txt_shadow) Global Const $hEffect_blur_text_shadow = _GDIPlus_EffectCreateBlur(60) _GDIPlus_BitmapApplyEffect($hImage_text, $hEffect_blur_text_shadow) _GDIPlus_GraphicsDrawImageRect($hGfx, $hImage_text, 0, $iH * 0.55, $iW, $iH / 8) ;draw shadow Global Const $iW_shadow1 = $iSize_globe * 0.85, $iH_shadow1 = $iSize_globe * 0.1, $iW_shadow2 = $iSize_globe * 0.60, _ $iW_shadow_Img = $iW_shadow1 * 2, $iH_shadowImg = $iH_shadow1 * 4 Global Const $hImage_shadow = _GDIPlus_BitmapCreateFromScan0($iW_shadow_Img, $iH_shadowImg) Global Const $hGfx_shadow = _GDIPlus_ImageGetGraphicsContext($hImage_shadow) _GDIPlus_GraphicsSetSmoothingMode($hGfx_shadow, $GDIP_SMOOTHINGMODE_ANTIALIAS8X8) Global Const $hBrush_shadow = _GDIPlus_BrushCreateSolid(0x66000000) _GDIPlus_GraphicsFillEllipse($hGfx_shadow, ($iW_shadow_Img - $iW_shadow1) / 2, ($iH_shadowImg / 4 + $iH_shadow1), $iW_shadow1, $iH_shadow1, $hBrush_shadow) _GDIPlus_BrushSetSolidColor($hBrush_shadow, 0xB3000000) _GDIPlus_GraphicsFillEllipse($hGfx_shadow, ($iW_shadow_Img - $iW_shadow2) / 2, ($iH_shadowImg / 4 + $iH_shadow1), $iW_shadow2, $iH_shadow1, $hBrush_shadow) Global Const $hEffect_blur_shadow = _GDIPlus_EffectCreateBlur(32) _GDIPlus_BitmapApplyEffect($hImage_shadow, $hEffect_blur_shadow) _GDIPlus_GraphicsDrawImageRect($hGfx, $hImage_shadow, ($iW - $iW_shadow_Img) / 2, $iH / 2 + $iH_shadow1 * 2.20, $iW_shadow_Img, $iH_shadowImg) ;draw globe Global Const $hPath_globe = _GDIPlus_PathCreate() _GDIPlus_PathAddEllipse($hPath_globe, ($iW - $iSize_globe) / 2, ($iH - $iSize_globe) / 2, $iSize_globe, $iSize_globe) Global Const $hLBrush_globe1 = _GDIPlus_LineBrushCreate($iW / 2, ($iH - $iSize_globe) / 2, $iW / 2, ($iH + $iSize_globe) / 2, 0, 0, 1) Global $aInterpolations[5][2] $aInterpolations[0][0] = 4 $aInterpolations[1][0] = 0xFFFFFFFF $aInterpolations[1][1] = 0 $aInterpolations[2][0] = 0xFFEEEEEE $aInterpolations[2][1] = 0.10 $aInterpolations[3][0] = 0xFF2E86FB $aInterpolations[3][1] = 0.50 $aInterpolations[4][0] = 0xFF1A237E $aInterpolations[4][1] = 1.0 _GDIPlus_LineBrushSetPresetBlend($hLBrush_globe1, $aInterpolations) _GDIPlus_GraphicsFillPath($hGfx, $hPath_globe, $hLBrush_globe1) Global Const $iSize_globe2 = $iSize_globe * 0.85, $iSize_globe2_Img = $iSize_globe2 * 1.5 Global Const $hImage_globe2 = _GDIPlus_BitmapCreateFromScan0($iSize_globe2_Img, $iSize_globe2_Img) Global Const $hGfx_globe2 = _GDIPlus_ImageGetGraphicsContext($hImage_globe2) Global Const $hBrush_globe2 = _GDIPlus_BrushCreateSolid(0x7F000000) ;draw shadow and blur it Global Const $px = ($iSize_globe2_Img - $iSize_globe2) / 2, $py = ($iSize_globe2_Img - $iSize_globe2) / 2 _GDIPlus_GraphicsFillEllipse($hGfx_globe2, $px, $py + ($iSize_globe - $iSize_globe2) * 0.25, $iSize_globe2, $iSize_globe2, $hBrush_globe2) Global Const $hEffect_blur_shadow2 = _GDIPlus_EffectCreateBlur(15) _GDIPlus_BitmapApplyEffect($hImage_globe2, $hEffect_blur_shadow2) ;draw 2nd smaller globe and blur it, too Global Const $hLBrush_globe2 = _GDIPlus_LineBrushCreate($iW / 2, $py, $iW / 2, $py + $iSize_globe2, 0, 0) Dim $aInterpolations[4][2] $aInterpolations[0][0] = 3 $aInterpolations[1][0] = 0xFFFFFFFF $aInterpolations[1][1] = 0 $aInterpolations[2][0] = 0xFF2E86FB $aInterpolations[2][1] = 0.60 $aInterpolations[3][0] = 0xFF283593 $aInterpolations[3][1] = 1.0 _GDIPlus_LineBrushSetPresetBlend($hLBrush_globe2, $aInterpolations) _GDIPlus_GraphicsFillEllipse($hGfx_globe2, $px, $py, $iSize_globe2, $iSize_globe2, $hLBrush_globe2) Global Const $hImage_globe2_blur = _Blur($hImage_globe2, $iSize_globe, $iSize_globe) ;windows gdi+ blur doesn't work properly _GDIPlus_GraphicsDrawImageRect($hGfx, $hImage_globe2_blur, ($iW - $iSize_globe2_Img) / 2 - ($iSize_globe - $iSize_globe2) / 8, ($iH - $iSize_globe2_Img) / 2, $iSize_globe2_Img, $iSize_globe2_Img) GUISetState() _GDIPlus_GraphicsDrawImageRect($hCanvas, $hImage, 0, 0, $iW, $iH) ;~ _GDIPlus_ImageSaveToFile($hImage, @ScriptDir & "\Blue Orb v1.20.png") ;clean-up ressources _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hStringFormat) _GDIPlus_EffectDispose($hEffect_blur_text) _GDIPlus_EffectDispose($hEffect_blur_text_shadow) _GDIPlus_EffectDispose($hEffect_blur_shadow) _GDIPlus_EffectDispose($hEffect_blur_shadow2) _GDIPlus_PathDispose($hPath_text) _GDIPlus_PathDispose($hPath_globe) _GDIPlus_PenDispose($hPen_txt) _GDIPlus_BrushDispose($hBrush_txt) _GDIPlus_BrushDispose($hBrush_txt_shadow) _GDIPlus_BrushDispose($hBrush_bg) _GDIPlus_BrushDispose($hLBrush_globe1) _GDIPlus_BrushDispose($hLBrush_globe2) _GDIPlus_BrushDispose($hBrush_globe2) _GDIPlus_ImageDispose($hImage) _GDIPlus_ImageDispose($hImage_text) _GDIPlus_ImageDispose($hImage_shadow) _GDIPlus_ImageDispose($hImage_globe2) _GDIPlus_ImageDispose($hImage_globe2_blur) _GDIPlus_GraphicsDispose($hCanvas) _GDIPlus_GraphicsDispose($hGfx_text) _GDIPlus_GraphicsDispose($hGfx_shadow) _GDIPlus_GraphicsDispose($hGfx_globe2) _GDIPlus_Shutdown() Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete($hGUI) Exit Func _Blur($hBitmap, $iW, $iH, $fScale = 0.0525, $dx1 = 0, $dy1 = 0, $dx2 = 0, $dy2 = 0, $qual = 6) ; by eukalyptus Local $hBmpSmall = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local $hGfxSmall = _GDIPlus_ImageGetGraphicsContext($hBmpSmall) _GDIPlus_GraphicsSetPixelOffsetMode($hGfxSmall, $GDIP_PIXELOFFSETMODE_HALF) Local $hBmpBig = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local $hGfxBig = _GDIPlus_ImageGetGraphicsContext($hBmpBig) _GDIPlus_GraphicsSetPixelOffsetMode($hGfxBig, $GDIP_PIXELOFFSETMODE_HALF) _GDIPlus_GraphicsScaleTransform($hGfxSmall, $fScale, $fScale) _GDIPlus_GraphicsSetInterpolationMode($hGfxSmall, $qual) _GDIPlus_GraphicsScaleTransform($hGfxBig, 1 / $fScale, 1 / $fScale) _GDIPlus_GraphicsSetInterpolationMode($hGfxBig, $qual) _GDIPlus_GraphicsDrawImageRect($hGfxSmall, $hBitmap, 0, $dx1, $iW, $iH + $dy1) _GDIPlus_GraphicsDrawImageRect($hGfxBig, $hBmpSmall, 0, $dx2, $iW, $iH + $dy2) _GDIPlus_BitmapDispose($hBmpSmall) _GDIPlus_GraphicsDispose($hGfxSmall) _GDIPlus_GraphicsDispose($hGfxBig) Return $hBmpBig EndFunc ;==>_Blur I hope you like it. Feel free to post your examples here, too.
-
Here a little script to load a TGA image file and create a GDI+ bitmap. Currently supported TGA formats are 1/8/15/16/24 and 32-bit. As v0.85 is written completely in AutoIt, it might take some time to convert larger 8/15/16/24/32-bit images. ☕ _GDIPlus_TGAImageLoadFromFile.au3 UDF v0.85 without assembler acceleration code but with RLE support: ;Coded by UEZ #AutoIt3Wrapper_UseX64=n #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WinAPIFiles.au3> ; #FUNCTION# ==================================================================================================================== ; Name ..........: _GDIPlus_TGAImageLoadFromFile ; Description ...: Loads a TGA compressed (RLE) / uncompressed image file (1/8/15/16/24/32-bit) and converts it to a GDI+ bitmap format. ; Syntax ........: _GDIPlus_TGAImageLoadFromFile($sFile[, $bPrintInfo = False.]) ; Parameters ....: $sFile - TGA file name to load from disk. ; $bPrintInfo - [optional] Prints some information about the TGA image to console. Default is False. ; Return values .: Success: GDI+ bitmap handle ; Failure: error 1 - file cannot be opened ; error 2 - TGA image is not in one of these formats: 1/8/15/16/24/32-bit ; error 3 - unsupported TGA image type ; error 4 - unable to read file to struct ; error 5 - unknown TGA pixel depth ; error 6 - return bitmap cannot be created ; Version .......: v0.85 build 2019-11-08 beta ; Author ........: UEZ ; Remarks .......: 8/15/16/24/32-bit images might be slow on converting ^^ ; Related .......: _GDIPlus_BitmapCreateFromScan0, _GDIPlus_ImageRotateFlip, DllStructCreate, _WinAPI_CreateFile, _WinAPI_SetFilePointer ; Link ..........: https://www.loc.gov/preservation/digital/formats/fdd/fdd000180.shtml, http://www.fileformat.info/format/tga/egff.htm ; Example .......: Yes ; =============================================================================================================================== Func _GDIPlus_TGAImageLoadFromFile($sFile, $bPrintInfo = False) Local Const $hFile = _WinAPI_CreateFile($sFile, 2, 2) If Not $hFile Then Return SetError(1, 0, 0) Local Const $tagTGAHeader = "align 1;byte idLength;byte colormapType;byte imageType;word firstEntryIndex;word colormapLength;byte colormapEntrySize;word xOrigin;word yOrigin;word width;word height;byte pixelDepth;byte imageDescriptor" Local Const $tagTGAFooter = "dword extAreaOffset;dword devDirOffset;byte imageID[18]" Local Const $tagTGAExtention = "align 1;word extSize;byte authorName[41];byte authorComments[324];word timeM;word timeD;word timeY;word timeHr;word timeMin;word timeSec;byte jobName[41];word jobTimeHr;word jobTimeMin;word jobTimeSec;byte swID[41];word swVersionNr;byte swVersionLetter;long keyColor;word pxAspectRatioNum;word pxAspectRatioDom;word gammaNum;word gammaDom;dword colCorrOffset;dword postStampOffset;dword scanLineOffset;byte attribType" Local Const $tTGAHeader = DllStructCreate($tagTGAHeader) Local $tTGAFooter = DllStructCreate($tagTGAFooter) Local Const $tTGAExtention = DllStructCreate($tagTGAExtention) Local $dwBytesRead, $tTGAImageID, $tagTGAImageID, $iColorValuesStartPos = 0 _WinAPI_ReadFile($hFile, $tTGAHeader, DllStructGetSize($tTGAHeader), $dwBytesRead) $iColorValuesStartPos += $dwBytesRead If $tTGAHeader.idLength > 0 Then $tagTGAImageID = "byte imageID[" & $tTGAHeader.idLength & "]" $tTGAImageID = DllStructCreate($tagTGAImageID) _WinAPI_ReadFile($hFile, $tTGAImageID, $tTGAHeader.idLength, $dwBytesRead) $iColorValuesStartPos += $dwBytesRead EndIf Local Const $iPxDepth = $tTGAHeader.pixelDepth If Not BitOR($iPxDepth = 32, $iPxDepth = 24, $iPxDepth = 16, $iPxDepth = 15, $iPxDepth = 8, $iPxDepth = 1) Then _WinAPI_CloseHandle($hFile) Return SetError(2, 0, 0) EndIf #cs ImageType Image Data Type Colormap Encoding 0 No image data included in file No No 1 Colormapped image data Yes No 2 Truecolor image data No No 3 Monochrome image data No No 9 Colormapped image data Yes Yes 10 Truecolor image data No Yes 11 Monochrome image data No Yes #ce If Not BitOR($tTGAHeader.imageType = 0x01, $tTGAHeader.imageType = 0x02, $tTGAHeader.imageType = 0x03, $tTGAHeader.imageType = 0x09, $tTGAHeader.imageType = 0x0A, $tTGAHeader.imageType = 0x0B) Then _WinAPI_CloseHandle($hFile) Return SetError(3, 0, 0) EndIf Local $iW = $tTGAHeader.width, $iH = $tTGAHeader.height, $colorwidth = $tTGAHeader.colormapEntrySize / 8, _ $colorTblSize = $tTGAHeader.colormapLength * $colorwidth Local $dwBufferSize = FileGetSize($sFile) Local $tSrcBmp = DllStructCreate("ubyte color[" & $dwBufferSize & "]") _WinAPI_ReadFile($hFile, $tSrcBmp, $dwBufferSize, $dwBytesRead) _WinAPI_SetFilePointer($hFile, -26, $FILE_END) _WinAPI_ReadFile($hFile, $tTGAFooter, 26, $dwBytesRead) Local $sFooter = StringTrimRight(BinaryToString($tTGAFooter.imageID), 1), $iOffset = 0, $iOffset2, $iOffset3 If Not StringCompare($sFooter, "TRUEVISION-XFILE.") Then ;read extension information to struct if available $iOffset = $tTGAFooter.extAreaOffset _WinAPI_SetFilePointer($hFile, $iOffset, $FILE_BEGIN) _WinAPI_ReadFile($hFile, $tTGAExtention, 0x01EF, $dwBytesRead) Else $tTGAFooter.extAreaOffset = 0 EndIf _WinAPI_CloseHandle($hFile) If $dwBytesRead = 0 Then Return SetError(4, _WinAPI_GetLastError(), 0) Local $bRLE = BitOR($tTGAHeader.imageType = 0x09, $tTGAHeader.imageType = 0x0A, $tTGAHeader.imageType = 0x0B) If $bPrintInfo Then ConsoleWrite("idLength: " & $tTGAHeader.idLength & @CRLF) ConsoleWrite("colormapType: " & $tTGAHeader.colormapType & @CRLF) ConsoleWrite("imageType: " & $tTGAHeader.imageType & @CRLF) ConsoleWrite("firstEntryIndex: " & $tTGAHeader.firstEntryIndex & @CRLF) ConsoleWrite("colormapLength: " & $tTGAHeader.colormapLength & @CRLF) ConsoleWrite("colormapEntrySize: " & $tTGAHeader.colormapEntrySize & @CRLF) ConsoleWrite("xOrigin: " & $tTGAHeader.xOrigin & @CRLF) ConsoleWrite("yOrigin: " & $tTGAHeader.yOrigin & @CRLF) ConsoleWrite("width: " & $tTGAHeader.width & @CRLF) ConsoleWrite("height: " & $tTGAHeader.height & @CRLF) ConsoleWrite("pixelDepth: " & $iPxDepth & @CRLF) ConsoleWrite("imageDescriptor: " & $tTGAHeader.imageDescriptor & @CRLF) If $tTGAHeader.idLength > 0 Then ConsoleWrite("ImageID: " & RemoveNullChars($tTGAImageID.imageID) & @CRLF) If $iOffset Then ConsoleWrite("authorName: " & RemoveNullChars($tTGAExtention.authorName) & @CRLF) ConsoleWrite("authorComments: " & RemoveNullChars($tTGAExtention.authorComments) & @CRLF) ConsoleWrite("jobName: " & RemoveNullChars($tTGAExtention.jobName) & @CRLF) ConsoleWrite("swID: " & RemoveNullChars($tTGAExtention.swID) & @CRLF) EndIf ConsoleWrite("RLE packed: " & $bRLE & @CRLF) EndIf Local Static $tDestBmp ;must be static otherwise bitmap data might get corrupted or in worst case script will crash Local $stride, $iPixelFormat Switch $iPxDepth Case 1 ;1-bit $iPixelFormat = $GDIP_PXF01INDEXED $stride = BitAND(($iW * 1) + 1, BitNOT(1)) $tDestBmp = DllStructCreate("uint color[" & $stride * $iH & "];") Case 8, 24 $iPixelFormat = $GDIP_PXF24RGB $stride = BitAND(($iW * 3) + 3, BitNOT(3)) $tDestBmp = DllStructCreate("ubyte color[" & $stride * $iH & "];") Case 15, 16 $iPixelFormat = $GDIP_PXF16RGB555 $stride = BitAND(($iW * 2) + 2, BitNOT(2)) $tDestBmp = DllStructCreate("ubyte color[" & $stride * $iH & "];") Case 32 $iPixelFormat = $GDIP_PXF32ARGB $stride = $iW * 4 $tDestBmp = DllStructCreate("ubyte color[" & $stride * $iH & "];") Case Else Return SetError(5, 0, 0) EndSwitch If Mod($stride, 4) <> 0 Then $stride += 4 - Mod($stride, 4) Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH, $iPixelFormat, $stride, $tDestBmp) If @error Or Not $hBitmap Then Return SetError(6, @error, 0) Local $c, $q, $x, $y, $t1, $t2, $t3, $t4, $col, $red, $green, $blue, $alpha, $iLen, $iStart, $iEnd, $iLength, $iWW Local Const $hDLL = DllOpen("msvcrt.dll") Switch $iPxDepth Case 1 ;1-bit For $y = 0 To $iH - 1 $t1 = $y * $stride DllCall($hDLL, "ptr:cdecl", "memcpy", "ptr", DllStructGetPtr($tDestBmp) + $t1, "ptr", DllStructGetPtr($tSrcBmp) + BitShift($t1, 3), "uint", $stride) Next Case 8 ;8-bit ;if a color table is available, just use it If $tTGAHeader.colormapType = 1 Then Local $tMapColorTbl = DllStructCreate("ubyte bgr[" & $colorTblSize & "]", DllStructGetPtr($tSrcBmp, "color") + $tTGAHeader.firstEntryIndex) Switch $bRLE Case 0 For $y = 0 To ($iH - 1) $iOffset = $y * $iW + $colorTblSize $iOffset2 = $y * $stride For $x = 0 To ($iW - 1) $t1 = $iOffset2 + $x * 3 $t2 = $tSrcBmp.color($iOffset + $x + 1) * $colorwidth Switch $colorwidth Case 3, 4 $tDestBmp.color($t1 + 1) = $tMapColorTbl.bgr($t2 + 1) $tDestBmp.color($t1 + 2) = $tMapColorTbl.bgr($t2 + 2) $tDestBmp.color($t1 + 3) = $tMapColorTbl.bgr($t2 + 3) Case 2 ;convert from RGB555 to RGB $col = BitOR(BitShift($tMapColorTbl.bgr($t2 + 2), -8), $tMapColorTbl.bgr($t2 + 1)) ;RGB555 $tDestBmp.color($t1 + 1) = BitShift(BitAND($col, 0x001F), -3) ;B $tDestBmp.color($t1 + 2) = BitShift(BitShift(BitAND($col, 0x03E0), 5), -3) ;G $tDestBmp.color($t1 + 3) = BitShift(BitShift(BitAND($col, 0x7C00), 10), -3) ;R EndSwitch Next Next Case Else ;RLE encoded TGA images $c = 0 $x = 0 $y = 0 $iOffset = $colorTblSize + 1 $iStart = Int($iColorValuesStartPos + $colorTblSize) $iEnd = $tTGAFooter.extAreaOffset > 0 ? $tTGAFooter.extAreaOffset : $dwBufferSize $iLength = $iEnd - $iStart - 1 $iWW = $iW - 1 $t3 = $colorwidth = 2 ? 2 : 3 While $c <= $iLength $iOffset2 = Int($tSrcBmp.color($iOffset + $c)) $iLen = BitAND($iOffset2, 0x7F) + 1 If BitAND($iOffset2, 0x80) Then ; check for packet format ;run length packet format $c += 1 $iOffset3 = Int($tSrcBmp.color($iOffset + $c)) * $t3 $t2 = $y * $stride For $q = 1 To $iLen $t1 = $t2 + $x * 3 Switch $colorwidth Case 3, 4 $tDestBmp.color($t1 + 1) = $tMapColorTbl.bgr($iOffset3 + 1) $tDestBmp.color($t1 + 2) = $tMapColorTbl.bgr($iOffset3 + 2) $tDestBmp.color($t1 + 3) = $tMapColorTbl.bgr($iOffset3 + 3) Case 2 ;convert from RGB555 to RGB $col = BitOR(BitShift($tMapColorTbl.bgr($iOffset3 + 2), -8), $tMapColorTbl.bgr($iOffset3 + 1)) ;RGB555 $tDestBmp.color($t1 + 1) = BitShift(BitAND($col, 0x001F), -3) ;B $tDestBmp.color($t1 + 2) = BitShift(BitShift(BitAND($col, 0x03E0), 5), -3) ;G $tDestBmp.color($t1 + 3) = BitShift(BitShift(BitAND($col, 0x7C00), 10), -3) ;R EndSwitch $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf Next $c += 1 Else ;raw packet format $c += 1 $t2 = $y * $stride For $q = 1 To $iLen $iOffset3 = Int($tSrcBmp.color($iOffset + $c)) * $t3 $t1 = $t2 + $x * 3 Switch $colorwidth Case 3, 4 $tDestBmp.color($t1 + 1) = $tMapColorTbl.bgr($iOffset3 + 1) $tDestBmp.color($t1 + 2) = $tMapColorTbl.bgr($iOffset3 + 2) $tDestBmp.color($t1 + 3) = $tMapColorTbl.bgr($iOffset3 + 3) Case 2 ;convert from RGB555 to RGB $col = BitOR(BitShift($tMapColorTbl.bgr($iOffset3 + 2), -8), $tMapColorTbl.bgr($iOffset3 + 1)) ;RGB555 $tDestBmp.color($t1 + 1) = BitShift(BitAND($col, 0x001F), -3) ;B $tDestBmp.color($t1 + 2) = BitShift(BitShift(BitAND($col, 0x03E0), 5), -3) ;G $tDestBmp.color($t1 + 3) = BitShift(BitShift(BitAND($col, 0x7C00), 10), -3) ;R EndSwitch $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf $c += 1 Next EndIf WEnd EndSwitch Else ;convert it to grayscale Switch $bRLE Case 0 For $y = 0 To $iH - 1 $iOffset = $y * $iW + $colorTblSize $iOffset2 = $y * $stride For $x = 0 To $iW - 1 $t1 = $iOffset + $x - 2 $t2 = $iOffset2 + $x * 3 $blue = $tSrcBmp.color($t1 + 1) $green = $tSrcBmp.color($t1 + 2) $red = $tSrcBmp.color($t1 + 3) $col = $red $col = $col < 0 ? 0 : $col > 255 ? 255 : $col $tDestBmp.color($t2 + 1) = $col $tDestBmp.color($t2 + 2) = $col $tDestBmp.color($t2 + 3) = $col Next Next Case Else $c = 0 $x = 0 $y = 0 $iOffset = $colorTblSize + 1 $iStart = Int($iColorValuesStartPos + $colorTblSize) $iEnd = $tTGAFooter.extAreaOffset > 0 ? $tTGAFooter.extAreaOffset : $dwBufferSize $iLength = $iEnd - $iStart - 1 $iWW = $iW - 1 While $c <= $iLength $iOffset2 = Int($tSrcBmp.color($iOffset + $c)) $iLen = BitAND($iOffset2, 0x7F) + 1 If BitAND($iOffset2, 0x80) Then ; check for packet format ;run length packet format $c += 1 $iOffset3 = Int($tSrcBmp.color($iOffset + $c)) * 3 $blue = $iOffset3 $green = $iOffset3 + 1 $red = $iOffset3 + 2 $col = ($red + $green + $blue) / 9 $col = $col < 0 ? 0 : $col > 255 ? 255 : $col $t2 = $y * $stride For $q = 1 To $iLen $t1 = $t2 + $x * 3 $tDestBmp.color($t1 + 1) = $col $tDestBmp.color($t1 + 2) = $col $tDestBmp.color($t1 + 3) = $col $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf Next $c += 1 Else ;raw packet format $c += 1 $t2 = $y * $stride For $q = 1 To $iLen $iOffset3 = Int($tSrcBmp.color($iOffset + $c)) * 3 $blue = $iOffset3 $green = $iOffset3 + 1 $red = $iOffset3 + 2 $col = ($red + $green + $blue) / 9 $col = $col < 0 ? 0 : $col > 255 ? 255 : $col $t1 = $t2 + $x * 3 $tDestBmp.color($t1 + 1) = $col $tDestBmp.color($t1 + 2) = $col $tDestBmp.color($t1 + 3) = $col $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf $c += 1 Next EndIf WEnd EndSwitch EndIf Case 15, 16, 24, 32 ;15/16/24/32-bit, as the bitmap format is the same we can use memcpy to copy the pixel data directly to the memory. ;Exeptions are 15/16/24-bit images whose width is not a divider of 4! If BitOR($iPxDepth = 15, $iPxDepth = 16, $iPxDepth = 24) Then If BitOR(Mod($iW, 4), $bRLE) Then Switch $iPxDepth Case 15, 16 Switch $bRLE Case 0 $t4 = $iW * 2 For $y = 0 To ($iH - 1) $iOffset = $y * $t4 $iOffset2 = $y * $stride For $x = 0 To ($iW - 1) $t3 = $x * 2 $t1 = $iOffset + $t3 $t2 = $iOffset2 + $t3 ;RGB555 $tDestBmp.color($t2 + 1) = $tSrcBmp.color($t1 + $colorTblSize + 1) $tDestBmp.color($t2 + 2) = $tSrcBmp.color($t1 + $colorTblSize + 2) Next Next Case Else $c = 0 $x = 0 $y = 0 $iStart = Int($iColorValuesStartPos + $colorTblSize) $iEnd = $tTGAFooter.extAreaOffset > 0 ? $tTGAFooter.extAreaOffset : $dwBufferSize $iLength = $iEnd - $iStart - 1 $iWW = $iW - 1 While $c <= $iLength $iOffset2 = Int($tSrcBmp.color($colorTblSize + $c + 1)) $iLen = BitAND($iOffset2, 0x7F) + 1 If BitAND($iOffset2, 0x80) Then ; check for packet format ;run length packet format $c += 1 $t3 = $y * $stride For $q = 1 To $iLen $t1 = $t3 + $x * 2 $t2 = $colorTblSize + $c $tDestBmp.color($t1 + 1) = $tSrcBmp.color($t2 + 1) $tDestBmp.color($t1 + 2) = $tSrcBmp.color($t2 + 2) $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t3 = $y * $stride EndIf Next $c += 2 Else ;raw packet format $c += 1 $t3 = $y * $stride For $q = 1 To $iLen $t1 = $t3 + $x * 2 $t2 = $colorTblSize + $c $tDestBmp.color($t1 + 1) = $tSrcBmp.color($t2 + 1) $tDestBmp.color($t1 + 2) = $tSrcBmp.color($t2 + 2) $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t3 = $y * $stride EndIf $c += 2 Next EndIf WEnd EndSwitch Case 24 Switch $bRLE Case 0 $t4 = $iW * 3 For $y = 0 To $iH - 1 $iOffset = $y * $t4 $iOffset2 = $y * $stride For $x = 0 To ($iW - 1) $t3 = $x * 3 $t1 = $iOffset + $t3 $blue = $tSrcBmp.color($t1 + 1) $green = $tSrcBmp.color($t1 + 2) $red = $tSrcBmp.color($t1 + 3) $t2 = $iOffset2 + $t3 $tDestBmp.color($t2 + 1) = $blue $tDestBmp.color($t2 + 2) = $green $tDestBmp.color($t2 + 3) = $red Next Next Case Else $c = 0 $x = 0 $y = 0 $iStart = Int($iColorValuesStartPos + $colorTblSize) $iEnd = $tTGAFooter.extAreaOffset > 0 ? $tTGAFooter.extAreaOffset : $dwBufferSize $iLength = $iEnd - $iStart - 1 $iWW = $iW - 1 While $c <= $iLength $iOffset2 = Int($tSrcBmp.color($c + 1)) $iLen = BitAND($iOffset2, 0x7F) + 1 If BitAND($iOffset2, 0x80) Then ; check for packet format ;run length packet format $c += 1 $blue = $tSrcBmp.color($c + 1) $green = $tSrcBmp.color($c + 2) $red = $tSrcBmp.color($c + 3) $t2 = $y * $stride For $q = 1 To $iLen $t1 = $t2 + $x * 3 $tDestBmp.color($t1 + 1) = $blue $tDestBmp.color($t1 + 2) = $green $tDestBmp.color($t1 + 3) = $red $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf Next $c += 3 Else ;raw packet format $c += 1 $t2 = $y * $stride For $q = 1 To $iLen $blue = $tSrcBmp.color($c + 1) $green = $tSrcBmp.color($c + 2) $red = $tSrcBmp.color($c + 3) $t1 = $t2 + $x * 3 $tDestBmp.color($t1 + 1) = $blue $tDestBmp.color($t1 + 2) = $green $tDestBmp.color($t1 + 3) = $red $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf $c += 3 Next EndIf WEnd EndSwitch EndSwitch Else For $y = 0 To $iH - 1 $t1 = $y * $stride DllCall($hDLL, "ptr:cdecl", "memcpy", "ptr", DllStructGetPtr($tDestBmp) + $t1, "ptr", DllStructGetPtr($tSrcBmp) + $t1, "uint", $stride) Next EndIf Else Switch $bRLE Case 0 For $y = 0 To $iH - 1 $t1 = $y * $stride DllCall($hDLL, "ptr:cdecl", "memcpy", "ptr", DllStructGetPtr($tDestBmp) + $t1, "ptr", DllStructGetPtr($tSrcBmp) + $t1, "uint", $stride) Next Case Else $c = 0 $x = 0 $y = 0 $iStart = Int($iColorValuesStartPos + $colorTblSize) $iEnd = $tTGAFooter.extAreaOffset > 0 ? $tTGAFooter.extAreaOffset : $dwBufferSize $iLength = $iEnd - $iStart - 1 $iWW = $iW - 1 While $c <= $iLength $iOffset2 = Int($tSrcBmp.color($c + 1)) $iLen = BitAND($iOffset2, 0x7F) + 1 If BitAND($iOffset2, 0x80) Then ; check for packet format ;run length packet format $c += 1 $blue = $tSrcBmp.color($c + 1) $green = $tSrcBmp.color($c + 2) $red = $tSrcBmp.color($c + 3) $alpha = $tSrcBmp.color($c + 4) $t2 = $y * $stride For $q = 1 To $iLen $t1 = $t2 + $x * 4 $tDestBmp.color($t1 + 1) = $blue $tDestBmp.color($t1 + 2) = $green $tDestBmp.color($t1 + 3) = $red $tDestBmp.color($t1 + 4) = $alpha $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf Next $c += 4 Else ;raw packet format $c += 1 $t2 = $y * $stride For $q = 1 To $iLen $blue = $tSrcBmp.color($c + 1) $green = $tSrcBmp.color($c + 2) $red = $tSrcBmp.color($c + 3) $alpha = $tSrcBmp.color($c + 4) $t1 = $t2 + $x * 4 $tDestBmp.color($t1 + 1) = $blue $tDestBmp.color($t1 + 2) = $green $tDestBmp.color($t1 + 3) = $red $tDestBmp.color($t1 + 4) = $alpha $x += 1 If $x > $iWW Then $x = 0 $y += 1 $t2 = $y * $stride EndIf $c += 4 Next EndIf WEnd EndSwitch EndIf EndSwitch DllClose($hDLL) ;TGA image is stored bottom up in file. Need to flip it. If BitAND($tTGAHeader.imageDescriptor, 0x30) <> 0x20 Then _GDIPlus_ImageRotateFlip($hBitmap, $GDIP_Rotate180FlipX) $tSrcBmp = 0 Return $hBitmap EndFunc ;==>_GDIPlus_TGAImageLoadFromFile ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: RemoveNullChars ; Description ...: Converts a null terminated binary string to a string ; Author ........: UEZ ; =============================================================================================================================== Func RemoveNullChars($bin) Local $a = StringRegExp($bin, "[[:xdigit:]+]{2}", 3), $s, $i If @error Then Return $s For $i = 0 To UBound($a) - 1 If $a[$i] = "00" Then ExitLoop $s &= Chr(Dec($a[$i])) Next Return $s EndFunc ;==>RemoveNullChars ;------------- Example ------------- Global $sFile = FileOpenDialog("Select a TGA file", "", "TGA image(*.tga)") If @error Then Exit _GDIPlus_Startup() Global $endtime, $timer = TimerInit() Global $hImage = _GDIPlus_TGAImageLoadFromFile($sFile, True) If @error Then ConsoleWrite(@error & " / " & @extended & @CRLF) _GDIPlus_Shutdown() Exit EndIf $endtime = TimerDiff($timer) ;~ _GDIPlus_ImageSaveToFile($hImage, @ScriptDir & "\Converted.png") ;~ ShellExecute(@ScriptDir & "\Converted.png") Global $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) Global $hGui = GUICreate("TGA Image Loader by UEZ", $iW, $iH) GUISetState() Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui) _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iW, $iH) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GDIPlus_BitmapDispose($hImage) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Exit Case $GUI_EVENT_RESTORE _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iW, $iH) EndSwitch WEnd v0.80 with assembler acceleration (thanks to AndyG for Assembleit2) but without RLE support yet: ;Coded by UEZ #AutoIt3Wrapper_Compile_Both=y #AutoIt3Wrapper_UseX64=n #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <Memory.au3> #include <WinAPIFiles.au3> ; #FUNCTION# ==================================================================================================================== ; Name ..........: _GDIPlus_TGAImageLoadFromFile ; Description ...: Loads an uncompressed TGA image file (1/8/15/16/24/32-bit) and converts it to a GDI+ bitmap format. ; Syntax ........: _GDIPlus_TGAImageLoadFromFile($sFile[, $bPrintInfo = False.]) ; Parameters ....: $sFile - TGA file name to load from disk. ; $bPrintInfo - [optional] Prints some information about the TGA image to console. Default is False. ; Return values .: Success: GDI+ bitmap handle ; Failure: error 1 - file cannot be opened ; error 2 - TGA image is not in one of these formats: 1/8/15/16/24/32-bit ; error 3 - unsupported TGA image type ; error 4 - unable to read file to struct ; error 5 - unknown TGA pixel depth ; error 6 - return bitmap cannot be created ; Version .......: v0.80 build 2019-10-23 beta ; Author ........: UEZ - thanks to AndyG for Assembleit2 ; Remarks .......: No RLE compressed TGA image support yet! ; Related .......: _GDIPlus_BitmapCreateFromScan0, _GDIPlus_ImageRotateFlip, DllStructCreate, _WinAPI_CreateFile, _WinAPI_SetFilePointer ; Link ..........: https://www.loc.gov/preservation/digital/formats/fdd/fdd000180.shtml, http://www.fileformat.info/format/tga/egff.htm ; Example .......: Yes ; =============================================================================================================================== Func _GDIPlus_TGAImageLoadFromFile($sFile, $bPrintInfo = False) Local Const $hFile = _WinAPI_CreateFile($sFile, 2, 2) If Not $hFile Then Return SetError(1, 0, 0) Local Const $tagTGAHeader = "align 1;byte idLength;byte colormapType;byte imageType;word firstEntryIndex;word colormapLength;byte colormapEntrySize;word xOrigin;word yOrigin;word width;word height;byte pixelDepth;byte imageDescriptor" Local Const $tagTGAFooter = "dword extAreaOffset;dword devDirOffset;byte imageID[18]" Local Const $tagTGAExtention = "align 1;word extSize;byte authorName[41];byte authorComments[324];word timeM;word timeD;word timeY;word timeHr;word timeMin;word timeSec;byte jobName[41];word jobTimeHr;word jobTimeMin;word jobTimeSec;byte swID[41];word swVersionNr;byte swVersionLetter;long keyColor;word pxAspectRatioNum;word pxAspectRatioDom;word gammaNum;word gammaDom;dword colCorrOffset;dword postStampOffset;dword scanLineOffset;byte attribType" Local Const $tTGAHeader = DllStructCreate($tagTGAHeader) Local Const $tTGAFooter = DllStructCreate($tagTGAFooter) Local Const $tTGAExtention = DllStructCreate($tagTGAExtention) Local $dwBytesRead, $tTGAImageID, $tagTGAImageID _WinAPI_ReadFile($hFile, $tTGAHeader, DllStructGetSize($tTGAHeader), $dwBytesRead) If $tTGAHeader.idLength > 0 Then $tagTGAImageID = "byte imageID[" & $tTGAHeader.idLength & "]" $tTGAImageID = DllStructCreate($tagTGAImageID) _WinAPI_ReadFile($hFile, $tTGAImageID, $tTGAHeader.idLength, $dwBytesRead) EndIf Local Const $iPxDepth = $tTGAHeader.pixelDepth If Not BitOR($iPxDepth = 32, $iPxDepth = 24, $iPxDepth = 16, $iPxDepth = 15, $iPxDepth = 8, $iPxDepth = 1) Then _WinAPI_CloseHandle($hFile) Return SetError(2, 0, 0) EndIf #cs ImageType Image Data Type Colormap Encoding 0 No image data included in file No No 1 Colormapped image data Yes No 2 Truecolor image data No No 3 Monochrome image data No No 9 Colormapped image data Yes Yes 10 Truecolor image data No Yes 11 Monochrome image data No Yes #ce If Not BitOR($tTGAHeader.imageType = 0x01, $tTGAHeader.imageType = 0x02, $tTGAHeader.imageType = 0x03) Then _WinAPI_CloseHandle($hFile) Return SetError(3, 0, 0) EndIf Local $iW = $tTGAHeader.width, $iH = $tTGAHeader.height, $bytesPerPixel = $iPxDepth / 8, $colorwidth = $tTGAHeader.colormapEntrySize / 8, _ $colorTblSize = $tTGAHeader.colormapLength * $colorwidth If $tTGAHeader.colormapEntrySize < 24 Then $bytesPerPixel = 4 Local Const $dwBufferSize = FileGetSize($sFile) Local $tSrcBmp = DllStructCreate("ubyte color[" & $dwBufferSize + $colorTblSize & "]") _WinAPI_ReadFile($hFile, $tSrcBmp, $dwBufferSize + $colorTblSize, $dwBytesRead) _WinAPI_SetFilePointer($hFile, -26, $FILE_END) _WinAPI_ReadFile($hFile, $tTGAFooter, 26, $dwBytesRead) Local $sFooter = StringTrimRight(BinaryToString($tTGAFooter.imageID), 1), $iOffset = 0, $iOffset2 If Not StringCompare($sFooter, "TRUEVISION-XFILE.") Then ;read extension information to struct if available $iOffset = $tTGAFooter.extAreaOffset _WinAPI_SetFilePointer($hFile, $iOffset, $FILE_BEGIN) _WinAPI_ReadFile($hFile, $tTGAExtention, 0x01EF, $dwBytesRead) EndIf _WinAPI_CloseHandle($hFile) If $dwBytesRead = 0 Then Return SetError(4, _WinAPI_GetLastError(), 0) If $bPrintInfo Then ConsoleWrite("idLength: " & $tTGAHeader.idLength & @CRLF) ConsoleWrite("colormapType: " & $tTGAHeader.colormapType & @CRLF) ConsoleWrite("imageType: " & $tTGAHeader.imageType & @CRLF) ConsoleWrite("firstEntryIndex: " & $tTGAHeader.firstEntryIndex & @CRLF) ConsoleWrite("colormapLength: " & $tTGAHeader.colormapLength & @CRLF) ConsoleWrite("colormapEntrySize: " & $tTGAHeader.colormapEntrySize & @CRLF) ConsoleWrite("xOrigin: " & $tTGAHeader.xOrigin & @CRLF) ConsoleWrite("yOrigin: " & $tTGAHeader.yOrigin & @CRLF) ConsoleWrite("width: " & $tTGAHeader.width & @CRLF) ConsoleWrite("height: " & $tTGAHeader.height & @CRLF) ConsoleWrite("pixelDepth: " & $iPxDepth & @CRLF) ConsoleWrite("imageDescriptor: " & $tTGAHeader.imageDescriptor & @CRLF) If $tTGAHeader.idLength > 0 Then ConsoleWrite("ImageID: " & RemoveNullChars($tTGAImageID.imageID) & @CRLF) If $iOffset Then ConsoleWrite("authorName: " & RemoveNullChars($tTGAExtention.authorName) & @CRLF) ConsoleWrite("authorComments: " & RemoveNullChars($tTGAExtention.authorComments) & @CRLF) ConsoleWrite("jobName: " & RemoveNullChars($tTGAExtention.jobName) & @CRLF) ConsoleWrite("swID: " & RemoveNullChars($tTGAExtention.swID) & @CRLF) EndIf EndIf Local Static $tDestBmp ;must be static otherwise bitmap data might get corrupted or in worst case script will crash Local $stride, $iPixelFormat Switch $iPxDepth Case 1 ;1-bit $iPixelFormat = $GDIP_PXF01INDEXED $stride = BitAND(($iW * 1) + 1, BitNOT(1)) $tDestBmp = DllStructCreate("uint color[" & $stride * $iH + 1 & "];") Case 8, 24 $iPixelFormat = $GDIP_PXF24RGB $stride = BitAND(($iW * 3) + 3, BitNOT(3)) $tDestBmp = DllStructCreate("uint color[" & $stride * $iH + 1 & "];") Case 15, 16 $iPixelFormat = $GDIP_PXF16RGB555 $stride = BitAND(($iW * 2) + 2, BitNOT(2)) $tDestBmp = DllStructCreate("uint color[" & $stride * $iH + 1 & "];") Case 32 $iPixelFormat = $GDIP_PXF32ARGB $stride = $iW * 4 $tDestBmp = DllStructCreate("uint color[" & $stride * $iH + 1 & "];") Case Else Return SetError(5, 0, 0) EndSwitch If Mod($stride, 4) <> 0 Then $stride += 4 - Mod($stride, 4) Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH, $iPixelFormat, $stride, $tDestBmp) If @error Or Not $hBitmap Then Return SetError(6, @error, 0) Local $fTimer = TimerInit() Local $x, $x1, $y, $t1 Local Const $hDLL = DllOpen("msvcrt.dll") Local Const $tagParam = "ptr tSrcBmp;ptr tDestBmp;dword strideSrc;dword strideDest;dword w;dword h;dword colorTblSize;dword t1;dword t2" Local $tParam If @AutoItX64 Then $tParam = _DLLStructCreate64($tagParam) Else $tParam = DLLStructCreate($tagParam) EndIf $tParam.tSrcBmp = DllStructGetPtr($tSrcBmp) $tParam.tDestBmp = DllStructGetPtr($tDestBmp) $tParam.strideDest = $stride $tParam.w = ($iW - 1) $tParam.h = ($iH - 1) $tParam.colorTblSize = $colorTblSize Switch $iPxDepth Case 1 ;1-bit For $y = 0 To $iH - 1 $t1 = $y * $stride DllCall($hDLL, "ptr:cdecl", "memcpy", "ptr", DllStructGetPtr($tDestBmp) + $t1, "ptr", DllStructGetPtr($tSrcBmp) + BitShift($t1, 3), "uint", $stride) Next Case 8 ;8-bit ConsoleWrite("Using Assembler code to speed-up..." & @CRLF) ;if a color table is available, just use it If $tTGAHeader.colormapType = 1 Then Local $tMapColorTbl = DllStructCreate("ubyte bgr[" & $colorTblSize & "]", DllStructGetPtr($tSrcBmp, "color") + $tTGAHeader.firstEntryIndex) Local $tParam2, $tagParam2 = "align 1;ptr tSrcBmp;ptr tDestBmp;ptr colormap;dword strideSrc;dword strideDest;dword w;dword h;dword colorTblSize;dword colorwidth;dword t1;dword t2;byte r5;byte g5;byte b5;" If @AutoItX64 Then $tParam2 = _DLLStructCreate64($tagParam2) Else $tParam2 = DllStructCreate($tagParam2) EndIf $tParam2.tSrcBmp = DllStructGetPtr($tSrcBmp) $tParam2.tDestBmp = DllStructGetPtr($tDestBmp) $tParam2.colormap = DllStructGetPtr($tMapColorTbl) $tParam2.strideSrc = $iW $tParam2.strideDest = $stride $tParam2.colorwidth = $colorwidth $tParam2.w = ($iW - 1) $tParam2.h = ($iH - 1) $tParam2.colorTblSize = $colorTblSize Switch @AutoItX64 Case False Local Const $bBinASM8cm_x86 = Binary("0x608B7C242431C990909090909090909089C8F7670C03471C89472489C8F7671089472831DB8B472401D8030789C231C08A02F767208B570801C28B32B803000000F7E303472803470489C5837F200275476689F26683E21F66C1E20388572E6689F26681E2E00366C1EA0566C1E20388572D6689F26681E2007C66C1EA0A66C1E20388572C31C00A472CC1E0080A472DC1E0080A472E89C6897500433B5F147684413B4F180F8665FFFFFF61C20400") Local $tBinASM8cm_x86 = DllStructCreate("ubyte asm[" & BinaryLen($bBinASM8cm_x86) & "]") $tBinASM8cm_x86.asm = $bBinASM8cm_x86 DllCallAddress("none", DllStructGetPtr($tBinASM8cm_x86), "ptr", DllStructGetPtr($tParam2)) Case Else Local Const $bBinASM8cm_x64 = Binary("0x575653554989CF41BE000000009090904489F041F7671841034728418947304489F041F7671C418947344531ED418B47304401E84903074889C24831C08A0241F7672C498B57104801C2448B0A4831C048C7C00300000041F7E541034734490347084989C041837F2C02755A4831D2664489CA6683E21F66C1E2034188573A4831D2664489CA6681E2E00366C1EA0566C1E203418857394831D2664489CA6681E2007C66C1EA0A66C1E2034188573831C0410A4738C1E008410A4739C1E008410A473A4189C145890841FFC5453B6F200F8657FFFFFF41FFC6453B77240F862DFFFFFF5D5B5E5FC20800") Local $tBinASM8cm_x64 = _DLLStructCreate64("ubyte asm[" & BinaryLen($bBinASM8cm_x64) & "]") $tBinASM8cm_x64.asm = $bBinASM8cm_x64 DllCallAddress("none", DllStructGetPtr($tBinASM8cm_x64), "ptr", DllStructGetPtr($tParam2)) EndSwitch Else ;convert it 1:1 directly Switch @AutoItX64 Case False $tParam.strideSrc = $iW $tParam.colorTblSize -= 2 Local Const $bBinASM8_x86 = Binary("0x8B7C2404BB00000000B900000000909089C8F7670889471C89C8F7670C8947208B471C01D8034718030789C252B803000000F7E30347200347045A8B328930433B5F1076DB31DB413B4F1476C3C20400") Local $tBinASM8_x86 = DllStructCreate("ubyte asm[" & BinaryLen($bBinASM8_x86) & "]") $tBinASM8_x86.asm = $bBinASM8_x86 DllCallAddress("none", DllStructGetPtr($tBinASM8_x86), "ptr", DllStructGetPtr($tParam)) Case Else $tParam.strideSrc = $iW Local Const $bBinASM8_x64 = Binary("0x575653554989CF49836F2002BB00000000B9000000009090909090909090909089C841F767104989C289C841F767144989C34D89D04901D84D0347204D030748C7C00300000048F7E34C01D8490347084D8B08448908FFC3413B5F1876D44831DBFFC1413B4F1C76B75D5B5E5FC20800") Local $tBinASM8_x64 = _DLLStructCreate64("ubyte asm[" & BinaryLen($bBinASM8_x64) & "]") $tBinASM8_x64.asm = $bBinASM8_x64 DllCallAddress("none", DllStructGetPtr($tBinASM8_x64), "ptr", DllStructGetPtr($tParam)) EndSwitch EndIf Case 15, 16, 24, 32 ;15/16/24/32-bit, as the bitmap format is the same we can use memcpy to copy the pixel data directly to the memory. ;Exeptions are 15/16/24-bit images whose width is not a divider of 4! If BitOR($iPxDepth = 15, $iPxDepth = 16, $iPxDepth = 24) And Mod($iW, 4) Then ConsoleWrite("Using Assembler code to speed-up..." & @CRLF) Switch $iPxDepth Case 15, 16 $tParam.strideSrc = $iW * 2 Switch @AutoItX64 Case False Local Const $bBinASM1516_x86 = Binary("0x8B7C2404BB00000000B900000000909089C8F7670889471C89C8F7670C894720B802000000F7E35003471C034718030789C2580347200347048B32668930433B5F1076DC31DB413B4F1476C4C20400") Local $tBinASM1516_x86 = DllStructCreate("ubyte asm[" & BinaryLen($bBinASM1516_x86) & "]") $tBinASM1516_x86.asm = $bBinASM1516_x86 DllCallAddress("none", DllStructGetPtr($tBinASM1516_x86), "ptr", DllStructGetPtr($tParam)) Case Else Local Const $bBinASM1516_x64 = Binary("0x575653554989CFBB00000000B90000000090909090909090909090909090909089C841F767104989C189C841F767144989C25389D8D1E04C89D24801C2490357084D89C84901C04D0347204D0307498B00488902FFC3FFC3413B5F1876D55BFFC1413B4F1C76B95D5B5E5FC20800") Local $tBinASM1516_x64 = _DLLStructCreate64("ubyte asm[" & BinaryLen($bBinASM1516_x64) & "]") $tBinASM1516_x64.asm = $bBinASM1516_x64 DllCallAddress("none", DllStructGetPtr($tBinASM1516_x64), "ptr", DllStructGetPtr($tParam)) EndSwitch Case 24 $tParam.strideSrc = $iW * 3 Switch @AutoItX64 Case False Local Const $bBinASM24_x86 = Binary("0x8B7C2404BB00000000B900000000909089C8F7670889471C89C8F7670C894720B803000000F7E35003471C034718030789C2580347200347048B328930433B5F1076DD31DB413B4F1476C5C20400") Local $tBinASM24_x86 = DllStructCreate("ubyte asm[" & BinaryLen($bBinASM24_x86) & "]") $tBinASM24_x86.asm = $bBinASM24_x86 DllCallAddress("none", DllStructGetPtr($tBinASM24_x86), "ptr", DllStructGetPtr($tParam)) Case Else Local Const $bBinASM24_x64 = Binary("0x575653554989CF4831C990909090909089C841F767104989C189C841F767144989C24831DB48C7C00300000048F7E34C89D24801C2490357084D89C84901C04D0347204D0307498B00488902FFC3FFC3413B5F1876CFFFC1413B4F1C76B25D5B5E5FC20800") Local $tBinASM24_x64 = _DLLStructCreate64("ubyte asm[" & BinaryLen($bBinASM24_x64) & "]") $tBinASM24_x64.asm = $bBinASM24_x64 DllCallAddress("none", DllStructGetPtr($tBinASM24_x64), "ptr", DllStructGetPtr($tParam)) EndSwitch EndSwitch Else For $y = 0 To $iH - 1 $t1 = $y * $stride DllCall($hDLL, "ptr:cdecl", "memcpy", "ptr", DllStructGetPtr($tDestBmp) + $t1, "ptr", DllStructGetPtr($tSrcBmp) + $t1, "uint", $stride) Next EndIf EndSwitch ConsoleWrite(TimerDiff($fTimer) & " ms" & @CRLF) DllClose($hDLL) ;TGA image is stored bottom up in file. Need to flip it. If BitAND($tTGAHeader.imageDescriptor, 0x30) <> 0x20 Then _GDIPlus_ImageRotateFlip($hBitmap, $GDIP_Rotate180FlipX) $tSrcBmp = 0 Return $hBitmap EndFunc ;==>_GDIPlus_TGAImageLoadFromFile ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: RemoveNullChars ; Description ...: Converts a null terminated binary string to a string ; Author ........: UEZ ; =============================================================================================================================== Func RemoveNullChars($bin) Local $a = StringRegExp($bin, "[[:xdigit:]+]{2}", 3), $s, $i If @error Then Return $s For $i = 0 To UBound($a) - 1 If $a[$i] = "00" Then ExitLoop $s &= Chr(Dec($a[$i])) Next Return $s EndFunc ;==>RemoveNullChars ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: _DLLStructCreate64 ; Description ...: Creates a struct for x64 assembler code execution ; Author ........: AndyG ; =============================================================================================================================== Func _DLLStructCreate64($struct) ;align auf 16-byte Adresse Local $temp = DllStructCreate($struct) Local $tempsize = DllStructGetSize($temp) + 64 Local $ptr = DllStructGetPtr($struct) Local $a1 = Mod(Number($ptr), 64) Local $temp = 0 Local $mem = _MemVirtualAlloc($ptr + $a1, $tempsize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE) Local $mem_dllstructcreate64_internal = $mem Local $a2 = Mod(Number($mem), 64) ;rest div 16 adresse = offset Local $sstruct = DllStructCreate($struct, (Number($mem) - $a2 + 64)) Return $sstruct ;auf 16 alingned pointer EndFunc ;==>_DLLStructCreate64 Global $sFile = FileOpenDialog("Select a TGA file", "", "TGA image(*.tga)") If @error Then Exit _GDIPlus_Startup() Global $hImage = _GDIPlus_TGAImageLoadFromFile($sFile, True) If @error Then ConsoleWrite(@error & " / " & @extended & @CRLF) _GDIPlus_Shutdown() Exit EndIf ;save result ;~ _GDIPlus_ImageSaveToFile($hImage, @ScriptDir & "\Converted.png") ;~ ShellExecute(@ScriptDir & "\Converted.png") Global $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) Global $hGui = GUICreate("TGA Image Loader by UEZ", $iW, $iH) GUISetState() Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui) _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iW, $iH) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GDIPlus_BitmapDispose($hImage) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Exit Case $GUI_EVENT_RESTORE _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iW, $iH) EndSwitch WEnd Here my rookie assembler code ^^: #cs _ASM8cm_x86 use32 define tSrcBmp dword[edi] define tDestBmp dword[edi + 04] define colortable dword[edi + 08] define strideSrc dword[edi + 12] define strideDest dword[edi + 16] define w dword[edi + 20] define h dword[edi + 24] define colorTblSize dword[edi + 28] define colorwidth dword[edi + 32] define iOffset dword[edi + 36] define iOffset2 dword[edi + 40] define r5 byte[edi + 44] define g5 byte[edi + 45] define b5 byte[edi + 46] pushad ;~ _ASMDBG_() mov edi, dword[esp + 36] ;pointer to the struct xor ecx, ecx; y = 0 align 16 _y: mov eax, ecx mul strideSrc add eax, colorTblSize mov iOffset, eax ;iOffset = y * $strideSrc + $colorTblSize mov eax, ecx mul strideDest mov iOffset2, eax ;iOffset2 = y * $strideDest xor ebx, ebx ;x = 0 _x: mov eax, iOffset add eax, ebx ;iOffset + x add eax, tSrcBmp mov edx, eax ;edx = iOffset + x + tSrcBmp xor eax, eax mov al, byte[edx] ;get index from color table mul colorwidth ;multiply it with colorwidth -> eax = index of the color table mov edx, colortable add edx, eax mov esi, dword[edx] ;get the color from the color table mov eax, 3 mul ebx ; add eax, iOffset2 ; add eax, tDestBmp ;$x * 3 + iOffset2 + tDestBmp = t1 mov ebp, eax cmp colorwidth, 2 jne _col_rgb mov dx, si ;BitShift(BitAND($col, 0x001F), -3) ;B and dx, 0x001F shl dx, 3 mov b5, dl mov dx, si ;BitShift(BitShift(BitAND($col, 0x03E0), 5), -3) ;G and dx, 0x03E0 shr dx, 5 shl dx, 3 mov g5, dl mov dx, si ;BitShift(BitShift(BitAND($col, 0x7C00), 10), -3) ;R and dx, 0x7C00 shr dx, 10 shl dx, 3 mov r5, dl xor eax, eax ;eax = 0 or al, r5 ;generate rgb value from rgb555 shl eax, 8 or al, g5 shl eax, 8 or al, b5 mov esi, eax _col_rgb: mov dword[ebp], esi ;write to destination inc ebx cmp ebx, w jbe _x inc ecx cmp ecx, h jbe _y ;~ _ASMDBG_() popad ret ;4 #ce _ASM8cm_x86 #cs _ASM8cm_x64 use64 define tSrcBmp qword[r15] define tDestBmp qword[r15 + 08] define colortable qword[r15 + 16] define strideSrc dword[r15 + 24] define strideDest dword[r15 + 28] define w dword[r15 + 32] define h dword[r15 + 36] define colorTblSize dword[r15 + 40] define colorwidth dword[r15 + 44] define iOffset dword[r15 + 48] define iOffset2 dword[r15 + 52] define r5 byte[r15 + 56] define g5 byte[r15 + 57] define b5 byte[r15 + 58] define x r13d define y r14d push rdi push rsi push rbx push rbp mov qword r15, rcx mov y, 0 align 16 _y: mov eax, y mul strideSrc add eax, colorTblSize mov iOffset, eax ;iOffset = y * $strideSrc + $colorTblSize mov eax, y mul strideDest mov iOffset2, eax ;iOffset2 = y * $strideDest xor x, x ;x = 0 _x: mov eax, iOffset add eax, x ;iOffset + x add rax, tSrcBmp mov rdx, rax ;edx = iOffset + x + tSrcBmp xor rax, rax mov al, byte[rdx] ;get index from color table mul colorwidth ;multiply it with colorwidth -> eax = index of the color table mov rdx, colortable add rdx, rax mov r9d, dword[rdx] ;get the color from the color table xor rax, rax mov rax, 3 mul x ; add eax, iOffset2 ; add rax, tDestBmp ;$x * 3 + iOffset2 + tDestBmp = t1 mov r8, rax cmp colorwidth, 2 jne _col_rgb xor rdx, rdx mov dx, r9w ;BitShift(BitAND($col, 0x001F), -3) ;B and dx, 0x001F shl dx, 3 mov b5, dl xor rdx, rdx mov dx, r9w ;BitShift(BitShift(BitAND($col, 0x03E0), 5), -3) ;G and dx, 0x03E0 shr dx, 5 shl dx, 3 mov g5, dl xor rdx, rdx mov dx, r9w ;BitShift(BitShift(BitAND($col, 0x7C00), 10), -3) ;R and dx, 0x7C00 shr dx, 10 shl dx, 3 mov r5, dl xor eax, eax ;eax = 0 or al, r5 ;generate rgb value from rgb555 shl eax, 8 or al, g5 shl eax, 8 or al, b5 mov r9d, eax _col_rgb: mov dword[r8], r9d ;write to destination inc x cmp x, w jbe _x inc y cmp y, h jbe _y pop rbp pop rbx pop rsi pop rdi ret 8 #ce #cs _ASM8_x86 use32 pushad mov edi, dword[esp + 36] ;pointer to the struct define tSrcBmp dword[edi] define tDestBmp dword[edi + 04] define strideSrc dword[edi + 08] define strideDest dword[edi + 12] define w dword[edi + 16] define h dword[edi + 20] define colorTblSize dword[edi + 24] define iOffset dword[edi + 28] define iOffset2 dword[edi + 32] mov ecx, 0 ; y align 16 _y: mov eax, ecx mul strideSrc add eax, colorTblSize mov iOffset, eax ;iOffset = y * $strideSrc + $colorTblSize mov eax, ecx mul strideDest mov iOffset2, eax ;iOffset2 = y * $strideDest xor ebx, ebx ;x = 0 _x: mov ebp, iOffset sub ebp, 2 add ebp, ebx add ebp, tSrcBmp ;ebp = t1 mov eax, 3 mul ebx add eax, iOffset2 add eax, tDestBmp ;eax = t2 mov esi, dword[ebp] ;get the color from source bitmap mov dword[eax], esi ;write to destination inc ebx cmp ebx, w jbe _x inc ecx cmp ecx, h jbe _y popad ret ;4 #ce _ASM8_x86 #cs _ASM8_x64 use64 push rdi push rsi push rbx push rbp define tSrcBmp qword[r15] define tDestBmp qword[r15 + 08] define strideSrc [r15 + 16] define strideDest [r15 + 20] define w [r15 + 24] define h [r15 + 28] define colorTblSize [r15 + 32] define iOffset [r15 + 36] define iOffset2 [r15 + 40] mov qword r15, rcx sub qword colorTblSize, 2 mov ebx, 0 ;w - 1 mov ecx, 0 ;h - 1 align 16 _y: mov eax, ecx mul dword strideSrc mov r10, rax ;r10 = y * $strideSrc mov eax, ecx mul dword strideDest mov r11, rax ;r11 = y * $strideDest _x: mov r8, r10 add r8, rbx add r8, colorTblSize add r8, tSrcBmp ;r8 = t1 mov rax, 3 mul rbx add rax, r11 add rax, tDestBmp ;eax = t2 mov r9, [r8] ;get the color from source bitmap mov dword[rax], r9d ;write to destination inc ebx cmp ebx, w jbe _x xor rbx, rbx inc ecx cmp ecx, h jbe _y pop rbp pop rbx pop rsi pop rdi ret 8 #ce _ASM8_x64 #cs _ASM1516_x86 use32 mov edi, dword[esp + 4] ;pointer to the struct define tSrcBmp ptr[edi] define tDestBmp ptr[edi + 04] define strideSrc dword[edi + 08] define strideDest dword[edi + 12] define w dword[edi + 16] define h dword[edi + 20] define colorTblSize dword[edi + 24] define iOffset dword[edi + 28] define iOffset2 dword[edi + 32] mov ebx, 0 ; x mov ecx, 0 ; y align 16 _y: mov eax, ecx mul strideSrc mov iOffset, eax ;iOffset = y * $strideSrc mov eax, ecx mul strideDest mov iOffset2, eax ;iOffset2 = y * $strideDest _x: mov eax, 2 mul ebx ;x * 2 push eax add eax, iOffset add eax, colorTblSize add eax, tSrcBmp mov edx, eax ;edx = t1 pop eax ;restore x * 2 add eax, iOffset2 add eax, tDestBmp ;eax = t2 mov esi, dword[edx] ;get the color from source bitmap mov word[eax], si ;write to destination inc ebx cmp ebx, w jbe _x xor ebx, ebx inc ecx cmp ecx, h jbe _y ret ;4 #ce _ASM1516_x86 #cs _ASM1516_x64 use64 ;~ define tSrcBmp dword[r15 + 0] ;~ define tDestBmp dword[r15 + 8] ;~ define strideS dword[r15 + 16] ;~ define strideD dword[r15 + 20] ;~ define width dword[r15 + 24] ;~ define height dword[r15 + 28] ;~ define colorTblSize dword[r15 + 32] ;~ define t1 dword[r15 + 36] ;not needed ;~ define t2 dword[r15 + 40] ;not needed push rdi push rsi push rbx push rbp mov qword r15, rcx mov ebx, 0 ;dword[r15 + 24] ;ebx = w - 1 mov ecx, 0 ;dword[r15 + 28] ;ecx = h - 1 align 16 _y: mov eax, ecx mul dword[r15 + 16] mov r9, rax mov eax, ecx mul dword[r15 + 20] mov r10, rax push rbx _x: mov eax, ebx shl eax, 1 mov rdx, r10 add rdx, rax add rdx, [r15 + 8] mov r8, r9 add r8, rax add r8, [r15 + 32] add r8, [r15] mov rax, [r8] mov [rdx], rax inc ebx inc ebx cmp ebx, dword[r15 + 24] jbe _x pop rbx inc ecx cmp ecx, dword[r15 + 28] jbe _y pop rbp pop rbx pop rsi pop rdi ret 8 #ce _ASM1516_x64 #cs _ASM24_x86 use32 mov edi, dword[esp + 4] ;pointer to the struct define tSrcBmp dword[edi] define tDestBmp dword[edi + 04] define strideSrc dword[edi + 08] define strideDest dword[edi + 12] define w dword[edi + 16] define h dword[edi + 20] define colorTblSize dword[edi + 24] define iOffset dword[edi + 28] define iOffset2 dword[edi + 32] mov ebx, 0 ; x mov ecx, 0 ; y align 16 _y: mov eax, ecx mul strideSrc mov iOffset, eax ;iOffset = y * $strideSrc mov eax, ecx mul strideDest mov iOffset2, eax ;iOffset2 = y * $strideDest _x: mov eax, 3 mul ebx ;x * 3 push eax add eax, iOffset add eax, colorTblSize add eax, tSrcBmp mov edx, eax ;edx = t1 pop eax ;restore x * 3 add eax, iOffset2 add eax, tDestBmp ;eax = t2 mov esi, dword[edx] ;get the color from source bitmap mov dword[eax], esi ;write to destination inc ebx cmp ebx, w jbe _x xor ebx, ebx inc ecx cmp ecx, h jbe _y ret ;4 #ce _ASM24_x86 #cs _ASM24_x64 use64 ;~ define tSrcBmp dword[r15 + 0] ;~ define tDestBmp dword[r15 + 8] ;~ define strideS dword[r15 + 16] ;~ define strideD dword[r15 + 20] ;~ define width dword[r15 + 24] ;~ define height dword[r15 + 28] ;~ define colorTblSize dword[r15 + 32] ;~ define t1 dword[r15 + 36] ;not needed ;~ define t2 dword[r15 + 40] ;not needed push rdi push rsi push rbx push rbp mov qword r15, rcx xor rcx, rcx align 16 _y: mov eax, ecx mul dword[r15 + 16] mov r9, rax mov eax, ecx mul dword[r15 + 20] mov r10, rax xor rbx, rbx _x: mov rax, 3 mul rbx mov rdx, r10 add rdx, rax add rdx, [r15 + 8] mov r8, r9 add r8, rax add r8, [r15 + 32] add r8, [r15] mov rax, [r8] mov [rdx], rax ;copy 64 bits inc ebx inc ebx cmp ebx, dword[r15 + 24] jbe _x inc ecx cmp ecx, dword[r15 + 28] jbe _y pop rbp pop rbx pop rsi pop rdi ret 8 #ce _ASM24_x64 If you find a TGA image which is in scope of this script but doesn't convert it properly, please report it here. Thanks.
-
AutoIt Windows Screenshooter Key Features: takes easily a screenshot from any visible window capture any region of the desktop incl. freehand capturing capture GUI controls and GUI menus separately capture a marked area every x seconds for a duration of y seconds create a GIF animation from saved frames (Vista or higher os required) capture to AVI file (without audio!) takes a screenshot from web sites (available only on Win7+ os and when Aero is enabled) put images to clipboard to paste to other applications easily color picker save image in different formats and also to PDF! add timestamp to saved images simple image editing options: greyscale, b&w, invert, rotate +-90° send image to printer and default email client preview of captured screens incl. zoom option multi monitor support display pixel color under mouse ruler basic image editor (paint, highlight, ellipse, rectangle, text and some graphic FX) watermark captured image no 3rd party tools or DLLs used - pure AutoIt! fully portable - no installation is needed multi language feature (Eng, Ger, Tur, Fra and Rus only) drag'n'drop an image to the app for editing To do: capture content of scrollable window/control capture cascaded menus Due to DllCall("User32.dll", "int", "PrintWindow", "hwnd", $hWnd, "handle", $hMemDC, "int", 0) limitation some windows cannot be captured properly (GDI+, ProgDVB, etc.) but can take screenshots of hidden windows. One workaround is to use full screen capturing (F11/F12) or "Grab Screen" function! Or try double click with rmb on listview items (beta). Download source code (10489 downloads previously): AutoIt Windows Screenshooter v1.84 Build 2019-08-18.7z (version 3.3.12.0+ needed!) You are not allowed to sell this code or just parts of it in a commercial project or modify it and distribute it with a different name! Download compiled Exe only: 4shared / Media Fire / Softpedia (1.58mb) Distributing copies of the program in compiled format (exe) must be free of any fee! -----> click here to Donate! (Current donators: 1. Cuong N.) It is designed for Win7+ operating systems with AERO enabled! E.g. on WinXP machines some functions are not working properly and might crash the application! AV scanners may have a negative impact the execution of compiled exe and might report any malware. I guarantee that there is no malicious code in the source code / exe!!! Main GUI: About Intro: Basic Image Editor: Watermark: Click link for an enhanced version of Watermark Image. Credits: main code by UEZ additional code (alphabetical order) by Authenticity, AutoItObject Team, Eemuli, Eukalyptus, funkey, _Kurt, martin, monoceres, ProgAndy, taietel, trancexx, Ward, wolf9228 and Yashied! mesale0077 for turkish translation wakillon for french translation AZJIO for russian translation Keys: Main GUI: User your mouse to scroll preview window or Numpad 8: Scroll preview window up Numpad 2: Scroll preview window down Numpad 4: Scroll preview window left Numpad 6: Scroll preview window right Numpad +: zoom in preview window or mouse wheel down Numpad -: zoom out preview window or mouse wheel up F1: capture again on last position F5: refresh Windows Name list PRINTSCREEN: take screenshot from whole screen ALT+PRINTSCR: take a screenshot from active window F10: Undo made changes with Image Editing function F11: take screenshot from whole screen incl mouse cursor F12: take screenshot from whole screen Ctrl+Alt+F9 start "Grab Screen" mode Ctrl+Alt+F12: take a screenshot from active window using alternative screenshot functionality (beta)! Ctrl+r: call ruler Ctrl+s: save current displayed image Ctrl+x: exit program ctrl+w: call web grab input field (available only when Aero is enabled) Ctrl+i: call image editor Ctrl+m: call watermark editor Ctrl+z: undo Only available on Vista+ os: double click with rmb on list items to use alternative screenshot functionality (beta)! When 'Grab Screen' is clicked you can hold down the ctrl key to switch to 'grab controls' mode. Control under mouse will be framed red. ctrl + shift will take the screenshot of appropriate control. To capture GUI menus you can press rmb which simulates the lmb. When a menu is opened press shift additionally to capture it. Press and hold only the shift key to capture any region on the desktop using freehand capturing - release it so capture marked regions! Or just mark resize able area which you want to grab. Press CTRL key to grab marked area or right mouse button to capture the marked area every x seconds for a duration of y seconds. When saving the image just enter the extension you wish to use (*.jpg;*.png;*.bmp;*.gif;*.tif;*.pdf). Big thanks to taietel for his PDF UDF! Image Editor: s: save 😄 copy n: send h: highlighter p: pen r: rectangle e: ellipse a: arrow o: color t: text g: text config Ctrl+z: undo Watermark editor: Ctrl+z: undo To start the app minimized just call it "Windows Screenshooter.exe /min" Maybe it is useful for someone... Any kind of comment is welcome. Br, UEZ Change log:
- 129 replies
-
- screencapture
- gdi+
-
(and 3 more)
Tagged with:
-
Hello folks, I've been working on a couple of GDI+ gauges, they need a bit of polish here and there I'd appreciate it if you guys/girls could play around and give me some suggestions. Cheers. #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=Gauges With Sliders.exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <GUIConstants.au3> #include <GDIplus.au3> #include <ColorConstants.au3> #include <Array.au3> Global Const $width = @DesktopWidth * 3 / 4 Global Const $height = @DesktopHeight Global $title = "GDI+" ; Build your GUI here Opt("GUIOnEventMode", 1) Global $hwnd = GUICreate($title, @DesktopWidth, @DesktopHeight, -1, -1, $WS_SIZEBOX) GUISetOnEvent($GUI_EVENT_CLOSE, "close") GUISetState() #Region Sliders Global $VariableMaxValue = 100 Global $SecondaryMaxValue = 100 Global $VariableMinValue = 0 Global $HexLabel = GUICtrlCreateLabel("Hex Value: ", @DesktopWidth - 300, 50, 150, 20) GUICtrlSetColor($HexLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idSliderThick = GUICtrlCreateSlider(@DesktopWidth - 300, 100, 250, 20) GUICtrlSetLimit(-1, 240, 0) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $ThickLabel = GUICtrlCreateLabel("Thickness Value: " & GUICtrlRead($idSliderThick), @DesktopWidth - 300, 120, 150, 20) GUICtrlSetColor($ThickLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idSliderVal = GUICtrlCreateSlider(@DesktopWidth - 300, 150, 250, 20) GUICtrlSetLimit(-1, $VariableMaxValue, $VariableMinValue) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $ValLabel = GUICtrlCreateLabel("Variable Value: " & GUICtrlRead($idSliderVal), @DesktopWidth - 300, 170, 150, 20) GUICtrlSetColor($ValLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idSliderScale = GUICtrlCreateSlider(@DesktopWidth - 300, 200, 250, 20) GUICtrlSetLimit(-1, 20, 0) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $ScaleLabel = GUICtrlCreateLabel("Scale Value: " & (GUICtrlRead($idSliderScale) * .1), @DesktopWidth - 300, 220, 150, 20) GUICtrlSetColor($ScaleLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idStartAngleScale = GUICtrlCreateSlider(@DesktopWidth - 300, 250, 250, 20) GUICtrlSetLimit(-1, 360, 0) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $StartAngleLabel = GUICtrlCreateLabel("Angle Value: " & GUICtrlRead($idStartAngleScale), @DesktopWidth - 300, 270, 150, 20) GUICtrlSetColor($StartAngleLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idSweepScale = GUICtrlCreateSlider(@DesktopWidth - 300, 300, 250, 20) GUICtrlSetLimit(-1, 360, 0) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $SweepLabel = GUICtrlCreateLabel("Sweep Value: " & GUICtrlRead($idSweepScale), @DesktopWidth - 300, 320, 150, 20) GUICtrlSetColor($SweepLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idCheckmarksScale = GUICtrlCreateSlider(@DesktopWidth - 300, 350, 250, 20) GUICtrlSetLimit(-1, 20, 0) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $CheckmarkLabel = GUICtrlCreateLabel("No. of Checkmarks: " & GUICtrlRead($idCheckmarksScale), @DesktopWidth - 300, 370, 150, 20) GUICtrlSetColor($CheckmarkLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $idVarMin = GUICtrlCreateSlider(@DesktopWidth - 300, 450, 250, 20) GUICtrlSetLimit(-1, 0, -50) ; change min/max value GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $MinLabel = GUICtrlCreateLabel("Min Value: " & GUICtrlRead($idVarMin), @DesktopWidth - 300, 470, 150, 20) GUICtrlSetColor($MinLabel, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $RadioGroup1 = GUICtrlCreateGroup("", @DesktopWidth - 300, 500, 200, 50) Global $clockwiseCtrl = GUICtrlCreateRadio("Clockwise", @DesktopWidth - 280, 520, 80, 20) GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetColor(-1, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $antiClockwiseCtrl = GUICtrlCreateRadio("Anti-clockwise", @DesktopWidth - 200, 520, 85, 20) GUICtrlSetColor(-1, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $RadioGroup2 = GUICtrlCreateGroup("", @DesktopWidth - 300, 550, 200, 50) Global $RadialCtrl = GUICtrlCreateRadio("Radial", @DesktopWidth - 280, 570, 80, 20) GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetColor(-1, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) Global $SquareCtrl = GUICtrlCreateRadio("Linear", @DesktopWidth - 200, 570, 85, 20) GUICtrlSetColor(-1, $COLOR_WHITE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKVCENTER) GUICtrlSetData($idSliderThick, 35) GUICtrlSetData($idSliderScale, 10) GUICtrlSetData($idStartAngleScale, 180) GUICtrlSetData($idSweepScale, 180) GUICtrlSetData($idCheckmarksScale, 10) #EndRegion Sliders GUISetBkColor(0x303030) Global $aWindowSize = WinGetClientSize($hwnd) ; Load your GDI+ resources here: _GDIPlus_Startup() Global $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd) Global $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics) Global $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap) While 1 _GDIPlus_GraphicsClear($backbuffer, 0xFF303030) Sleep(50) #Region Test Variables Global $Thickness = GUICtrlRead($idSliderThick) Global $Variable = GUICtrlRead($idSliderVal) Global $tValue = 0xFF000000 Global $rValue = 0x00FF0000 Global $gValue = BitShift((255 - (($Variable / $VariableMaxValue) * 255)), -8) Global $bValue = 0x00 Global $ScalingFactor = GUICtrlRead($idSliderScale) / 10 GUICtrlSetData($HexLabel, "Hex Value: " & HEX(BitOR($tValue, $rValue, $gValue, $bValue))) Global $PenColour = ("0x" & HEX(BitOR($tValue, $rValue, $gValue, $bValue))) GUICtrlSetData($ValLabel, "Variable Value: " & GUICtrlRead($idSliderVal)) GUICtrlSetData($ThickLabel, "Thickness Value: " & GUICtrlRead($idSliderThick)) GUICtrlSetData($ScaleLabel, "Scale Value: " & (GUICtrlRead($idSliderScale) * .1)) GUICtrlSetData($StartAngleLabel, "Angle Value: " & GUICtrlRead($idStartAngleScale)) GUICtrlSetData($SweepLabel, "Sweep Value: " & GUICtrlRead($idSweepScale)) GUICtrlSetData($CheckmarkLabel, "No. Of Checkmarks: " & GUICtrlRead($idCheckmarksScale)) GUICtrlSetData($MinLabel, "Min Value: " & GUICtrlRead($idVarMin)) GUICtrlSetLimit($idSliderVal, $VariableMaxValue, $VariableMinValue) Local $Radius = 300 If GUICtrlRead($clockwiseCtrl) = $GUI_CHECKED Then Local $Clockwise = True Else Local $Clockwise = False EndIf Local $StartAngle = GUICtrlRead($idStartAngleScale) Local $SweepAngle = GUICtrlRead($idSweepScale) Local $CentrePointX = 500 Local $CentrePointY = 500 Local $NoOfCheckmarks = GUICtrlRead($idCheckmarksScale) Local $CheckLength = 15 Local $AllowedLimit = 75 Local $VariableLimit = True Local $VariableMinValue = GUICtrlRead($idVarMin) #EndRegion Test Variables #Region Function Call If GUICtrlRead($RadialCtrl) = $GUI_CHECKED Then _GDIPlus_GraphicsDrawPath($backbuffer, _Gauges_DrawRadialGauge($backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Variable, $ScalingFactor, $Clockwise, $StartAngle, $SweepAngle, $VariableMaxValue, $NoOfCheckmarks, $CheckLength, $VariableLimit, $AllowedLimit, $VariableMinValue)) GUICtrlSetState($idSliderThick, $GUI_SHOW) GUICtrlSetState($ThickLabel, $GUI_SHOW) GUICtrlSetState($idStartAngleScale, $GUI_SHOW) GUICtrlSetState($StartAngleLabel, $GUI_SHOW) GUICtrlSetState($idSweepScale, $GUI_SHOW) GUICtrlSetState($SweepLabel, $GUI_SHOW) GUICtrlSetState($RadioGroup1, $GUI_SHOW) GUICtrlSetState($clockwiseCtrl, $GUI_SHOW) GUICtrlSetState($antiClockwiseCtrl, $GUI_SHOW) Else _GDIPlus_GraphicsDrawPath($backbuffer, _Gauges_DrawLinearGauge($backbuffer, $CentrePointX, $CentrePointY, 600, 100, $Variable, $ScalingFactor, $NoOfCheckmarks, $CheckLength, $VariableMaxValue, $VariableLimit, $AllowedLimit, $VariableMinValue)) GUICtrlSetState($idSliderThick, $GUI_HIDE) GUICtrlSetState($ThickLabel, $GUI_HIDE) GUICtrlSetState($idStartAngleScale, $GUI_HIDE) GUICtrlSetState($StartAngleLabel, $GUI_HIDE) GUICtrlSetState($idSweepScale, $GUI_HIDE) GUICtrlSetState($SweepLabel, $GUI_HIDE) GUICtrlSetState($RadioGroup1, $GUI_HIDE) GUICtrlSetState($clockwiseCtrl, $GUI_HIDE) GUICtrlSetState($antiClockwiseCtrl, $GUI_HIDE) EndIf #EndRegion Function Call _GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, 0, 0, $width, $height) WEnd Func close() _GDIPlus_GraphicsDispose($backbuffer) _GDIPlus_BitmapDispose($bitmap) _GDIPlus_GraphicsDispose($graphics) _GDIPlus_Shutdown() Exit EndFunc ;==>close #Region Functions #Region Draw Linear Gauge ; #FUNCTION# ==================================================================================================================== ; Name...........: _Gauges_DrawLinearGauge ; Description ...: Creates a horizontal or vertical gauge in the graphics backbuffer ; Syntax.........: _Gauges_DrawLinearGauge(ByRef $backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $Variable, [$ScalingFactor = 1, [$NoOfCheckmarks = 6, [$CheckLength = 20, ; + [$VariableMaxValue = 256, [$VariableLimit = False, [$AllowedLimit = 0, [$VariableMinValue = 0]]]]]]] ) ; Parameters ....: $backbuffer - [byref] The graphics object to draw the gauge to. ; $CentrePointX - The horizontal coordinate of the centre of the gauge. ; $CentrePointY - The vertical coordinate of the centre of the gauge. ; $GaugeWidth - The width of the gauge (Duh). ; $GaugeHeight - The height of the gauge. ; $Variable - The variable used to change the gauge. ; $ScalingFactor - [optional] Scales the gauge by this factor. Default is 1, i.e. no scaling. ; $NoOfCheckmarks - [optional] The number of dashes indicating a scale around the gauge. Default is 6. ; $CheckLength - [optional] The length of the checkmarks in pixels. Default is 20. ; $VariableMaxValue - [optional] The maximum value of the variable. Default is 256. ; $VariableLimit - [optional] Boolean, if TRUE, displays a red limit indicator on the scale. Default is FALSE. ; $AllowedLimit -[optional] The value of the above limit if it is drawn. Default is 0. ; $VariableMinValue -[optional] The minimum value of the variable. Only used if negative numbers are required. Default is 0. ; Author ........: Simon Renardson (Sidley) ; Modified.......: ; Remarks .......: There is a more comprehensive function available, but I deemed it overkill for the majority of people. ; Related .......: _GDIPlus_ ; Example .......: Yes ; =============================================================================================================================== ;Draw a Linear gauge to the screen Func _Gauges_DrawLinearGauge(ByRef $backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $Variable, $ScalingFactor = 1, $NoOfCheckmarks = 6, $CheckLength = 20, $VariableMaxValue = 256, $VariableLimit = False, $AllowedLimit = 0, $VariableMinValue = 0) If $Variable >= 0 Then Local $BrushColour = ("0xFF4BF221") Else Local $BrushColour = ("0xFFFF0000") EndIf If $GaugeWidth >= $GaugeHeight Then Local $GaugeBrush = _GDIPlus_HatchBrushCreate(1, 0x00000000, $BrushColour) ;Set to vertical hatch if the gauge is horizontal Else Local $GaugeBrush = _GDIPlus_HatchBrushCreate(0, 0x00000000, $BrushColour) ;Set to horizontal hatch if the gauge is vertical EndIf Local $TextBrush = _GDIPlus_BrushCreateSolid($BrushColour) Local $Path = _GDIPlus_PathCreate() Local $hPen = _GDIPlus_PenCreate("0xFF96A29F", 2 * $ScalingFactor) ; Off-white pen for outlines Local $AllowedPen = _GDIPlus_PenCreate("0xFFFF0000", 8 * $ScalingFactor) ;Red pen for allowed speed indicators If $GaugeWidth >= $GaugeHeight Then ;If the gauge is to be length wise _GDIPlus_PathAddLine($Path, $CentrePointX - ((($GaugeWidth / 2) + $VariableMinValue * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue))) * $ScalingFactor), ($CentrePointY + ($GaugeHeight / 2) * $ScalingFactor), $CentrePointX - ((($GaugeWidth / 2) + $VariableMinValue * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue))) * $ScalingFactor) + ($Variable * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor), ($CentrePointY + ($GaugeHeight / 2) * $ScalingFactor)) _GDIPlus_PathAddLine($Path, $CentrePointX - ((($GaugeWidth / 2) + $VariableMinValue * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue))) * $ScalingFactor) + ($Variable * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor), ($CentrePointY - ($GaugeHeight / 2) * $ScalingFactor), $CentrePointX - ((($GaugeWidth / 2) + $VariableMinValue * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue))) * $ScalingFactor), ($CentrePointY - ($GaugeHeight / 2) * $ScalingFactor)) _GDIPlus_PathCloseFigure($Path) Else ;If the gauge is to be height wise _GDIPlus_PathAddLine($Path, ($CentrePointX + ($GaugeWidth / 2) * $ScalingFactor), ($CentrePointY + (($GaugeHeight / 2) * $ScalingFactor)) + ($VariableMinValue * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor), ($CentrePointX + ($GaugeWidth / 2) * $ScalingFactor), ($CentrePointY + (($GaugeHeight / 2) * $ScalingFactor)) + ($VariableMinValue * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor) - $Variable * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor) _GDIPlus_PathAddLine($Path, ($CentrePointX - ($GaugeWidth / 2) * $ScalingFactor), ($CentrePointY + (($GaugeHeight / 2) * $ScalingFactor)) + ($VariableMinValue * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor) - $Variable * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor, ($CentrePointX - ($GaugeWidth / 2) * $ScalingFactor), ($CentrePointY + (($GaugeHeight / 2) * $ScalingFactor)) + ($VariableMinValue * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor)) _GDIPlus_PathCloseFigure($Path) EndIf _GDIPlus_GraphicsFillPath($backbuffer, $Path, $GaugeBrush) ;Draw the gauge _DrawBar($backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $VariableMaxValue, $VariableMinValue, $hPen, $ScalingFactor) ;Draw the outline for the gauge _DrawLinearGaugeCheckMarks($backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $ScalingFactor, $VariableMaxValue, $NoOfCheckmarks, $CheckLength, $hPen) ;Draw the checkmarks for the gauge If $VariableLimit Then _DrawLinearAllowedSpeed($backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $VariableMaxValue, $AllowedLimit, $AllowedPen, $ScalingFactor, $VariableLimit) ;Draw the allowed speed indicator(s) for the gauge EndIf _LinearGaugeText($backbuffer, $Variable, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $ScalingFactor, $TextBrush) ;Put the gauge text above the gauge _GDIPlus_PathDispose($Path) ;Tidy up _GDIPlus_BrushDispose($GaugeBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($AllowedPen) _GDIPlus_BrushDispose($TextBrush) EndFunc ;==>_DrawLinearGauge ;Draw the text for the main gauge Func _LinearGaugeText(ByRef $backbuffer, $Variable, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $ScalingFactor, ByRef $TextBrush) Local $FontSize = 80 * $ScalingFactor ;Linear gauge font size Local $Path = _GDIPlus_PathCreate() Local $Format = _GDIPlus_StringFormatCreate() Local $Family = _GDIPlus_FontFamilyCreate("Agency FB") ;Centre text font Local $Font = _GDIPlus_FontCreate($Family, $FontSize, 2) _GDIPlus_StringFormatSetAlign($Format, 2) ;Right align _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 2) ;Change smoothing mode for text If $GaugeWidth >= $GaugeHeight Then Local $Layout = _GDIPlus_RectFCreate($CentrePointX - ($FontSize * $ScalingFactor / 2), $CentrePointY - ($GaugeHeight / 2 * $ScalingFactor) - $FontSize * 1.5 * $ScalingFactor) ;Set text position for inner text Else Local $Layout = _GDIPlus_RectFCreate($CentrePointX - ($GaugeWidth / 2) * $ScalingFactor - $FontSize * 2, ($CentrePointY - $FontSize * $ScalingFactor / 2)) ;Set text positionfor inner text EndIf _GDIPlus_PathAddString($Path, $Variable, $Layout, $Family, 0, $FontSize * $ScalingFactor) _GDIPlus_GraphicsFillPath($backbuffer, $Path, $TextBrush) $Layout = 0 _GDIPlus_PathDispose($Path) _GDIPlus_FontDispose($Font) _GDIPlus_StringFormatDispose($Format) _GDIPlus_FontFamilyDispose($Family) EndFunc ;==>_LinearGaugeText ;Draw the outline of the gauge Func _DrawBar(ByRef $backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $VariableMaxValue, $VariableMinValue, ByRef $hPen, $ScalingFactor = 1) Local $Path = _GDIPlus_PathCreate() _GDIPlus_PathAddLine($Path, $CentrePointX - ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2) * $ScalingFactor, $CentrePointX + ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2) * $ScalingFactor) _GDIPlus_PathAddLine($Path, $CentrePointX + ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY + ($GaugeHeight / 2) * $ScalingFactor, $CentrePointX - ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY + ($GaugeHeight / 2) * $ScalingFactor) _GDIPlus_PathCloseFigure($Path) If $GaugeWidth >= $GaugeHeight Then _GDIPlus_GraphicsDrawLine($backbuffer, $CentrePointX - ($GaugeWidth / 2 * $ScalingFactor) - $VariableMinValue * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2) * $ScalingFactor, $CentrePointX - ($GaugeWidth / 2 * $ScalingFactor) - $VariableMinValue * ($GaugeWidth / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor, $CentrePointY + ($GaugeHeight / 2) * $ScalingFactor, $hPen) Else _GDIPlus_GraphicsDrawLine($backbuffer, $CentrePointX - ($GaugeWidth / 2 * $ScalingFactor), ($CentrePointY + (($GaugeHeight / 2) * $ScalingFactor)) + ($VariableMinValue * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor), $CentrePointX + ($GaugeWidth / 2 * $ScalingFactor), ($CentrePointY + (($GaugeHeight / 2) * $ScalingFactor)) + ($VariableMinValue * ($GaugeHeight / ($VariableMaxValue - $VariableMinValue)) * $ScalingFactor), $hPen) EndIf _GDIPlus_GraphicsDrawPath($backbuffer, $Path, $hPen) ;Draw the outline _GDIPlus_PathDispose($Path) EndFunc ;==>_DrawBar ;Draw the checkmarks Func _DrawLinearGaugeCheckMarks(ByRef $backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $ScalingFactor, $VariableMaxValue, $NoOfCheckmarks, $CheckLength, ByRef $hPen) Local $TextBrush = _GDIPlus_BrushCreateSolid("0xFFFFFFFF") ;Solid white brush for the checkmarks Local $aPoints[$NoOfCheckmarks][2] ;Two cartesian coordinates for each checkmark Local $aMarkText[$NoOfCheckmarks] ; The text for each checkmark ;Create the font for the checkmarks Local $FontSize = 15 * $ScalingFactor ;The font size (Scaled) Local $Format = _GDIPlus_StringFormatCreate() Local $Family = _GDIPlus_FontFamilyCreate("Agency FB") Local $Font = _GDIPlus_FontCreate($Family, $FontSize, 2) For $i = 0 to($NoOfCheckmarks - 1) $aMarkText[$i] = Round($VariableMinValue + (($VariableMaxValue - $VariableMinValue) / ($NoOfCheckmarks - 1)) * $i) Next If $GaugeWidth >= $GaugeHeight Then _GDIPlus_GraphicsDrawLine($backbuffer, $CentrePointX - ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2 + 10) * $ScalingFactor, $CentrePointX + ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2 + 10) * $ScalingFactor, $hPen) For $i = 0 to($NoOfCheckmarks - 1) ;Set the coordinates of each checkmark $aPoints[$i][0] = ($CentrePointX - ($GaugeWidth / 2) * $ScalingFactor) + ($GaugeWidth * $ScalingFactor / ($NoOfCheckmarks - 1)) * $i ;Set x position depending on the number of checkmarks and the length of the gauge $aPoints[$i][1] = $CentrePointY - ($GaugeHeight / 2 + 10) * $ScalingFactor ;Height remains uniform Next For $i = 0 to($NoOfCheckmarks - 1) _GDIPlus_GraphicsDrawLine($backbuffer, $aPoints[$i][0], $aPoints[$i][1], $aPoints[$i][0], ($aPoints[$i][1] - $CheckLength * $ScalingFactor), $hPen) ;Draw a line $Checklength long $Layout = _GDIPlus_RectFCreate(($aPoints[$i][0] - $FontSize), ($aPoints[$i][1] - $CheckLength * $ScalingFactor - ($FontSize * 1.5) * $ScalingFactor), 0, 0) _GDIPlus_GraphicsDrawStringEx($backbuffer, $aMarkText[$i], $Font, $Layout, $Format, $TextBrush) ;Draw the sext for the checkmark Next Else _GDIPlus_GraphicsDrawLine($backbuffer, $CentrePointX - ($GaugeWidth / 2 * $ScalingFactor) - 10 * $ScalingFactor, $CentrePointY + ($GaugeHeight / 2) * $ScalingFactor, $CentrePointX - ($GaugeWidth / 2 * $ScalingFactor) - 10 * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2) * $ScalingFactor, $hPen) For $i = 0 to($NoOfCheckmarks - 1) $aPoints[$i][0] = $CentrePointX - ($GaugeWidth / 2 + 10) * $ScalingFactor $aPoints[$i][1] = ($CentrePointY + ($GaugeHeight / 2) * $ScalingFactor) - ($GaugeHeight * $ScalingFactor / ($NoOfCheckmarks - 1)) * $i Next For $i = 0 to($NoOfCheckmarks - 1) _GDIPlus_GraphicsDrawLine($backbuffer, $aPoints[$i][0], $aPoints[$i][1], $aPoints[$i][0] - $CheckLength * $ScalingFactor, $aPoints[$i][1], $hPen) $Layout = _GDIPlus_RectFCreate(($aPoints[$i][0] - $CheckLength * $ScalingFactor - $FontSize * 2.5), $aPoints[$i][1] - $FontSize / 1.5, 0, 0) _GDIPlus_GraphicsDrawStringEx($backbuffer, $aMarkText[$i], $Font, $Layout, $Format, $TextBrush) Next EndIf $Layout = 0 _GDIPlus_BrushDispose($TextBrush) _GDIPlus_FontDispose($Font) _GDIPlus_StringFormatDispose($Format) _GDIPlus_FontFamilyDispose($Family) EndFunc ;==>_DrawLinearGaugeCheckMarks Func _DrawLinearAllowedSpeed(ByRef $backbuffer, $CentrePointX, $CentrePointY, $GaugeWidth, $GaugeHeight, $MaxValue, $AllowedLimit, ByRef $AllowedPen, $ScalingFactor, $PrimaryAllowedSpeed) Local $Path = _GDIPlus_PathCreate() If $PrimaryAllowedSpeed Then If $GaugeWidth >= $GaugeHeight Then _GDIPlus_PathAddLine($Path, $CentrePointX - ($GaugeWidth / 2) * $ScalingFactor, $CentrePointY - ($GaugeHeight / 2 + 15) * $ScalingFactor + 3 * $ScalingFactor, ($CentrePointX - (($GaugeWidth / 2) * $ScalingFactor)) + ($GaugeWidth * $AllowedLimit / 100 * $ScalingFactor), $CentrePointY - ($GaugeHeight / 2 + 15) * $ScalingFactor + 3 * $ScalingFactor) Else _GDIPlus_PathAddLine($Path, $CentrePointX - ($GaugeWidth / 2) * $ScalingFactor - 10 * $ScalingFactor, $CentrePointY + ($GaugeHeight / 2) * $ScalingFactor, $CentrePointX - ($GaugeWidth / 2) * $ScalingFactor - 10 * $ScalingFactor, ($CentrePointY + ($GaugeHeight / 2) * $ScalingFactor) - ($GaugeHeight * $AllowedLimit / 100 * $ScalingFactor)) EndIf EndIf _GDIPlus_GraphicsDrawPath($backbuffer, $Path, $AllowedPen) _GDIPlus_PathDispose($Path) EndFunc ;==>_DrawLinearAllowedSpeed #EndRegion Draw Linear Gauge #Region Draw Radial Gauge ; #FUNCTION# ==================================================================================================================== ; Name...........: _Gauges_DrawRadialGauge ; Description ...: Creates a radial gauge in the graphics backbuffer ; Syntax.........: _Gauges_DrawRadialGauge(ByRef $backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Variable, $ScalingFactor = 1, $Clockwise = True, $StartAngle = 0, ; + $SweepAngle = 180, $NoOfCheckmarks = 6, $CheckLength = 20, $VariableMaxValue = 256, $VariableLimit = True, $AllowedLimit = 0, $VariableMinValue = 0) ; Parameters ....: $backbuffer - [byref] The graphics object to draw the gauge to. ; $CentrePointX - The horizontal coordinate of the centre of the gauge. ; $CentrePointY - The vertical coordinate of the centre of the gauge. ; $Radius - The radius of the outer edge of the gauge. ; $Thickness - The thickness of the gauge in pixels. ; $Variable - The variable used to change the gauge. ; $ScalingFactor - [optional] Scales the gauge by this factor. Default is 1, i.e. no scaling. ; $Clockwise - [optional] Boolean, determines whether the gauge fills clockwise or anti-clockwise. Default is TRUE, i.e. clockwise. ; $StartAngle - [optional] The starting angle of the gauge. Default is 0 (East). ; $SweepAngle - [optional] The sweep angle of the gauge (How many degrees it rotates through). The default is 180. ; $NoOfCheckmarks - [optional] The number of dashes indicating a scale around the gauge. Default is 6. ; $CheckLength - [optional] The length of the checkmarks in pixels. Default is 20. ; $VariableMaxValue - [optional] The maximum value of the variable. Default is 256. ; $VariableLimit - [optional] Boolean, if TRUE, displays a red limit indicator on the scale. Default is FALSE. ; $AllowedLimit -[optional] The value of the above limit if it is drawn. Default is 0. ; $VariableMinValue -[optional] The minimum value of the variable. Only used if negative numbers are required. Default is 0. ; Author ........: Simon Renardson (Sidley) ; Modified.......: ; Remarks .......: There is a more comprehensive function available, but I deemed it overkill for the majority of people. ; Related .......: _GDIPlus_ ; Example .......: Yes ; =============================================================================================================================== ;Draw Gauge (Speed/Load Level) ;Creates Completed Radial Gauge ;~ _DrawRadialGauge($CentrePointX, $CentrePointY, $Radius, $Thickness, $Variable, [$ScalingFactor = 1, [$Clockwise = True, [$StartAngle = 0, [$SweepAngle = 180, [$MaxValue = 256, [$NoOfCheckmarks = 10, [$CheckLength = 20]]]]]]]) Func _Gauges_DrawRadialGauge(ByRef $backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Variable, $ScalingFactor = 1, $Clockwise = True, $StartAngle = 0, $SweepAngle = 180, $NoOfCheckmarks = 6, $CheckLength = 20, $VariableMaxValue = 256, $VariableLimit = True, $AllowedLimit = 0, $VariableMinValue = 0) Local $BrushColour = ("0x" & HEX(BitOR(0xFFFF0000, BitShift((255 - (($Variable / $VariableMaxValue) * 255)), -8)))) Local $GaugeBrush = _GDIPlus_HatchBrushCreate(39, 0xFF000000, $BrushColour) Local $TextBrush = _GDIPlus_BrushCreateSolid($BrushColour) Local $Path = _GDIPlus_PathCreate() Local $hPen = _GDIPlus_PenCreate("0xFF96A29F", 2 * $ScalingFactor) ;Pen colour Local $AllowedPen = _GDIPlus_PenCreate("0xFFFF0000", 10 * $ScalingFactor) _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 2) ;TODO may need to be removed If $Clockwise Then ;If clockwise rotation _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle - $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue)), $Variable * $SweepAngle / ($VariableMaxValue - $VariableMinValue)) ;Add outer arc of gauge $Radius -= ($Thickness * $ScalingFactor) ;Reduce radius for inner arc by the thickness of the gauge _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle - $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue)) + ($Variable * $SweepAngle / ($VariableMaxValue - $VariableMinValue)), (-1 * $Variable * $SweepAngle / ($VariableMaxValue - $VariableMinValue))) ;Add inner arc of Gauge Else ;If anti-clockwise rotation _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle + $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue)), (-1 * $Variable * $SweepAngle / ($VariableMaxValue - $VariableMinValue))) ;Add outer arc of gauge $Radius -= ($Thickness * $ScalingFactor) ;Reduce radius for inner arcby the thickness of the gauge _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle + $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue)) - ($Variable * $SweepAngle / ($VariableMaxValue - $VariableMinValue)), $Variable * $SweepAngle / ($VariableMaxValue - $VariableMinValue)) ;Add inner arc of Gauge EndIf $Radius += ($Thickness * $ScalingFactor) ;Return radius to original size _GDIPlus_PathCloseFigure($Path) ;Close the two arcs _GDIPlus_GraphicsFillPath($backbuffer, $Path, $GaugeBrush) ;Fill the gauge and centre text with colour _DrawRadialGaugeText($backbuffer, $Variable, $CentrePointX, $CentrePointY, $Clockwise, $Radius, $ScalingFactor, $TextBrush) ;Draw the centre text _DrawGaugeOutline($backbuffer, $CentrePointX, $CentrePointY, $Radius, $VariableMaxValue, $VariableMinValue, $Thickness, $ScalingFactor, $Clockwise, $StartAngle, $SweepAngle, $hPen) ;Draw the gauge outline _DrawIndicators($backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Clockwise, $ScalingFactor, $StartAngle, $SweepAngle, $hPen, True) ;Draw scale arc _DrawCheckMarks($backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $ScalingFactor, $VariableMaxValue, $NoOfCheckmarks, $CheckLength, $StartAngle, $SweepAngle, $hPen, True) ;Draw scale checkmarks If $VariableLimit Then _DrawRadialAllowedSpeed($backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Clockwise, $ScalingFactor, $StartAngle, $SweepAngle, $AllowedLimit, $AllowedPen, True) ;Draw allowed speed limits EndIf _GDIPlus_PathDispose($Path) ;Tidy up _GDIPlus_BrushDispose($GaugeBrush) _GDIPlus_BrushDispose($TextBrush) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($AllowedPen) EndFunc ;==>_DrawRadialGauge ;Draw Variable Value (Text, Load/Speed Value) ;Creates The Centre Text of the Radial Gauge ;~ Func _DrawRadialGaugeText($ValueText, $CentrePointX, $CentrePointY, $Clockwise, $Radius, $ScalingFactor) Func _DrawRadialGaugeText(ByRef $backbuffer, $ValueText, $CentrePointX, $CentrePointY, $Clockwise, $Radius, $ScalingFactor, ByRef $TextBrush) Local $FontSize = 180 * $ScalingFactor ;Default font size (Scaled) Local $Text = _GDIPlus_PathCreate() Local $Format = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($Format, 2) ;Align right (Doesn't seem to make a difference) Local $Family = _GDIPlus_FontFamilyCreate("Agency FB") ;Centre text font Local $Font = _GDIPlus_FontCreate($Family, $FontSize, 2) Local $Layout = _GDIPlus_RectFCreate($CentrePointX - ($FontSize / 1.3) * $ScalingFactor, $CentrePointY - $FontSize * $ScalingFactor / 2) ;Set position (Top left) _GDIPlus_PathAddString($Text, Round($ValueText, 1), $Layout, $Family, 0, $FontSize * $ScalingFactor) ;Add value to path (To 1 decimal place) _GDIPlus_GraphicsFillPath($backbuffer, $Text, $TextBrush) $Layout = 0 ;Tidy up _GDIPlus_PathDispose($Text) _GDIPlus_FontDispose($Font) _GDIPlus_StringFormatDispose($Format) _GDIPlus_FontFamilyDispose($Family) EndFunc ;==>_DrawRadialGaugeText ;Draw Gauge Outline ;Creates the Outline of the Radial Gauge ;~ Func _DrawGaugeOutline($CentrePointX, $CentrePointY, $Radius, $Thickness, $ScalingFactor, $Clockwise, $StartAngle, $SweepAngle) Func _DrawGaugeOutline(ByRef $backbuffer, $CentrePointX, $CentrePointY, $Radius, $VariableMaxValue, $VariableMinValue, $Thickness, $ScalingFactor, $Clockwise, $StartAngle, $SweepAngle, ByRef $hPen) Local $Path = _GDIPlus_PathCreate() Local Const $PI = 3.141592653589793 $Radius += 2 ;Put the outline 2 px outside the gauge If $Clockwise Then ;If the gauge is to be filled clockwise _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle, $SweepAngle) _GDIPlus_GraphicsDrawLine($backbuffer, $CentrePointX + ($Radius * $ScalingFactor * Cos(($PI / 180) * ($StartAngle - $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue))))), $CentrePointY + ($Radius * $ScalingFactor * Sin(($PI / 180) * ($StartAngle - $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue))))), $CentrePointX + (($Radius - ($Thickness * $ScalingFactor) - (4 * $ScalingFactor)) * Cos(($PI / 180) * ($StartAngle - $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue)))) * $ScalingFactor), $CentrePointY + (($Radius - ($Thickness * $ScalingFactor) - 4) * $ScalingFactor * Sin(($PI / 180) * ($StartAngle - $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue))))), $hPen) $Radius -= ($Thickness * $ScalingFactor) ;Reduce radius for inner arc $Radius -= 4 _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), ($StartAngle + $SweepAngle), -$SweepAngle) Else _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle, -$SweepAngle) _GDIPlus_GraphicsDrawLine($backbuffer, $CentrePointX + ($Radius * $ScalingFactor * Cos(($PI / 180) * ($StartAngle + $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue))))), $CentrePointY + ($Radius * $ScalingFactor * Sin(($PI / 180) * ($StartAngle + $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue))))), $CentrePointX + (($Radius - ($Thickness * $ScalingFactor) - (4 * $ScalingFactor)) * Cos(($PI / 180) * ($StartAngle + $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue)))) * $ScalingFactor), $CentrePointY + (($Radius - ($Thickness * $ScalingFactor) - 4) * $ScalingFactor * Sin(($PI / 180) * ($StartAngle + $VariableMinValue * ($SweepAngle / ($VariableMaxValue - $VariableMinValue))))), $hPen) $Radius -= ($Thickness * $ScalingFactor) ;Reduce radius for inner arc $Radius -= 4 _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle - $SweepAngle, $SweepAngle) EndIf _GDIPlus_PathCloseFigure($Path) ;Close the path _GDIPlus_GraphicsDrawPath($backbuffer, $Path, $hPen) ;Draw the path _GDIPlus_PathDispose($Path) EndFunc ;==>_DrawGaugeOutline ;Draw Scale(s) ;Creates a number of indicative markings around the centre of the radial gauge ;~ Func _DrawIndicators($CentrePointX, $CentrePointY, $Radius, $Thickness, $Clockwise, $ScalingFactor, $StartAngle, $SweepAngle) Func _DrawIndicators(ByRef $backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Clockwise, $ScalingFactor, $StartAngle, $SweepAngle, ByRef $hPen, $Inside) Local $Path = _GDIPlus_PathCreate() $Radius -= ($Thickness + 20) * $ScalingFactor If $Clockwise Then _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle, $SweepAngle) Else ;Doesn't make much difference, but it will be 180 degrees out _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle, -$SweepAngle) EndIf _GDIPlus_GraphicsDrawPath($backbuffer, $Path, $hPen) _GDIPlus_PathDispose($Path) EndFunc ;==>_DrawIndicators ;Draw the allowed speed marker Func _DrawRadialAllowedSpeed(ByRef $backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $Clockwise, $ScalingFactor, $StartAngle, $SweepAngle, _ $AllowedLimit, ByRef $AllowedPen, $Inside) Local $Path = _GDIPlus_PathCreate() $Radius -= ($Thickness + 24) * $ScalingFactor If $Clockwise Then ;Display in a clockwise direction _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle, $SweepAngle * $AllowedLimit / 100) ElseIf NOT $Clockwise Then ;Display in an anti-clockwise direction _GDIPlus_PathAddArc($Path, ($CentrePointX - ($Radius * $ScalingFactor)), ($CentrePointY - ($Radius * $ScalingFactor)), ($Radius * $ScalingFactor * 2), ($Radius * $ScalingFactor * 2), $StartAngle, -$SweepAngle * $AllowedLimit / 100) EndIf _GDIPlus_GraphicsDrawPath($backbuffer, $Path, $AllowedPen) ;Draw with the red pen ($AllowedPen) _GDIPlus_PathDispose($Path) EndFunc ;==>_DrawRadialAllowedSpeed ;DrawCheckmarks (Checkmarks) ;Creates the checkmarks and text around the indicator gauge ;~ Func _DrawCheckMarks($CentrePointX, $CentrePointY, $Radius, $Thickness, $ScalingFactor, $MaxValue, $NoOfCheckmarks, $CheckLength, $StartAngle, $SweepAngle, $hPen) Func _DrawCheckMarks(ByRef $backbuffer, $CentrePointX, $CentrePointY, $Radius, $Thickness, $ScalingFactor, $VariableMaxValue, $NoOfCheckmarks, $CheckLength, $StartAngle, _ $SweepAngle, ByRef $hPen, $Inside) Local Const $PI = 3.141592653589793 Local $TextBrush = _GDIPlus_BrushCreateSolid("0xFFFFFFFF") Local $aPoints[$NoOfCheckmarks][4] ;Creates an array of four points for each check line Local $aMarkText[$NoOfCheckmarks] ;Creates the text for the checkmarks $Radius -= ($Thickness + 20) * $ScalingFactor For $i = 0 to ($NoOfCheckmarks-1) $aMarkText[$i] = Round((($VariableMaxValue - $VariableMinValue) / ($NoOfCheckmarks - 1)) * $i) + $VariableMinValue ;Round checkmark values to one decimal place Next Local $aAngles[$NoOfCheckmarks] = [] ;Create an array to hold the angles at which the checkmarks should be If $Clockwise Then For $i = 0 to($NoOfCheckmarks - 1) $aAngles[$i] = $StartAngle + (($SweepAngle / ($NoOfCheckmarks - 1)) * $i) ;Spread out checkmarks evenly over the gauge Next Else ;For anticlockwise filling gauge For $i = 0 to($NoOfCheckmarks - 1) $aAngles[$i] = $StartAngle - (($SweepAngle / ($NoOfCheckmarks - 1)) * $i) ;Spread out checkmarks evenly over the gauge Next EndIf For $i = 0 to($NoOfCheckmarks - 1) $aAngles[$i] = $aAngles[$i] * $PI / 180 ;Convert degrees to radians $aPoints[$i][0] = $CentrePointX + ($Radius * Cos($aAngles[$i]) * $ScalingFactor) ;Create cartesian coordinates for the check lines from polar coordinates (Radius, angle) $aPoints[$i][1] = $CentrePointY + ($Radius * Sin($aAngles[$i]) * $ScalingFactor) $aPoints[$i][2] = $CentrePointX + (($Radius - ($CheckLength * $ScalingFactor)) * Cos($aAngles[$i]) * $ScalingFactor) $aPoints[$i][3] = $CentrePointY + (($Radius - ($CheckLength * $ScalingFactor)) * Sin($aAngles[$i]) * $ScalingFactor) Next ;Font data for checkmark text Local $Format = _GDIPlus_StringFormatCreate() Local $Family = _GDIPlus_FontFamilyCreate("Agency FB") Local $FontSize = 15 Local $Font = _GDIPlus_FontCreate($Family, $FontSize * $ScalingFactor, 2) For $i = 0 to($NoOfCheckmarks - 1) ;For each checkmark _GDIPlus_GraphicsDrawLine($backbuffer, $aPoints[$i][0], $aPoints[$i][1], $aPoints[$i][2], $aPoints[$i][3], $hPen) ;Draw the lines $Layout = _GDIPlus_RectFCreate($aPoints[$i][2] - ($FontSize * Cos($aAngles[$i])) - (18 * $ScalingFactor), $aPoints[$i][3] - ($FontSize * Sin($aAngles[$i]) + 10), 0, 0) _GDIPlus_GraphicsDrawStringEx($backbuffer, $aMarkText[$i], $Font, $Layout, $Format, $TextBrush) Next $Layout = 0 _GDIPlus_BrushDispose($TextBrush) _GDIPlus_FontDispose($Font) _GDIPlus_StringFormatDispose($Format) _GDIPlus_FontFamilyDispose($Family) EndFunc ;==>_DrawCheckMarks #EndRegion Draw Radial Gauge #EndRegion Functions
-
- 3 comments
- 3 reviews
-
- gdi+
- useless scripts
-
(and 3 more)
Tagged with:
-
Here a little tool to display the histogram of an image (inspired by this thread): ) ;#AutoIt3Wrapper_Icon=Histogram1.ico #AutoIt3Wrapper_Compile_Both=y ;#AutoIt3Wrapper_Res_Field=CompanyName|UEZ Software Development ;#AutoIt3Wrapper_Res_Field=ProductName|GDI+ Show Histogram ;#AutoIt3Wrapper_Res_Field=ProductVersion|%AutoItVer% #AutoIt3Wrapper_Res_Fileversion=0.9.8.0 ;#AutoIt3Wrapper_Res_Field=Build|2015-07-10 #AutoIt3Wrapper_Res_LegalCopyright=UEZ Software Development #AutoIt3Wrapper_Res_Language=1033 ;#AutoIt3Wrapper_Res_Field=URL|http://www.autoitscript.com/forum/index.php?showtopic=147777 #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /pe /rm #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_UPX_Parameters=--best --lzma #AutoIt3Wrapper_Run_After=upx.exe --best --lzma "GDI+ Show Histogram_x64.exe" #AutoIt3Wrapper_UseX64=n #include <Constants.au3> #include <GUIConstantsEx.au3> #include <GDIPlus.au3> #include <WindowsConstants.au3> Opt("MustDeclareVars", 1) Opt("MouseCoordMode", 2) _GDIPlus_Startup() If @error Then Exit MsgBox(0x40010, "Error", "GDI+ Show Histogram can run on operating systems Vista or newer only!") Global $ghGDIPDll = $__g_hGDIPDll, $aRes Global Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]") Global Const $aFullScreen = WinGetPos($hFullScreen) Global Enum $HistogramFormatARGB, $HistogramFormatPARGB, $HistogramFormatRGB, $HistogramFormatGray, _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms534129(v=vs.85).aspx $HistogramFormatB, $HistogramFormatG, $HistogramFormatR, $HistogramFormatA Global $tStructChannel0 = DllStructCreate("uint channel0[256]") Global $pStructChannel0 = DllStructGetPtr($tStructChannel0) Global $tStructChannel1 = DllStructCreate("uint channel1[256]") Global $pStructChannel1 = DllStructGetPtr($tStructChannel1) Global $tStructChannel2 = DllStructCreate("uint channel2[256]") Global $pStructChannel2 = DllStructGetPtr($tStructChannel2) Global $tStructChannel3 = DllStructCreate("uint channel3[256]") Global $pStructChannel3 = DllStructGetPtr($tStructChannel3) Global $s, $sFile, $hImage, $bImgLoaded = False, $aLuminosity[257], $aCRGB[257] Global Const $STM_SETIMAGE = 0x0172, $iLineJoinBevel = 1, $frY = 0.299, $fgY = 0.587, $fbY = 0.114 Global Const $hGUI = GUICreate("GDI+ Show Histogram v0.98 beta by UEZ build 2015-07-13", 468, 310, -1, -1, Default, Default) GUISetBkColor(0xFFFFFF, $hGUI) Global Const $sLabel_Titel_Txt = "GDI+ Show Histogram" Global Const $iPosX_Label = 20, $iPosY_Label = 12 Global Const $iLabel_Titel_Shadow = GUICtrlCreateLabel($sLabel_Titel_Txt, $iPosX_Label, $iPosY_Label, 429, 57) GUICtrlSetFont(-1, 30, 400, 0, "Comic Sans MS", 4) GUICtrlSetColor(-1, 0xC0C0D8) Global Const $iLabel_Titel = GUICtrlCreateLabel($sLabel_Titel_Txt, $iPosX_Label - 4, $iPosY_Label - 4, 429, 57) GUICtrlSetFont(-1, 30, 400, 0, "Comic Sans MS", 4) GUICtrlSetColor(-1, 0x0000C0) GUICtrlSetBkColor(-1, -2) Global Const $iPic_Histogram = GUICtrlCreatePic("", 20, 90, 255, 127, -1, $WS_EX_STATICEDGE) GUICtrlSetCursor(-1, 14) Global Const $iPic_ColorGradient = GUICtrlCreatePic("", 20, 220, 255, 24, -1, $WS_EX_STATICEDGE) Global Const $iGroup = GUICtrlCreateGroup("Channel", 290, 84, 160, 164) Global Const $iRadio_L = GUICtrlCreateRadio("Luminosit&y (gray)", 300, 100, 110, 20) GUICtrlSetTip(-1, $frY & "*R, " & $fgY & "*G, " & $fbY & "*B") GUICtrlSetState($iRadio_L, $GUI_CHECKED) Global Const $iRadio_C = GUICtrlCreateRadio("&cRGB", 300, 130, 60, 20) GUICtrlSetTip(-1, "Combined average of RGB values") Global Const $iRadio_R = GUICtrlCreateRadio("&Red", 300, 160, 60, 20) Global Const $iRadio_G = GUICtrlCreateRadio("&Green", 300, 190, 60, 20) Global Const $iRadio_B = GUICtrlCreateRadio("&Blue", 300, 220, 60, 20) GUICtrlCreateGroup("", -99, -99, 1, 1) Global Const $iButton_Save = GUICtrlCreateButton("&Save", 209, 265, 70, 30) GUICtrlSetTip(-1, "Click button to save all histogram images") GUICtrlSetState(-1, $GUI_DISABLE) Global Const $iButton_Load = GUICtrlCreateButton("&Load", 290, 265, 70, 30) GUICtrlSetTip(-1, "Click button to load an image") Global Const $iButton_Exit = GUICtrlCreateButton("E&xit", 390, 265, 60, 30) Global $sLabelCredit_Txt = "coded by UEZ'13" Global $aLabelCredit_Pos[StringLen($sLabelCredit_Txt)][4], $u, $iFS = 6.5, $iY = 280 For $u = 0 To UBound($aLabelCredit_Pos) - 1 $aLabelCredit_Pos[$u][0] = StringMid($sLabelCredit_Txt, $u + 1, 1) $aLabelCredit_Pos[$u][1] = 20 + $u * ($iFS - 0.25) $aLabelCredit_Pos[$u][2] = $iY $aLabelCredit_Pos[$u][3] = GUICtrlCreateLabel($aLabelCredit_Pos[$u][0], $aLabelCredit_Pos[$u][1], $aLabelCredit_Pos[$u][2], $iFS, $iFS * 1.8) GUICtrlSetFont(-1, $iFS, 400, 0, "Comic Sans MS", 2) GUICtrlSetColor(-1, 0x006000) Next Global $aLabelCredit_AnimPos[300] For $u = 0 To UBound($aLabelCredit_AnimPos) - 1 $aLabelCredit_AnimPos[$u] = $iY Next Global Const $fLimes = 2.2, $fStep = 0.1 Global $iPT = 0, $z = Int((UBound($aLabelCredit_AnimPos) - ($fLimes * $fStep * 100)) / 2) For $u = 0 To $fLimes Step $fStep $aLabelCredit_AnimPos[$z] = $iY + Sin($iPT * 4) * 10 $z += 1 $iPT += 0.075 Next Global $ihGui_PreviewSize = 256, $iBGColor = 0xF0F0F0 Global $hGui_Preview = GUICreate("", $ihGui_PreviewSize, $ihGui_PreviewSize + 58, -1, -1, $WS_POPUP + $WS_BORDER, $WS_EX_TOPMOST, $hGUI) Global $iPic_Preview = GUICtrlCreatePic("", 0, 0, $ihGui_PreviewSize, $ihGui_PreviewSize) Global $idLabel_Info = GUICtrlCreateLabel("", 0, $ihGui_PreviewSize, $ihGui_PreviewSize * 2, 58) GUICtrlSetFont(-1, 8.5, 400, 0, "Arial", 5) GUICtrlSetColor(-1, $iBGColor) GUICtrlSetBkColor(-1, 0x333333) Global Const $hTexture_Checkerboard = _GDIPlus_CreateCheckerboardTexture(8, 0xFFFBFBFB, 0xFFFFFFFF) Global $hHBmp_L = _GDIPlus_CreateColorGradient("L", 256, 24) Global $hHBmp_C = _GDIPlus_CreateColorGradient("C", 256, 24) Global $hHBmp_R = _GDIPlus_CreateColorGradient("R", 256, 24) Global $hHBmp_G = _GDIPlus_CreateColorGradient("G", 256, 24) Global $hHBmp_B = _GDIPlus_CreateColorGradient("B", 256, 24) Global Const $hHBmp_HL = _GDIPlus_BitmapCreateFromScan0(256, 127) Global Const $hCtxt_HL = _GDIPlus_ImageGetGraphicsContext($hHBmp_HL) Global Const $hHBmp_HC = _GDIPlus_BitmapCloneArea($hHBmp_HL, 0, 0, 256, 127, 0x0026200A) Global Const $hCtxt_HC = _GDIPlus_ImageGetGraphicsContext($hHBmp_HC) Global Const $hHBmp_HR = _GDIPlus_BitmapCloneArea($hHBmp_HL, 0, 0, 256, 127, 0x0026200A) Global Const $hCtxt_HR = _GDIPlus_ImageGetGraphicsContext($hHBmp_HR) Global Const $hHBmp_HG = _GDIPlus_BitmapCloneArea($hHBmp_HL, 0, 0, 256, 127, 0x0026200A) Global Const $hCtxt_HG = _GDIPlus_ImageGetGraphicsContext($hHBmp_HG) Global Const $hHBmp_HB = _GDIPlus_BitmapCloneArea($hHBmp_HL, 0, 0, 256, 127, 0x0026200A) Global Const $hCtxt_HB = _GDIPlus_ImageGetGraphicsContext($hHBmp_HB) _GDIPlus_GraphicsClear($hCtxt_HL, 0xFFFFFFFF) _hBmpToPicControl($iPic_ColorGradient, $hHBmp_L) Global $hB_H = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hHBmp_HL) _hBmpToPicControl($iPic_Histogram, $hB_H, 1) GUISetState(@SW_HIDE, $hGui_Preview) GUISetState(@SW_SHOW, $hGUI) ControlFocus($hGUI, "", $iButton_Load) Global $hPen_H = _GDIPlus_PenCreate() $s = "L" Global $iDummyL = GUICtrlCreateDummy(), $iDummyC = GUICtrlCreateDummy(), $iDummyR = GUICtrlCreateDummy(), $iDummyG = GUICtrlCreateDummy(), $iDummyB = GUICtrlCreateDummy() Global $iHistogramFormat, $hHBmp_Preview, $aPosCtrl, $aPosWin, $aMouseInfo, $aPos_hWnd, $imp, $iVal, $iMpos_oldx, $iMpos_oldy, $sType, $iPaletteType, $iPixelFormat Global $fAverage_L, $fAverage_cRGB, $iAverage_R, $iAverage_B, $iAverage_G, $o = 0 Global $bShow = False, $bHide = False, $bIsAlpha = False, $bIsGray = False Global Const $iEntries = 256 Global Const $tagCOLORPALETTE = "uint Flags;" & _ ; Palette flags "uint Count;" & _ ; Number of color entries "uint ARGB[" & $iEntries & "];" ; Palette color AdlibRegister("AnimateLabel", 60) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iButton_Exit AdlibUnRegister("AnimateLabel") GUIDelete($hGui_Preview) GUIDelete($hGUI) _WinAPI_DeleteObject($hHBmp_L) _WinAPI_DeleteObject($hHBmp_C) _WinAPI_DeleteObject($hHBmp_L) _WinAPI_DeleteObject($hHBmp_R) _WinAPI_DeleteObject($hHBmp_G) _WinAPI_DeleteObject($hHBmp_B) If $hHBmp_Preview Then _WinAPI_DeleteObject($hHBmp_Preview) _GDIPlus_PenDispose($hPen_H) _GDIPlus_BrushDispose($hTexture_Checkerboard) _GDIPlus_GraphicsDispose($hCtxt_HL) _GDIPlus_GraphicsDispose($hCtxt_HC) _GDIPlus_GraphicsDispose($hCtxt_HR) _GDIPlus_GraphicsDispose($hCtxt_HG) _GDIPlus_GraphicsDispose($hCtxt_HB) _GDIPlus_BitmapDispose($hHBmp_HL) _GDIPlus_BitmapDispose($hHBmp_HC) _GDIPlus_BitmapDispose($hHBmp_HR) _GDIPlus_BitmapDispose($hHBmp_HG) _GDIPlus_BitmapDispose($hHBmp_HB) _GDIPlus_Shutdown() $tStructChannel0 = 0 $tStructChannel1 = 0 $tStructChannel2 = 0 $tStructChannel3 = 0 Exit Case $iRadio_L, $iDummyL If $s <> "L" Then _hBmpToPicControl($iPic_ColorGradient, $hHBmp_L) If $bImgLoaded Then $hB_H = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hHBmp_HL) _hBmpToPicControl($iPic_Histogram, $hB_H, 1) EndIf $s = "L" EndIf Case $iRadio_C, $iDummyC If $s <> "C" Then _hBmpToPicControl($iPic_ColorGradient, $hHBmp_C) If $bImgLoaded Then $hB_H = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hHBmp_HC) _hBmpToPicControl($iPic_Histogram, $hB_H, 1) EndIf $s = "C" EndIf Case $iRadio_R, $iDummyR If $s <> "R" Then _hBmpToPicControl($iPic_ColorGradient, $hHBmp_R) If $bImgLoaded Then $hB_H = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hHBmp_HR) _hBmpToPicControl($iPic_Histogram, $hB_H, 1) EndIf $s = "R" EndIf Case $iRadio_G, $iDummyG If $s <> "G" Then _hBmpToPicControl($iPic_ColorGradient, $hHBmp_G) If $bImgLoaded Then $hB_H = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hHBmp_HG) _hBmpToPicControl($iPic_Histogram, $hB_H, 1) EndIf $s = "G" EndIf Case $iRadio_B, $iDummyB If $s <> "B" Then _hBmpToPicControl($iPic_ColorGradient, $hHBmp_B) If $bImgLoaded Then $hB_H = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hHBmp_HB) _hBmpToPicControl($iPic_Histogram, $hB_H, 1) EndIf $s = "B" EndIf Case $iButton_Load $sFile = FileOpenDialog("Select an image", "", "Images (*.jpg;*.png;*.bmp;*.gif)", 3) If @error Then ContinueCase If $bImgLoaded Then _GDIPlus_ImageDispose($hImage) $hImage = _GDIPlus_ImageLoadFromFile($sFile) If @error Then MsgBox(0x40010, "Error", "Unable to load image", 30) ContinueCase EndIf GUICtrlSetState($iButton_Save, $GUI_ENABLE) $aRes = _GDIPlus_ImageGetFlags($hImage) If BitAND($aRes[0], $GDIP_IMAGEFLAGS_HASALPHA) Then $bIsAlpha = True Else $bIsAlpha = False EndIf If BitAND($aRes[0], $GDIP_IMAGEFLAGS_COLORSPACE_GRAY) Then $bIsGray = True Else $bIsGray = False EndIf $hHBmp_Preview = _GetImage($sFile, $ihGui_PreviewSize, $iBGColor) _hBmpToPicControl($iPic_Preview, $hHBmp_Preview, 1) If Not $bIsAlpha Then $pStructChannel3 = 0 $iHistogramFormat = $HistogramFormatRGB Else $pStructChannel3 = DllStructGetPtr($tStructChannel3) $iHistogramFormat = $HistogramFormatARGB EndIf _GDIPlus_BitmapGetHistogram($hImage, $iHistogramFormat, _GDIPlus_BitmapGetHistogramSize($iHistogramFormat), $pStructChannel0, $pStructChannel1, $pStructChannel2, $pStructChannel3) _GDIPlus_CreateHistogram() $bImgLoaded = True If BitAND(GUICtrlRead($iRadio_L), $GUI_CHECKED) Then $s = "" GUICtrlSendToDummy($iDummyL) ElseIf BitAND(GUICtrlRead($iRadio_C), $GUI_CHECKED) Then $s = "" GUICtrlSendToDummy($iDummyC) ElseIf BitAND(GUICtrlRead($iRadio_R), $GUI_CHECKED) Then $s = "" GUICtrlSendToDummy($iDummyR) ElseIf BitAND(GUICtrlRead($iRadio_G), $GUI_CHECKED) Then $s = "" GUICtrlSendToDummy($iDummyG) Else $s = "" GUICtrlSendToDummy($iDummyB) EndIf Case $iButton_Save If $sFile = "" Then ContinueLoop $sType = "png" $o += _GDIPlus_ImageSaveToFile($hHBmp_HL, StringRegExpReplace($sFile, "(.*)\..*", "$1") & "_Luminosity." & $sType) $o += _GDIPlus_ImageSaveToFile($hHBmp_HC, StringRegExpReplace($sFile, "(.*)\..*", "$1") & "_cRGB." & $sType) $o += _GDIPlus_ImageSaveToFile($hHBmp_HR, StringRegExpReplace($sFile, "(.*)\..*", "$1") & "_Red." & $sType) $o += _GDIPlus_ImageSaveToFile($hHBmp_HG, StringRegExpReplace($sFile, "(.*)\..*", "$1") & "_Green." & $sType) $o += _GDIPlus_ImageSaveToFile($hHBmp_HB, StringRegExpReplace($sFile, "(.*)\..*", "$1") & "_Blue." & $sType) If $o = 5 Then MsgBox(64 + 262144, "Information", "Images properly saved to " & StringRegExpReplace($sFile, "(.*)\\.*", "$1"), 30, $hGUI) Else MsgBox(16 + 262144, "Error", "One or more images could not saved to " & StringRegExpReplace($sFile, "(.*)\\.*", "$1") & ".", 30, $hGUI) EndIf EndSwitch If WinActive($hGUI) Then $aMouseInfo = GUIGetCursorInfo($hGUI) Switch $aMouseInfo[4] Case $iPic_Histogram If $bImgLoaded Then $aPos_hWnd = WinGetPos($hGUI) $imp = Max(1, Min(256, -19 + $aMouseInfo[0])) Switch $s Case "L" $iVal = $aLuminosity[$imp] Case "C" $iVal = $aCRGB[$imp] Case "R" $iVal = DllStructGetData($tStructChannel0, "channel0", $imp) Case "G" $iVal = DllStructGetData($tStructChannel1, "channel1", $imp) Case "B" $iVal = DllStructGetData($tStructChannel2, "channel2", $imp) EndSwitch If $iMpos_oldx <> $aMouseInfo[0] Or $iMpos_oldy <> $aMouseInfo[1] Then ToolTip("Index: " & $imp & ", Value: " & Round($iVal, 0) & ", Average: " & Round($fAverage_L, 2), $aPos_hWnd[0] + $aMouseInfo[0] - 60, $aMouseInfo[1] + $aPos_hWnd[1] - 20) $iMpos_oldx = $aMouseInfo[0] $iMpos_oldy = $aMouseInfo[1] EndIf ShowPreview($iPic_Histogram) $bShow = True $bHide = False EndIf Case Else If Not $bHide Then GUISetState(@SW_HIDE, $hGui_Preview) $bHide = True ToolTip("") EndIf $bShow = False EndSwitch EndIf WEnd Func AnimateLabel() Local Static $v = Int((UBound($aLabelCredit_AnimPos) - ($fLimes * $fStep * 100)) / 2) Local $u For $u = 0 To UBound($aLabelCredit_Pos) - 1 GUICtrlSetPos($aLabelCredit_Pos[$u][3], $aLabelCredit_Pos[$u][1], $aLabelCredit_AnimPos[$v - $u]) Next If $v - $u < 0 Then $v = UBound($aLabelCredit_AnimPos) - 1 $v -= 1 EndFunc ;==>AnimateLabel Func Min($a, $b) If $a < $b Then Return $a Return $b EndFunc ;==>Min Func Max($a, $b) If $a > $b Then Return $a Return $b EndFunc ;==>Max Func ShowPreview($iCtrl) $aPosWin = WinGetPos($hGUI) $aPosCtrl = ControlGetPos($hGUI, "", $iCtrl) Local $iNewX, $iNewX1 = $aPosWin[0] - $ihGui_PreviewSize + 10, $iNewX2 = $aPosWin[0] + $aPosWin[2] - 10 $iNewX = $iNewX1 If $iNewX1 < $aFullScreen[0] Then $iNewX = $iNewX2 EndIf WinMove($hGui_Preview, "", $iNewX, $aPosWin[1] + 50) GUISetState(@SW_SHOWNOACTIVATE, $hGui_Preview) EndFunc ;==>ShowPreview Func _GetImage($sFile, $iWH, $iBkClr = 0xFFFFFF, $bCheckerboard_Bg = True) Local $hBmp1, $hBitmap, $hGraphic, $hImage, $iW, $iH, $aGS, $hBmp2, $aFTS $aFTS = FileGetTime($sFile) If @error Then Return SetError(1, 0, 0) $hBmp1 = _WinAPI_CreateBitmap($iWH, $iWH, 1, 32) $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp1) $hGraphic = _GDIPlus_ImageGetGraphicsContext($hBitmap) _WinAPI_DeleteObject($hBmp1) $hImage = _GDIPlus_ImageLoadFromFile($sFile) $iW = _GDIPlus_ImageGetWidth($hImage) $iH = _GDIPlus_ImageGetHeight($hImage) GUICtrlSetData($idLabel_Info, StringRegExpReplace($sFile, ".*\\(.*)", "$1") & @LF & Round(FileGetSize($sFile) / 1024, 0) & " kb (" & $iW & " x " & $iH & ")" & @LF & $aFTS[0] & "/" & $aFTS[1] & "/" & $aFTS[2] & " " & $aFTS[3] & ":" & $aFTS[4] & ":" & $aFTS[5] & @LF & "Alpha: " & $bIsAlpha & ", Gray: " & $bIsGray) $aGS = _GetScale($iW, $iH, $iWH) Switch $bCheckerboard_Bg Case True ;~ _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, $iWH, $iWH, $hTexture_Checkerboard) _GDIPlus_GraphicsClear($hGraphic, BitOR(0xFF000000, $iBkClr)) _GDIPlus_GraphicsFillRect($hGraphic, $aGS[0], $aGS[1], $aGS[2], $aGS[3], $hTexture_Checkerboard) Case False _GDIPlus_GraphicsClear($hGraphic, BitOR(0xFF000000, $iBkClr)) EndSwitch _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, $aGS[0], $aGS[1], $aGS[2], $aGS[3]) _GDIPlus_ImageDispose($hImage) _GDIPlus_GraphicsDispose($hGraphic) $hBmp2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) _GDIPlus_BitmapDispose($hBitmap) Return $hBmp2 EndFunc ;==>_GetImage Func _GetScale($iW, $iH, $iWH) Local $aRet[4] If $iW <= $iWH And $iH <= $iWH Then $aRet[2] = $iW $aRet[3] = $iH $aRet[0] = ($iWH - $aRet[2]) / 2 $aRet[1] = ($iWH - $aRet[3]) / 2 ElseIf $iW > $iH Then $aRet[2] = $iWH $aRet[3] = $iH / ($iW / $iWH) $aRet[0] = 0 $aRet[1] = ($iWH - $aRet[3]) / 2 ElseIf $iW < $iH Then $aRet[2] = $iW / ($iH / $iWH) $aRet[3] = $iWH $aRet[0] = ($iWH - $aRet[2]) / 2 $aRet[1] = 0 ElseIf $iW = $iH Then $aRet[2] = $iWH $aRet[3] = $iWH $aRet[0] = 0 $aRet[1] = 0 EndIf Return $aRet EndFunc ;==>_GetScale Func _hBmpToPicControl($iCID, ByRef $hBmp, $iFlag = 0) Local $hOldBmp $hOldBmp = GUICtrlSendMsg($iCID, $STM_SETIMAGE, $IMAGE_BITMAP, $hBmp) If $hOldBmp Then _WinAPI_DeleteObject($hOldBmp) If $iFlag Then _WinAPI_DeleteObject($hBmp) EndFunc ;==>_hBmpToPicControl Func _GDIPlus_CreateHistogram($sRounding = "Ceiling") Local $iMaxL, $iMaxC, $iMaxR, $iMaxG, $iMaxB, $a, $r, $g, $b, $yR, $yG, $yB, $iRedAv, $iGreenAv, $iBlueAv For $i = 1 + $bIsAlpha To 256 If $bIsAlpha Then ;~ ConsoleWrite("Alpha: " & DllStructGetData($tStructChannel0, "channel0", $i) & @CRLF) $r = DllStructGetData($tStructChannel1, "channel1", $i) $yR = $r * $frY If DllStructGetData($tStructChannel1 , "channel1", $i) > $iMaxR Then $iMaxR = $r $g = DllStructGetData($tStructChannel2, "channel2", $i) $yG = $g * $fgY If DllStructGetData($tStructChannel2 , "channel2", $i) > $iMaxG Then $iMaxG = $g $b = DllStructGetData($tStructChannel3, "channel3", $i) $yB = $b * $fbY If DllStructGetData($tStructChannel3 , "channel3", $i) > $iMaxB Then $iMaxB = $b $fAverage_cRGB += $r + $g + $b $fAverage_L += $yR + $yG + $yB Else $r = DllStructGetData($tStructChannel0, "channel0", $i) $yR = $r * $frY If DllStructGetData($tStructChannel0 , "channel0", $i) > $iMaxR Then $iMaxR = $r $g = DllStructGetData($tStructChannel1, "channel1", $i) $yG = $g * $fgY If DllStructGetData($tStructChannel1 , "channel1", $i) > $iMaxG Then $iMaxG = $g $b = DllStructGetData($tStructChannel2, "channel2", $i) $yB = $b * $fbY If DllStructGetData($tStructChannel2 , "channel2", $i) > $iMaxB Then $iMaxB = $b EndIf $fAverage_cRGB += $r + $g + $b $fAverage_L += $yR + $yG + $yB $aLuminosity[$i] = $yR + $yG + $yB If $aLuminosity[$i] > $iMaxL Then $iMaxL = $aLuminosity[$i] $aCRGB[$i] = ($r + $g + $b) / 3 If $aCRGB[$i] > $iMaxC Then $iMaxC = $aCRGB[$i] Next $fAverage_cRGB /= 256 * 3 $fAverage_L /= 256 _GDIPlus_GraphicsClear($hCtxt_HL, 0xFFFFFFFF) _GDIPlus_GraphicsClear($hCtxt_HC, 0xFFFFFFFF) _GDIPlus_GraphicsClear($hCtxt_HR, 0xFFFFFFFF) _GDIPlus_GraphicsClear($hCtxt_HG, 0xFFFFFFFF) _GDIPlus_GraphicsClear($hCtxt_HB, 0xFFFFFFFF) Local $iDL = 1, $iDC = 1, $iDR = 1, $iDG = 1, $iDB = 1 Local $sRoundings = "Round,Ceiling,Floor," If Not StringInStr($sRoundings, $sRounding) Then $sRounding = "Ceiling" If $iMaxL > 128 Then ;~ $iDL = Ceiling($iMaxL / 128) $iDL = Execute($sRounding & "(" & $iMaxL / 128 & ")") Else $iDL = 1 / (128 / $iMaxL) EndIf If $iMaxC > 128 Then ;~ $iDC = Ceiling($iMaxC / 128) $iDC = Execute($sRounding & "(" & $iMaxC / 128 & ")") Else $iDC = 1 / (128 / $iMaxC) EndIf If $iMaxR > 128 Then ;~ $iDR = Ceiling($iMaxR / 128) $iDR = Execute($sRounding & "(" & $iMaxR / 128 & ")") Else $iDR = 1 / (128 / $iMaxR) EndIf If $iMaxG > 128 Then ;~ $iDG = Ceiling($iMaxG / 128) $iDG = Execute($sRounding & "(" & $iMaxG / 128 & ")") Else $iDG = 1 / (128 / $iMaxG) EndIf If $iMaxB > 128 Then ;~ $iDB = Ceiling($iMaxB / 128) $iDB = Execute($sRounding & "(" & $iMaxB / 128 & ")") Else $iDB = 1 / (128 / $iMaxB) EndIf For $i = 1 To 256 _GDIPlus_PenSetColor($hPen_H, 0xFF000000) _GDIPlus_GraphicsDrawLine($hCtxt_HL, $i - 1, 127, $i - 1, 127 - (Int($aLuminosity[$i] / $iDL)), $hPen_H) _GDIPlus_PenSetColor($hPen_H, 0xFF000000) _GDIPlus_GraphicsDrawLine($hCtxt_HC, $i - 1, 127, $i - 1, 127 - (Int($aCRGB[$i] / $iDC)), $hPen_H) _GDIPlus_PenSetColor($hPen_H, 0xFFB00000) If $bIsAlpha Then _GDIPlus_GraphicsDrawLine($hCtxt_HR, $i - 1, 127, $i - 1, 127 - (Int(DllStructGetData($tStructChannel1, "channel1", $i) / $iDR)), $hPen_H) _GDIPlus_PenSetColor($hPen_H, 0xFF00B000) _GDIPlus_GraphicsDrawLine($hCtxt_HG, $i - 1, 127, $i - 1, 127 - (Int(DllStructGetData($tStructChannel2, "channel2", $i) / $iDG)), $hPen_H) _GDIPlus_PenSetColor($hPen_H, 0xFF0000B0) _GDIPlus_GraphicsDrawLine($hCtxt_HB, $i - 1, 127, $i - 1, 127 - (Int(DllStructGetData($tStructChannel3, "channel3", $i) / $iDB)), $hPen_H) Else _GDIPlus_GraphicsDrawLine($hCtxt_HR, $i - 1, 127, $i - 1, 127 - (Int(DllStructGetData($tStructChannel0, "channel0", $i) / $iDR)), $hPen_H) _GDIPlus_PenSetColor($hPen_H, 0xFF00B000) _GDIPlus_GraphicsDrawLine($hCtxt_HG, $i - 1, 127, $i - 1, 127 - (Int(DllStructGetData($tStructChannel1, "channel1", $i) / $iDG)), $hPen_H) _GDIPlus_PenSetColor($hPen_H, 0xFF0000B0) _GDIPlus_GraphicsDrawLine($hCtxt_HB, $i - 1, 127, $i - 1, 127 - (Int(DllStructGetData($tStructChannel2, "channel2", $i) / $iDB)), $hPen_H) EndIf Next EndFunc ;==>_GDIPlus_CreateHistogram Func _GDIPlus_CreateColorGradient($sColorChannel, $iW, $iH, $bHBitmap = True) Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;~ _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2) Local $hPen = _GDIPlus_PenCreate() _GDIPlus_PenSetLineJoin($hPen, $iLineJoinBevel) Local $i, $c For $i = 0 To $iW $c = Hex($i, 2) Switch $sColorChannel Case "L" _GDIPlus_PenSetColor($hPen, "0xFF" & $c & $c & $c) Case "C" _GDIPlus_PenSetColor($hPen, "0xFF" & $c & $c & $c) Case "R" _GDIPlus_PenSetColor($hPen, "0xFF" & $c & "0000") Case "G" _GDIPlus_PenSetColor($hPen, "0xFF00" & $c & "00") Case "B" _GDIPlus_PenSetColor($hPen, "0xFF0000" & $c) EndSwitch _GDIPlus_GraphicsDrawLine($hCtxt, $i, 0, $i, $iH, $hPen) Next _GDIPlus_GraphicsDispose($hCtxt) _GDIPlus_PenDispose($hPen) If $bHBitmap Then Local $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) _GDIPlus_BitmapDispose($hBitmap) Return $hHBmp EndIf Return $hBitmap EndFunc ;==>_GDIPlus_CreateColorGradient Func _GDIPlus_CreateCheckerboardTexture($iSquareSize = 80, $iCol1 = 0xFFECECEC, $iCol2 = 0xFFDFDFDF) Local $hPatternBitmap = _GDIPlus_BitmapCreateFromScan0(2 * $iSquareSize, 2 * $iSquareSize) Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hPatternBitmap) Local $hBrush0 = _GDIPlus_BrushCreateSolid($iCol1) Local $hBrush1 = _GDIPlus_BrushCreateSolid($iCol2) _GDIPlus_GraphicsFillRect($hCtxt, 0, 0, $iSquareSize, $iSquareSize, $hBrush0) _GDIPlus_GraphicsFillRect($hCtxt, $iSquareSize, 0, $iSquareSize, $iSquareSize, $hBrush1) _GDIPlus_GraphicsFillRect($hCtxt, 0, $iSquareSize, $iSquareSize, $iSquareSize, $hBrush1) _GDIPlus_GraphicsFillRect($hCtxt, $iSquareSize, $iSquareSize, $iSquareSize, $iSquareSize, $hBrush0) Local $hTexture = _GDIPlus_TextureCreate($hPatternBitmap) _GDIPlus_GraphicsDispose($hCtxt) _GDIPlus_BitmapDispose($hPatternBitmap) _GDIPlus_BitmapDispose($hBrush0) _GDIPlus_BitmapDispose($hBrush1) Return $hTexture EndFunc ;==>_CreatePatternTexture GdipBitmapGetHistogram(), GdipBitmapGetHistogramSize() and 2 more GDI+ functions requires GDI+ v1.1 which means this will only run on Vista or higher operating systems. I hope the values are correct especially the value for luminosity. Br, UEZ
-
_GDIPlus_MarkScreenRegionAnimated build 2020-08-07 beta
UEZ posted a topic in AutoIt Example Scripts
Here another example to mark the desktop to get the marked region for capturing. This example is not perfect and not very fast (room for improvements). ;Coded by UEZ build 2020-08-07 beta ;Code cleanup up mLipok ; ;Short instruction: mark area on your desktop and press return key to capture. #include <APISysConstants.au3> #include <Array.au3> ;#include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> #include <WinAPIGdi.au3> #include <WinAPISysWin.au3> #include <WindowsConstants.au3> ; enum _PROCESS_DPI_AWARENESS -> https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx Global Enum $DPI_AWARENESS_INVALID = -1, $PROCESS_DPI_UNAWARE = 0, $PROCESS_SYSTEM_DPI_AWARE, $PROCESS_PER_MONITOR_DPI_AWARE ;https://docs.microsoft.com/en-us/windows/desktop/hidpi/dpi-awareness-context Global Enum $Context_UnawareGdiScaled = -5, $Context_PerMonitorAwareV2, $Context_PerMonitorAware, $Context_SystemAware, $Context_Unaware _WinAPI_SetProcessDpiAwarenessContext($Context_PerMonitorAware) Global $__g_hGUI_MarkArea, $__g_hGUI_Bg, $__g_iLabel_TL, $__g_iLabel_TM, $__g_iLabel_TR, $__g_iLabel_LM, $__g_iLabel_RM, $__g_iLabel_BL, $__g_iLabel_BM, _ $__g_iLabel_BR, $__g_iOldCursor, $__g_iW, $__g_iH, $__g_iColor_ResizeDots = 0xFFFFFF, $__g_iBorder = 4, $__g_bSelectionDone = False Global $aRect = _GDIPlus_MarkScreenRegionAnimated() Global $hImage_Capture = _ScreenCapture_Capture(@TempDir & "\Test.png", $aRect[0], $aRect[1], $aRect[0] + $aRect[2] - 1, $aRect[1] + $aRect[3] - 1, False) ShellExecute(@TempDir & "\Test.png") ;_ArrayDisplay($aRect, "Marked area coordinates") Func _GDIPlus_MarkScreenRegionAnimated($bAnim = True) _GDIPlus_Startup() Local Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]") Local Const $aFullScreen = WinGetPos($hFullScreen) $__g_hGUI_Bg = GUICreate("", $aFullScreen[2], $aFullScreen[3], $aFullScreen[0], $aFullScreen[1], BitOR($WS_CLIPCHILDREN, $WS_POPUP), $WS_EX_TOPMOST) ;to avoid cursor flickering and for proper control read WinSetTrans($__g_hGUI_Bg, "", 0x01) $__g_hGUI_MarkArea = GUICreate("", 1, 1, -1, -1, $bAnim ? $WS_POPUP : BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED), $__g_hGUI_Bg) GUISetBkColor(0xABCDEF, $__g_hGUI_MarkArea) If Not $bAnim Then $__g_iColor_ResizeDots = 0xFF0000 $__g_iLabel_TL = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top left GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_TM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_TR = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top right GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_LM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;left mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_RM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;right mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BL = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom left GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BR = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom right GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) GUISetState(@SW_SHOWNA, $__g_hGUI_Bg) GUISetState(@SW_SHOW, $__g_hGUI_MarkArea) $__g_iOldCursor = MouseGetCursor() GUISetCursor(3, 1, $__g_hGUI_Bg) GUISetCursor(3, 1, $__g_hGUI_MarkArea) _WinAPI_SetLayeredWindowAttributes($__g_hGUI_MarkArea, 0xABCDEF, 0xF0) Local $aMPos, $aPrevMPos[2] = [MouseGetPos(0) + 1, MouseGetPos(1) + 1], $iID, $aCI, $iX, $iY, $aOldWinPos, $aOldMPos, $bMoved Local $aGUIStartPos, $iKey_Exit = GUICtrlCreateButton("", $aFullScreen[0] - 10, $aFullScreen[1] - 10, 1, 1), $aAccelKeys[1][2] = [["{ENTER}", $iKey_Exit]] GUISetAccelerators($aAccelKeys, $__g_hGUI_Bg) GUISetAccelerators($aAccelKeys, $__g_hGUI_MarkArea) #forceref $bMoved Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iKey_Exit If $bAnim Then GUIRegisterMsg($WM_TIMER, "") DllCall("user32.dll", "bool", "KillTimer", "hwnd", $__g_hGUI_MarkArea, "uint_ptr", $iID) GUIRegisterMsg($WM_ERASEBKGND, "") EndIf _GDIPlus_Shutdown() Local $aResult = WinGetPos($__g_hGUI_MarkArea) $aResult[2] = WinGetClientSize($__g_hGUI_MarkArea)[0] $aResult[3] = WinGetClientSize($__g_hGUI_MarkArea)[1] GUIDelete($__g_hGUI_MarkArea) GUIDelete($__g_hGUI_Bg) If Not $__g_bSelectionDone Then $aResult = 0 Return $aResult EndSwitch $aMPos = MouseGetPos() If ($aMPos[0] <> $aPrevMPos[0] Or $aMPos[1] <> $aPrevMPos[1]) And (Not $__g_bSelectionDone) Then WinMove($__g_hGUI_MarkArea, "", $aMPos[0], $aMPos[1]) $aPrevMPos = $aMPos EndIf $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) If $aCI[2] And (Not $__g_bSelectionDone) Then $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If $bAnim Then GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND") GUIRegisterMsg($WM_TIMER, "PlayBorderAnim") $iID = DllCall("User32.dll", "uint_ptr", "SetTimer", "hwnd", $__g_hGUI_MarkArea, "uint_ptr", 1, "uint", 50, "ptr", 0)[0] EndIf While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) $aMPos = MouseGetPos() $__g_iW = Abs($aMPos[0] - $aGUIStartPos[0]) + 1 $__g_iH = Abs($aMPos[1] - $aGUIStartPos[1]) + 1 If $aMPos[0] < $aGUIStartPos[0] Then $iX = $aMPos[0] Else $iX = $aGUIStartPos[0] EndIf If $aMPos[1] < $aGUIStartPos[1] Then $iY = $aMPos[1] Else $iY = $aGUIStartPos[1] EndIf WinMove($__g_hGUI_MarkArea, "", $iX, $iY, $__g_iW, $__g_iH) UpdateCtrlPos($bAnim) WEnd $__g_bSelectionDone = True GUISetCursor(3, 1, $__g_hGUI_MarkArea) ElseIf $aCI[3] And $__g_bSelectionDone Then $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If _WinAPI_PtInRectEx(MouseGetPos(0), MouseGetPos(1), $aGUIStartPos[0], $aGUIStartPos[1], $aGUIStartPos[0] + $aGUIStartPos[2], $aGUIStartPos[1] + $aGUIStartPos[3]) Then $aMPos = MouseGetPos() $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) While $aCI[3] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aGUIStartPos[0] - ($aMPos[0] - MouseGetPos(0)), $aGUIStartPos[1] - ($aMPos[1] - MouseGetPos(1)), $__g_iW, $__g_iH) GUISetCursor(0, 1, $__g_hGUI_Bg) GUISetCursor(0, 1, $__g_hGUI_MarkArea) WEnd GUISetCursor(3, 1, $__g_hGUI_Bg) GUISetCursor(3, 1, $__g_hGUI_MarkArea) EndIf EndIf If $__g_bSelectionDone Then $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) If @error Then ContinueLoop Switch $aCI[4] Case $__g_iLabel_TL GUISetCursor(12, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), MouseGetPos(1), $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BR GUISetCursor(12, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_TR GUISetCursor(10, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], MouseGetPos(1), $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BL GUISetCursor(10, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), $aOldWinPos[1], $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_LM GUISetCursor(13, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), $aOldWinPos[1], $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3]) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_RM GUISetCursor(13, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3]) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_TM GUISetCursor(11, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], MouseGetPos(1), $aOldWinPos[2], $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BM GUISetCursor(11, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2], $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case Else GUISetCursor(3, 1, $__g_hGUI_MarkArea) EndSwitch EndIf Until False EndFunc ;==>_GDIPlus_MarkScreenRegionAnimated Func UpdateCtrlPos($bAnim = True) Local Const $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If $__g_bSelectionDone And $bAnim Then GUIRegisterMsg($WM_TIMER, "") $__g_iW = $aGUIStartPos[2] $__g_iH = $aGUIStartPos[3] ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TL, 0, 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TM, ($__g_iW - $__g_iBorder) / 2, 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TR, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_LM, 0, ($__g_iH - $__g_iBorder) / 2, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_RM, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), ($__g_iH - $__g_iBorder) / 2, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BL, 0, ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BM, ($__g_iW - $__g_iBorder) / 2, ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BR, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) If $__g_bSelectionDone And $bAnim Then GUIRegisterMsg($WM_TIMER, "PlayBorderAnim") EndFunc ;==>UpdateCtrlPos Func PlayBorderAnim() Local $aWinPos = WinGetClientSize($__g_hGUI_MarkArea), $iW = $aWinPos[0], $iH = $aWinPos[1] Local Static $fOffset = 0 Local Const $iSize = $__g_iBorder / 2 Local Const $hDC = _WinAPI_GetDC($__g_hGUI_MarkArea) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) Local Const $hPen = _GDIPlus_PenCreate(0xFF0178D7, $iSize), $hPen2 = _GDIPlus_PenCreate(0xFFFFFFFF, $iSize), _ $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $__g_iColor_ResizeDots), $hPen3 = _GDIPlus_PenCreate(0xFF000000) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASHDOT) _GDIPlus_GraphicsClear($hCanvas, 0xFFABCDEF) ;for faster performance direct dll calls DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen2, "float", 1 + $iSize, "float", 1 + $iSize, "float", $iW - 2 * $iSize - 2, "float", $iH - 2 * $iSize - 2) DllCall($__g_hGDIPDll, "int", "GdipSetPenDashOffset", "handle", $hPen, "float", $fOffset) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen, "float", 1 + $iSize, "float", 1 + $iSize, "float", $iW - 2 * $iSize - 2, "float", $iH - 2 * $iSize - 2) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) / 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) / 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) / 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) / 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCCOPY) $fOffset += 0.5 _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($__g_hGUI_MarkArea, $hDC) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen2) _GDIPlus_PenDispose($hPen3) _GDIPlus_BrushDispose($hBrush) EndFunc ;==>PlayBorderAnim Func WM_ERASEBKGND($hWnd, $iMsgm, $wParam, $lParam) ;suppress repainting to avoid flickering but causes some other side effects #forceref $iMsgm, $wParam, $lParam, $hWnd Local Const $hBrush = _WinAPI_CreateSolidBrush(0xEFCDAB) ;BGR format ;~ _WinAPI_RedrawWindow($__g_hGUI_MarkArea, 0, 0, BitOR($RDW_NOERASE, $RDW_NOCHILDREN, $RDW_NOFRAME, $RDW_VALIDATE)) _WinAPI_SetClassLongEx($__g_hGUI_MarkArea, $GCL_HBRBACKGROUND, $hBrush) _WinAPI_DeleteObject($hBrush) Return 0 EndFunc ;==>WM_ERASEBKGND ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext Func _WinAPI_SetProcessDpiAwarenessContext($DPIAwareContext = $Context_PerMonitorAware, $hGUI = 0, $iMode = 3) ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext $DPIAwareContext = ($DPIAwareContext < -5) ? -5 : ($DPIAwareContext > -1) ? -1 : $DPIAwareContext $iMode = ($iMode < 1) ? 1 : ($iMode > 3) ? 3 : $iMode Switch $iMode Case 1 Local $hDC = _WinAPI_GetDC($hGUI) Local $aResult1 = DllCall("user32.dll", "ptr", "GetDpiFromDpiAwarenessContext", "ptr", $hDC) If @error Or Not IsArray($aResult1) Then Return SetError(11, 0, 0) _WinAPI_ReleaseDC(0, $hDC) Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult1[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(12, 0, 0) Case 2 ;~ If Not $hGUI Then $hGUI = WinGetHandle(AutoItWinGetTitle()) Local $aResult2 = DllCall("user32.dll", "int", "GetWindowDpiAwarenessContext", "ptr", $hGUI) If @error Or Not IsArray($aResult2) Then Return SetError(21, 0, 0) Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult2[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(22, 0, 0) Case 3 Local $aResult31 = DllCall("user32.dll", "ptr", "GetThreadDpiAwarenessContext") If @error Or Not IsArray($aResult31) Then Return SetError(31, 0, 0) Local $aResult32 = DllCall("user32.dll", "ptr", "GetAwarenessFromDpiAwarenessContext", "ptr", $aResult31[0]) If @error Or Not IsArray($aResult32) Then Return SetError(32, 0, 0) Local $aResult = DllCall("user32.dll", "Bool", "SetThreadDpiAwarenessContext", "int", $aResult32[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(33, 0, 0) EndSwitch Return 1 EndFunc ;==>_WinAPI_SetProcessDpiAwarenessContext Just press the lmb and move your mouse. When lmb is released you can adjust the size of the window by dragging the white rectangle to any direction. Rmb will move the marked area. Press ESC to get the coordinates of the marked region. If you have any improvements, please post it here. Tested on Win10 x64 only. -
Hey, All! I was looking into the help file at all the drawing utilities and I was wondering if you draw a translucent line that follows your cursor. Upon looking for ideas I came across this thread (1.0) and saw UEZ's response. I also came across another post that UEZ replied to and found this reply (1.1) where he shows how you can draw on the desktop. This is what I'm looking for however I'd still like to be able to interact with a designated application and have the line/curve/vector passively follow it. Obviously we don't move our cursor very linearly so it would have to be able to draw on vectors. Am I over complicating this? Any ideas or starting points I should look more into? 1.0 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global Const $aFullScreen = WinGetPos(WinGetHandle("[TITLE:Program Manager;CLASS:Progman]")) Global $iHeight = 4 Global Const $hGUI = GUICreate("Screen Ruler Underline for free :-)", $aFullScreen[2], $iHeight, $aFullScreen[0], MouseGetPos(1), $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TRANSPARENT)) GUISetBkColor(0x000000) WinSetTrans($hGUI, "", 0xA0) GUISetState() HotKeySet("{ESC}", "_Exit") Do WinMove($hGUI, "", $aFullScreen[0], MouseGetPos(1)) Until Not Sleep(50) Func _Exit() GUIDelete() Exit EndFunc _____________ 1.1 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> AutoItSetOption("GUIOnEventMode", 1) Global $hGUI, $hDC, $hPen, $obj_orig $hGUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP) WinSetTrans($hGUI, "", 1) GUISetState() _line() Func _line() $hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop) $hPen = _WinAPI_CreatePen($PS_SOLID, 2, 0x00ff) $obj_orig = _WinAPI_SelectObject($hDC, $hPen) GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "Draw", $hGUI) GUISetOnEvent(-3, "_Exit") Do Until Not Sleep(1000) EndFunc ;==>_line Func Draw() Local $aMC, $mxo, $myo $aMC = GUIGetCursorInfo($hGUI) Do GUISetCursor(0, 1, 0) $mxo = $aMC[0] $myo = $aMC[1] $aMC = GUIGetCursorInfo($hGUI) If $mxo <> $aMC[0] Or $myo <> $aMC[1] Then _WinAPI_DrawLine($hDC, $aMC[0], $aMC[1], $mxo, $myo) _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE) $mxo = $aMC[0] $myo = $aMC[1] EndIf Sleep(10) Until Not $aMC[2] EndFunc Func _Exit() _WinAPI_SelectObject($hDC, $obj_orig) _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) Exit EndFunc
-
I'm building a tool to remotely monitor CPU usage on my server. I have a working tool but I have a few issues I'd like some help with. 1. The app uses more system memory on a continual growth rate... It eventually starts displaying strange artifacts and the background flashes between black and and white behind the GDI+ elements. I determined this couldn't be left to run for any amount of time (greater than 15-20 minutes) - Very frustrating. I suspect it's because it keeps drawing new GDI+ elements to replace the previous cycle ... the $bar1 = "" is enough to remove the image and allow the new image to be drawn there, but I don't have a handle for the original GDI+ element to throw it away... Not sure where they go... I also suspect there could be a better way to do what I'm doing here, but from a problem solving perspective - this is what I came up with - I will accept suggestions for how better to accomplish the same / better or acceptable results I will not however accept corrections on grammar, punctuation or commenting - I didn't comment this as I was going, I use the variables that make sense to me (or as they were when I lifted them from the scraps I found on the internet) and you can never be too careful with punctuation. 2. I have a WMI query that is used to remotely pull the CPU data from the server - if I supply the wrong credentials the app crashes... I tried to make it show an error and go back to allow me to try again ... doesn't work. Any help with catching that error and preventing the crash would be super helpful. (works great if the credentials are correct; domain or local) The whole thing below... #include <Date.au3> #include <WindowsConstants.au3> #include <GuiConstantsEX.au3> #include <EditConstants.au3> #include <ButtonConstants.au3> #include <GDIPlus.au3> Global $__g_hGDIPDll Global $graph[21] Global $timer, $timeout = 500 Global $hFlag = 0 $timer = TimerInit() $main = GUICreate("CPU Graph", 125, 220, Default, Default, Default, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)) $bar1 = GUICtrlCreatePic("", 10, 10, 5, 100) $bar2 = GUICtrlCreatePic("", 15, 10, 5, 100) $bar3 = GUICtrlCreatePic("", 20, 10, 5, 100) $bar4 = GUICtrlCreatePic("", 25, 10, 5, 100) $bar5 = GUICtrlCreatePic("", 30, 10, 5, 100) $bar6 = GUICtrlCreatePic("", 35, 10, 5, 100) $bar7 = GUICtrlCreatePic("", 40, 10, 5, 100) $bar8 = GUICtrlCreatePic("", 45, 10, 5, 100) $bar9 = GUICtrlCreatePic("", 50, 10, 5, 100) $bar10 = GUICtrlCreatePic("", 55, 10, 5, 100) $bar11 = GUICtrlCreatePic("", 60, 10, 5, 100) $bar12 = GUICtrlCreatePic("", 65, 10, 5, 100) $bar13 = GUICtrlCreatePic("", 70, 10, 5, 100) $bar14 = GUICtrlCreatePic("", 75, 10, 5, 100) $bar15 = GUICtrlCreatePic("", 80, 10, 5, 100) $bar16 = GUICtrlCreatePic("", 85, 10, 5, 100) $bar17 = GUICtrlCreatePic("", 90, 10, 5, 100) $bar18 = GUICtrlCreatePic("", 95, 10, 5, 100) $bar19 = GUICtrlCreatePic("", 100, 10, 5, 100) $bar20 = GUICtrlCreatePic("", 105, 10, 5, 100) $host = GUICtrlCreateInput("Host", 10, 115, 100, 20, $ES_AUTOHSCROLL) $user = GUICtrlCreateInput("User", 10, 140, 100, 20, $ES_AUTOHSCROLL) GUICtrlSetFont(-1, 8, 400) $pass = GUICtrlCreateInput("Pass", 10, 165, 100, 20, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL)) GUICtrlSetFont(-1, 8, 400) $start = GUICtrlCreateButton("Start", 10, 190, 100, 20, $BS_DEFPUSHBUTTON) GUISetState() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $start Then ConnectWMI() If $hFlag = 1 Then If TimerDiff($timer) > $timeout Then UpdateGraph() EndIf WEnd Func ConnectWMI() Global $hostname = GUICtrlRead($host) If Ping($hostname, 2000) = 0 Then Msgbox(0, "Error", "Unable to reach specified host") Return 0 EndIf Local $usr = GUICtrlRead($user) Local $pwd = GUICtrlRead($pass) Global $objSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") Global $objWMIService = $objSWbemLocator.ConnectServer($hostname, "root\cimv2", $usr, $pwd) If @error Then Msgbox(0, "Error", "Unable to connect to the Host with the supplied credentials") Return 0 EndIf $hFlag = 1 UpdateGraph() EndFunc Func UpdateGraph() $usage = _Processor_Usage() For $i = 1 to 19 $graph[$i] = $graph[$i+1] Next $graph[20] = $usage GUICtrlSetImage($bar1, "") CreateBar($bar1, $graph[1]) GUICtrlSetImage($bar2, "") CreateBar($bar2, $graph[2]) GUICtrlSetImage($bar3, "") CreateBar($bar3, $graph[3]) GUICtrlSetImage($bar4, "") CreateBar($bar4, $graph[4]) GUICtrlSetImage($bar5, "") CreateBar($bar5, $graph[5]) GUICtrlSetImage($bar6, "") CreateBar($bar6, $graph[6]) GUICtrlSetImage($bar7, "") CreateBar($bar7, $graph[7]) GUICtrlSetImage($bar8, "") CreateBar($bar8, $graph[8]) GUICtrlSetImage($bar9, "") CreateBar($bar9, $graph[9]) GUICtrlSetImage($bar10, "") CreateBar($bar10, $graph[10]) GUICtrlSetImage($bar11, "") CreateBar($bar11, $graph[11]) GUICtrlSetImage($bar12, "") CreateBar($bar12, $graph[12]) GUICtrlSetImage($bar13, "") CreateBar($bar13, $graph[13]) GUICtrlSetImage($bar14, "") CreateBar($bar14, $graph[14]) GUICtrlSetImage($bar15, "") CreateBar($bar15, $graph[15]) GUICtrlSetImage($bar16, "") CreateBar($bar16, $graph[16]) GUICtrlSetImage($bar17, "") CreateBar($bar17, $graph[17]) GUICtrlSetImage($bar18, "") CreateBar($bar18, $graph[18]) GUICtrlSetImage($bar19, "") CreateBar($bar19, $graph[19]) GUICtrlSetImage($bar20, "") CreateBar($bar20, $graph[20]) $timer = TimerInit() EndFunc Func _Processor_Usage() Dim $Col_Items = $objWMIService.ExecQuery('SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor', 'WQL') Local $Obj_Item For $Obj_Item In $Col_Items Return $Obj_Item.PercentProcessorTime Next EndFunc Func CreateBar($target, $value) Local $width=5, $height=2 _GDIPlus_Startup() $hImage = DLL_BitmapCreate($width, $height*50) $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;100 If $value > 98 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF00F2F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, $width, $height, $hBrush) EndIf ;98 If $value > 96 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF0182C") _GDIPlus_GraphicsFillRect($hGraphic, 0, 2, $width, $height, $hBrush) EndIf ;96 If $value > 94 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF0212A") _GDIPlus_GraphicsFillRect($hGraphic, 0, 4, $width, $height, $hBrush) EndIf ;94 If $value > 92 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF02B28") _GDIPlus_GraphicsFillRect($hGraphic, 0, 6, $width, $height, $hBrush) EndIf ;92 If $value > 90 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF03426") _GDIPlus_GraphicsFillRect($hGraphic, 0, 8, $width, $height, $hBrush) EndIf ;90 If $value > 88 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF03E24") _GDIPlus_GraphicsFillRect($hGraphic, 0, 10, $width, $height, $hBrush) EndIf ;88 If $value > 86 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF04722") _GDIPlus_GraphicsFillRect($hGraphic, 0, 12, $width, $height, $hBrush) EndIf ;86 If $value > 84 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF05120") _GDIPlus_GraphicsFillRect($hGraphic, 0, 14, $width, $height, $hBrush) EndIf ;84 If $value > 82 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF05A1D") _GDIPlus_GraphicsFillRect($hGraphic, 0, 16, $width, $height, $hBrush) EndIf ;82 If $value > 80 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF0641B") _GDIPlus_GraphicsFillRect($hGraphic, 0, 18, $width, $height, $hBrush) EndIf ;80 If $value > 78 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF06D19") _GDIPlus_GraphicsFillRect($hGraphic, 0, 20, $width, $height, $hBrush) EndIf ;78 If $value > 76 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF07717") _GDIPlus_GraphicsFillRect($hGraphic, 0, 22, $width, $height, $hBrush) EndIf ;76 If $value > 74 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF08015") _GDIPlus_GraphicsFillRect($hGraphic, 0, 24, $width, $height, $hBrush) EndIf ;74 If $value > 72 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF08A13") _GDIPlus_GraphicsFillRect($hGraphic, 0, 26, $width, $height, $hBrush) EndIf ;72 If $value > 70 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF09311") _GDIPlus_GraphicsFillRect($hGraphic, 0, 28, $width, $height, $hBrush) EndIf ;70 If $value > 68 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF09311") _GDIPlus_GraphicsFillRect($hGraphic, 0, 30, $width, $height, $hBrush) EndIf ;68 If $value > 66 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFF09D0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 32, $width, $height, $hBrush) EndIf ;66 If $value > 64 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFECA20F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 34, $width, $height, $hBrush) EndIf ;64 If $value > 62 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFE8A80F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 36, $width, $height, $hBrush) EndIf ;62 If $value > 60 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFE5AD0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 38, $width, $height, $hBrush) EndIf ;60 If $value > 58 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFE1B30F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 40, $width, $height, $hBrush) EndIf ;58 If $value > 56 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFDEB80F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 42, $width, $height, $hBrush) EndIf ;56 If $value > 54 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFDABE0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 44, $width, $height, $hBrush) EndIf ;54 If $value > 52 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFD6C30F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 46, $width, $height, $hBrush) EndIf ;52 If $value > 50 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFCFCE0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 48, $width, $height, $hBrush) EndIf ;50 If $value > 48 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFCCD40F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 50, $width, $height, $hBrush) EndIf ;48 If $value > 46 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFC8D90F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 52, $width, $height, $hBrush) EndIf ;46 If $value > 44 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFC4DF0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 54, $width, $height, $hBrush) EndIf ;44 If $value > 42 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFC1E40F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 56, $width, $height, $hBrush) EndIf ;42 If $value > 40 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFBDEA0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 58, $width, $height, $hBrush) EndIf ;40 If $value > 38 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFBAF00F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 60, $width, $height, $hBrush) EndIf ;38 If $value > 36 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFBAF00F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 62, $width, $height, $hBrush) EndIf ;36 If $value > 34 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFADEF0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 64, $width, $height, $hBrush) EndIf ;34 If $value > 32 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFFA1EE0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 66, $width, $height, $hBrush) EndIf ;32 If $value > 30 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF94ED0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 68, $width, $height, $hBrush) EndIf ;30 If $value > 28 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF88ED0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 70, $width, $height, $hBrush) EndIf ;28 If $value > 26 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF7CEC0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 72, $width, $height, $hBrush) EndIf ;26 If $value > 24 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF6FEB0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 74, $width, $height, $hBrush) EndIf ;24 If $value > 22 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF63EA0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 76, $width, $height, $hBrush) EndIf ;22 If $value > 20 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF56EA0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 78, $width, $height, $hBrush) EndIf ;20 If $value > 18 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF56EA0F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 80, $width, $height, $hBrush) EndIf ;18 If $value > 16 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF4AE90F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 82, $width, $height, $hBrush) EndIf ;16 If $value > 14 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF3EE80F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 84, $width, $height, $hBrush) EndIf ;14 If $value > 12 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF31E70F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 86, $width, $height, $hBrush) EndIf ;12 If $value > 10 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF25E70F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 88, $width, $height, $hBrush) EndIf ;10 If $value > 8 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF18E60F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 90, $width, $height, $hBrush) EndIf ;8 If $value > 6 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF0CE50F") _GDIPlus_GraphicsFillRect($hGraphic, 0, 92, $width, $height, $hBrush) EndIf ;6 If $value > 4 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF00E510") _GDIPlus_GraphicsFillRect($hGraphic, 0, 94, $width, $height, $hBrush) EndIf ;4 If $value > 2 Then $hBrush = _GDIPlus_BrushCreateSolid("0xFF00E509") _GDIPlus_GraphicsFillRect($hGraphic, 0, 96, $width, $height, $hBrush) EndIf ;2 $hBrush = _GDIPlus_BrushCreateSolid("0xFF00E509") _GDIPlus_GraphicsFillRect($hGraphic, 0, 98, $width, $height, $hBrush) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) GUICtrlSendMsg($target, 0x172, 0, $hBitmap) _WinAPI_DeleteObject($hBitmap) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() EndFunc ;==>_CreateBar Func DLL_BitmapCreate($width, $height) Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $width, "int", $height, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0) Return $aResult[6] EndFunc ;==>DLL_BitmapCreate
-
Hello, I am making a program where the button is an image that "changes" when specific conditions are fullfilled. Problem is that these images have different dimensions and when a smaller picture is displayed over a bigger one both will be seen, therefore i would like the images to be hidden, invincible or, alternatively, deleted. I have tried using _GDIPlus_GraphicsClear() with no luck However that might just be me not using it right as im quite new to autoit Here is the code if you want to test run it: Thanks to everyone helping!
-
Hello! I've been working on this UDF for some time, but when I read Seeking "kinetic typography" capability in au3 topic, I decided to share it. This UDF brings some functions for creating animations in GDI+ without worrying about rendering or calculating. Features: Adding basic shapes (rectangle, ellipse) and text Animating object properties (like position or size) Animatable transformations (translate, rotate, scale) Double-buffering Rendering to a window or GUI control Enjoy! Motion Graphics UDF