Jump to content

Search the Community

Showing results for tags 'gdi+'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

  1. 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.3 build 2025-06-05 beta #include-once #include <GDIPlus.au3> #include <Memory.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_Ver2 ; #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 .......: For animated WebP images see below! ; 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 ;==>BitmapCountColors ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_ExtractAnimFramesToDisk ; Description ...: Extracts the frames of a WebP animated file ; Syntax ........: WebP_ExtractAnimFramesToDisk($sFile, $sDestPath = ""[, $sOutputFormat = "png"[, $sPath2DLL = ""]]) ; Parameters ....: $sFilename - file to load. Default is "". ; $sDestPath - destination folder. If empty then script path will be used. ; $sOutputFormat - [optional] a string value. Default is "png". ; $sPath2DLL - [optional] a string value. Default is "". ; Return values .: 0 for failure, 1 for success. ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func WebP_ExtractAnimFramesToDisk($sFilename, $sDestPath = "", $sOutputFormat = "png", $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found Local Const $iResult = DllCall($sDLL, "byte", "WebP_ExtractAnimFramesToDisk", "str", $sFilename, "str", $sDestPath, "str", $sOutputFormat)[0] If $iResult = 0 Then Return SetError(2, 0, 0) Return $iResult EndFunc ;==>WebP_ExtractAnimFramesToDisk ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_GetAmountOfAnimFrames ; Description ...: Get the amount of frames from an animated webp file ; Syntax ........: WebP_GetAmountOfAnimFrames($sFilename[, $sPath2DLL = ""]) ; Parameters ....: $sFilename - a string value. ; $sPath2DLL - [optional] a string value. Default is "". ; Return values .: 0 for failure, otherwise the amount of frames ; Author ........: UEZ ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func WebP_GetAmountOfAnimFrames($sFilename, $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found Local Const $iResult = DllCall($sDLL, "uint", "WebP_GetAmountOfAnimFrames", "str", $sFilename)[0] If Not $iResult Or @error Then Return SetError(2, 0, 0) Return $iResult EndFunc ;==>WebP_GetAmountOfAnimFrames ; #FUNCTION# ==================================================================================================================== ; Name ..........: WebP_ExtractAnimFramesToMem ; Description ...: Extracts all frames from a webp animated file to the memory ; Syntax ........: WebP_ExtractAnimFramesToMem($sFilename, Byref $iUB[, $sPath2DLL = ""]) ; Parameters ....: $sFilename - a string value. ; $iUB - [in/out] an integer value. Needed to save the amount of data in struct array -> frames * 2 ; $sPath2DLL - [optional] a string value. Default is "". ; Return values .: 0 for failure, otherwise struct array with pointer to the GDI+ image and frame delay ; Author ........: UEZ ; Modified ......: ; Remarks .......: You must dispose all frames when done. ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func WebP_ExtractAnimFramesToMem($sFilename, ByRef $iUB, $sPath2DLL = "") Local $sDLL = Path2DLL($sPath2DLL) If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found Local $iFrames = WebP_GetAmountOfAnimFrames($sFilename, $sPath2DLL) If Not $iFrames Or @error Then Return SetError(2, 0, 0) Local $tArray = DllStructCreate("uint ub"), $tImgPtr = DllStructCreate("ptr array[" & $iFrames * (32 + (@AutoItX64 ? 16 : 0)) & "]") Local $pMem = _MemVirtualAlloc(DllStructGetPtr($tImgPtr), $iFrames * (32 + (@AutoItX64 ? 16 : 0)), $MEM_COMMIT, $PAGE_READWRITE) Local Const $iResult = DllCall($sDLL, "byte", "WebP_ExtractAnimFramesToMem", "str", $sFilename, "struct*", $tArray, "ptr", DllStructGetPtr($tImgPtr))[0] If Not $iResult Or @error Then Return SetError(3, 0, 0) $iUB = $tArray.ub * 2 _MemVirtualFree($pMem, $iFrames * (32 + (@AutoItX64 ? 16 : 0)), $MEM_RELEASE) Return $tImgPtr EndFunc ;==>WebP_ExtractAnimFramesToMem ; #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 2025-06-05 #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.1) #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.1", $build = "build 2025-06-05" #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 - $iW - 8, -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, $iW - 2, 2, $SS_ETCHEDHORZ) Global Const $lbPresets = GUICtrlCreateLabel("Presets", 10, 125, 39, 20) Global Const $cbPreset = GUICtrlCreateCombo("Default", 120, 120, $iW - 177, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 240, 28, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetData(-1, GUICtrlRead($slSNS_Strength)) Global Const $lbFilterSharpness = GUICtrlCreateLabel("Filter Sharpness", 10, $iW - 48, 81, 20) Global Const $slFilter_Sharpness = GUICtrlCreateSlider(116, 278, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 164, 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("", $iW - 48, 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, $iW - 177, 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], -12, 24.5) AutoItSetOption("GUIOnEventMode", 0) Case $btnShow If BitAND(WinGetState($hGUI_Image), $WIN_STATE_VISIBLE) = $WIN_STATE_VISIBLE Then WinActivate($hGUI_Image) 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 If WebP_GetAmountOfAnimFrames($sFileLoad) > 0 Then Return MsgBox($MB_ICONERROR, "ERROR", "WebP animated image cannot be loaded!", 30, $hGUI) $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 / 5.1 * $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 UDF, DLLs and examples on my 1Drv: WebP (to download all marked files, you must login first, otherwise 1by1 only)
  2. 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
  3. 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
  4. 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
  5. 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?
  6. 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()
  7. 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?
  8. 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.
  9. 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
  10. 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
  11. 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.
  12. 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)
  13. 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
  14. 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
  15. 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.
  16. 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.
  17. 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:
  18. 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
  19. Version build 2016-05-07

    1,021 downloads

    Some Graphical Examples using GDI+ Vol. II (33 examples) This is the continuation of "Some Graphical Examples using GDI+ Vol. I". Have fun.
  20. 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
  21. 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.
  22. 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
  23. 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
  24. 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!
  25. 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
×
×
  • Create New...