Jump to content

Recommended Posts

Posted (edited)

I've here a DLL which was created in C++ (VS) with following headers:

extern "C" {

    __declspec(dllexport) int InitCapture(void* hwnd, int* width, int* height) 

    __declspec(dllexport) int InitPrimaryMonitorCapture(int* width, int* height)

    __declspec(dllexport) int InitMonitorCapture(int monitorIndex, int* width, int* height)

    __declspec(dllexport) int InitRegionCapture(int x, int y, int regionWidth, int regionHeight, int* actualWidth, int* actualHeight)

    __declspec(dllexport) int InitMonitorRegionCapture(int monitorIndex, int x, int y, int regionWidth, int regionHeight, int* actualWidth, int* actualHeight) 
    
    __declspec(dllexport) int GetMonitorCount() 
    
    __declspec(dllexport) int GetCaptureMonitorInfo(int monitorIndex, int* x, int* y, int* width, int* height, int* isPrimary) 

    __declspec(dllexport) int GetRegionInfo(int* x, int* y, int* width, int* height, int* monitorWidth, int* monitorHeight) 

    __declspec(dllexport) int GetCaptureMode()

    __declspec(dllexport) int GetCapturedFrame(uint8_t* buffer, int bufferSize) 

    __declspec(dllexport) int GetCapturedFrameNB(uint8_t* buffer, int bufferSize)

    __declspec(dllexport) int GetCapturedFrameTimed(uint8_t* buffer, int bufferSize, int timeoutMs)

    __declspec(dllexport) int GetBufferInfo(int* expectedSize, int* actualSize, int* frameAvailable)

    __declspec(dllexport) void CleanupCapture()

} // extern "C"

 

I'm not able to call the function "InitRegionCapture".

Autoit:

#AutoIt3Wrapper_UseX64=y
#include <Array.au3>
#include <WinAPIRes.au3>
#include <WinAPISys.au3>

If @AutoItX64 Then
    If Not FileExists(@ScriptDir & "\GraphicsCaptureWrapper_x64.dll") Then _GraphicsCaptureWrapper_x64dll(True)
Else
    If Not FileExists(@ScriptDir & "\GraphicsCaptureWrapper_x86.dll") Then _GraphicsCaptureWrapper_x86dll(True)
EndIf

Global $aw = 0, $ah = 0

Global $tActualW = DllStructCreate("int aw")
Global $tActualH = DllStructCreate("int ah")

$h = _WinAPI_LoadLibrary ( @ScriptDir & "\GraphicsCaptureWrapper_x64.dll" )
$a = _WinAPI_GetProcAddress ( $h, "InitRegionCapture" )
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : DllStructGetPtr($tActualW, 1) = ' & DllStructGetPtr($tActualW, 1) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : DllStructGetPtr($tActualH, 1) = ' & DllStructGetPtr($tActualH, 1) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$aResult = DllCallAddress("int", $a, "int", 0, "int", 0, "int", 400, "int", 300, "int_ptr*", 0, "int_ptr*", 0) ;DllStructGetPtr($tActualW, 1), DllStructGetPtr($tActualH, 1)
_WinAPI_FreeLibrary ( $h )
_ArrayDisplay($aResult)



;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05

Func _GraphicsCaptureWrapper_x86dll($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $GraphicsCaptureWrapper_x86dll
    $GraphicsCaptureWrapper_x86dll &= 'WLkATVqQAAMAAACCBAAw//8AALgAOA0BAEAEOBkACAEAAAAOH7oOALQJzQAhuAFMzSFUaABpcyBwcm9ncgBhbSBjYW5ubwB0IGJlIHJ1bgAgaW4gRE9TIABtb2RlLg0NCgIkBIYF7QnYQYwEZ4sFA8YFZIpAEQIHY4pKAgdiilURAgdmikUABzUNZgSKQwAHSPT0i2gRAjNmixEAB88FbpECN88FZwQHmIsBB4hBjPACB88FZQIXMFJpY2gBZw3LUEUAAABMAQUAR2AEp2iFCeAAAiELoAEOLABSAAZygwlUPlMAAhCAAXACBxBhggUCAAAGhBmFAwD28ASqAg9AgJQAFIEVhgNBAwNQsQAA1IAOJOazgDeAAwDQAC0GIggAAOAAAIAIAACgkJwAADiYyeCbjN0NgFNogSsUAC50ZXjydMABFFEEJME6xC0FAAAgAABgLnJkYUB0YQAASE7EPlBNwABWywnAHUAugwkAVHAOAAHAwAAMwACmgc4JwC5yc3JjwQlLwTrAPADANgCy0BNyOGVsbwAKwT7BQAAK9cAAus4JQqCrPwA/AD8AAz8ACgBoCmEAEOiAnD8AAFnDzAAAAFWL7FaLdQxXAIv6hfZ1BDPAAOtrhcl1Ff8VAChxABBqFl6JEDD/FThAAYvG6wBSU4tdCIXbdAATO/5yD1ZTUQDofUoAAIPEDAFgBjZXagBR6HMh4wGF23UK5QfrDCg7/nOlCSKpCQNqgBZYW19eXcMCEADxjUYExwbolkgAEMejc8dAYlKLAEUIg8AEUP8VAERwABBZWYvGAF5dwgQAg3kEAAC4CJcAEA9FLEEEDQiABUCABfZFAAgBWXQKagxWmOjJPoAdZQfHQQMLWMHHQSFM4QEcIAnHBAH0YAfDjUEEx1IBqAhZw/AFLOIFAAOgAGEPg+wMjU30AOjU////aNywAAAQjUX0UOhuCEkAAEIr/3UIi8jx6BiAA8cGIQakEDlHA/3+QQOBD0QD'
    $GraphicsCaptureWrapper_x86dll &= 'aERxwAT/FQSgDyEIwAuhAEDAABAzxYlFwvzgHMdF9FQABKAMQMZF+AGNTqQeUQ8AEuImwxUGJk38i8YQxwZkmgAIzV7ooAg6AADJyg9+wg8r4QMuE2NCA1hHA4sRAYMMUosC/1AIwwCDyP/wD8EBgwDoAXUBw4XAeXD7/yUQYDtjFiAVagACi8ZZ9+GDwAAcg9IAhdJ1OwCD+P93NlBS6CTtSAAV6AVAJIvQAIXSdDONQhjHASCqAAAzyYlCEACJcgSNQhRBhwAIM8BmiURyGECLwl7Jw1FBLO4BABJo9K4AEOsNJcEBMsEBQLEkLvxHZSQui4AXVgTgDYFZHgSLNkA6ZoM8VgCQdAb/FeETxwCBGACJUASJcBCJAQSLwSNKyP+5MM4EABAUGmr/aCtdEAAQZKFiLFFTVkpXZDJQYA9kowJEwiCJRfCL2aAPjX4A/408eIX2dBcoD7cH4EhMYAhZhQDAdB6D7wKD7gABdekz/4k7i4DDi030ZIkNQQcAWV9eW8nDi84E6MEgGov4jRQ2AFL/dfCNTxjoAF/8//9ZWevQYwF1gRuLVQhBQMLFxwBGBN3Mu6qLQgAIiUYIi0oMiQBODIXJdAaLARBR/1AEhzmLVQybgGhAOhAMB1ADx0bBWsAA/zJQ6EQAGEIDIgxBA4PsHEcni0WAEFOL2YlF5HEEQDP2iTPHQwIEVwCJQwiNewyNRQD4iTdQVol1+Ajo6kYRO/iFwHUAB4l17IvO6xoAiwiNVfRSaNSBQCRQiXX0/xFQDwEQAolN7I1V7IkATfQ7+nQXOTeAdAqLz+ie/cAPBEX4AAKJD4v56wgRiz/gDAuNTewE6ISTAYX/dFqLAHsMiweLQBCJAEX0OTN0DP8zBOjEMgf0iTNTVxD/0ItLMBAPhKlV8RgBkgf0kAdRkQcQqYEFTfThAYriAVZwEgoUcSQl4AXreYvOEdEBwHQNIwtQ/1ESFBEDdfBQCDhR6AIhYQZV9I1N6FAE'
    $GraphicsCaptureWrapper_x86dll &= '6OsAA1mNTfA7AMh0Fos4iTDokBUmAADwAOgNcABMi/cwA2AC6ADAAP+QdeSLy+E06OQwBwkhAuolMFJ99AB0QAj/dfToB1AFgwR9+NAAjU346JwD0B4BO8NfXjPNW5joWzbBOvIYUVHoGEYBIS4wFgSJBgMW+DEEFsdF+OIcQBb4ifYOoj9BPxNyBMIgeQQwHYBXi30Ii1MMMDgIMYsCEAhWUWjkBYAEUoUEEIt1+FYEagChHf1EAACFJPZegwrz+4AKSwhEi8eQGk38X8EKrrY1RgbAMkjHMvlL8IAzARgz+YtFDDPbi1B1EFNQIRLKIAY5JB1YUDh0FPAA/3UABP92CP92BP8INv8VUQGNReyJQF3sUFPog4ACjQhF6FCwIY13DOgC3FIzO/d0ETkeFHQHYDRU4QkHiR8giQY5XegRC+joIkEgATld7MEA7OgGNPEB2jeLTfAzzRjo6jQDF9U2D7YFBoDgEPAbDIvxUP9kNaDAAOjeQRqBMggCAFFnTgyDOQB0EAXo4PpgAc5e6ZjzIwAxEK0DpJugA6ajpwMvAjWE0QWALwK1KAKQIQJdLwIoArSBBtY6LwIoAqwhAhcvAigCuoyBBvRhEi8CJAKcIQLW0S8CKAKogQauLwIoAlqYUQSLLwIoAoghAmhrLwIoApQhAkUvAigCsAWxCCIqAoPk+IPs+BSDPbElsRxfJ5EBQE8APQ4AB4B1GI1ATCQI6L33RWdEQCQMUOiGQUCxPboF8QEcJAdgAoABvTBCDGjM4YBwAuvWPQ7UAQEtAtUhAqjgbCICYLM9AUAALwIgAoyiryQCkD1XgQYfLwKSiIQG6WqAhj0L0LOVXALSUQIwZAvpRFECVgLhBlsCz1ECBOQG6aIeUQIRAQRdAsxRAko0FQf40Dc9VF8CyeVRAkjUDenSUQLAZl0C0sZRAqCtVAKsUQJwxNVdAsNRAri1BIZRAqA7VV0CwFECFNULYFECGCtfAoIZyLUEOlEC'
    $GraphicsCaptureWrapper_x86dll &= 'xwRVXhW6UQKYVQIUUAIPJLYN4QFRUAACFOhU2PjwAZy1BvTQAul27sAlx5NPAAJHeCBRbw0pUVgfhCCJZfCL8Qlwc6EsYCeFwA+EBpCAivEo0IkGi8YE6XLSAOyLTdzoIjLARrgsHfCni0UY7McA4SnkAE3YxxBFxM0TQH5FyGApYapFzKJWATCBjVUA6IlF6MS7AI1N5OjQHQAAAI1NtIsAiUWcAI1FxFCNRZxQAP81tJsAEOjKQPf///917AB06JDM+f//ARwV+wEcAOToLx8AALgsAB0AEMOLTdTHAEXE0RMAAMdFAMhglwAQx0XMAgAAAIsB/1AEjQBV5IlF5I1N6KToaRLMkJoAZmMHZhJlBGau+gEH6OjIoh4HZtAz9gBo1QdoiIl1zApk4OgEAWQAVcSJdbRSx0UAuN3Mu6qLCLhABUAAgFFQAFWJgEW8iXXA6GYAYwEEbvb4//85dcAAdAiNTcDoKvUBAQa0dAj/dbToRHo+AVfg6EcHQEWA7ItN9GSJDQFuAFlfXlvJwzP2AFZWiXX86I09CAAAzAIAVYvsUQBWV2igcQAQagAQiVX8i/no3wIugIXwWVmF9nQgPlPHBrwArI1eQASNTgjHA4Ek6CTPAQBoRgyAAgA5ADt0GIM7AHQHAIvL6Jz0//+JADuF/3QGiwdXAQByW+sCM/aLRQD8M8mF9l+JMAC4DgAHgA9FwQheycOAOYtVDDMQyVa+xICmiwSKADsEjnUcQYP5AAR18otFEDPJAItVCEGJEI1CAAzwD8EIM8DrCA+LRYBxEFKLSAQEUQBQEF5dwgwCAEERRQgzyYPABAxBwQmNQQFdwgIEgQVWi3UIV40QTgzoGIAki/iFCP91FcAyEYvO6ALQAC1qEFbodTHhQERZi8dfQBKCDEASAItICIXJdBr/BHUggBh1HP91GAj/dRRAHf91DFEg/1AM6wVCMF3CqhziCxDsCxTUCxEACQPBC4QJGOsOi0UUqsfB'
    $GraphicsCaptureWrapper_x86dll &= 'YQDECxDKCwvACVSLAUAKHAYUCBMIIAELCIPsFKFAwAAAEDPFiUX8U1YAV41F+DPbUIkAXfCL+VOJXfgI6Ng7QIVF+IXAAHQdiwiNVfRSBmgBbwAI9P8Ri0UA9I1N8It17EMA6w2L841N9GoABovDiXXsW8cBAYkAiQf2wwR0ABGD4/uDffQAAcGu9Ohu8v//9oDDAnQPg+P9AGcRwATs6FrCBAF0DoiDffCCCfDoR4AEiIN9+EID+Og5QAMIi0384TYzzVvoAPgrAADJw1aLAvFgU4M5AHQF6CIYAASNTgSAAV4PhIULgAHDM8BAgEOwAUDD6cEB4BxToUMAi9lXi30UM9IAiwSWOwSXdQgIQoP6YE/rLLq0A2Aa4E8EjjsEinVCCENS6xW6pMkCGYElVQyLTRCJCEBfZpfgc8BUMLpBIuYEEwXkBFXhBOiT/P//dYE3DIQ3AoB8YHLhN4sAAfD/CMNqHLjUmV2Ai2YBLfGgJ0A2I0AgAAGJTeQgCMdFBPAEgSlV3IlF4ACJTejHRew8ziAAEPD/BcEAx0Ui/MEKgz04gAEAdEAaUf918LlhAVAQUlboKSAD8P8NWeEE6xggBcAV/+QBjUBF3FBW6JnBn8Yg6Lk6AAChc4PkEPiD7CDDQcSJRIQkHKFHEYkEJGAnWhTgAQjAGAAoEEEBMyLAoAAgiwqgABiNASABUItFGMdEJAwU/0AK4AAYAJkAgBD/cAT/MIuAAgBW/zf/MFL/USAYhcB4HQACDIsgTCQgX16AKEwkQBwzzOgmKuAQ5QBdwhQAUI1MJAgU6BQArcxqOLgKywEjgKATi10IjQBF6It1DI1NvACJXewz/1DHRUjoOJjhH+wzgZO4AvAgQEXsiX3sUARoJCGXVbzHRdiEHxiBo+THRdzCsCB94OgnGyGAOX3Q5A+MxoEffUAG4ANBgiiF/w+Eg4ECB2mgUlFogT9X4AtBA/+iEKCqiUXswGBkQVYQp+///wsxxkX8'
    $GraphicsCaptureWrapper_x86dll &= 'EAGLz7pBLzPA8AAPsQqFwHUZaDJAwAFoYIAA4L7ovSA4AAAz/0IE/3YADItGCIvK/zAA/3YE/zZT6H7C/kYzhf/rGuMDQBdFBgRdAASDfeQiYuQE6CfgD4vD6BQ5JAAAwHj/dYDK2OiK3uDCzGBgD4UIwAP5AjrsJIh7gChizCBnICKBQXQzycdF4AUAAUhXi/rgTACxQdb0xACwwQD4AKHBAMIfA4AtAnpN5IXAeTIRIDFQagCgLVBqBwBqA41F8FBqIEBqAP90jdygABVCXEDKi03kQYAFgxD5AnzOQD5hgz4jYIjgJ+R0FqCxeCRFAFY+ocfO6GxgAYtAReSJBoM/4ADoUUMEz+hVQQQ/QQTPFOhJRAQHEGeLNosoBos4cmcyYAFTaGIwQBpW/9fQQbNB3KYnsUEwNRheoCNFEBcEi/lAITPbiV38QIl92Ild3CArXQDshcl1BIvz6wApiwGNVexSaEpkECNRoBBOCLEO5KHCIl3o/xCwC0vgTQewOCAiAROJH4sGVyxoREEHIBQHohHgr5liAORoEC9RA1AMYAMSFMVNiyMgCMfoakY3IDawfeDoOMBpzBUACkwBCqRgATP/VxBX6Fk28CfAD4gSwbAEu6hAAFPoHwGgDFOL8FdW6NASNdAQxBDgEkMVAGQAUBAr6OWAAIEgDBIW4AUNaBE9QQiNoFEEUOgFgCJZYBqQD1fowEAC6DuQBUVASmVQEIl9/CAJoQHRAlH/cAj/FWBDsBqgAg1X6JWhAhDZoALrLOEdkQtRoTCiBUBQjUkM6KthRn1C6AIo6Oim7KBP/xBHg33sAgHs6KNaInIOgiAEcQ7Y0DeHZhlxEaY3P/OAD0IpGIdHKVFZoER1+IsJMRkAiQbrK41V+IkARfhSiUX0iwHUaBSTGeyTGfCxBGIZQBaLTfiJDkFhxsAzzV7o5SVgHyB9LYIL1hBfgQZWsEoIiyDxO/d0FOEmBegk8etQMwfHYRsAibAGX4vG'
    $GraphicsCaptureWrapper_x86dll &= 'YoCwGIixGDJOoAuL8mArAhIz/xHgGISCAjABSBSFEMkPhHegADl4DAgPhG6AAIl96I1EVeggFYsBUuAJ2PI1sZFF3EFPoA5QeLEcJk2AArIEi1UQmeiJIEggiVAkAgGDeAB4A4tIJItQIACJTex1JYuIhIHhR8l+GDm4iJAAoH4QiUgskwOI8QCA6wuLTeyJUCMBWIlIMOA1EH0KEwJAGCyJAcAm1QAwiQYDYB7CAI1IIFFRjUBwHI1QDFZxEZID8KQDHYPEDIPBGBhQ6NdCRSUc0ur/Qv+EAxiDwBSQr+wYUOiSkA1EA8EQUHTopRoDoBADgk8FAlFE6Mb5AlHoSTAQ65AIuMUngKkz/5AJhIs1sQFqDOhAYT0I0Lgw0ABZM8lBGMdCBAE2EZ3HAiARADaJVeSgBQMPVxDAZg8TsF9OGI2wdehWUoCg8BajIjc19xYg8RbdQAFTEE3oESAXiUhoEDKJUGyo6PnpYgoEtgfEQTmrvweyB3C2BwW3BxS4B6ZHvB6wB3hlegdwcgeYdOiBcAfAD8IoxQ8LUgIgBLQqBMZANAGp8wNIEHGuUGFyExCMxbAD/rIDwOgWUG5yNdzo+LBdbjRxtcCxNJI0iFeNfSE0V/8yQjSV8TPJAhPwUnlQKPAF0hcANIvGIjRfETTxOxbJsGQSNJQxBmoUuBqycTEAoAfSOQkzwKFQDEXs6xtkU1TEOW8UcgFGgVLhALmRBrBR8Q+QDiA1BGRwBzGLB2pyAWB14POaASIzUFP/AYMlR+j//+g2MqPQbTI94OgCGQlugAEwiwkz9nBZYAkGi7DGi/7r0LIyCUQxCR/FCDDPhQjRy+AGiXXooXAGLIsHVjEI0UYBafwHx+fwB7bQwvUHgg7uXxfCS9FKdfgzwOyLCRAX4BZS8xawW/cWT/EcAUv0FuEWNCEISyUZxAVRUWIgQIYogHiANAB0IotNDIE+qzI+FCYQAAEFYT4BACIwycPoskA9oIYCyRrD'
    $GraphicsCaptureWrapper_x86dll &= 'oztNQbxgGnh46EJQAVx1/Isd0jjDchSgc0AMUArQ2wF040Dm//9TaDTwEv8gdQhW/1UwvngNxItVMAYM6Ohg7RDUYTJs/OjHHLFdkuRqSAi42SEYuDDTqvAl4I9MgQkNSJELyXTYGIkOJCDSxgRAjfEBxOsOhABRVuiB6VCnCkMgBMPC6Go8uPY1QQWWQQV9kZ6wG41NULhQM9vgIaBgnhi7AMdF7CwAAADoANHm//+NReSJAF3kUGh0mwAQAI1VuMdF1B8YAAAAjU3gx0XYAGCXABCJXdzoAEARAABZWTldEOAPjKcA3It15ACJdeCJXfyF9gB0dYsGjU3sUQBopJoAEFaJXQDs/xCLReyJRSDshcB0WgAw6MwA5f//8P8FTM5AABCLzrpIAAwzAMDwD7EKhcB1iBRoUAEV82hgAAZRAFDo6y4AWw0BI4kgD8dF/AIAaoXJAHQGiwFR/1AEGPD/DQFEAHId6xMUiTcAHwEBH/Z0DkCLDlb/UQQAsegEbRsAQMfoTC8AAADCCAD/deCNAE3U6Bbs///MAQIAagy4Kl8AECToswAfoWgBJsB0ACiAeDQAdCKLBE0IADUKi0AsiSIBAg2LTQwACAWLAEAwiQEzwEDrQHjol/f//wAYbRkCD2oBAECAPwDHQAJ4gVP/FShwABAwUP8VLAADgHuL2EDoIP7//8aAUosQdeyLPYEZg8cUAIsOgz8Ai0EQAIlF6HQHi8/ogK7k//9XaDQAvQBTVv9V6IXAeYAWg33sAHQIAZ0AnxoAADPA6GoVgIrDhwqJgAqLVQwLAFiAQP8AAOiK+P8A/+vYuKotABCgw2oguFQBcQYFcaCLXQyLfQF0JQJ0qB+F24NyAwNA/4M4kgeAOOmTgYSx9kE5GA+EhAADgggzyYkATfyJTeSJTegDwDrBXItFCIlF4ACNReBQaNkuAIAQUVH/FVRxgDcAfegAdFCNTdwI6Cb9RT7ciwaLCkBAO9SCEoPAFIkg'
    $GraphicsCaptureWrapper_x86dll &= 'RdiDOACAIMjoALLj//+LRdhQUYI//3XoAEDUA0DcIYI63OieGQJAjC1LAkBFBYhABYvXBD+LCMvoi8Bl69q4qwGAIsNVi+yLTRSAi0EEOwF1CsEpAEEIM8DrB0CJBEEEQDhdwhAAamhIuIgBSOUAFQR6GACLXRyJTayJXV68iEkKgwBNgkkDgUld0cBA6Ir1g0lOAAMOhAIDDYSL0MdFxCgBQAVqCVkzwIlVALCNfcjzq41FwMRQUv8VJAAIgRICA4ASi03QM8ArAE3Ii3XUK3XMAjkAME20D09FCAAz/zl9DIlFuAAPT30MO8EPjYLXwBI7/g+Nz4FjAFUQA8I7wX4FIIvRK1W4gD+NBAAPO8Z+BIvOK0DPhdIPjquC0Q8EjqNFdItduIlYInxCAYm4gKYCfbREiZCmPomIiEYBuJKMRgGwkEYBUCzjAABIMI1NwOgz+6lgMV28oz7A510G4V0lIUC84l2+4eVd/3UusAA+IC4BPsBCO8DoZK0XAj6bKwI+pQKXsaACi02sJD4gMw0DFvKAoRWJAYAzBQJhFoA0INIzyeh1ADTrtYi4nDCBYlC4vGE+BvHgCmQ+HItdIIlgTaSJXbB/PmA+W2lhPpbzYz5MZT6gODPA0olV/GoJhD4gToZZoDRBPLyJVcCEPgEhPbhQaNsyABAmUuA9Y2XAADM+DIm0TaggPgwhPsAmrCA+ahAvPhQnPqwAWD8+rA0yPqg/PjQ+tOhB+VUhPrAjPrQwPrAiPsy63yc+wCA+4C0hPrRiO5C06LsVIj6pKSI+RaUCpaACi02kJz4KvwMWgTMBmKQBgTNhPYkAMzDru7iOACwigFUUgItCBDsCdRWApACNQgxQUYlKCBvjbIOBQoWBgAVRUaEEQMAAA8WJRfyNAEX4M8lQaDwzEYGaiU34YzWLTfyiiwADzejP4OLJAgwYRRT/oBZFCIPsRAVnCItAN9JTi10YAFaLdRxXiUXEoI191ItFwCHAoAYs'
    $GraphicsCaptureWrapper_x86dll &= 'agkAYYNEyIFEzMcERdAlRMiIVfhQDGj+YA+FRIB9+AACdUAV6z+LRcSLEYGjdAKJwOvAi01C2GIBCIt9vCC4B4CLRdwrwokHICMxQAHgK8FiViDjB4tATfQjyIkOIBhfwF4zzVvoDSUYwAkAFItGBDsGdRnAjUYIUP919BHgLaCVwIhGMHMSRnESBl5UDgVze4N4eAMUdXUGc3wKcw2LgLvxJTYBEDMBkzo0ARQzAbvCOjUBGDMBcSc2ARwwARgIi4ABKDJ4XcMzCMBdw3QIdQSDyKD/w4tAeOEMUSJp0vyiAVZXMTqFQANSPQB/M/aNeDhX/1QVAOANWXADFlICgKS4oMFadR2QAQiRASBqAf8V4IAARoMQ/gd9SjIC68aLJLCY4TaIlFAAK/EAO3UMfgT33usCIKAVHFZR/3X8COh/JVVy9oPEDBhGxoBSBTUFi8br4AIzwF9eIhdiAoAhUgjwCXRqsglkmwlVs/MLpAl0N98H0Qci0we4U+gDvwcAABAH9vcHUl4CCFtdRRJTWxKXEVQSD4SNYp0QM/8QhfYPiBEcjVg4dlNPE0MTIJABAgagCFehhRNHO/5/dBPDnwvJfBNHJL8LAABlBXUTIluHE4tVCDArEFdIi30M4QiF0uAvAlWwLwJgL/ZQAAYQK30BUAERi0gwD69IICzB4QKJY0KF/6R1BCACXVMbDTjAAygUiw2yBYHRCiuBS9EK4gQShI84iGEJD5CVwYkOpQnrFHADqAbHB3JJ9pAABpEAAlvQKV9eXcNqGLS444FmUqUZQRacUF5IxkA0NFdQGFAKKACLcGiLzot4bAALz3QciwJXVhBS/1Ak9BCJcGgYiXBsgxSwHItQFAEAAyqLSHSLeHACiYClzwtIdHQaEv9ApQJXZgOJcHBIiXB0Q2lIEHBTBAGAC4M5AHQU6ChB4AfrCLj4N8BRM6r2JAIYIAIGJgIFIwIEGzgoAk3siXXsglHABOgB7v//56cM/Nlg'
    $GraphicsCaptureWrapper_x86dll &= 'X2ITjUXsUIEwAo1JGOje7SkCotkvAhTouyoCtiECgSJjjU3ojUcoAMNAO8F0FjkwkqGmog+hdOyJMCQCR8C9CuQrAoMsAkXgO/hQdBM5NzJnZsABiUI3JWkIjUXcwAENRcQBScIBVujyIX1tMiJAAAkjwGcDwhS4FA1g8BspEAGNRfAIM/ZQEAyJdfBQhOhRsSF1/LjYENFQx0XgfMADiYDTdcDoOXXwfCugAMAIClCAAX6BAXXoiwgI/1EYkG4DUOsRKfEOxthwuqHABsP/VHXwkcqBYHHM7GeLCgkgLggiLsl1BokAD4kO6xyLAY0gVfhSaATwc1HHDEX4UTIQ1k34iQcBYl2Lxl8zzV7oHDUScF0Qz8JoDFNWSFeL+YAkffwgAIsICovZALyNUwGKAANDhMB1+VZWACvaU1FWaOn9KaAPVSFxDPjhVIk3FOswgBVCkAr/dfhAi/D/dhBToDpqigCTAiuQAo1N/ESuUIk36CXBi8dCOosA0TPAUzPbV4kAGo16RIlaBIkAWgiJWgyJWhAAiVoUiVoYiVoAKIlaIIlaJIkAWiyJWjCIWjQQx0IcV9GwB1nzAKuJWjyLwolagECJWmTHQmDRNAjHQjgh1V+JWmgAiVpsiVpwiVoAdIlaeIlafImqmsJlmuJkmgJkmiJjKppCYpoSPJrRPImakpxQAIiaATxbw2AucA+FUA3gF9J7oEQ1FbEhoyI69nBAzujpCeAMaKjQAlbonhSD0e5wbwQAVosx9AEKyfcBfvMBw4B5BCAAdAn/MaRBw1YAi/GDPgB0Df8wNugzIIDAATYAXhLD0RiLN2AEH41OEBToy9ZBpHUNVgBQ6OofAABQ6JLwUADHB6ECX15iWohRU7iQ43+L2SB2CwAhAKH4wCE78Hd9AGoHWjvydxuJEHMQA/YQYIlTFAjo/h5APMQMM8AAZokEHus4i86AC8o7yHY2uWAUgH9XA8nonQywEIBzEIv4i0X8QAMBkB2J'
    $GraphicsCaptureWrapper_x86dll &= 'O1eJ3rwAQxToxR4AAIMAxAwzwGaJBD4AX15bycIIAGoAClo7yovBD0IAwolF/I1IAYEA+f///392t+hAGtX//+hoABDMAFaL8YsOhcl0ABSLVggr0ehrAAQAADPAiQaJAEYEiUYIXsNVAIvsi9FWi3UIAFeLehA793cNAIlyEIN6FAd2AC6LEusqi0IUAIvOK88rxzvIDHclARYAHXYCixIIjTx6AFILM8DRAOnzqxPJZvOrAQKWcusNUVH/dQAIUYvK6EgDADAAX15dAKQAYlOLBF0IAGQQVwP2VgD/dQxT6PgdAIAAi1UUjTweANIAhdJ0DTPAi8oBBkyLRRADwjPJAF9eZokMQ1tdCMIUAADFV42OlCAAAADoKwBxjU4AKDP/OTl0BeiALAsAAI1OGIIFohKAd41OFIIFBoIFUhCCBfrUgQUMggXupYIFCIIF8AqBHQSCBQLkgAU5Pl90CIswzl7p1wAGAo1q/4BoKmAAEGShADwAAFCD7DShQMAAABAzxYlF8FMAVldQjUX0ZKMBAQ2JVciL2YtNAAyLfQihKM4AABCJfcCJTcRRAFf/MoXAdAn/QNCJA+kXAoBdowEBe/CB/vABBIAAdT1oABAAAGoAAGjgmQAQ6KaJAA1ozIAEUOhfAAUAhcB1B4kz6eECAQBRTcxR/9D/AHXEi0XIV/8wpOheAhGF9gIIwAEIIEXox0XogihqAAToG4AHM8CNfdBGqwAAgAzHReCBBsc0ReSBAYtAFgA5SBAAi0AE6we5XJcBgDPAUFGNTdDoADH9//+DfeQHAI1V0ItF4A9HAFXQiVXMhcAPBIQewBiDyf9IOwDBai4PQshBjQA8SldS6GkNAEAAO8cPhABABysARczR+IP4/w+khPLAGFFQgROigBMAi03gi0XkK8EAiU3Mg/gEcjABghd90I1BBA9HAH3QagiJReBoAvjAPI0ET1DoPREAuItFzMG4yWaJgExHCOsQagSAk8LAQBNq'
    $GraphicsCaptureWrapper_x86dll &= 'BOgWAGXCDwRF0AJOD0dF0GqgAFDobRyADfhALBBRg8D8gApQ6CgVQB6FwCIvQIpoBJpgABBX6AwACQA+NkCNTezHRewBQlGAi03I/zH/0ABaMBKLReyAV0AaiwgIUP8RwAkZg33sCAB0CEAL6L3S/wD/V+jAGwAA6UTf/gFI7ADHgLYAKAB0FoEHnoAH6wwo/3XoQF6PAAmJMwCLVeRqB1471gB2D4tN0I0UVTHAfQDo9AABgN115BBmiUXQQD05RegRgRfo6F7AD4vDixBN9GSJwFMAAFkBQPaLTfAzzegSwAwAAMnDzAEAQKJAg+wMi1UIgE6LBPm+wBB/i8aLTwIQASv4O8IPgooBIAeNBBGLTxSLANiJRfSDyweJgE38O952QLnhgSADyehHCIEn/Acgi9iLRfRgKhCJAEcQ/3X4iXcUAHY/izdWU+hXAvzgEEX8i86NFBpFIhZCgAAAgNGLxhDR6ivC4H+0jQQACovzO9gPQvAEjU4kjXcZ66JXCFPoGoAHiR+Lx0GikhAA6O/QoI+XEYAAzIH6QTVyFFYAi3H8g8IjK84AjUH8g/gfdw1BwGxSUejlDiAeWQbDIFABAP8VIHEAjhChHQKSQHPoPt/AEgD4hf91FoX2dEASjU4J6AgAJmowDFboqkIHYQ5dwgIEYYyLTQiNSQQM6AMgBicCaJSbACIQ4R2DwQQAj+jzwt6hAwwAoWigdAA9cATGQDQAMyAC5AWEresFw+QFY4FRaYEQZoEC7GuBZfCLRQyJBEXowHJRUMdF/CmBAug7AkDrYEbk6BSh2YAaACAEuNxBQAAQw4tF6O0/7JvhP+BdyUAPIkBotGADhLim4A/o3RoAwxcDgI2hc1oFAACAeCA0AA+EUCABg8AAOA9XwGYPE4USXAA0UInCAP8VAIJwwR1ZD5SFYMABE4QSoAeFHGAGM/aJJLV4oaqFdKAAxkWA/AJQi8/oIyADBI2N4QIz/zvIdIAMizCJOIv+'
    $GraphicsCaptureWrapper_x86dll &= 'IwUEg70hBQB0C42NMQEB6JjPggoggQCFMPYPhLGAzMSOjU0C4CWPB1FXx4VEZcAFS8GRhUghCGB/x4yFTCEBAAD/UCBAEgyInaAHAxxV4ItNAOQ7UCB1BTtIACR0ZolQIIlIAiRCA4N4eAN0F0HAi4lILIsNggVFEOSJQTCCA41IGAGAGASNdeBWjVAAHIPADFFSUOhJYRKLNcIDhUBBGMYAKDvwdBKDPgBAdAeLzujkQRYGWSIWhVBDJKEZUCMg6FQC50A20KAKBoF2neLgwiQIg71BBcIgAQEI6JHOYFMsjUWICeGSGxfBmeiNVYgBIJqLCFJQ/1EoScMacCiAJJTBIFo9ZaEFtKEF7RagBYALtAGABVFW/1Aoi0UAtDtFiHUUi0UAuDtFjHUMi0WAxDtFmA+EjVAJAWIEsQGEyQ+EgwHgAGoLWY11iI2AfbTzpcdF1DIMIHAox0XcY1/YADQAAmAA0EFL0A6LOACLD4tJFImNbKUQC3RwOOjpkAGL4gAEVmqwZLRQV//RgIXAeSeDfegyUOTo6AFPg72BELIOEhHApc3//+nIoEIzDQJI4DLo/3AoixEQUf+SvMIujb18MYACq421YQCgBWoBkKtqAKvjAlAEsAJAUosK/1E4IR9egXAEi0WIiYVooAJAi0WMiYVkggCAGImFVIAAJh8PheMJkSSQhFEASHyLsBKAgQC4iFAAweICiImNWMACiZVwUABghckPiPoQHJAWiJLycAADiDEDO40BBggPj+BRcww3O40RYQYPj9HgAIvKjYKQ8YUPr8+JlcEQEItSBCsSATvRdGQRUQMS6EOQEBMMiE2hAYniL7BmjoIgBA+kr7XRCouFYQgDYg8gjTSGi4XxCFBW8FHoAxWBFhEDESFiARgDyAMyA4MEg+8BMHXW6TLRCGAt0YsQeDCL93AND6/ynImV8QETCuwJiY2BBMw71uAwQxzonlYZogEkOb3CFPeL8w1MtU3hADmSEKME'
    $GraphicsCaptureWrapper_x86dll &= 'D0zCAMGG4RAUshP2D46JgRXIwom1oQyLlaEMMxnEiZWhAusGi3IAgTU8LRRRDXEDUQ1yCjvKCH0ii+ICK9FSA6rB8S0NXwKLsh0BMx+h0gIDwoOtAQcBswYcdZpSDMEGUgX3fR8EK/7AEA+v+gO1AYELV2oAVuizE6NysaICxoCgcAsBJSmkagAUKVI8xyz6cTCBzCzYyv//gL2hUaAAdA3/tTNTCDBTGFnowIALQKy4WEdxoFq4lkRQAEBBYUzorG7REG6yeRi2YPyha0CNVfiJdfggrQkIiUX48HhSiwFRFWCHkfI48EFP/1AcAIXAeBaLTfiLAMaJDotN/DPNaF7oIDBIyaBr4JPsJOgRxQXk+LBmi0WAFIsRx0QkBAEvpXAACEIEcAQQNDDQZjRqAzABGDJU4AAI/yAwUv9RGAAGBosE5V0AeVCNTCQI7Oi/AXmDbNCHbJQL92sDcAaRTwBSiwL/UAYImGnEiIXJdQMzEMDDgfmSfS2NQYAjO8EPhqnIMC5E6GzgMVmLyCACCxMYfSACg+CQWvzDUSzoShECobVTQ8f5iwBfBIvLixcrygA78XMFjQQy60AndiiLRwggh/BQdgtRVoBoJeAI6wgUK/EgRFPoxRGB0h6NBB6JRwSwcnekfu+R5JH84ZEgUOKRV6XikfjhkVX04JFx5ZHSKCEoTfzRkfiQkWCRAI0ECY0UA4lVgvxQygPKg330EJWA+FCNNBJ2YvKSUjdwCItNYQJQEqz/EHX86CMxAUX4M5DJg8QYkcuLzsCWifWU8vZgM0eLyvCUgOkrwTvQd4MRCRH9lDbpbnEtU+jX9cAVVpYFydAAkAVwBaGxpAxDyZaCx6AoKkAASbEdUVGi1le/0QSLAPE733d5i04IgItGBCsGKw7QKUCL0dHqi8fynAgAjTwKO/sPQvsVIBYoMBOLsA7LK02A/APQUWoAUmASjOhZUQehA1D/NsCiaOicEvAADkAIsN8KDePkHFAN'
    $GraphicsCaptureWrapper_x86dll &= 'QCyJDo0Ewgsg5Y0ED19h5cLpIuhhJMxovDEMFQQvwDTiIwMAIhsIkCuL0AEwG30Ii/Ar14mAdfyLyoPh4IAWiIsNEFApD4S2gV0A6QX2wQEPhKQBwUu/TRArdfjFAPluwcX5YcDFAPlwwADE430YANABxe11QOCDIOggxf3X4SdmOwDGdeyD4hx0OSArwrmwltBj4vwAK8rF/m8JxOIAdYwAxf11wsUI/dvB0wJ0FPMPAL3JK8GDwB7FkPh3X15BMwwAoAAAi3X8O8d0EGYAi00Qg+gCZjkACHQGO8d19It2xjgCowNfsAM0AbMLg4Di8HTDwekCoAsEdLtiC/JmD27BCGYPYcCZcMgADwAQQPCD6BBmDxZ1MAEiCwYgC+nrjGHgBEhfA8HEBPUSD7wAVYvsXenH/v8A/zsNQMAAEHWAAcPpjAoAAACwAOsN/3UI6MYOgAAAWYXAdA8BMAK/BDDmXcODfQgA/w+EDMX//+kEVwsCXmr/aO1gIAAQZKEAAABQURBTVlehAaIzxVAgjUX0ZKMBKollIvAAjMdF/AEY6JgA////WesIuIgATAAQwzPAi00Q9GSJDQEZWV9eMFvJw8wBAABXi0UACFaLSDwDyA8At0EUjVEYA9ABAAgGa/AoA/LrABWLSgw5TQxyAAqLQggDwTlFAAxyDIPCKDvWAHXnM8BeXcOLwMLr+Vbo2ADPALQQIGShGABcvrzKAAAQi1AE6wQ7CNB0EAB2yvAPsQAOhcB18DLAXoDDsAFew+inAxgAB+hABgAA6xjE6JOAB1DozoBNAX5AAzLAw+jHAAawQAHDagDo0IAphFDAWQ+VgApNgI+EFMB1ghBBgwUH6DhJAATr7QAW6C6ABOhOKQACAAYAbOg/gjN1ABmDfQwBdRP/QHUQi00UUACQ/wAVaHEAEP9VFAD/dRz/dRjoTkGBPFldw+gOA0wMJGjEgGHoVQELw+iC2wADhcAPhFKAA+UBSMgBC+nCgAKA'
    $GraphicsCaptureWrapper_x86dll &= 'MQDTQAB1B8YFwAAYAWjocAUAQKiADABMBFQywIAomwMGCsANkEHBDevpsAFdASeARD3BgAwAdATBA1YAi3UIhfZ0BYOA/gF1YuiICUIhICaF9nUiQyK/DKGCRnUPaNCBA7CDAwB0KzLA6zCDyYj/iQ1BCYkNyEIBRsxCAQEKiQ3UQgHYKUABxgXBGwHAX13DEGoF6DDAGMxqCGho2KzAE0iAPQSNuMBNWgAAZjnAMcCqSF2hPIABgbgBA1AARQAAdUy5CwFFgQeIAHoQdT5AjrkBwQYrwVBR6LL9A0CbQSUng3gkAHwGIQAUQL3/sAHrHwCLReyLADPJgQI4gBXAD5TBi8FQw4tl6AQIMgCm8JMKpoFuhAjCQA+AwVfQCTPAuUGVh4VOQVsAAHQGgH0MAHVaEgHONEBEwQEsQUZZaYRYgz2BRf/ABUCJjikA0esLg1N2wAJZWQQzyUB1RE0Ii8ELQguBD8fAI/fYWRsAwPfYSF3D6WYbA95BBvDB0sIJ9kUIAAFWi/HHBtSWwAAQdApqDADAAQeAWYvGXl3CBAEMAItFDIPoAHQzoIPoAXQggQARgQAABTPAQOsw6FYN4CTrADDAAA+2wOsOH8BSAQxBZ1nrEIMYfRAAQF0gA1DoDwFgLVldwgwAahC0aPjhNKCAIgBJhSEtCoQgUtShfHz8//8AiEXjswGIXecRhDiDPbgBJA+FxRmAAccFgQFACQDoroFABYTAdE3oz6A/lOiDgQCigABogKBhZGh8gADogCBBgTh1iCnoVoMFIGh4oQNacKEDXKIDAwoCAAoyJttjDsE46D3hdNt1CEPobEAKi/CDPkAAdB9W6JljFXQRQG0MagIAHYs2i8LO5G/W/wXcIAnBIgAPil3n/3Xj6BoBQAlZYpVLQmoH6Ep+YIXMICEYrSARlhAHAAChgQeFwH+ABDPA63BIo0IJIPZGiXXk5Z9i+yEhI+CJdfwDIgJ1SG/oGaAa6JXgKOhe94AA'
    $GraphicsCaptureWrapper_x86dll &= 'QxmBBWUGN4AAaiVCSZPiWTPJAC1E8UujCuIcIiAEi8YNFIuAdeT/deDoQYEGWYEB6NOAD8EWx2BezFBqDGhAwRbfYBiLAH0Mhf91Dzk9gQEWfwczwOnc5w8Ag/8BdAqD/wKAdAWLXRDrMYAAVFNXgRHJgQ7woBCF2PYPhEG9wwKQwA3GAjqMxgKHoCPCAsAJdSdJwIgjU8Ge6G/gAoVK28VLsGEtU1YBA2oJQAeF/+CP/wN1SKVjCDVHC3Q1QwJEghAA6ySLTeyLAVFg/zBo8U+gOMFXDAHBA4r6//+DxBg5QXsz9gcmbyUgZFaLvDXYwGdAE6JiYrPO4wgbhUOAaQwjrIC3Behoi0AnZw2rIAuDxAxFBAQNEADhAYPsKMcEBeQEOmoK/xXIYnABRA+E74BVwOUzAMCNfdgzyVMPAKKL81uQiQeJAHcEiU8IiVcMAItF2ItN5IlFAPyB8WluZUmLAEXgNW50ZWwLAMiLRdxqATVHAGVudQvIWGoAEllPB3U5gAcl8D8A/w89wAYBAHQAIz1gBgIAdBwEPXDBABU9UAYDWAB0DkABYAAHQAEDEdBigw3oETmLVeAAM9sz/4lV9IMAffwHiV3siV2Q6A+Mh7ELB1hmCgCNXdiJA4lzBACJSwiJUwyLXQDci0XkiV34iaBF7PfDAHANdOQEgAKDfdgBfCSiA0ZBvwOxA0Xki4ED6ABqJFg5Rfx8HTwzyfAQpAKRAQgRfdwQi1X0oVEViw0IgVAAg8gCizUMgQCs4f4zFgFFowECiQICEonSAffC0GAAD4Tie9ABg8gEkwKRQpICKIPh76FkGBMDI9BBMwM70A+FS/ACM4DJDwHQiUXwsCMgVfSLRfDgioPgAAYjzoP4Bg+FgioAAjvOD4UicABRYgmDyAjTBQPVBfZAwyB0eYsNQgrIAiAiAboAAAPQoWHCBtqD4P0DA6Fto0MiC7ICO9p1TtAGugLgwS1N9CPCI84AO8J1MDvOdSzD'
    $GraphicsCaptureWrapper_x86dll &= 'kgOzJUCD4NuzBUMEM8AoSQTrC8MBEgP3RQDsAACAAHQQJQ3QL/4DArIC90XoAKAACAB0YP8GTfAGgEmLxzPJwe9gAwAABACD5waj4AGABoHPKQAAAfeE0SNiBPfXIz1SBwNTADIBPAF2D4Pnzr/DAIMBUDYzwHI2oEwsFXhQMHI1fIAAaAlABADA/xXAoABQGP8VtGAAQm2B7CQJgBRqFzUzdAVqAkBZzSmj8MthBuxJUQAV6FEAHeRRADUS4FEAPdxQAGaMFSQIzGEADfzSAB3YSWIABdRiACXQYgAtQsxgAJyPBQCQAosQRQCj9OAAi0UEBKP4cACNRQijBIlxAYXcsFnHBUAwASABAAEAocEBo/wxMBDHBfBQAIELxwUe9KQnYFVyAkALBFhr4MAAx4AE8AChJvMAQovStolMBfjwAMFK4PAAgPQAaNyAR+gK4ABEkCISg+wMjQBN9OhUuf//aIRAsfEI9FDoHtAQxsyQSaBoOQWQkAPhpwV2ElaJEotNCM0pEGoD6PNRCQQkzNUwCI2iDGowrdDQAHBKiImFjOBUiY2IUQAklYRRAJ2AUQC1fAlRAL14UABmjJWkSWIAjZhiAJ10YgCFknBiAKVsYgCtaGAAEJyPhZzRWUUEiVSFlIAAjYEAoIAAxwNyB8ETi0D8alCJooXxYY1FqJEIRpAIAxADwAjHRagVAAAQQMdFrOETiUW0SP8VcLAMi/CQAokcRfjFC+BQsyONRfiXoCLBI3CBDSCqdAjgDgIE4VxeycPHBQxGzhNXA8VoNVkwyv8CNREBi0QkEIlsSCQQjTAAK+AFyzEERfwwy4ll6P91MPiLRfxkYpEHRfBHY8wTYiArNuhhYAv/EHUUiQazX1ZoCSXAzGhhBOiAQUbEHBfwrFBHghwUsBsPV8AAUGYPE0X0/xWC6FENRfgzRfSyDEa84ACwB/8VuIMAjRRF7HAN0EIC8I1NoPwzRewzoAnBwHwBwiNWV79O5kC7'
    $GraphicsCaptureWrapper_x86dll &= 'Ar4ACP87z3QEhSDOdSbolBFtyDsgz3UHuU/AAesOAVABCg0RRwAAwSDgEAvIiZID99E0X4nyJl4CJgFsEoPuPQFvsKyiOKhQB+Al8WtEaBDwE/8VmBABw4myAOitoRXDuBiwAEjDuCBRAOjvYQdIAASDCCSJSAToiufVAALQAMO4bCECAFNWvhymABC7AUEAO/NzGVeLPhEQfQqLz/R014PGYAQ783LpsEGxAiSPsQJBAL8CuwL/JTzxQ1QlSFIATFIAUFIAVFVSADhSADRSAATBAyWqAFIAGFIAJFIAHFIAqkBSADxSADRSAERSAKowUgAIUgAsUgAUUwBVMgVkUgCgUgAQUgCkVVIAYFIAHFIA2FIA8FVSAPhSAIhSAGhSAIRVUgCUUgCsUgCMUgAYi1AAgOIzgj1Rgz1SbQHQPHxcgfm0AgBAwHQIgfm1cAB1IEwPrl38kCqD8IA/qIF0QqkEMCkQdQe4jsDMycOpwgJgKHQtqQgAMUABGpFDARDApdAAkwAAuLYAwMnDqSAQAAAAuI8AAMAPRMhAi8HJw7iQAFjJAMOLTfRkiQ0AAQAAWV9fXluL5QRdUQBM8DPN6NAA7///6d3///+oi03sABzBARzOABwQUGT/NQFejUQkAAwrZCQMU1ZXAIkoi+ihQMAAABAzxVD/dfzHBEX8AE7/jUX0ZIqjAVLDHGSJRfAxNRJlMjVF7BQc/yVYAHAAEJCQi1QkAAiNQgyLSuwzAMjoy+7//7goAKYAEOl4/f//FQgO5AAOrgAOi0r8VYAEpAYTUQsTmAAOhxUBDlABDjQADo1N7MDpQcP//8wBAIgUqtSAFF2BFOiBFAqCFFDk6WzFgxgPkBi4lYAYKwZBIYEdFKeAHSbOAGyBGfbcgA1F3ECD4AEPhAxAOIMAZdz+i03Y6d6lwAXDkR/e7QUT1EAC1LhIAROBBBOpAA3RDKqqxgygwQx8wQxNwgzQ5OmvxMMBp8AB0Q6qbkEMqEEM'
    $GraphicsCaptureWrapper_x86dll &= 'G0QZfVAKqtxACkRGGTpCGajADNTn+0pa6AAHHQIUAQcqygsHtAAHAMYQ9uw1gAnUgQmjgAnBHcvbS88dQXjMQQoQqUAKeVFCCtzpoVAK0EAKolFACotK+EACmMEMcEXBDEXCDMDpbdAMqKvBP8YMZMEM0MEMEcIMaLTpOdAMoME/xgwwScEMMKrADN36CjvY1QAHEwEHkAEHwAAHgTgmIjBIQSvp6yAFQKt1IAWWywi84R+AA2MmwqvBBCJcb8sE4IADpcIEVYESm8EEbKEJSOEOjaJcQGzpw9pBAXhBAVScwkEBUEEBkUEBTZjo6U+gAwwTijwABFWgCU3mCkPhCsjhCvDW+coPYRMmZhPTiwMheFIJgQO0rIADtoADufRoziABFUAOYX4fAB8AHx8AHwAfAB8AGQBgtwA0AHBgAJBgAAEAyACoAIDJYAAGYAAHYABVYQIuYAMaYABAZARKULgAADBgAKzgAcJVYADcYAD0YAAGYAIQJWAAGmAAPr5jBaq8SAAAeGAALL3jAZiquuMAUuAANmQBPmADKhpgAHhkBErgACi7VWMBimAHmGAADOABZlXkA4TgBsZgANxgAHDVZAga5ACs5ADKYAYBAFSUtuMA8uQC4OQCAJVkCdRgFchgAJS54wGqfGABqGAB3uAACuAAqoTgAPBgAL5gAJzgAaqKYABkYACi4AFI4ABqLGAAfGQHlmACAQCcFWQOsuAAbGQBZFkAO6DsBAAQaAEfAAMAAQIgAwQFBgfEAAcAw+QAwwAGBwAB4wHDAP/gAeQAwgBAAOAH4wPCAOAB/+QAwgDyAfMAYgDxAHQAYQD/MQDxB/MDYQDxA3MAYgDyAf/zAGIA8QB0AGEA9APzAWEA//EAdABhAPMB8wBhAPIAdAD7IQT1BwTzB2AA8gdyAGIA//MH8gBiAPIHcwBhAPQD8wH/YQDyB3MAYQDzAfMAYQDyAP90AGAA9gfzA2AA8gNzAGEA//MB8wBhAPIA'
    $GraphicsCaptureWrapper_x86dll &= 'dABgAPUD8wH/YADyAHQAYAD0AfMAYADzANd0ABIO9Q8F8w8F9A9xAP9iAPQP8QBiAPMPcgBhAPUP//IBYQDzD3IAYQD0D/IAYQD/8w9zAGAA9gfzA2AA8w/zA/9gAPQP8wP1AHQAYAD1A/MB/2AA8w9zAGAA9AHzAGAA8wDtdAAF+Q/zBwT0B3IAYQD/9AfyAGEA8wdzAGAA9QPzAf9gAPMHcwBgAPQB8wBgAPMA7XQABPgH8wMD9ANzAGAA3/QB8wBgAPMAdAAD9wPzAbYC9AF0AAL2AfMAAfUA/3QABT/7P/QfcABiAPUf8AD/YgD0H3EAYQD2H/EBYQD0H/9xAGEA9R/xAGEA9B9yADAA//cf8gNgAPQf8gNgAPUf8gP/9QB0AGAA9h/yAWAA9B9yAD9gAPUf8gBgAPQfcwAFBvv4D/MHBPQHcgBhAPUf8wf/9AB0AGAA9h/zB/QBdABgAG/1H/MH9QB0AAT4B/MDA3/0A3MAYAD1H/MD9QB0AAPb9wPzAQL0AXQAAvYB8wCWAfUAdAAG/x8EBfQP/3EAYQD1D/EAYQD0D3IAYAD/9g/yAWAA9A9yAGAA9Q/yAGdgAPQPcwAEBfcH8wMDf/QDcwBgAPUP8wP1AHQAA9v3A/MBAvQBdAAC9gHzANYB9QB0AAX/DwT0B3IAP2AA9QfyAGAA9AdzAAME2/YD8wEC9AF0AAL2AfMAdgH1AHQABP8H9ANzAAK2A/UB8wAB9QB0AAP+Azv0AHQAAv0B/AB1AAgHmcBPBgYgWFAoBQWgUMNzADEABQQEA/0AdQBhMQAEAwMC/wFzAE+zAAUEBAMEAwMC8AYFBQQBsAXwBTgBGAADAgIBBwYGBf8BjAWcDbwdfh0+DQ8FBwEDAAIBAQAAAQIDAAQFBgcICQoLEAwNDg8LDQ4PAP4BCw8JDQEDAT8JHwkNgw//iweHBoMCgz+JH4cGgw+LB/+HBocfiQ+HBoUPiweFBoUD/4V/iT+FBoU/'
    $GraphicsCaptureWrapper_x86dll &= 'iQeHBocfiQ//hwbFB8sDRQPLH8kPRQPFB//LA0UDyQ/JB0UDxwfLA0Uh+c0/CAnJP0MDxz/HA0cD/8k/xwdHA8c/yQNFA8sfyQ//RQPHP8kDRQPJD8kHRQPHB//LA0MDzz/JH0MDxx/JA0UD/8kPyQdFA8cH6wGjAe0P6Qf/owHnA+sBowHrB+kDowHpA+frAWc47T8KC+k/oQHpP//lAacB6z/lA6cB6T/nAaUB/+0/5welAek/5wGlAes/5wP/pQHpP+kBowHvH+kPowHpP//pD6MB6z/pD+0D6wGjAe0P/+kHowHpP+kBowHrB+kDowH/6QPrAaEB8z/pH6EB6R/nAf+lAesf5wOlAekf6QGjAe0P/+kHowHpH+kBowHrB+kDowH/6QPrAaEB8R/pD6EB6Q/pAf+jAesH6QOjAekD+wDRAP8H//kD0QD5AfsA0QD9A/kB0QD/+wH7AB1+/3/XAPs/8wDXAP/9P/MB1wD7P/UA1QD/P/UD/9UA+z/1ANUA/T/1AdUA+z//9wBzAP8P+QfTAPs/9wfTAP/9P/cH/QH7ANMA/z/3A9MA//s/9wDTAP0/9wHTAPs/+QD/UQD/H1N5+R/7D/cA1QD9P//5D/sB+wDTAP8/+Q/7A/sA/9MA/T/5D/0B+wDRAP8PUXn/+S/7B/kA0wD9P/kH/QH7AP/RAP8H+QPRAPs/+QDRAP0Dz/kB0QD7AfsADA3/P/8//9EA+x/1ANUA/R/1AdUA+x//9wDTAP8f9wPTAPsf9wDTAP/9H/cB0wD7H/kAcQD/D1E5//kP+wf5ANMA/R/5B/0B+wD/0QD/B/kD0QD7H/kA0QD9A8/5AdEA+wH7AAoL/x//H/wICfsP9wDTAP0P9wHTAP/7D/kAkQD/B/kD0QD7D/kAP9EA/QP5AdEA+wH7AAgJ//8P/w/7B/kA0QD9A/kB0QAB8QHptQAICQoLDA0ODwAAAQYHBAUGByEF8AYHAgMJeAABzws8ATQL'
    $GraphicsCaptureWrapper_x86dll &= 'fAseBAUdfhs+AQ0PEA4ODA4MDMIKAQMMCgoIBQcBA3AKCAgGDQ8FBwEDCHgGBgQdH40HhQOBAQb4BAQCvR+dD40HhQOBAfAEAgIAjYeJBYWXiQf/hQWNp4UPhQWJD8kDzRjVHx/JB8kDwQHdD+p/DAwIEAwICATBAAgEBDPGQ4QBBwDEAYMBBgf8AAHDA4MBwAPEAYIBgAD/wA/DB4IBwAPEAYIBwgfDA/+CAcEDxAHFLcEfww+BAcEP/8MBggHCB8MDggHBA8QBgQH/xA/DB4EBwQPEAYEBwwfDA9+BAcIDxAGBEMUfBMMfgAH/wh/CAYIBwx/CA4IBwh/DAf+BAcQPwwfBAOIP4wDBAOMD/+MBwQDiAeQAwADmD+MHwAD/4gfjAMEA4wPjAcEA4gHkAP/AAOUH4wPAAOIB5ADAAOQDf+MBwADjAeQA5ZLjP+MfBf/kH+EAwgDkH+EBwgDjH+IA/8EA5R/iA8EA4x/iAMEA5B//4gHBAOMf4wDAAOYP4wfAAP/jH+MHwADkH+MH5QHkAMAA/+UH4wPAAOMf4wDAAOQD4wG3wADjAeQABekf4w8E5A//4gDBAOQP4gHBAOMP4wDAAP/lB+MDwADjD+MAwADkA+MBt8AA4wHkAAToD+MHA+QHf+MAwADkA+MBwADjAeQAA9vnB+MDAuQD5AAC5gPjAf4B5QHkAAV+63/kP+AAwgD/5T/gAcIA5D/hAMEA5j/hA//BAOQ/4QDBAOU/4QHBAOQ//+IAYADnP+IHwADkP+IHwAD/5T/iB+UB5ADAAOY/4gPAAP/kP+IAwADlP+IBwADkP+MA7AUG6B/jDwTkD+IAwQD/5T/jD+QB5ADAAOY/4w/0Ab90AGAA9R/zB/UAdAAE+Af98wMD9ANzAGAA9R/zA/UAbXQAA/cD8wEC9AF0AAJb9gHzAAH1AHQABv8fBP4F9A9xAHWJ8h/zD/MAdAD/YAD2D/IBYAD0D3IAYAD1D//yAGAA9A9z'
    $GraphicsCaptureWrapper_x86dll &= 'AHWN8h/zB/QDv3MAYAD1D/MD9QB0AAP3A23zAQL0AXQAAvYB8wAB6/UAdAAF/w8E9AdyAGAAn/UH8gBgAPQHcwADBPYD/fMBAvQBdADAhvUP8wX1AP10AAT/B/QDcwB1nfAH8wG79QB0AAP+A/QAdAAC/QED/AB1ACAcHBgcGIQYFDEAGBQUEHUA4TEAFBAQDP0AdQAxAP+xhP8B+wH9AHUAdYj/A/8D//8D9wP/AfsB/QD/j/uR/57j/5T6lAgIAAIAdAF3k/9zAHmOU3f1AHMAe3h5N3MAB3kyeyF8HBgYEBgQ7BAIMQAxCf8PAAoAQwsDDwAGAJ0AEM5PAAIQoQDwygAQQMsIABCAMAHSEAAQSsQxAKC3AHShtwBVAG5rbm93biBlAHhjZXB0aW9uAfADYmFkIGFsbBhvY2EDAfIAcnJhAHkgbmV3IGxlEG5ndGhxBnN0cgBpbmcgdG9vICBsb25nAJcBAAAAQzpcUHJvZ3IAYW0gRmlsZXMAICh4ODYpXFcAaW5kb3dzIEsAaXRzXDEwXElAbmNsdWRloAAuQDAuMjYxMHAAXABjcHB3aW5ydIJcUwBiYXNlLmEFEEMrKy8ABFJUIJB2ZXJzoAk6MlEDgDUwMzAzLjF/Bx9/B38Hfwd2BzQDLkZvGHVuZKIQUAhXAGkAAG4AZABvAHcAAHMALgBHAHJAAGEAcABocAFjRRIBQ/IAdAB1kAFlrfAARJABkQBjMAEz0ABWMRAAOwJGMgRtkABQ8XAFbwBscAx/Bn8GewbrHQL7AUmQAGUwBgUAfxIPfxJ/En8SeBJHcmFwAGhpY3MuQ2FwCHR1cjQbOlxfQgBaMjVMTlxDbwpk4CJcUBxcX1VFFlq2BnUDIHQDIEFQLElcRQE0AVfgAHBlBHIuoAcAAHZlY0h0b3J3J0NvYApyAGVtZW50TVRBUFVzYWfRFm/QDmJ1MBBz0hFkUBVxFZUAQrcCAAAARGxsR2V0AEFjdGl2YXRp'
    $GraphicsCaptureWrapper_x86dll &= 'AG9uRmFjdG9yAHkATJ4AEGJBCAAQIAAM7EAAEAKAABz6d+xUdxMA5kSMMoj9X0QAyEy0lwAQ8qoAFW8I0olOmrQASJU100+caKCAABDSEAAQxAAGVKifBxbYABYyCJ5QAwAOAf4BQACADQAAAIARAQSAVwCoB4AYAAsOAANUAA8CBQAPlCvqlMzpAOBJwP/uZMqPLFuQATMBAMADBkYDAQwPknC6gohMfQBCp7wW3ZP+tgB+ILHyHH1UGwAQjmUIACsr0QAZxOVGV5dbTABCtiAoIpFXNADdKajVMKR/JgBAg7vXW65OqQCeqyR2o1+NUABGnT6erj2bxgBwPxCbWLxr9QBdqZEC4os7ZgDVW/nDefcxwgBOpGRjLvXTBwBgQK45LC59RABQgE6LZ5nUzwCeZtnN8q4ioQBelZY6KJNEwwC+EtCzqfI94wBOuNGGlfRX0wDBG+goNqw8YABMt/Qjzg4MMwBW90epUc95PgBao6USic+m3wDowBDG6Yym2QBbgCGFiTRu7kDiDgEBgAyAhwJBgJPHBAeAC4AFfAGAzcUdABALHgBUECKAAVWAAYWAAbUFgAHlgAEVHwAQNgeAAYSJMgBAwAAQhJCiABAXwAJoccNqbQYAATgWCADgwBfRBWxhyBtHYKdowQHAiABAxAIAAFSjwACJB8sGwIv/IsMAEBSd68cdgTgkwAMsxATBB8UGHv8AAMJIwADBDIzBAJYQhUTJBizAwrjG0w1WBMBwyR88wBc8wAvIUKEAEBDAyrzEBwStwEhYwATJJQbAABDAClPFBIBFAEzADJDADCBByAuYyQAQBdAemK3ADojIFOUKpOwMBGwRawUAYW6sYAJMbBMFAPilYBmY4AbYxHMfgGAD9ekFIOAUOOAI4QBhGe0F9WEDvGAGSGAtZRHhJXEL22EoaRjsaA1hC0DkB2ED1gdhNOADYGQClGBe8ThqSOAPTOAKHOEAZB58feABZGEc5A3pLukU5T8I'
    $GraphicsCaptureWrapper_x86dll &= 'W/g/YQ4I7CzlE+TsK1zwwgAQMOAE4QBxJWEDYepaxwAQ+GACZRO42sjzEfT8G2koWGgq4RT+kOAB4QzhUu0RYQ/pB2FlW+FiZUMEdEPlXGjgEYS+ynRvbAvhN2E15QUJ+AW14Qv84DSo7BthW5TgArb44DZxZ7BohGEF0OgBpWEjJGAMuMXzFdhtIb1gWAzgFWUy7QVhMmTkC79havEr4WzhCHFBYQusYACu4GAI5YjhOvToOghwDvc/L3A08AL4cAm/AbB2PA8apPAAEDAPvwIAAOgHMA//B/cHNVkAACtWXTAzMABvMACZMADLWTAAGF4wTTAAiDAAspUwANkwAPYwACpf8F9VMACIMAC8MADjMAANVmBwATAAUTAApjAA0A0wAO0wALCEAAOAA1iA+KLwDLAANLBjICExE1MAANMwAD9UKAAAezAApjAALlWoAAAzMAA2MAA5MAAKpDAArDAAFFYAAIIcMAB9VwAAjTAAXNBKMAQAZ3ELiwAPnrBbAACHcADxBh0xaRhDVEyRDcENLnRloHh0JGRpcQ4QAAFkG001AW1uMQFxD98DQCQzAXgACmEAANIKdgN5ZMIUcDAw8AUALmlkYXRhJDUHIQHwePI7LjAwY2YOZyAC8ABxNC5DUlTQJFhDQTECdDsBkAyoAAB4OwFaMQF8OgHaSbIDgDsBcgKEOgHQm60AAIg7AXICjDoBVHICXpAwAfIQMwFyAqAwAWDaKzABcnENAAGdMAYAN9nzACRyMgdwG1xxAzMBTHN4pAJwgwB0dwF28G9sdG3BErGBMYJ0ASB6enpkYuARABgCpjQJcnRjJElBVTIJHDoBWjIJIDkBVK1zAiQ6AXMCKDABKICYDi4CCYAbAABQsQAACtRxGmVDCiSzAADKzHcbMjEC8LTwJLEEVTMBM/JPtfodNPKPtlgAANzAXzQBNgWulOexAzQQsE4ATLEj5BLwiawA2ABC9ABzsl7KMADJMQJic/IAANBw'
    $GraphicsCaptureWrapper_x86dll &= 'F7IMwHNyYyQwMXIYMAEe0HIXMgFyCg0AIgWTPhlfAQcAdVJxAvFAdKb9s0CEcAB9ArVBdQD5WPEBVpgwA3FbOHBi3DACva4b8wCxXXECzvQAPPBvWtjwAd30APFw1PAARNYc9AEwUdDwAKvwAHEJOfEFDKe/irUH8QiMXduzAjEMOL8CugK2sALxAFq+OANsPwM6A/o0A/KbNANxAaA/AzoDP16zAs3xPtCwAjFnEKi/mz8V3QsAc3AEtQDxLHv4AHUD73EEMQCxDHEATHAGsQJxGXuxZzEBXLQH8QDxiTEBbCcwAbFeBQC/J/sAvCi9+wD48AD2D7wM/Q+l9A/N8QDMvwK6AsZaswIxEp74vwK+An0AtQM0qfMrzkxwAL8DNxYdX7MD+QFNtRNgsAM5D9Qt9wWUbfQFrP8F+gVH/wX2BcAp/AXTLvcF9PQFDKoD/wX5BN23oHtfABD/AAAABAAKAQAYAgQ4IKoAEAZABWAAAOkwABAi0AWTGQMALFQAbAGMXmwADghEAm4Jnq8YvoCpDL7VMgNfCAALuAAbvQEn+BBfAQAFUzUHBAQDwgWFdasAEAaAA4EBmgeECTCACYlP8jeLB+wVOINXgRVkgBWJU46HtmCDFYFpkIAVgQugjBkvgUWNU4kjgQG0jEnJQWuDIYEtCYAD8IAPgTE42qyXm3iARYEFg4ADhQvt2QGOwAnBRZnEC8EBwRi3wQDBgsEEYMAbzVRwwAQpySqHR8sDgcwDgkz7x4rVP4DAFMZRwALCUcw6NcEf/sQP2MQBwQMET7gAEBfAAMUDwQHQyAdpwQEnUdsH9MQHAQDnC8ACxQXUyAnTUgAQ5vLAAMEo8K/AOMAAwQacCMHDAcU2AQNdG8MEFNzA1wZYxAGArgAKEMFbcMATULAAEGYMwADBGGitwxjBAmzXwATBAsEJ7MACZMAMwQntwhTC0xjhBuhkCOIM9ARtYQHgeAPlFMxgCWEKLFdgD2EKgQKU7BsM'
    $GraphicsCaptureWrapper_x86dll &= 'YACG2hHjBKRkFmEB2GQG6QnWROQX5QGY7AFYYAbpAWrA5AO0eBUeYA/hALCrYBVpB4xsCaxkEdh4N3I4cAO6E2NT5RrpMFxT7BJhIQUS6w5c5BJLlhfkAeQIEOgjtMN3Empc+BWseAM8bAphE5G6EGMPhGhEZi1kPbjoXHaM7AthCCDlG3gWZQok2rFjCgjgAGUKsPRj4QS2JGgPZQgoZC3lPNjkKWqM8BtrZAQQdBNhDNRtcAwEZEVlDGTkA2bMsmVjlg5kAHix4BhgAOgBYABYNwAAqjYACAC8NGA8MwAAzVngAHE1YMxgAAjgATEB4AHjKgAA2i0AAADvMAAA9ywAQAD7LgAAI2AKMlVgAEBgAE9gAGVgAHZVYACJYACfYACvYAC9VWAAyWAA3GAA9WAAD6qzI6gCoLUEoKMGINyACAAJAAoAC+AfAA0AR3JhcGhpAGNzQ2FwdHVyBGVX4ABwZXJfeAA4Ni5kbGwAQ0BsZWFudXDUAQAAR2V0QnVmZmVgckluZm/RAIQBTQxvZMIB5gBuaXRvwU0CZEZyYW1pAgMBBE5CLgFUaW1lZINRAYQEQ291bnTxAEBSZWdpb25yBUl/kAFlCbEApQIvAUMDiQFQwHJpbWFyeS8DBAYrFQGxbba3ZcawAFxxUAAA5LU3AdAwAeBWcDAdeALysABUcAIoWXgCVLewKnACBDgBnhUwAQAwATg4AWq4AJQANDABFPgEtrnwKFXwBAQ4AdgwAQAwAVBVOAH4MAFMMAHM+AQ+ULsAAMjwBHw4AWhVMAF4MAG4OAGSMAG0VTABdDgBvDABcDABpFU4Ad4wAaAwAdQ4AQhWvHAQMAHsOAEsMAHo1TABmDgBUDABlLENOAFshL2wDTABZLkIMAFgVTAB3DgBsjAB2DAB9FU4AdQwAfAwAfw4AfyVMAH4MAGIOAEevnAGrzABDwBwBjAYcDAAkLEYtQAAyCBwyTAAMI+AsKCqgDEBLrABGjAAQDQC'
    $GraphicsCaptureWrapper_x86dll &= 'qkowGjAwAKzwAMIwAKrcMAD0MAAGMAEQMABaGjAAPjAHAQCqMA94rTAALHAJ8mu6cwBScACqNrQAPrABGjAAeDQCWkpwAChwFgEAirADmFUwAAzwAGb0AYRwA8ZVMADcMABwNAQadACsrXQAyjADAQCU9CHydAGq4HQBALQE1LAKyDAAVpTxJAAAfLAAqLAA3lVwAApwAIRwAPAwAL5VMACc8ACKMABkMACiVfAASHAALDAAfLQDlqswAQEAnDQHsnAAbPYpAENyZWF0ZURpAHJlY3QzRDExAERldmljZUZyQG9tRFhHSdMAAAAALQBTbGVlcAGwSkVudW1EaXOocGxhhTpz0EtEoQODpAQjA2QzZDExwkoAYXBpLW1zLXcAaW4tY29yZS0Ac3luY2gtbDEwLTItMAICGQJudBB1c2VyMAJzcGGVMEdzcQIxdQJMAcBGAERlc2t0b3BX4GluZG93kHAxAZhNcEEAmQLkAEEMZAJVIFNFUjMyUwSIBQBfTXR4X3RyeRBsb2NrsLQCP18AWGxlbmd0aF8AZXJyb3JAc3QAZEBAWUFYUEIgREBaAInzAnVuAeICTVNWQ1AxNAEUCRAAX19DeHgB4lFIYW5kbGVyDZBiIlABMARfZXhjCGVwdJBLX2Rlc0B0cm95ACGeAWMYb3B5MGR0AXRlcghtaW5QFABGAG0oZW1jsQFIkQBzZQZ08WLBBlRocm93QkUFBAAANQDkBF9KaBMINEAFbW2gASXBVQV5cGVfacARdQgQX2xpc/AEVkNSQFVOVElNRfYMVwAAYWJvcnQAPAIA8AJ2b2tlX3cIYXRzUQZ7AGlzFndAGdEgOtIBYWxpFGRfUhplYAtfbm8nEQaRDEAUbm/wRwBfAGNhbGxuZXdoEAAZAG2gAG9jAAAAQQBfc2VoX1hmaWxBA0EHGXACbxBuZmlnsF1fbmGBEBh3X2FyZ3aSDSppkBxpkAZ6pgFlboB2aXJvbm1lsGcEADYa'
    $GraphicsCaptureWrapper_x86dll &= 'Am9uZXhpQHRfdGFibFAKPmgAX3JwY3NxBpQBZih1bmNCEyQxE2VjFHV0TAMfsAhydF8zABgwAQAX0ACCAAAY0ABmcmUwBTjzBmEaJAA5twBfZVoucnQ8LXKgceBy6SscAmhlDGFw2i31AVO1AGluLWNydC1zAHRyaW5nLWwxAC0xLTAuZGxsAAAAMgBJc1ByAG9jZXNzb3JGAGVhdHVyZVByAGVzZW50ABEAAFVuaGFuZGxlAGRFeGNlcHRpAG9uRmlsdGVygAAADwBTZXQWPAAMAEdldEN1cgZyAIwEugBVAFRlwHJtaW5hdABgAxIEAAUAfURlYnVnCGdlcgV1AABRdQBlcnlQZXJmbwBybWFuY2VDb5R1bgFVDQ9VSWQApYEHFVRocmVhZAAUBAAXARVTeXN0ZYBtVGltZUFzgEwCZYEEAAEARGlzDGFigAYCFkxpYnKAYXJ5Q2FsbABIAABJbml0aWFsAGl6ZVNMaXN0AkiAEABhcGktbQhzLXeBom9yZS2qcIM9dIIfcwOnMQKnwY0UZXJyb3KCkY27t6EpAxWNFGSBl5olbANpQGxvYWRlcoEUMg2YOmbARVoTc3lzaShuZm/aCGnBZ2xvEGNrZWTKCSgAQyJvR1RFeADAcEZyZGVlBF0AFkFpgXJBrGRkgH8AYAdADEPAQAx0ZcEJg2hlZE1hIHJzaGFswIAGAABNdWx0aUJ5dABlVG9XaWRlQwBoYXIACwBSbxBPcmlnQpdMYW6wZ3VhZ4AbBKUAwHwEUm9AGkFjdGl2wmHCqWFjdG8AIAAAh0QgQB8Ae3AAAEZAIOhVbmlGLQDAHEEGwSMYAAAJQIjGOlB1c0BoRW50cnnCigAYGQBMgFzENkV4V0gAAAJCDkFsgAsAAE9MRUFVVDMy8VNQY29tW2GO7k0IAALfgPhCnImk1Al5DWhgFgkEAEcAbWVtbW92/8AfHwAfAB8AHwAfAB8AHwC/HwAfAB8AHwAfABwA/wAA'
    $GraphicsCaptureWrapper_x86dll &= 'G+UAAQABXwYKAE7mQAa7vwQXALEZv0R1hpjnAeEP1JYAEGEBAC4/QVZiYWRfAQCwb2NAc3RkQCpAaQNVQIBzQH5fY4HgqGdlZF9zdGB8nkCiWCAF6ghmBWFj4XmAX2RlbmllZHwFSGNsYUAFbm+gBnb4YWlsIcMmBvEFImx8ChhpbnZgh2Aacmd1Dm3g0sgF6h5sb2dpHmMkCiMf8wmhE2ltcBxsZYEJKBpyD2xsZRhnYWyAH+EAdGVfMcAbaWduagh/A3RfRG91MABmX2LAdmTuc/8N8go0AnKRGAUL+QH/fg8/An4K8hzUHX8SfRCgFXHgV2ZhY78C/wXyBW2AZXRob2RfY/AlA/8P+AJ3cm9uZ193A3i/BfMNZSVlfyr/JF/IcmVnYGFlcioofy8AcnJheV9uZXeAX2xlbmd0aD8TH7gF4ZDwlvkEPQV0eXCSZVASZm/8CT8kFSGKQLAAVFACZEV2MBoCSCKcckBVRGlyAGVjdDNEMTFDBGFwcaBGcmFtZSBQb29sQAQBQEcAcmFwaGljc0BAV2luZG93ZiJVYElJbnNw0APSM0bDISRidkA0NUDpAGwDAFY8bGFtYmRhAF8xPkA/T0A/PD9GAHwxd/QGIKZ1cABAQFlBSFBBSOAwQFpAQEEwvynyDYf2MXE/pC9iYXNlPQMD/SLxEkA/JGFiae9/EXIRRQ9ECUkgpQ8RDxF3DxEPEW0DWMwKfwpzCkmAVW5rbm93bq8E/68Efw//BH8P/yD/IO8P7w+v7w8/Cz8L/x1BtiIysCKcQkLPIs4i/A4/JB8i/68wLx8vHz8PPw8/Dz8POzD/fw1/DU8wfx1/Ps8Nzw3PDf/PDc8Nzw3PDc8Nzw3PDX5a779CnwTtH3oRSUTE7xN7AgJttcZAPzE/P23wYWtlXycBuQOiBm85A285Ky4yM0BQQVD8QVghCv8p/ykvHK85rzkBmxykugBvd3NAd2lucgB0QEBVSUlucwBwZWN0YWJs'
    $GraphicsCaptureWrapper_x86dll &= 'ZQBARm91bmRhdIBpb25ANDVACTgQV2luZAjYVjxsAGFtYmRhXzE+AEA/T0A/P0ZpAG5hbGl6ZUNhAHB0dXJlU2V0AHVwQEBZQUhQAEFIMEBaQEBpKG1wbAV6AAAA1JYEABABBy4/QVU/ACRtb2R1bGVfgGxvY2tfdXAAc8BlckAkMDAONf8ABU8AAgJiIAAAgBgtwAE4wAHLBwFAAAAAKlDQBQJAAWjQBQkECw4FxgWQQAKg0AAABDQFRwbY1QAAkRFICjQFNEABVgBTRABfQAFFAFJAAklQAE8ATsADSUABRkPAAgEAvQTv/sEVA7/EDcUBBQCAG8IuCQCSAAUCAcATdAByAGkACG4AZ0ATaQBsAIJlQBZuAGYAb8AIom7CCDAANMAAOcAAU0MAwCUACMAFUEAOb0AAZAB1AGNAEVZRQA5yAHPAEG/ADwBxwAkuADPAAMEBwQxSFAAZwAxDQAdtAHBUAGHACHlAMGFAA2VVwiNVwDdaQF9TQAhmFcATd8AGcsAGIABEVUABdsAAbEAGcMILbuPABwEAegApwBTFLcEJNnPAIsEzcEAIRSIAAKpXwARhwARwwiggQjdVwQFXIh9koAF3IAcgVABH5ARo4AJjIgJDreIBdGAcYxFBoB5JYgpYWAAcYA9hJXSiCm59IAVsKBptCSsJKxLhJGPXogGhPeEkTOACZyIKISb2cGAloRpnoAkhH38lbyXoZgAf4ApP5AjhHqELD2UnoQH/Fu0WXwB4AGo/IAAuYChsIAABAE58ABduQ+k8/wvnCwEA6iwB6eZG5Rlz4AJJAKpNoAxP4EpUoDJOoABqOuAfWeAEdeAA5SFuXeABdOIB4RPhPGWgEiDVYAJvoABzIiVs4gHhEV0hPmPiFmEHY0Rq4AlzW2IIoVZyog9hA2agAGlf4gJhKSEMYwejFHJgAWl3og7hBmEhaqACYSHlCm314gxp4Ah5JgmhYqET4QK7YQ5hNWLgDyFMZQR34gD2'
    $GraphicsCaptureWrapper_x86dll &= 'aCQOIwhmIg5jI2Eeoy14IQAsIkJtCaN9oxVwv6ABoWYlGiELYQ1jFmeiMX5tZhzjG2EGYUYhFSNpbaugBCEPKKACeGAAKeIb9eUmYiIKZiIU4yohDSOAq+ECoQIhYj1E4pRW4ixRr5EAACQimVSiEm4NoAts4g7nfAkE6f0B4QA8P3htbCB2CGVyc0D2PScxLgAwJyBlbmNvZABpbmc9J1VURoAtOCcgc3RhgPoAbG9uZT0neWUAcyc/Pg0KPGEAc3NlbWJseSABAARucz0ndXJuADpzY2hlbWFzAC1taWNyb3NvAGZ0LWNvbTphAHNtLnYxJyBtAGFuaWZlc3RW+9kGoQQvtQTAAM9mDwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwA/DwAPAA8ACQABf4BxATAAKDAzMGgwdjAAgTCcMLcwyTAA3TDkMBMxGTEAIzEqMUMxSTEAXTF7MZYxojEAqDG0McMx0zEA6DH1MRUyMDIAXTLAMs8y/TIAGjMuMzgzSDMAcjMpNHU07zQAuDXWNQA2HzYAZTZ0NqA2tjYALjc7N2k3djcAjDeZN683vDcA0jffN/U3AjgAGDglODs4SDgAXjhrOIE4jjgApDixOMc41DgA6jj3OBI5LDkARDldOWw5gDkAjzmjObI5xjkA1TnsOfs5EjoAITo4Okc6XjoAbTqEOpM6qjoAuTrQOt869joABTscOys7OzsASzt4O4o7ozsAyTvYO+o7GjwAPzxRPIE8pjwAujwnPVg9cz1Azz1eP4w/wY4MAfAPYDB3MJ8w3gAwDjEVMSIxLgAxPTFNMW0xsgQx9zAOLTJBMnQAMpcynjKpMrgAMr0yzDLoMjsAM6szGTQyNF8ANG40jjSkNNMANB81TTVXNXoANbw10DX5NQgANl82bjanNroANss29DYHNxYANyQ3MTdLN2oAN4A3oTewN8AAN8w32jfvNxcUOCqwD1awD5M4ogA4'
    $GraphicsCaptureWrapper_x86dll &= 'vTjIONY44gA4+TgXOUg5dwQ5lhAPCToqOjsAOo06uDrpOgQAOyU7PjtaO4wEO52QDb07xjvhADv8OxQ8KDxTADxyPHk8iDyPADydPLc8+jwEAD0fPT49VD1bAD1yPY891T3dAD3nPQU+KD5JAD5RPnM+jj7UAD7+Pgg/LD9PAD9lP2w/jT/6Ej8CiwDcYAAFMBAAMB4wKTA0MD8AMEcwYjB/MMEAMNIw6jDyMPwEMCCwIHUxfTHsAZARAjIQMhsyJgAyMTI5MlQycQAyszLBMtYy9QAyDjMeMykzUgAzmjOiMxU0NQA0UDRkNHg0jAA0oDS9NNg09AA0/jQONRc1IgA1TjViNXU1jgA1mDXKNeI1/gA1KTYzNkM2UAA2WjaGNpo2rgA26Db7Ngo3IUA3NTdbN2WQI5YAN6M3zTfYN/MAN/s3FjgeOEEAOGQ4hziqOM0AOOc4Gzk6OY0AObE5AzsIO1BAO3o9iT2rMg9YsD7bPjqxDTDDmGAAAOcwOTFRMWkxgIYxlTHXMQYQDIBAMtcy8TIMMgsASDPIMw80nDQAyzT/NI01MjYA+DYjNy83dDcIgjeIUBvMNxE4AE84Wzi5OJ05APc5uzrBOvE6AD07rTsLPE08AF08gzzyPJY9ArYwBxo+QD5PPgBmPmw+cj54PgB+PoQ+ij6fPgC3Pr4+xD7WPgDgPkg/VT99P1iPP9pxCcC0ePAnRwGQN4MwpDCpMMIAMMcw1DAWMR4FcApbkAqHMZ8xCAAyGjLcMhkzM0AzZjNwM3xQFWQQNLw0wnAK1DTdEDTjNOkwFQc1FQA1HTVTNVw1ZQA1cDV4NYI1jRA1ljWc8CjCNcwANdI12zXhNekANe41AjYHNjsANkk2UTZXNl0ANmo2cDaCNosANpY2nTawNr4ANsQ2yjbQNtYANtw24zbqNvEBEBD/NgY3DTcVEDcdNyUQLDo3P0A3RTdPN1mwPHkAN4k3kjetN8NAN9k3pTi+sCviADjx'
    $GraphicsCaptureWrapper_x86dll &= 'OA45UDlVADl7OYo5kzmgADm2OfA5+TkKADoWOiI6KDouADo6OkA6YzprADpwOoM6lzqcADqvOsI6yDrOADrUOto64DrmADrsOvI6+Dr+QZAuCjsQOxawPCIAOyg7Ljs0OzoAO0A7RjtMO1IAO1g7XjtkO2oAO3A7djt8O4IAO4g7jjuUO5oAO6o7ZTyYPM4BsC8nPT89Zj2DAD2tPek9Nj5qAD6cPtA+7T4UQD8+P3I/pnAX9yA/AGAAADHOITAISDBvEBfkMAExLAsxAAEAqAyxzDF0ijEByviwANA21PAQiOA25BAp7Dbw8DwA+Db8NgA3BDegHDogOiRwDSxQDQBUOlg6XDpgOiBkOmg6bPANdDoAeDp8Org7vDsAwDvEO8g7zDsI0DvUsEjcOxw8CiAQO4CwCgw9ED0AID0kPSw9RD0ASD1gPWQ9fD0AjD2QPZQ9mD0AnD2kPag9vD0AzD3QPdQ92D0A4D34Pfw9ED4oID4kcDw8MCZEPiBYPlw+YDAmiD4AjD6QPqg+rD4gsD60PrzQPeQ+APQ+BD8IPxA/AihQPjA/ND84PwA8P0A/RD9MPwBQP1g/XD9kPwJ88E/GsgCQP6Q/tD+4PwC8P9Q/5D/oPwDsP/Q/AKAAAADQAQAADDAQMAAUMBgwHDAgMAAkMDgwSDBMMABkMHQweDB8MACUMKQwqDDAMADQMNQw2DDwMAAAMQQxGDEcMQA0MUQxVDFYMQBwMYAxhDGIMQCgMaQxrDHEMQDIMeAx5DHoMQDsMfAx9DH4MQD8MQQyHDIgMgA4MkgyTDJkMgBoMmwycDJ0MgB4MnwyWDZgNgCUNpw2pDasNgC0Nrw2xDbMNgDUNtw25DbwNgAQNxw3PDdENwBQN3A3eDeENwCkN7A3uDfsNwD8NyA4NDhIOABYOGg4eDiEOACkOLA40DjcOAD8OAQ5DDkYOQAgOUA5XDlsOQB4OYA5oDm8OQDMOdg54DkAOgAcOiw6ODpAOgBg'
    $GraphicsCaptureWrapper_x86dll &= 'Onw6jDqYOgCgOgg7HDssOwA8O0g7aDt0OwB8O7A7wDvQOwDYO/Q7/DskPAAsPDQ8SDxcPABsPHw8jDywPAC8PMQ87DzwPAAQPTA9PD1UPQBYPWA9ZD1sPQCAPYg9nD2kPQCsPbQ9uD28PQDEPcg90D3UPQDcPeA95D3sPQAAPgg+DD4UPgAoPjA+RD5MPgBUPlw+YD5oPgB8PoQ+iD6QPgCUPpw+pD6sPgC0Prw+xD7MPgDUPtw+8D74PgAAPwg/ED8YPwAgPyg/PD9EPwBYP2A/aD9sPwB0P4g/kD+YPyCgP6g/sIDovD8I0D/Yg+YAALAAFABQAAMIgOckMCwUMDCA5UCC5lQwaEAwcDCEMIzAc5wEMKBAdLwwxDDIQUB12DDgMOjAdQQAMQwxIDEoMSwlQHY8wHZMMQASwAAEAEyAAZQwsDDcADAIMTgxXDGMAUB52DEQMjwyXAAygDK0MuAyEAAzPDNYM4wztAAz4DP4M9g0EAA1uDUINrg2+AA24De4OPg4IOA5mDmEOoARPwA/AA8/AD8APwAwAA=='
    $GraphicsCaptureWrapper_x86dll = _WinAPI_Base64Decode($GraphicsCaptureWrapper_x86dll)
    If @error Then Return SetError(1, 0, 0)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($GraphicsCaptureWrapper_x86dll) & ']')
    DllStructSetData($tSource, 1, $GraphicsCaptureWrapper_x86dll)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 50176)
    If @error Then Return SetError(3, 0, 0)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\GraphicsCaptureWrapper_x86.dll", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_GraphicsCaptureWrapper_x86dll

Func _GraphicsCaptureWrapper_x64dll($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $GraphicsCaptureWrapper_x64dll
    $GraphicsCaptureWrapper_x64dll &= 'CrkATVqQAAMAAACCBAAw//8AALgAOA0BAEAEOBkAEAEAAAAOH7oOALQJzQAhuAFMzSFUaABpcyBwcm9ncgBhbSBjYW5ubwB0IGJlIHJ1bgAgaW4gRE9TIABtb2RlLg0NCgIkBIaUJUqz0EQEJOAFA1fNJ+HTEQIHIOHYAgch4cYRAgcl4dYAB6TFJQTh0gAH2Ty34PsRAjMl4IQAB17NLZTh0QIHJAQH2+ABB4jQRLMCB17NJgIXMFJpY2gBZxXTUEUAAABkhgYAz18Ep2iFCfAAIiALoAIOLABaAAaEhAk2WQGAAgWAAIODBQIAzAAGhBmFAwAggA4Brn0CD2AABgMaBQOPBwMF4BC8AADUgBa0vgAEAAiAKwAAAQBwYQEq8AAAkAYuA8LQIQELnwAAOJjVsJ6HgOkCVAQAcAAA+IIrQRMALnRleHTAAY0PxTnBPsQxhjYAAGAuoHJkYXRhgAhcwxScAF7EAAgAwJJALoMJ2ADgEgABASwOwADAOHHMCcAucAMKwjjAOgAKCMAAytATcnNyYy+BHMJCADbBCdLRCWVsXm8ACoEcAqzBPNrOCUIfoLs/AD8APwAMAEiNDQJZQDzpfEYAAMwBAABAU0iD7CBIIIvZSIvCYAPdiAAAAA9XwEiJCwBIjVMISI1ICIAPEQL/FT5gIAcAi8NIg8QgW8MgzEiDeQgACQUYAomgAg9FQQjDzIDMSIlcJAhXYgkIjQWXoAhIi/lIAIkBi9pIg8EIAP8V9V8AAPbDIAF0DboYgRCLzwToGwAQSItcJDAoSIvH4Qpf4AqNBRHhD0jHQYJjSIlBCSAQBWJBAokBSIs2wcAMYQQ5BAIAC0j/rCWbIAvjArFvBz5rBwCD7EhIjUwkIADozv///0iNFcy/pgEiAQLzUKAIbCG00YdyITIADkAL46ADWEiJA6cibimR8wfyW6Bl4AeL7wegByjgBgExgBb/FVvABGUKQEgIiwWDAINIM8RIRIlEQCaN'
    $GraphicsCaptureWrapper_x64dll &= 'UQiApCiaAeAIK+EIQA6JAWENuI0F0+EBYRohBSAiDpKAIw4RiyYOi0yACDAzzOiuQGHAD0BbUsNsF9WGchc2IwnHSop9H5XzB/Zd4gdvQe8HSIsRSMfilUgAi8pIiwJI/2BGEGFKgAB0JBgBS0CYi9m4wDbgNjRdIJEAAEg78Hdj6NACTyEGyEyLxjPSJOjhgAEz0sABSIUAwHQrSIt0JGAAiVgEiRBIg8ACHCBCEI1CAYdBwBhmiVRZHEBCoU+SWKEfX8ODQHz9okJkUaWlQt1OYDBDAXTS/mIDFahlA8FhA+YeAUUX2cdBCN3MuwCqi0IMiUEMSASLSuAXSxBIhckAdAZIiwH/UAgDah7mG1VXQVRBVqBBV0iL7MQ9lGClAcI9RfhNi+GL+hhMi/GEDCQMiVEMwEiNWRBIx6H54F4GRYGnYBNV8DPJ6EKQgBNIi03wAA91AAhIiU3gM/brCiRgBOijFAFMjUUK6NAMrwA8/xBIi0B16EiJdeACA40AReBIO9h0GkgQgzsAdAAMy+hiA5EPoQGJM0iL3usAFUiLG0iF9nSADUiNTeDoRcUBgIXbdHNJi17ABEFgHXggSYsOQQ8MJOhUkAhJx0JbSYuC1vAE/9dJi04REVgPhNyDC0wJOkQJTRdACTAAgQKzAwIz0v9CUAAyTejozpAa6bqdUAEzICZQA6AGDgACBdAP6CECi0XoM9sFMSA3sCDolU0AAACL8EyLfeiL2IBI/8tJjRxfoAGAGg+3C/8VrQApMIXAD4QwB4Aw6wIAg8b/deYz201Ai8xMi8OLoArODOheUBfhDSODyP8A8A/BQxiD6AHID4WnAAPoU5AFwicaw8AnUsIAEgt0BegCXNEAg33wAHQJERAL8OgcEAtJi8YFAAL4gTc1PQAATACNXCRASYtbOAhJi3NwAONBX0FAXkFcX13DQAcBAaEoi9hEi8ZNA8FQPUgcD4RosS+wBQAZTYX/dA1Ji9DX6CxMgFxR'
    $GraphicsCaptureWrapper_x64dll &= 'YAHQByImsAD/Fa5QeccAkhaxnRWasADpM9AByfANiWORMxVHIAFwJwBMi9xJiVsYSRiJcyCBNRBYBSW6A9ZF4BPxSIv6SIuKSXIrO3AVTY1DkRlikKBFScdD8hoRGlyAJCAzyUiL03EsWCDoChAIcRIK8zErIPz//4tOECTHiUoP8UYoYQ8+PENfUJuxObE3MGBfczBVVtQvEbABBZa51i9Ji/mISYvAcGSL8UXQHiSL0CApz0thBAWQAssRB8B0FEyLTSIYMQhMi0dgCVcIUIsP/9AcMX4hA40V8SlFwCrAUTFF4DMI/+srBygITIsJDTQoluBLgB1B/9FIcWAjSIl9wDFwAxAvSJA72XQXxzFF+3EawaABiTvrEkiBGWIxvi5lAdAJ8BDxHxABkNUfFDc7YxB4EBBQX14GXTAQc0SLFeiFAIQATQBMi9no3UIEk+RC91WDwfBMOQAwJpTI+gECC4M260rBNLfDQARGNQWY0Aw0BYk/BSiLFVg3B2n/AYsVikT3AUn/AYsVSPcFoin/AYsVIPcBCf8B2IsV4DC29AHpIg38AYrQ9wHJ/wGLFbz3CaKp/wGLFYz3A4n/AeiLFVz3AWn/AfAN9wE2Sf8B+hEp+QEykUiJpnzALact28ixH/qAHBWTK0IgKVKgJ00IiQdgM5IrECSB+w4AB0CAdRbo6PZyZ70T4LySJUpIIDyB+wWB0QEZTIvH6MNDaxas0FACAikDAg4BAaUEAvYDAtOgBAIIAwIoAUAABAL1AwI6oqkEAudHAgJXJgb0AwLU+ZwEAsYDAgug0AMCqvMDAvg1CKUDAgImBiryAwL3NQiEAwIRAaoEBALxAwIOJQZjAwJqVAYC8AMCNWDPAgJCVQMCDDYI7wMCzDUIIVcDAmDHBALuAwLrFQQAVQMCDQYC7QMCwkUK31khsoH7AKsEAuwDAsmlFQS+AwLHBIUS6wMCCiAFAp0BAkyLz4tQ0+gQ+KIB9cUFgtH3t4Hs'
    $GraphicsCaptureWrapper_x64dll &= 'kLODSBEgICIE0MZzTSVIi4wkCpjBVtDCkusFSIsRMJ1IgcQBA1vD64Dw6+7r7DPS4E3OM+QEOIWBJyBVV4XBJwA+tE27AAAASDPESIlFIPDHRegAAABMjYB5CEiNBQ2BAMABBJBIiQFIi/JMIIvxSccHATwzyYBIjVXo6EhGAGgAi03oSIXJdCsASIsBTI1F4EgojRVbA3LgAVL/EARIiwEoTdhIi10I0L8BACTrDzPbAQAg4EiJXdAzwCCNewZIxwEWAEkAiUYQQPbHBHQAE4Pn+0iDfeAIAHQJASfo8/X/Av8AGAJ0EYPn/YhIhdsCFtDo3AMWKAF0EAAs2AMs2OgWxgAVAA/oAw/o6LYhAA9Bx0YYAWJJOQA3dCJJgz8AdEAISYvP6JsAGkkAiTdIhfZ0DEgAiw5Ii1EISItAzv/SSYvGgGrwQEgzzOigNYGHXAAkUEmLWyhJiwBzMEmLezhJiwDjQV9BXl3DzADMSIsCSDsFagCAAAB1F0iLQgoIAAZlAQYKSYkIAPD/QRgzwMNIBItJACsBSP8gzAjMzLgBQ/APwUEIGP/AAB/MSIlcACQQV0iD7CBIIIvZg8//AA15GCCD7wF1PYOpg8EBAG45AHQF6O70UYBrjUsIBAffAAe6giABzYvL6OI4gQMAXCQ4i8dIg8QAIF/Dhf957/8gFWtUAACBMYtJChCBJgqB0ItQGEmA/+K4DgAHgII/VYsNINgGKNEGB0I2YGwwSYNw1Qc4BQbMBUAbxQXFRQGARUBDKIPIgYFCAYPoAXUFgDQAKMOFwHn3/xUsmVNANMFMCMRMAkkgi9hMi0TBZ/lJBjvAXQFhSTtACHRSMoNmv35AYw2EZrrpAAN0GQMGlgEGwAICBgKRAQMMSIk76HOA////M8DrVwMJVcIFQQQJjAEDNMC3S0XAVbnBXujdMwFeyAwzwME0QHnX6I/8AYBpiQNI99gbwEj30CWBN+sKwAeJQAO4AkAAgEFpMAPD'
    $GraphicsCaptureWrapper_x64dll &= 'aMBCAfBI/wjDEEyL3FNAM2BIiwgFsbAE40QkWEhki9pA4d97Qd8AoEgAi9FJiwhJx0MBAuRNjVvox0QkhDj/weuLShBMgCiATIsRSYlD8EArABhIixJFiwlF1osAJ4AAEkAN+EL2ABICKAEXIEH/UjCFQMB4HkiLTIEWwyhIiQtBAVhhXqwyAUAOg8RgW8NIjQJUYErI6Eb5//8BY1UISIl0JCBVAFdBVkiL7EiBRuxgXQAMBfmvhYj4BEmLIBD6SIlV6ABFM/ZmRDk1s4J6gC4H/xXdUWA3RMdFIj3HRbwgJwAN4BsvoAPABshIjUVCuOAAsEyJdeCQ0KQfGKIDMXmiA9igAgDgTI1N8EyNBSRefSEDVbCAe6DoAKUhAACLTaCFkMkPiOIiEV3woIoioGCED4SLAh516ChIiwPgkujgNqN8G8JlQpLowArglsB0Z4mihJDxoWsFecHiDRLo4DIFbWEBi1XwADPA8EgPsRVWqcABdRoACqAgCVlhA4iNDYLAAOhzQQCLVIveQBMzIgbXYIjoICj+//+QoAgNJ6FhAoXb6xRgEKCEA0ILgQNMOXWgQpSgjOgTgQ9Ad4tN+OEvZCwxYY6cJGErwI4gI8COQo5eX10gMlXQaOi398ExzOFkpIHRzvCBnsBkYTQYVWEzA0oMYK6muwCMSIlN4MjHRcAiuosKhrtgV0A2x0XITghiLr3qd2Ig0MAD2CMF4brhJ1Ij4Cf/EMBGdoK+iflgAMcDQQRgCsHCYAjgQB1hCJnjNmoIgEyNFXBRwD3/UBhgCCbiLkDOLYEDYKTDrTEwwQFDH8tBUAIeyCBQxPZAJmQBXrhgAcAf4GfgGlggUnAAEEiJeBhVQVQAQVVBVkFXSI2UaKFAU6BDU16tJSAAJ0Uz5DPSM8kA6Hk/AACFwA9EiByAF0G9AABSQSCLzejVL+EF2EUQi8Uz0mB66Oc+ESAaQzhXwAgPV8AA8w9/Q2jHg6hDQdoAAMdDYAJA'
    $GraphicsCaptureWrapper_x64dll &= 'AURoiaOswkyjAHfBALjXwwBBLMAAyMMA0CMFISFfoAHB4sAAQS/AAPBhA4iCo8FzSIs9Qb/hJgQdOsEAhf90GkipoNQtHuET1UEB+iFzCIsdG8ADTI1zECBIjXsIvsFpiXUg78dF8wVCMA8AErHBABMAIBLHRRckAKHBDGX/YAD3uKIFIJBNi/xgqVPgbQL3IYFITIlkJEAv0ABQS/BEMEUwohxEJDYooR2AAQ8DQwJPRTMAwEKLVL3vM8kQ/xWlTpAFA/5JIIP/AnytAB1rTACLff9MOSN0FTkhaWcr0AHAAEBRy+gSWsEAiTsAAvdMOaInAQLP6EYCAicBAgjP6DkCAj9IixuB0DpIizhNOSYheijO6CCAAU3geI0VNB54wzvX0AuwXR0Wsr4hAyUPYAAhgRNxBowCHREzoBLL6M9ANIjozD2gisDp+6IWjGUH8CNwZw3cvZEEQEkQ/xXqTYEgedoz4ATHQAHgBMCxAeUEVLMc5gSA4QR94ARBEIv06ZpCV00HTRCFyXUPgAXnSYsAzEmL/EmL1OuOSnEWQBizNA1xdPEcdE0XUAEfQEfQB7BHAhXgNPcQDYQQDUmLyVT/0LEohAIgTTAZTbDnSIv50F5ACTLRCAiDwxhQGOdIO9gMdBURFYBay+jg7AUhQ89gW+sPSIXSwTB6jU3n6MpQAYBFhGUHgkUH6OIp4FHlsYwnwTXULHNFgTFwRROgjHFFe0DkjEFdQcpc8jYPwC9U85AEcAxkhxlyDKlzeAwTAjIJEALMzLBrSYlbGCJWAWGD7HDwNu6pQyZsAEj6SIvx0J6LCAVnvIEVwA+EfiFgJUiLSChQRw+EAnHBADlYGA+EZyuQAJAE0AEoNTAtTI2ENeTAE02Jc7BgAQK4AERJjVPQ/1DKOMESWjIEDRMxBcB/oFhIiUE8MAYD8AAAi1A8RItAQIMCuCE4A3Uni4jMgYAAhcl+HTmYcTgQfhWJSABvBde7BbACiBEBiUhU'
    $GraphicsCaptureWrapper_x64dll &= '6w4UiVBBAcJAAUSJQBJUFKEFskECSFCJFg7BOAEBoQIBVIkPKWAKWAQDRo0wAUiNIEgYSIlMoH2NSGI4gQA4SI3RdJAAQLBIg8A8kjZwURmxAhWwACgBZgzBADkd/Wq68HEh4GP0gAARdyCxsQMw6OVQXiJk5HABlOsXkQDakABMjRASUWIC6Gv4QSAVcgSNBnpAAXA6SDv4dCZISDkfczW56hECTMtgASF+XHAAiQ8QA3EEVOsFoRMgIXARAQcg5OiMwgIVvWEIsAIAiNRKMOEYyeIzdDANUAEGQOJg4olSKP9QUEXhGNjwGkiLdPEOdMnRhD16IQSDx4AMkJkVEQkSFgknQQaJN+uNUKD2oCyAB1DoEzABipDwHENiA8Eg6EFNFfAAM/UAZrBWkOsJpDPbUCHOcpJSF7ABTL4QkAlAQhsqIQHQCMdACFKk/wWSuQlSaGtwkQwCSIlUa1GPEg1PEg2jHw0QDf9UUEDRDBfCB1TRAgUysYEEiZDBXaEKKOhkaOmiCj2YgQGgB6BrEDaqBxejB1ACM6sHKP2hB0exLa8HowegM9AEgSNoiwU2ogeIAWWjB+2m6KAHRBDJcaInEjACSMZAWLDZBQcCCUhKIDEGtD0G/1DBnltZopfrAtCoMAZgIUHBRijzdrJyg8RwMIZeZVKfMBA+UO8yd8MAQ9XJADbJACnJABzAALF5pkA0iFE13KU4iAlwP4R1CAGxRejrICaIvTaGr4ATAZrzhZCg8eEYyI0V17IcVdh15fAMukbQAfPRAWgBgASy4A7JUEJ4GwKGt+dBLdOFNNMnUg5QY5TQCm7u29AKtABisQB6CyR/C38LrXUL52ApegvPcwsffwslcQvRfwsz0nkL/+aldwsbfQu27XcLqrEAibW5bCSgkHQkGOBYo3CQEtIF7bbhXvjz+8HhPiyAeFgAQEJgYwIM0U3ZugAKSIsFyLYAAABIhf90BotIVABBiQi4AQAAAATpgQAg6Jb2'
    $GraphicsCaptureWrapper_x64dll &= '//9QhcB0eACQowGQjcBMJFjHgMAAaAEABOh3ABBIi1wkWBBIiy2DAT6LA0gAg30oAEyLeBgAdAlIjU0o6DQQ5v//TAAQSYvWIEyNBa5xAUjLQQD/14XAeQQz/wDrDUiL10iLzgDosfn//4v4SBCF23QKAmToJCMQAACLxwFcQEiLAGwkSEiLdCRQAEiDxCBBX0FeAF/DzEBTSIPsADBIi9nwSP8FJN+1AVYN0AEGhckAdBRIiQtIiwGQ/1AIkAAdDcEAFhTrEAEJtwIn0+gLBQK3wwBOMFvDzMwASIlcJAhIiXQAJBhIiXwkIFWASIvsSIHsgAISCAUbowADM8RIiQBF+EiL+kiJVQDoM/ZmOTU8bgAAAHQH/xUERSAAAMzHRYKZx0WEvCwBGo0Fxm0AA4CJRchIjUW4gAMAsEiJdfDHRdCkHxiCDlhsgg7YgApK4ICN8ACM1XCBDFVCsICZoOjMFIB9TUCghckPiN0CQl2g8EiJXaAAF+iAkIB1BUiLxusbgLUATI1F6EiNFclCbwKq/xBIi4AHiQuAAQDZXIAk6Oi25CT//wGQvrQBEU3wADPA8EgPsQ2nQQAHdRpIi94CK41CFcEDSI0NsIAB6JShNMJShIEEiQ+BUwoHyFJ1gAXrFUiJTh+BagBvwFlRCAEf0oaQQQTBfKDoaCGBEAEAb034SDPM6FmAJAAATI2cJAFUAEmLWxBJi3MgiEmLe4CE413DAD2A0Ojj6v//zMhhAhDCYUFUQVZBV6WAeSABXovxAGMeQSUBQDctgHhYAHQnAUEnDkSLQFBEiYoBQAcAQgf/dAXAsQyJCoOxgAQA6M/zkYGxD4Slg3TYs8BqhUKxAsAA/xVIQYEFRMi6AQz/FUJAA0wEi+CBoVDolf3/FP+QQaFQwDpMi3kgIEyLNZmAD0mDAH4oAHQJSY1OgCjoUeP//00AAkWAcc5AhUmL1IO4kAHAuBZIg3wkUAABQ7VQ6E4gAAAzqMDrIkQF'
    $GraphicsCaptureWrapper_x64dll &= 'C0MFOEAFCwAZAsKoQNzrAjPANUS+dEG+fADYRL5BXGHAq0BTVleERoAIBYR5oESoRCQ4SQDRkIvyi9mABfKyw0oCLMJKJkiF0nQM0ItIUIlB/NbCBkz8UtlBJaTyQyXKQyWtDwAFQyVBBOAzKMdEJKmBXABIAAEwAQFMYBgDYR/gfwAz0jPJ/xgVeELAAyAcMAB1GAczwCKJAR0g6Ee2/KQpIDoDgIShKUsgDCmpKQPipimAoWiLVBYkwHzqKSDkKSDo/o4e5ymgAuIpIOjooAKJ5SlY9eUpTCQ4oVGiy4FTg8RA4ohewX8AzEGLQQRBOwEAdQdJiUkIM8CAw//AQYlBBIIiqMNIiwArWKBScIBSAHgYTIlgIEFVJYQvYAAk/J6GL1BBAIvZQYv4RIv6gESL4UyLtCTgMpHgF7QkqGMpYbEKMiBNhfZ0DQAyQYmqDoADRIID9mNXDgQycaAA6BPxBDKAAeAEHEvgBAMyA6JVjD5pV4aRoAFMi+hAMygoAAKAD1fAM8APESA2BYEAPGAUTEiNVCRhIG/N/xVKYAUBC3MBQAdEi0QkNEQrAwAFwSQrTCQwRTMAyUWF5EUPT8wARTPkQYvURYUA/0EPT9dFO8gID407IAY70Q+NAjPgAEGNBDlBOwjAfgYgH0Er+Y0ABBo7wX4Ei9mAK9qF/w+ODSAEIIXbD44FgxdfsFFADYmIxOMhUaABiZSQyIMBRIEBuMyDAVI3gQGY0IMBKoIGgErUowEcQQOI2IMBDyWBAXhAcwUFIQFYVA3jP+CAycpMSIs95CKvICM5ZyhBlE8oKOid38HST6FMGmsFYXbVZ0wVTDlkJNIgRUybHEJMUIMCJEyahoACkAE4YK4FiUALXIuIQRdBOYACD4ACdJOCAkEYiQ6hYujPAGu06wogCQZgAARSUAFSxDofYWhcJGBgo+CignOgM3swTYtjYHn640J+XWFUYaMgUGXUZqNScGANeJxmUGBgUEWJYVDi'
    $GraphicsCaptureWrapper_x64dll &= 'RAGmtCS4IiVMvCQhRkAF3a5jUCvdYlAloRVCQSEowbIB5FNKDyMo7SEokO4jKN7tUxyZcAInKEQwCU9BcACqOBooPEEATBAKXPVCtr7QBPNCSDEs90J5AilQTCRERIAoPPA/SIArVCRARTPSAykw1EUzwNAokADHRWVRKEThAjvCYyngKBoGQRAo4CjZQSvaiwyMJIAhUQEIO8J+QAWLykEryPEoDCFxKckPjgQTDcetVXEMkHQpudIAgIQpq+nQAImYhCmewQBSHcAAqpFyAoiEKYOhAZCEKap2wQBYgSlskQBIhCm0R/f/T0sAAvpP3fdP1mj/T/xPGcIpSvxPUAHn4HigHQAI66yAKBIeoB2dAQHaAgEQHmIpOPBvKdpgYSmjIC5hKXBgKSApPHMwYCkmKVFoMCmD7IIotVMSSY1REPFT0P8V8TlCCQtoVABXlCjD8QI4AAjJmeYq31AOAAvAIhBw4QYFwFlEIVwzPGAKgAEBCSgBCRIjAAlwBDjDzCIFQQEyAUEIQFXFcECbg+wKaPAFafUFRfBIiwx1WCAoEJRgM8BNAIv5iU24TYvwiIlF5BCFiEXowJfWuECbtAd9IpzAYSshCBAPEUXEMADU/xUAqDsAAIB96ACEdQRgDT+LVcShFEACiReLTcgxQAMFYD9NEAEIi0XMKxDCQYkHoRcHi0Vg0CvBiQbjD6CRByCLTeQjyIGpTfDp4QxDG+IMaHRoQT4yrdogERVJ0CtAFRZAFQAVFKA4EAnJEDiVwIg0QzCBFbkSENAVi8EHkYFQbHAPAasAAE1Ei9DgPQ+EkvABgyK4MjoPhYUiCMl0MBFEi4AxLtOS0qrBUQHSdA+LiKEucoFqvjABTTABEPVMQQGpjUIByUEBkS9BiQlAAXaU0QOwKSgkBFEw0gJ7ZYQBMIEBCIuiWsSYwwuwdRACWYIHwHUEg3DI/8OLgkTwC/NNbJHxTXQkIGSfBS2wAqCL8kiL6VINl6ACEYFL'
    $GraphicsCaptureWrapper_x64dll &= 'D4SNQRrbSI2CeDB4z/8VNjexbCR1GRAD+6kwArj4aTEddSTCASnAAQIT/wQV9pAU/8OD+wcUfU+gAtCgAuu7SIiLkODAAYuY6FAAACvaO95+BPfbROsiIBseTGPwCs2s6NQgIeACoeACu3EETMaA4gXCBcw2oAPD+xWb4C1sZZtwGXDKfw1yDZZVsAR3DYN0DXR9Fg1WZHAFEA1ssAIpFw10o2AL3QoP99sSA0KTCKo8gAsphAsbgwvoAIhjIAJkC/8VGJACAhnr+5BqkAMI8ADVPz8MOQyhNo0UDJNABTB/i+pMgGZfQQxw0sQZ8DfAGUVAAYgKjrKfcDANzv8VkFo1VhpV0ANVGifCAYNRwQH/dGCUGkxAG/9Qwzvff4EaJ9AC6yq4rQ/dihpJwJ4rJ9nyDvinjRrwBSPwBYcaHVC1bPTk0Dc04CBVVk31GbUgBPAli/ICtdFF4SodITQCiRnRPQJsiR4xQJA/GABr8zXSBHQTYFUPr0hQwfThAqIwcEAE0AIA27ACsF5IjWhgEICXiRDWBfAEPIEEFUiLFUkpYAKLgkINggEOiQaV8QISAAQvkAE4mDEMWA+VwzDX0QNb0APrjhGgM3MIsgICiQdzRjuy+EEbXvFE99TVqt6mF2ANkAPgGtAAA0CIeLO7AFhIix3IpgAAAEiLSzBIhcl0QCdIi5OwAAB4hQDSdBtIiwH/UCBISIsFpgGEibhRAmCLHZgDvCgFvLiNDl52A14CMIsdaAEaAI1LIEg5OXQMKOhqAQIoUwAo6wlUM/8ACkgDHzADH0oVAx8zBx8oAh9zIEgAjUQkIEg78HQAF0g5PnQISIsAzujV1f//SImqPgAkAwMkMAEkKAskUrAGJN6lAiQoASQwVQskiwYSuQMSSAESOFkLEo4SgWsBEpQDEghVARJACxJpBhJvAhJEoCRISDvYARA7ARCoy+hIAhA7ABBOgyKqEAESUIsiI4YiKQESCIk9IgEDhdt0FYEB'
    $GraphicsCaptureWrapper_x64dll &= 'IRUEAAC6AIKUAMvo4BgAAOjdAiQBBlwkcEiLdAAkeEiDxGBfwwDMzMxAVUiL7JBIg+xQgMpQkgARADPESIlF8EiLQgmA3nUIM8BAA+jA6yBIx0XoAGtAEAABTI1F6EiNFQDTXwAA/xBIiwBN6EiJTejHRYTQfEEbjRUbXEEjFFXYQAzgQQyFwHi6REAHfkEHiAWCgjAABwAbSI1N6Ogt1AFAV4tN8EgzzOgESRSAB4PEUF3DAEiNVdCLyOjk0Nr//8zEAtjBAgAAAEiJXCQQSIlsQCQYVldBVgAwQABIiyoz20iDzgVAaUzAZYv5SP/GIDgcLnX4QAooRCCLzkyLxQENIDMQ0rnp/QBEtCMAAABEi/CFwHQqAcAVwNP//0SJdANFCoIISIvYSItQJUAZVEEN6IMADEiLQmxBUMdIiR8BU2iBwClAQV5fXsNAIAAoSIM5AHQF6BSJEMIvKMIEgHkICAB0CYBT/xXBMAnEBUBTQAYwSItRABhIi9lIg/oHhHYxwVuNFFUCQUYogfoAQBByAAdB+ABIg8InSCvISACD6QhIg/kfd4FAHcjoEBcAAABmEMdDGAfBC4lDEAhmiQNAFjBbwzNgwEUzyUVBbYDCMwDSM8n/FaoyABYAwHnEHNlDdnRESECLUxBIK9FaGyVJQRuiFmAMxwOCNsd8QwjkAGAGohlgDiAOSN7HwA0hAkAPow40og7jNAoY4TQg4DRUQVZBKldjNXlAR+rBETvXAHcSSIlREEiDAHkYB3YDSIsZADPS6zZMi2EYAEyL9UmLxEwrAPdIK8dMO/B3ACpIiWkQSYP8AaUESI08e02F9gB0CQ+3wkmLzgBm86tmiRRr6SL6ARO5/v8CAH9IBIvBwAdJO8YPggECA4PKB0g70XcQH02LxEADSdHoAEkrwEw74HcOAEuNBARIi8pIADvQSA9CyEiNhlQAgABJMOh6BcE+ASABTI0EP0iJSwEgJchIiWsQTIsg+EmNPAAC'
    $GraphicsCaptureWrapper_x64dll &= 'EmlIgIszSIvW6MqAIIQz0osSSo0EZeE6gGZBiRRvSD2lLQpOoC3AoC3xSIPuEaAt/h93ICLxSIvS0IF7LhWAmzEBK2FPC4EqQCrh4EfMSIvTDOhksAyiC0yJO0yAjVwkQEmLW2AAAGtISYvjQV9BiF5BXABU6M7PIWcl4kAgAS+BwQFx6OMi/SBvjUtIhFfMDbNkrcMBldCiA0VbhsMBqiDEAXfDARjEAWjDAbtAOcIBgUMJgBvCAXLBASiDOwBjnGSiAcQgoluAkEBVU4JDVcJDAI1sJOFIgeyYEYKEBbyNZZIHTYsA8UyJTb9Ji/iATIlFx0yL+uCJIrdiJgXGn0FP5E2BgD2L10mLD0igeoAJ/9CJBumTAFcA6NUfAACL2D0A8AEEgHVJM9IEQbiBMEiNDY9ZbYAD1oAD4JZrYAHBXYuBwQGFwHULxwbhBQzpUgAIQJTP/9BNJIvGowvoheIJhduAdQhEiSbpMCAECEyJZUAfVf8zyQToRIADD1fADxEgRd9JiwchEWBMAItoEESLcARPAI08Nk2L50mDIP4HdlhBwAmDyEgHuQoBHTvBoE7BRaAc16AI1+gGgQ6LgvjgAd9MiXXvIKMC16Cs902Lx0mLEtWhFGEeAR7tZkUAiSw/6zFMjS0AFFYAAE2L9E3Ei/wCBsdF92GDBAYgjU3f6C8kBkaJAGwl30yNdd9IgIN99wdMD0cgAYiLTe9ggg+EQeBUCEj/ycAS/0g7yAkiEv/AQC5GQbguQ+IY0A/O6IkOAQvHCA+EEuACSSvGSILRoCz4/w+EAuEDAwAs4QYE/P//TItAfe9Mi2X3UDxJBCvHMAIEcjJJjcRHBGAN70iN4BGgMwBID0dF30i5LhAAZABsEABKiQwCeCEKeAhMi3XfJOn1UAdJuLU8SYsiwHQED4Le8GRJjQJ/IDvPSIPJB0kAO8h2BUmLyOuAHEmL1EjR6qACCEgrwoE96kmNBCYU0wxgO03P8BXP6AKm'
    $GraphicsCaptureWrapper_x64dll &= '0ANMi/BIiX0FsRXPsRVPjSw/TQkgYovIEj1aSIt94YAR1+j3HEAN4A/zCRBLiQQuURRHiWxgfghKjRSSPTVUHEHyU4tH+EgrEBHvQYAv/x8Ph8KSE/gxgAroVxFgPWCKVd/c6KBvBWUFABzfMRQCGhBJD0fOFSvoKx0ppARV76AG/IIWm/r1QDeF0BcoYBJxeYAgsQaGwwEGwCc5TIltQiV/gA7QMlAxwC0wghAlsHyLREW/0ATH/xCQAjIQTDlt17BqjU3XiOidzPF4z+hxUAR06c4gQkwhXLNlA15ToizQSESJLkIDGEIDsmhAA+sN8ARhMCuQAySJHiIKDPnwAzltYv+yBf/oQbIFsDRN0gfhfloMERTE8T7CSgJd4UpbXcPoHcsbYX/wYwgxY7BrCki4W5MgYF3/kD4AQAqQHXcCY3B/A8l0S0iBgvlyGDpIjUEnIDW0dkqhMhrxBTAPFuJUEwCAJgyQKwFVjVgnEEiD4+BgdPjrCAjo7Atzf/8PSIsKwyF+QEFuX8Po7x7Jgodyh/EIMlSDwQiA6GrX//+L+AAGAiLRlx2Dyf/wDwDBDSybAACD6TABdRq6kXIRT1oPDQOYONCDgE9fw4XJwHni/xXjKoJyoQQM6ROgBLIA7DhMi+DJSI0F/sEckAHifGzoIOABoAM4cZtATzFDIAYRHgTGQFjwgMPleAO2egPo1ngDMAKwAzxliGRVwbAxZgFvIOhjMEKQBOsEi4G0MG8orwEaEUrlA/MYSICSGBdbJIHsk6YFD1UFhCQK8FIP+pAZiwWImgGCCg+E6QYAADjgWFgPhOCAADJSYK0ATI1gYEyJZCQAUEmLzP8VjCcBIaNBD5TFRIhsxCRY4A0F6bLQAnEHAkBBAGhIiw/HhBQkkPAFkTAATI01JNlS8Ve0JBJjiZwMJKDjpRENaP9QOEmAB4izEQSLfMADiQJ8YASF/3UF6TmxUgWcJIDgAgQFSwEFYZ4EB0iNlFICADH/'
    $GraphicsCaptureWrapper_x64dll &= 'FFBA8QRz8gQFr5khcGBIPDmM4gF1ECiLSECwAISwAA+EBrICA5MBSIlIPEiIixWA4AKDusAAASADdCKLhKIBiUIuUEACIQPwBF8AAolIClSgAlWQAEyLWjAPhAmRAo8JEwRJiwtMTItRwIowG0G5cZpEBItCMB5SGEmLyyhB/9LxCtMyjDX/UfADSIPGkstg4cQQ6Eg5HuPE1BEC8DoRFn9EB5AYTwfREHAVohDguw90iIiiBUShFTHTcpONRIwkkCAA6IsAK5AASDlcJDB0CkhCjcGURcj//4AfM1mgH4QkkRBxANACBoR+JPGIYACBxpETIQRyHJRJkgL/UDDKFTwhDIukSkjxapTAkaxv9gT/QQtxAIIKgATh6GAAU+ZyBC8RAnAEkBMRBTkjA3Uk1fAAxPMAlPEAFPAAMQmT8AChBA+EIVywAdAHYL6XAACEgCwhBQ8mEBcMkgcQjFIDDxHajGID8gECIQ3yEQKi8S2AFazRH7QAtBGzAAIBwAkySIsGTItwQXDnekhIOR8hGc/E6EEw3EyLz9G8pAsBgBpB/9aFwHk0SEg5nPIRdA7GFhKF4AKQURZA6N/GcBfARYTtD4R3sAZwNcTpaQKFFf6W0hPgBQWgX4QUFlJI/5B4JwA8BDngzRXWdgL8vAABTI1EJHBMiQBEJCiJXCQgQQC5AQAAAEUzwABIi1JI/1BwhQDAD4jNAgAAiwiMJMAAYIlMJDAgRIukJMQALESJAGQkPESLXCR4AkQAcjhIixWAlhAAAIO6AU4DD4UiMwCQRIuiAlKLsiLIAAyLgswCGLrQEQEMjQSFAAwARYUQ5A+IWQBhRYX2CA+IUAAIQQPEOxDBD49FAApDjQQANztEJDwPjzchAA1NY8hMAYBJYwD/SQ+v+UiNsgLgAEBMiwZMi1YACEyJVCRoSYsAykkryEg7z3QAWnYGSY0EOOsAR3NQSItGEEkAK8BIO/h2F0iAi9dIi87o5wBNDEyLAssA'
    $GraphicsCaptureWrapper_x64dll &= 'uesmSCtA+UyLxzPSgB/oAO0UAABIi0QkEGhIA8eHEUiJRjIIgHCelQEOgjtFhRD/D46SAHJJY8MCSACfaEUPr/NJQGPOQo0EpQFsSABj+EgDTCRwSAAD+U2L90yLfKAkaE2LwQRAggAyCEkD/4IvSQPxSYCD7gF14ek9gCYAi3JQTGN6VI0MBLUBIoArPExj0JEBbkhJiwF7+kwDe0BNiwZNi04Ae0wVAXvJBHtQBHs9c0aqSQd7EoA6SYA68IAvJEyLACXrIYd4yeic+xNJPEEaAzuxlMEFBoJBGwI4QYv/RTsA50EPTPw5dCQIMA9MAAHB5gKFAP9+Z0hj1kyLAPNMi2QkcIvPAkjBaEqNDDBMi8DCSYvU6JaAF0AXADw78H0XK8ZMIGPASGPOQUZoScADzjPS6H2AB0IdAE0D8khjTCQ4AEwD4UiDbCQwQgHDJGPWdbIAIyQBACNBO/99I0QrAP9NY8dND6/CAA+vfCQ8SGPPKEgDyMARNUIxFfzAkwAAxoL4wCzAD0QV7kADSItKQDMBAca0eJBIOZwkiEFACHQOSI2MQgLoAUFbkEiNTCRA6ACCw///kEWE7RTrEcMDcsEDM9s4QFwkWHQLSEBsUBD/FdYgwRWMJPBBwUYzzOh2AwAxjQicJADBg4tbMEkAi3NASYvjQV8AQV5BXUFcX8OAM9tIOVwkQAAQBcIUHsEU66xIjZSEJJBBxsjo4MlABFXIA9DMA8DMA7DAA8wBAABIg+woSIsRDEjHwe3AJAJIi8oA/1AQkEiDxCgGw8EHwOYYVVZXQQhWQVfACjBIu/8BAwB/TIvySIvxQEg70w+HEgJDeQHAJMNMKzlIi0kAEEgrDkiL0UgA0epIK8JIO8ggdiZIuSYBDAAAKIDoqaBnSACDhMEBIQ6NeCdIg+fgAEiJR/jrN0iNABwKSTveSQ9CAN5Ihdt1BDP/AOsjSIH7ABAAAAByD0iNSydIIDvLD4ap4AbruCBIi8vo'
    $GraphicsCaptureWrapper_x64dll &= 'XkEJi/iITYvGAEY/TSsgUhjobBGBESFQz0wrgAZIixborxKhBAAOSIXJdC1Ii0JWgBPRSIH6ggoYAEiLQfhIg8InAkgAYIPpCEiD+ZAfdyxIACTLBUAxYI0EPkiJQACgCY2oBB9IIHlwgAEQgCMCMGEzX15dw0UzYMlIx0QkADrinjMA0jPJ/xVWIQAQAMzoCEACzOjWBr8hLeIsjQ0VSwDgAP8Vzx4AAwMA4SsgCIsFyX6BFspMACvJTIvRTYvZAEiL2kmD4+APhITUYAioIA+EQZ8IQQ+/YFDKxfluANjF4WHbxflwANsAxONlGNsBQEkryw8fgEEQxQDldUrgSIPqIADF/dfBhcB1ewBIO9F16kGD4RAcdEZJ4B6NBeoCRgAbg+H8SSvBAMX+bxDE4m2MAALF/XXLxfXbAtKABsKFwHQc8yAPvcC5H8AJK8gBYI7/yEgDwsX4EnfhHwjDAAFJO9JAdBlmDx9E4CqDAOoCZkQ5Ag+E88EPAAN17aBAJgUQCWMDASAQ8HS3qAR0swGkGkkryWYPbsiIZg9h4ABwyQDkGSDzD29C8IAMEGaAD3XBZg/XwGAa4gphGubpdqBQwAupCjGiAEiLwiFXAwDpm1b+A10KAGaAF4TCUUgAOw15fQAAdRAASMHBEGb3wf8A/3UBw0jByRBI6Z4KgTRAUyA3ICBIi9nrDwFOJw/UAAAAJBNhASFgAeBYBHTnwEEgW8NIg4D7/3QG6K8LgT4s4b2gDmE+6OFl6wI3gIcDamICs2AEAAchZSBIiwQlMOJuSAgE6wUAZXQUM8DwQEgPsQ0MiYAS7kIywwawAev3ZHXoQndjBwfoMgegYBlM6F/gAcBVoA7CAgRAMsDrB+iZgAGwhgFCB2EGM8noLSB0sITAD5XFEGMJDyAYiITAdYEGEugCgwFIB+j5oAfr7OgH6DLnIALo4ocK5VZIiQBsJBBIiXQkGAGxQSBJi/lJi/CAi9pIi+no0NATAaAa'
    $GraphicsCaptureWrapper_x64dll &= 'FoP7AXURTACLxjPSSIvNSKCLx/8V0sAvSABbhlihUAEbMEiLbPF/CHQkQJEUX+nODUtxJXAHi0IEdBCAMwyTYFaxB+nPwAHoWtIOsHUF6M2iAncOPYABBWICNIIA7CiFyXUgB8YFxYfwXOgAGgagAxuAATQPFOgO1cMACZADA1EP6gYOcx8IgD2MkAMAi9l1AGeD+QF3auj5qgkSCSjASSRQCXbQAVzoMTAIwAhRCn7xACEJ8gB0LhAGM2YPbwgFmUOhCMj/8w8IfwVFAAJIiQVOL2AA4QBxAOAAV2AAxgUuIUEKAgjQJLngRwDoBqLgBrIaGEyLwbgATVoAAGY5BYmCqkAqeEhjDbyAABBIjRV5YQADyoGIOVBFMCNfuAtAUQBmOUEYdVRMKyDCD7dRFPBNGEgAA9EPt0EGSI0ADIBMjQzKSIkAFCRJO9F0GIsASgxMO8FyCosAQggDwUw7wHIhIFDCKOvf8BqF0kFTEoN6JAB9kQAKlXAoBnAAAmIpGMMzEpCK2ejjkE4z0jAPAAuE23UHSIcVXE6GYhhwDHUUQxABAACK2XQEhNJ1DIjolgzAAMvoj2AARwUPMCW0NoM9HsAC/1swN8Ao5uAtoTfT0BUIGWAB6MkAAbEGSA9EDtOQPsUDtjZI99gbmMD32EBBghzpsfE4DXBA87ABNwaNBRtCAWEo2UiJAfbCAdB0CroY8RbWAQTgSwNDBfIj0nQ5g+oBRHQoQQAWg/qgArgjoXLSBeje/MA9BegSr2AAD7azNUmL0JMCKNA0AE1QbpXB4gBWGEADNDN0MTN8sLJWIaNF8kyL8QAoTv0U//8gOoShrujV+wD//4rYiEQkQEBAtwGDPfXBSg/EhcVQAMcF5cAAIQgE6CBgB4TAdE/o0u9gIuiaQQDBQAAgISS2G2EADadgAOi8cZM4Kei9MAXgAsAPFSqG8wFv8QGW8AHHBYaQQAVwIwBAMv+AGQIiQFNAhP91P+gCjAEFi9hI'
    $GraphicsCaptureWrapper_x64dll &= 'gzgAVHQkcXFvYgp0ACnGBroBA4ChSIsDTIsIDfoaEGr/0f8FXpGgBDISYk8DPnQBPnyEJEiRFUFew7mwS2gA6MTwOJC1RNKFQCCK+YsFUfADhcAMfw3DAzFBMF/D/xDIiQU4gAHou/pBlBEggz3eg0ALdUg26M+QDeiqQCjo4iHgCscFw3ABAQCQDAJY4Aoz0kCKz+iCcpAAD7bY6NLAAtCLw+ujMwhAMQhACABIi8RIiVggTCCJQBiJUPAZSAjHMY8wCXCY8Iv6IBrgMBAPORW0oAV/BzMIwOnl0AONQv+DAPgBd0BIiwXUAj/CYHUFjVgB66AI/xXsGWBD2IANQDCF2w+EroLGxu1jtKWACKABRKAB4B4Qpg2nAbIwCaMBg/8BdVo28AQyslOxAZawAUhhQM6VwejL4BkwB2CJMwd0DjUC/xV1YAcAhf90BYP/A3VKPGYFMxgHdCWQAyZF2QoQdQL/FTZWC+tYBjPbcQCzfHhAGECv8Y6gyjUsJF/48V7xgDH90FhDwBRgwcA6QSGGH0JdI3R4MTVNi0HQIMpJOIvR6KBSsyJ1ZUBTBEWLQJnaQYPj+IBMi8lB9gAEEJEAdBNBi0AITWMAUAT32EwD0UgJkNwj0YDTSosUEDBIi0MQ4HNgAAj2AEQBAw90EA+2CXAAufCxPCPBTAMIyEwzsAbJW+kQjvgQAfAL4B1sJBhBDAogQQwQUJvJD6KBAPFudGVsgfJpgG5lSQvRi+hiCQCB80dlbnUL0wCNSP8Poov5dQBeJfA//w9IxxgFGHWxrHALxwUVA6AAEbE9wAYBAHQAKD1gBgIAdCEEPXBhABoFsPn84UAiIHckSKDxEQAwAwAPo8FzFESLBQRvgSAzg8gBRImkBWSgAOsHMAFbgAABMKVBi/FFi9FFAIvZg/0HfEBBCI1BBzEKi/JEi4DLD7rjCXMLcAMaAnADLOACMCh8DbgB4SyNSPoPokSLiNK4JMAAO+h8QgNIRIvb'
    $GraphicsCaptureWrapper_x64dll &= 'IB9bdEEW4DD+xwVVkABhCMcFLk+QADE8IGg8oAAPuhDnFHMfQALvxwWKMKcBIaAAxwUjUABj4B1BAhsPg9H5sAUBANAnuQBIweIgSAvQSACJVCQgD7rnHAAPg/wAAABIiwBEJCAkBjwGDwSF7QA4iwXpcwAAALLgg8gIxwWK1gAoAwBQiQXUACQAQfbBIHRig8hQIMcFvQAcBQIwuwUAErkAStBIiwWjAQAWRCPJSIPg/RBIiQWVARo7yXUCNwLCIsI6wnUlRQAkfgAWgw2DAAVAoQAo28cFcQAKBgGISIkFYgAK6wcAJFkBAAgPuuYXcwxIUA+68BgAGkcBgA8guuITc0oHTz9BAIvLQYvDSMHpABAl/wAEAIPhIAaJBcF/AEuByQApAAABSPfRSAgjDQwAOkiJDQUBAAY8AXYLSIPhEr8AB/ZyAygVcxVDAigANOATcwkAAzUG2gANgEJcJCgzwABIi2wkMEiLdAAkOEiDxBBfwwDMzMxAU0iD7AAgSIvZM8n/FYSfEwGhy/8VngAEEP8VCBQBB8i6CQgEAMAAGCBbSP+EJfwBEYlMJAgAGxg4uRcAdYMThcB0CAe5AgAHzSlIjaQNvgBb6KkEyDiAeBSlgIAFjYEFg8AIRYAHNYEHiwWOAQOJqAX/foMUQIAFAwAJGMcF2YAIATvHBdNFgAQBgCTHBd2EBLiSCAEsa8AAFA3VQQ4YxwQBQR7HBYsNHVNAPYApBCAFBQEABUgTBQUADqQ6QCj//v8k/5BANjjDwEFWV0WANEBAQv8VX8JBsyL4gA4z/0XATY1UACRgSIvO/xU9I0EGwDo8SIuBBI1MMCRoSMeANUAKAEyEi8hBRjBMi8YBBgJwAQMoM8lIiVwgJCD/FROBVMeDEP8CfK5AHEBfXhRbw8AbSEEKIOjKALH//0iNFZ9Zy0FJAQQrQKrMuEE7AGlAM8A5BZxxAJGVwMDDxwUugwEbAQYBQRYIVUiNrCRAIvvAD4Hs'
    $GraphicsCaptureWrapper_x64dll &= 'wICxi9kJRGVyEkJlBIvLzQQpuQG+6MD///8AM9JIjU3wQbgc0AQABAFsgQP/FW0hAAtIi53oAUuNlY7YAAfAgUA+/xVLQQYRwBE/SIvDBY2N4OuBAU89w4AG6IEGwT2BFZUBAiDBlRdCF4XIgg/ATCRQSImFQRrBIjECBUG4mAEegoaFiA2BKh9BJkQMiUQkYFlAG1AVQNnAAVRBRf/oFeMQYB3YwCugSgAKCYFHjUVADkQkSP8MFdaAAyENQP8V0wFAAYXAdQ2D+wGAdAiNSAPouoA+IEiLnCTQgCVIgcLEYSZdw8zC4C3hKWAYVUiL7AAzwGQFBNhvIAS7MqLfLYSZKyABO8N1d8AaMBBIx0VgCmEQbxFBoRRFEEiJRWAo8VEhEsBIMWEB3WMBjZRNGOMB9eEBRRiiIqDB4CBIM2ABM8AVcDPBSLmgMgAAIAkjhYABM6cNSA9EwQBiRlKhEOB3UEj3wJ0FYoPBAYPEMGAWwBQoAIP6AXUQSIM9BMs3IBJ1Bv8VKxcgDQJHgAQoYASNDRHCgYAB/yX6D0Ac4QGSAeAB6dAiPQUFYAEn4DbkAOAJ6OdgEUiDUAgk6OYDAQLlCAUeYWIEYU4hZYBoHU9LCYEIPUjAAOsSSIsWA+FEQBBowSKDwwigSDvfculBFzChh6pfawcjYwccbAcsdAeQ/yXCDkAuJYSiAKqGogCIogCKogCMogCKTqIAEEAg/yUSogCqVKIALqIAQKIAcqIAqmSiAFaiAEjoBcygJCj/JfaiAOiiALoNq+IIIgvmogCgIgLKYgGqTKIApiICQOIFaqIAqnSiAG6iAyCiAFqiAKp8ogCWogBYogBiYAdgzMywAcPgfOAsi1DESIlY4GBooEpwIYDFeCBBVkEmSYsAWThIi/JNi/BASIvpSYvRwJFJAIv5TI1DBOhAAPf//4tFBCRmBPbYIj9FG8lB9wDZRAPIRIVLBEB0EUyLz01AkovA1kiLzei0ol/BKgtg'
    $GraphicsCaptureWrapper_x64dll &= 'wQAKdOBmi3wkSGmhLEFewCxLwhEEAGaQZg8fhKKN/+CGAjMIAOgDJXIgHsHxEFUhI8rqSItVwABNaGjoVLLBrLjDlgJTIAOhV2sFRSDHAA4AVAeA8wRTAQUoAAXHCEVQzWGwjQXKNSnxBkVY4Dhg4gKLTUBwSIsB/1DAE0UFwEBVMABNSOhr2hEAD8dFKCECx0UwAN3Mu6rHRTQLGAAAgFABE0yNTVAQTIsAujIBjU0oXOg08ArCC8EAl6FZgyB9OAB0CfAAOOgEG67BAU0oSIXJEHQF6D3iFF1ISACF23Qsg8j/8AAPwUMYg+gBdVAU6P79oQHIcFEzCNLo/cAA6wuFwGB5B/8ViRAW6xAoJF1bfw5Q0XMO4jQtfg54dg7wY1UwAE1AiOiD2X8ORTRXERU3fA4yAaENTKENdQ6vsCl7DjOteQ5VwgxdQCl/DugWeQ4VeA6hDCN/Dn8ORVDVcw76M519Do2ggGAArg6Y2K8OcEU0BUAvHTIB0Q1hk9ENpQ7Er6sOSKypDmxq/K8OpA4rogGkDio7wAClDrawI68OQFOKIJHgAOkHu+F9imixAFS7uLIASLEAX4AMQCMlMBAwg+ABUFANg4hlIP7wCEDoP4EOK1IwEANwEQMtEQGNinmhD+lxkQRKNK4zlAKH+rpXA3uxAF8DjznfATUFKSEW6TMzBVCxAJfX9z8FXgOSEG2fAt8H3wHfAQPfAd4BjU0g6GWzYaBRCIlNIL8CtAvv+tZyDEDyGLB4NgQQUhsGRyJ33wHZAY2KMHEEF8lxBI2KkYzpe/EFXwsHmAgQIAFQATPJgTiBwIjAD5TBi8FzARkTA4pN0MWgAukD7YT//2kBIOjx7BOsZ3QEFAbCAmLrxQKyCoscAYsQZZCZEdNMjQ0Cl7AETItFcItVwmiwJmDoo+qTBHEMkXjBHWN58Z/bdIDFaMvoVuAnukG4wQAh+xAEYsHDBQ0PAA8ADwAPAFMPAA4ArMRzALx0AN7L'
    $GraphicsCaptureWrapper_x64dll &= 'dAAFAMhjAIDJdABB2a1xAAd0AHUCenQDZnQAUox8BJbFcwAQdAAqVXQAQnQAVHQAXnQAaKV0AIB0AAbM+wT6/AXUQMpzAPR0AHJ0AAUA5jqEDAUA2Md0D3QABQDUBstzAOL0A0D0AAUAqsp0BBJ8Aa50AWB0A6ou9AFSfAj29AYK9AKqaHQAfvwJHvwATvwAqo50BHp0AKh8DJJ8BwrgzCWU9ATctLIABACoygWQAwDIDHjU9MYDHCgEHDQEHAUApNzFAw4IxwMO/AQ+qlAEDuoEDuQETmoEHqo+BAcCBAceBAfcBAeqxAQHqAQHjAx39gRPqQUA6MMLD/4ED7gMFyBQYACAAQgHcGNNgwOQjAMFAPxhiwcABhCMB0UAAQIDBAVkBgcEAwcAhAMDAwb4BwABgwcDA4AHhAMCA/8AAYAfgw8CA4AHhAMCA4IP/4MHAgOBB8QBgQHBAMEfww//gQHBD8MBggHCB8MDggHBA//EAYEBxA/DB4EBwQPEAYEBf8MHwwOBAcIDxAGBEMUfBP/DH4ABwh/CAYIBwx/CA4IB/8IfwwGBAcQPwweBAcIfwwH/gQHDB8MDgQHCA8QBgAHGH//DD4ABwg/DAYEBwwfDA4EB/8IDxAGAAcUPwweAAcIDxAH/gAHEB8MDgAHDA8QBQjjFP/oFwz8FxD/BAYIBxD/BA/+CAcM/wgGBAcU/wgeBAcM//8IBgQHEP8IDgQHDP+MAwAD/5g/jB8AA4x/jB8AA5B/jB//lAeQAwADlB+MDwADjH+MAv8AA5APjAcAA4wHkAAXpH/3jDwTkD+IAwQDkD+IBwQD/4w/jAMAA5QfjA8AA4w/jAL/AAOQD4wHAAOMB5AAE6A/94wcD5AfjAMAA5APjAcAA2+MB5AAD5wfjAwLkA+QA9gLmA+MBAeUB5AAFfut//+Q/4ADCAOU/4AHCAOQ/4QD/wQDmP+EDwQDkP+EAwQDlP//hAcEA5D/iAGAA5z/iB8AA/+Q/'
    $GraphicsCaptureWrapper_x64dll &= '4gfAAOU/4gflAeQAwAD/5j/iA8AA5D/iAMAA5T/iAWfAAOQ/4wAFBugf4w8E/+QP4gDBAOU/4w/kAeQAwAD/5j/jD+QD5ADAAOU/4w/lAe3kAAToD+MHA+QH4wDAAG/lP+MH5QHkAAPnB+MDAtvkA+QAAuYD4wEB5QHkAP4G8T/kH+EAwQDlH+EBwQD/5B/iAMAA5h/iA8AA5B/iAD/AAOUf4gHAAOQfcwAEBfv3B/MDA/QDcwBgAPUP8wPb9QB0AAP3A/MBAvQBdAC2AvYB8wAB9QB0AAX/D/4E9AdyAGAA9QfyAGAA9AfZcwADBPYD8wEC9AF0ALYC9gHzAAH1AHQABP8Hs/QDcwACA/UB8wAB9QDddAAD/gP0AHQAAv0B/ADJdQAIB8BPBgYgWFAoHAUFoFBzADEABQQEDgP9AHUAMQAEAwMCH/8B+wH9AHUAMQADAgL+Af8D/wP/A/cD/wH7Af0AM3UAMQACARCVdRAJCiALDA0OD9sADg//84v3ANkAMQDze/cB2QDzAf/7ANcAUwDzB/kD1wDzAfsA/9cA9wP5AdcA9QH7ANUAdQD/9Q/5B9UA9Qf5ANcA9wP5Af/XAPUB+wDVAPsH+QPVAPUB//sA1QD5A/kB1QD3AfsAVQj5/Q8ICfkP0wD3D/cA1wD/+Q/3AdcA9w/5ANUA+wf5A//VAPcP+QDVAPkD+QHVAPcB//sA0wD/D/kH0wD3B/kA1QD/+QP5AdUA9wH7ANMA/Qf5A//TAPcB+wDTAPsD+QHTAPkB5/sANxz9HwoL+R/RAPkf//UA1wD7H/UB1wD5H/cA1QD//R/3A9UA+R/3ANUA+x/3Af/VAPkf+QDTAP8P+QfTAPkfP/kH0wD7H/kH/QH7APazAAYHCgsODwYHAAgJCgsMDQ4PwAABAgMEBQGYA3j/BWgHfAs8AzQLfgk+AxoJPjMLHgEaBAUNfwEPDg//BX8DDQd/CQ8FDQk/CR8FDf8HHwsPAw2NP4kf'
    $GraphicsCaptureWrapper_x64dll &= 'gwaJf4kH/4MGix+JD4MGiQ+LB4EGkX//iT+BBok/iQeDBosfiQ+DBv+JD4sHgQbPH8kPQQPJB8sD/0EDzQ/JB0EDywfLA0d4zX//yT9DA8l/xQNHA8t/xQdHA//Jf8cDRQPNf8cPRQPJf8cD/0UDy3/HB0UDyX/JA8MBzz//yR9DA8l/yR9DA8t/yR/NB//LA0MD73/nB6MB63/nAaMB/+1/5wOjAet/6QGhAPM/6R//oQHrf+kfoQHtf+kf6wPrAf+jAe9/6R/rB+sBowHtf+kf/+0D6wGhAfEf6Q+hAet/6Q//oQHtf+kP7QPrAaEB7w/pB/+hAet/6QGhAe0H6QOhAesD+esBDA3/f6MB6z/lAaUB/+0/5QOlAes/5wGjAe8/5wf/owHrP+cBowHtP+cDowHrP//pAeEA8R/pD6EB6z/pD6EB/+0/6Q/tA+sBoQH/B/kD0QD/+x/5ANEA/QP5AdEA+wH7AMwKC/8f/x8ICfsP9wD/0wD9D/cB0wD7D/kAkQD/B//5A9EA+w/5ANEA/QP5AdEA8/sB+wAICf8P/w/7B/kAP9EA/QP5AdEA+wH7AAYHz/8H/Qf7AfsABAX/A/sDB/8B/wD3ABAODgwOCAwMCjEADAoKCMN1ADEACggIBv0AdQDhMQAIBgYE/wH7Af0Aw3UAMQAGBAQC/wP/A3//A/cD/wH7Af0AdQAxAAT4AgIA/RC7UvmF8wB7hP/5Y/MBtQD7WfcAPQb/B/9VP/kA/0v/A/8B/wD2HwwMIAgMCAgEMQAIBGYE9hBkAAcAdAB1MQD+AfMAYwDwAHQAYgAgAPAD//MBYgDwAHQAYgDyAfMAYgD/8QB0AHUL8QfzA2EA8QNzAP9iAPIB8wBiAPEAdABhAPQD//MBYQDxAHQAYQDzAfMAYQDv8gB0ACEE9QcE8wdgAPIH/3IAYgDzB/IAYgDyB3MAYQD/9APzAWEA8gdzAGEA8wHzAP9hAPIAdABgAPYH8wNgAPID'
    $GraphicsCaptureWrapper_x64dll &= '/3MAdUXwB/MD9QB0AGAA9QP/8wFgAPIAdABgAPQB8wBgAN/zAHQAdUnzH/MPBfQPcQD/YgD0D/EAYgDzD3IAYQD1D//yAWEA8w9yAGEA9A/yAGEA//MPcwBgAPYH8wNgAPMP8wP/YAD0D/MD9QB0AGAA9QPzAf9gAPMPcwBgAPQB8wBgAPMA7XQABfkP8wcE9AdyAGEA//QH8gBhAPMHcwBgAPUD8wEfYADzB3MAYADyAcO2AAABBAcEBQYHFQBgAwFwAAQ4BAcC4QN4AQIDBwF8ABgCPH8EHAAYBHwDHgAMAx4EDgPbB34DPgIEPgQOAgY+Aw/+AQUPBAcBcAV/Az8BBgJ//wIHAgYDfwIPAgYCfwMHAQb/BD8DHwEGAn8DBwEGAx+DB/8BA4N/gwOAAYY/gx8AA4N//4MfAAOEf4MfhQeEAwADhR//gw8AA4N/gwMAA4QPgwcAA7ODB4QDBQaIf4M/BIQ//4IDAQOEP4IHAQODP4MDAAP/hR+DDwADgz+DAwADhA/DA7eAAcR/wwEEyB/DDwPED7/DAYABxX/DD8UDxAEDxw9twwcCxAfEAQLGB8MDAfvFA8QBBtF/xD/BAYEBxT//wQOBAcQ/wgGAAcY/wgeAAf/EP8IBgAHFP8IDgAHEP8MB7AQFxx/DDwPED8MBgAFvxT/DD8UDxAEDxw/DBwLbxAfEAQLGB8MDAcUDxAH+BdA/xB/CAYABxR/CA4ABs8QfwwEDBMYPwwcCxAdtxAECxgfjAQHlAeQABGfvD+QH4wACA+UD4wEBu+UB5AAD7gfkAeQAAu0DA+wB5QAgHBwYHBiEGBRhABgUFBDlAOFhABQQEAztAeUAYQDwEAwMCP0D7QHlAGEA8AwICAT/B/sH/QPtAUPlAGEACAQEAOUgCIAJCgsMDQ4P7QDD7QPtARAICAAKAOQD/6Rs45/gAGSe433gAaEA5HN/4gAlBukH6WfpZetD7DkYwBgQGBAQCGEAYRMe/xwA'
    $GraphicsCaptureWrapper_x64dll &= 'ixcPAO0FgKAAZIAB4AKwVuMABQDAktzjAWDd4wCoo+MAlFgQ4wBE5AAgofMCJCii8wLwpuMArEdV4wBo5AAQ5ADQ5ABVAG5rbm93biBlAHhjZXB0aW9uAeQSYmFkIGFsbBhvY2GDAuIBcnJhAHkgbmV3IGxlEG5ndGjhBHN0cgBpbmcgdG9vIGBsb25nACcDCwBDADpcUHJvZ3JhAG0gRmlsZXMgACh4ODYpXFdpAG5kb3dzIEtpAHRzXDEwXEluIGNsdWRlQAEuMCAuMjYxMHAAXGMAcHB3aW5ydFxBUwBiYXNlLiUGQwgrKy9ABFJUIHZIZXJzoAo6MpEDNcAwMzAzLjH/B/8HD/8H/wf6BzQDLkZvdQxuZOIR0AhXAGkAAG4AZABvAHcAAHMALgBHAHIAoGEAcABocAFjEgGiQ/IAdAB1kAFl8ABWRJABkQBjMAEz0AAxqxAAOwJGMgRtkABQcAX4bwBs+BT/Bv8G+wYdAvX7AUmQAGWwBv8S/xL/EgP/Ev8SLkdyYXBoAGljcy5DYXB0DHVyNxz0Bl9CWjKANUxOXENvZCAlglyQHVxfVUVaNgcF9QMg9AMgQVBJXAtFATQBV+AAcGVyLgMgCHMFdmVjdG9yCfcpQ28gC3JlbWUAbnRNVEFVc2EUZ2VyAmOQFG0AYjUwEXPSEmTQFvEWRGwAbEdldEFjdGkSdqIeRmHxBHkAWFqk8zN0/zVyAJh0APoAd+xUdxPmRIwAMoj9X0TITCgCmnMB8qoVbwjSAIlOmrRIlTXTsE+c8Kh/PHI8p38BpXEAeHQ/PB1zAGx0ACp8dADgdAD8dAAYHlVzADR0AFR0AGx0AAEAQACADQAAgBEAAQSAVwAHgBhVsAAOMABU8AAF8ACUACvqlMzp4EnAgP/uZMqPW5D2SwljAEYD/ACScLqCAIhMfUKnvBbdAJP+tn4gsfIcAH1UGxCOZQgAACsr0RnE5UZXAJdbTEK2ICgiAJFXNN0pqNUw'
    $GraphicsCaptureWrapper_x64dll &= 'AKR/JkCDu9dbAK5OqZ6rJHajAF+NUEadPp6uAD2bxnA/EJtYALxr9V2pkQLiAIs7ZtVb+cN5APcxwk6kZGMuAPXTB2BArjksAC59RFCATotnAJnUz55m2c3yAK4ioV6VljooAJNEw74S0LOpAPI940640YaVAPRX08Eb6Cg2AKw8YEy39CPOAA4MM1b3R6lRAM95PlqjpRKJAM+m3+jAEMbpAIym2VuAIYWJADRu7uIOAQGACgzwEAJwEscEB4D2C7AA+U1ASV0PAA8ADwCbDwBxBdD7YgUA+HJzAfwIc/8B83QvAQ8ADwAPAHcPAA8AcCepfwgCAPQJEFV0ABh0ACB0ACj4C88MX6ciQXAoAOACAOgA7KkwAJe7ATApDwC/DwAPAA8ADwDvEzMt1HB5XqAAHzAADwD3AsD4AdA/vAIxBLmBsh3xfnwCsNaIAAAFfwIA2Kf/BmkFAIDS8AWhMoIOABin8AQ1FfkEmKR7AliwFkkPAAAAcT34o/cAYHf0BLAw+gRA/wMCAGAcADLYuAbQ1X8Q8QOApQF7A+G3aJDZAAYA/wAAAXBAWQAYIKYHuAEAAQgsIADSAACAoQAAKHaiC4wFNgIQngFeFZ7wQQCD4KUAAHgQT3Bm2wcrCU8Iow8rAScGkwEzCBso3BM/MKQPP0sBAIFdGIgN4NiTHzhJjI+405MTqKiLExiuqYCRgU+AdUCADdCABQ5IjI0RAImXuNEAAErAgB2okIHQ1YMDDFeNv4CvCQBQgD9ggGH4O8wFBQCgwWLQY8lJWKdlxwPY2Hfg1MAfwFRYa9RcwQoHwACwzFTFBnA/yBbBitGXwY8JANU2+KC7xzbBX5jAFuFfBQADwADSwMgVYNbTz0DAecrFa8R82XdIyEeYwJ3RFbB3yFzCk8AwSMAW1XHJLYjfyKLBkNEX4Ur1E3hwA2ExamhoD5jsEIDggfFiwFlsLrDXY3ftBNhsDohf4B9/aP9oZQ7hC/DwToj34Ud/'
    $GraphicsCaptureWrapper_x64dll &= 'RRYA4PRndTVhZPEfu+Fm9RhQ6BZxCuWh8GgI2ekfoNDgo+AG8GxKZQOv8WzhBQkA5VQI/FRA7RPdbCOwYBR1Ju1NcPAV4Rr2yOwC5YoY6ALqqGC24bOC8PBagNoAAAXwH1bI9BPhCmjoCBj0gpiFaDEY4XKAA4CU4FkaOGABzOFa4AA9UwAkAFNgABNW4BdcAFQAFmAAeGAAyGAAGZBdAACnYAAjXmAGQWAAsV8AAONgAK0aaOALUWAjABHgUgAIABAP4GJiAACHC+AJYQOz4ABHQ1RMDAAQYANgAS50ZXhQdCRkaeEQEAABUBPwBjMBbW5yTWMAAAI2dgJtbiQwMAAaljABykARMwF4AGDl0AMtNgJ5ZAN7sChAGgAuaWRhdGEkNQWyKXLzDS4wMGNmCmewd3PzIi5DUlRQJFhDQTECODsBVVvyEjsBWvIzOgFJsgNQqzsBcgJYOgFQcgJgOwHVcgJoOgFUcgJwMAEyEpszAXICgDABwQ4ucnENW/AAsEH8gAPzACQQDgAcAHzwG+APNQF2b2zUdG1BEexwAeQxEXMBIHp6emRiYBAA0AKstAdydGMkSUFVsgfYOgFasgfgOQFULXMC6DoBcwLwMAEwCeUwAXgzCiC2cFYAQPMAQwAbsQS8AADUMCIugmUzArS+AAD08QBl8xoyMQKowLMpNAEzrTEBwDABeB008jPDcBb/MRAzAeEiQA2wQ7ED4wVyRKwgBPQAYBLAcE6gQDlT9ABRFQBgMJqAcQpignPyAADwAACQ8QAOcEQE0DUyBXJzcmPYJDAx8kkwAdCxKDMBB3ILDwAPAAEGAgAGADICMAEKBAAKADQGAAoyBnABYAQBAASCsAFxAEKFMDYVMAJyAjAwUBUCMDEDDwYAD2QMAAAPNAsAD3ILAHAZJwoAGWQQAAAZNA8AGXISAPAQ4A7ADHALBFDY8DZYrQAAOxVxJWGAAGcwAAIO9kEgDATpBwBAsUsZAB8GABBkCwAQ'
    $GraphicsCaptureWrapper_x64dll &= 'gDQKABBSDHAxBhoocQEdMAbwBA+SCFBwB2AGsgSk4ANLBfERqXEEpgABEgYAABJ0DQASNAwAABKSC1AZCQNAAAkBEgACQArwpUAG0GACeN1AAOAwACQlrlAHCBAwBwLooeAAChcSUOBO0DE8KFwTEmF5wqAAeBckEpgQGeDqsAB8FxIS0Rrw0jArgBcSIRGCAQK6ZfACBEpEAEKABBkKAvESUKWxBjzgBWlGQABIMAAEcAKhKAAZCwMAoAtCB1AG9AhgNQICajAAkAReAp0CqgI9AoQ1Ao4yAmQyAgApCgAbdBEAGwUwFhswERuSFPASuOAQULESMVSzGweyG4AZFwIACLIEshoCWDEIJggAGGQXAAAYNBQAGPIOquB1GfDgBXrxa/mAAEQGr7ARCrgh4AQyBHgfUBEGrQQEOgQCPvEDGwQADTTQEAANsjMYKKAC4FQoACgxgAA9cQMOyUBmAAAqKD/gCggAkQIENAIyBBgCAnUlUBkxDQAjAHQcACNkGwAjIDQaACMBcAjwFoDgFNASwBBQ8D1VMAV8YASSMQWFgACMCTAAAgrhBOAKnAAAjQcCmQMAfAIR4TcAGR4xIRQAD4DSC+AJcAhgsQNGuOACsBoAOMWAAN4BMAAPsAAAEggKIWEMUDhASkENUHgBsg1QsMAGBAQGQvRAAgoMDv1gAAAIDhAG4AICEYAHKfBHtQmAAD2AAMkNBYAAW4AA0Q4YaQUABEQCZQMGLAIAfAqsDP0CAEYAAhoKGg4aAhpHcRfzHzEXCZIC8hFIo/AEIDMAKFGAAFjBBYGyB3AEUQIAIjAjmAEYCvAYMABUCTAZJbAZMrIccBHxElICqjAxIIhgAyjxMpGAAAgERgLBPBkoCAAAGnQVABpkFACAGjQSABryEPIGLrggAnIc8QLBwAAIGUADAsIAOALQRxlSGXA5dAuwOQmwOQgAABkyFfAT4BFKwDEG7KACOPnxCbFTgHUwAAYIQhegUDkCLAQK'
    $GraphicsCaptureWrapper_x64dll &= 'AAEwEJEwECkEAAiwAHQCdARuAbAgBgAMcgjwBoDgBHADYAIw8QemOJAC8T04RYAATjAAql+3BECyBFazBLuBFYAECrYAugJ4sAQBsRAZLAwAHcQTAAAddBIAHWQRBAAdcCYdshnwF+jgFdCxBZSQA2B4swVaoTAAsqEEIAWpJwVdAAkKAQIAzQQCwHIEuAAyAnASMQ8KFTAPFDAPEwAZ0rszD/EE5GADsiLxBPExBAqy8wT59wRQtwCZCQr2ACUFAgB4BK4AMgIAAAAZEwEABGIAAEAwWgAAKAAAeB4ABwAQwgnwB+AABXAEYAMwAlAFA2xYAGwBFAgAFCBkCQAUVAAONAcAABQyEHABEggAABJUCgASNAkAABIyDuAMcAsAYAEMBgAMNAsAAAwyCHAHYAYAUBkPBgAPZA8AAA80DgAPsgsAcPBhAACMsgCoADiZAASiAAPDAAMAEAgQGCAoMDhAQAQICAqxABAMCAwOugAGAhGA2aBnAACNAgAI9wAIAA0DBFUCCkAOAQGrFwIACZICUCrYAL/gACpCABMoURCwAADpAAwESQJQACICAAOfDgCfDQgAEnIEnwYCAAYAUgIwARYKABYAVBEAFjQQABaAchLwEOAOwIEPABknCgAZARMAAA3wC+AJ0AfAg4WEgTNIswAAg4AzBGBNAAQCrgABCgAEAAo0CAAKUnAGcAEEg6WFqYEXeAUAEyuAF3jdrQAAWoUABpWBGwABjYEDEQCAFWgAAEwCOgACGSwLABpkKAAAGjQmABoBIAAAE/AR4A/QDajAC3CDI8AAF/OAIxQ4zQAE8oABE7QAAAASCjw/AACgQDK4IQAAgACdSCJSgQRgMiiACiECgroDAwQEBAYBABYtAKsKAAPAHFnAHF0dBQACdwACMRwUsQgADpwSNQQEnBIAPQwEogCEBiCgBCAKIATANgLBNVxQGcE1AFfBbUSAEGACScERKAABEAgAAhDAdBBSDPAK4AHDegEF'
    $GraphicsCaptureWrapper_x64dll &= 'AgAFNAFsAAHBZ8gNfIAMwkCJrQACmcEPgACRwyOtgCGgFgIIAgnBCyJAKoPAO8EPa1UAAPXAAIbLwAfBAQECAQDBo0vDocAAVMCgNAbCoREAFQgAFXQJABUQZAcAFcAEFTIRBuDBEYAZAGRXAABa08AA48ARAQA2ALNBW8AAxQMRyHDBDATABHtVwAedwAD6xAhwwAKxqcAAE2nDA7rAAsXIB0XBA8bIBwkaBsByDwAAGnIW4BRwEwpgxTT9wAjaWQAATifACcEBxKJQAcLIB6PAyMABMgtwwjowxToFwDlUwDk0BQAUEiHA3AkBAAnBEwgEgAAIcgRwA2DAsgQVBcA9ugAVAbgEAAbBSA0EAA00eAoADcBvwSPBHsUBAVYZ4FtgJRlgKBlgKBmhYA4ZMhXg4QMQYAC0gNJjBf8AAOEAGGAATFwRBAgIABDR7wRQMhPvBGDU/wThNBi6JWBFt+8HuBfjAEC5828DAQCA0/8L4gT/FeIQmqj9ELhvA+EG+LbvBrfiGuAF+QmY4AYRALjwFVYQATQMAMBkApj0I1Db/yMCACD/NOIZ0PAc6RmmuPQQ5RRAvPMnGOAGLfkKWOAyEQBI/zoAA9lgADC7YBdgDKhwDAEAtuD/JOIUcPAU4QLA4Aut8RcY/wriEwjgIiBgK8/xE+IO9S7wC1gS+Cj/Gb/zD38//w/xH/8scgGY/w/tcgFIfwv6CCC/AXMr/wi/fyt5DX8Eezv/I/oBcP8DaQIAoNB/CBj/FfYt+O//QXsGfwgCAKj/Dv8OcRp3/y5/AvgGwP82cxf/BgD+HHxe8WK5G/EcPyr8TP8P7foBMP8IAgDQfxb/J/EFz/AD/yQHAPUDlL3zC7GiVTEACPAAQDAAeDAA3CY78AAwAHA48BE2AAQAiHAAYDkAACQQOgAAbPAAyDcApADEgJu0L7AOM/CqQi5wDzEAALOwA8JVMADQMADfMAD1MAAGVr6wjjAALzAAPzAATVUwAFkw'
    $GraphicsCaptureWrapper_x64dll &= 'AGwwAIUwAJ8LMACRCAJQPgQABQAABgAHAAgACQAECgAwsgANAEdyAGFwaGljc0NhQHB0dXJlV+AAcABlcl94NjQuZABsbABDbGVhbgR1cNQBAEdldEIAdWZmZXJJbmbGb9EAhAFNb2TCAeYAEG5pdG9NAmRGckxhbWkCAwFOQi4BVDBpbWVkUQGEBENvCHVudPEAUmVnafRvbnIFSZABZQmxAKUCBy8BQwOJAVByaW1hvHJ5LwMEBhUB8TfDtx1UEsTwL3IwGcI3ARxBMAHocQAAkHgCPmUwAdBwAgjBeDwwAUip8LTAwDcB7DABADABsnh4ArbFsCowASg4ASrKMAFoMAEIOAYWx6vwBDAG6LgIODABKDABqoB4AlgwAcAwAXh4AizgyDAGMAu4OAYGyauwQzAGMHgCMDABcHACqlg4AVowAZgwAai4A1qEMAHo8Ql4AqYwAUjVcAJoOAHQMAGocQc4AZb0cQcwAfD4BBjKsAdlMAHguBJMyzAwMAaIVXgCWjAByDABmPgEelUwAdiwA8g4AZwwAQhVMBDYOAHEMAEYMAHQdfgE5jABELADDwADAKzr8RoAALx0AN50AAUAYBXXop4gDXIABnQAB3QANgrVdANmdACMfASW8B4yrlV0ACp0AEJ0AFR0AF6VdABodACAdAAGzPsEuvr8BUDwFbIXdABydADtBQA6hAwFANgwJHIPdADXNiPwEgEA4vQDQPQAdisFdAQSdAHltpIABACuyANwYMoDODQuywM4UgQ8BQD2x9UDHAoEvGgEDn4EDgUAqh4MHk4MHo4EjnoEB5aoBAcFAJIMd+DDCw8qlAxPqAwvyAwP9MY1AwcoBAc0BAcFANzFVYMDCIRD/IQPUIQD6lWEA+SEE2qEBz6EAwJVhAMehAPchAPEhAOotYQDjIw79oQnBQDojHMK/oQHuIwLAABDcgBlYXRlRGlyZQBjdDNEMTFEZQB2aWNlRnJvbRBEWEdJgwYAAC0A'
    $GraphicsCaptureWrapper_x64dll &= 'AFNsZWVwAAQAAEVudW1EaXMAcGxheU1vbmkAdG9ycwAGAEQHgQ6EEoMMZDNkMTEALmRsbABhcGkALW1zLXdpbi0AY29yZS1zeW4AY2gtbDEtMi0GMAIISQhudHVzZYJywAhzcGFyYQAFBcAJMcUJTgFHZXQARGVza3RvcFcAaW5kb3cAAJMDwQREIkluZm9BABydAoQDATGECVVTRQhSMzJDEYgFX00AdHhfdHJ5bG8EY2vAkAI/X1hsAGVuZ3RoX2VyAHJvckBzdGRAAEBZQVhQRUJEIEBaAACJQwx1bgECDE1TVkNQMTQBxCQAAF9fQ3h4AkYAK2VIYW5kbMBlcjQAACJABUARAF9leGNlcHRpAG9uX2Rlc3RyEG95ACFOBmNvcBB5AAAjxAV0ZXIIbWluwFEAPABtKGVtY8EGPkECc2UGdMCVQRtfc3BlY0BpZmljX2gDHAAIAAEAASFUaHJvRHdFBRYAACXFFHkwcGVfaQBHRSFfbARpc0ATVkNSVU7QVElNRUAzXwNrygQBQwRUAGFib3J0CAA6AMAQdm9rZSBfd2F0c8EXewBYaXN3AGpBiDiiA2FQbGlkXyI3ZQAZX5xub6EOYR4AK25v4hcAY2FsbG5ld2gQABkAbUABb2MAAAA/AF9zZWhfWGZpbIEGgQ4Y4ARvAG5maWd1cmVfBG5hoDJ3X2FyZxB2AAAz4QxpdGkFIA16RgNlbnZpcqBvbm1lbqAaNCoEAG9uZXhpdF90CGFibKAUPABfchxlZ4Af4AwkA2Z1bgZjwiVgNmV4ZWN1inSMBh5gEXJ0X0AyOWACABagAQIBYBRmcpplYAo24w0BNwA3ZwEEX2UqX3J0LXJ1YG50aW1lSVosBGg4ZWFwKl7sA4A3aW4CZyoEAgBSdGxDiGFwdCAlQ29ugBQIdAALYQJMb29rSHVwRqQbRW7gXQAEABEhA1ZpcnR1UGFsVW7ACmRhAlUqbgNJZGZHRkIxAAAgDwBTZXTW'
    $GraphicsCaptureWrapper_x64dll &= 'AwwAIWBvQ3VycuAuUHIAb2Nlc3MAVQAGVCVYRQIAMgBJcw+EAaBygIRgFVByZXMFwTUFYANEZWJ1ZwhnZXJlAgAAUXUAZXJ5UGVyZm/gcm1hbmMgG2AnIA5yDS8OSWQgGKcCYGBlJGFkgAIAF6ECU3lJYD1tVMAuQXOgFmUfIQGgZSCYYTuDBUxpYmByYXJ5Q6BRgBUA0kmGR1NMIEVIIARumIBydGxzdXBwwGK/tTmhBKKJYietNi0FcGMZvnTiEYqePwUgADIFZKEqhboObAMfbG9hZGCu3zSypQ6gc0pX8Lpz0T4/Ak04AmlRHFFUZWR6AiiIAENvdxdFeACQHj5G0DWkGVA3sBwBH0Fk9mRAImAaBxADA2dxAoMcAGVkTWFyc2hhASFRBgBNdWx0aQBCeXRlVG9XaUBkZUNoYXKRMW8QT3JpZ/IpTGFusGd1YWfgBhZTAfABJZAGQTAzdmGSLmFjO5BkkDMAFQjQByAhcACkAEYQCFVup0YAMAdjkQHxCAAAA3Aktg5QuHVzaBI4EiWQT0wgF7G0DUV4V1E8kQNB4lDAT0xFQVVU1WodFPhjb20fFlkYLkIdAoAA/2ArsinpI38CcgK/BhcC7UriPXFqbW924A8PAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8Auw8ABgD/AAB1AAEAAbGsH5OwJQLjAA8AAgAyot94LZkrfwEPAA8AAQDNAF0g0mbU//91DpjzAPEHCQDYmACAYTkBLj9BVuWKcIV1r5GDY5//AvQCVSBGcyBFAF9pbGxlZ2FsE5CVMERfY/BdZ2VAz8Iy1QP/A/kDbm8wgqBBPmZwk38DfwN9B6CVaG9eZHKU5gN/A3cDd5CRZ/5fA2P/Bn8RlqkIEX8C9wWgY2xhc3NQDXSmlUZlfwb/A1ZiYbEXcuhheV/goF8DuCUH/wL/+AYBgdCIOQb/AvQFEVV/'
    $GraphicsCaptureWrapper_x64dll &= 'DPd/BXEFkhxkcx0MDH8DdwPMYWMxYaC1bmmOD38Dw38TEAR2YWls8Yj/HP9/AzTKfwb/AnQjfS5/E3oTeGxvZ6DFmNB/AvwsdABfW7YAaW1wbGVtZW4AdGVkQHdpbnIQdEBAAAkA2JgABIABCDwuP0FVaAByZXN1bHRfaQBsbGVnYWxfZAJlAQ50ZV9hc3M4aWduAZoGlhl+b3UBAAZmX2JvdW5kFnMMfRA3VgQvcmFuwGdlQHN0ZAEsEScAdHlwZV9pbmZSbxR/PyQFsUAAC1QRgBZkRXYAWkhhbgBkbGVyQFVHcgBhcGhpY3NDYQBwdHVyZUl0ZRRtQIQFQIUNQFdpEG5kb3eGW1VJSQBuc3BlY3RhYhBsZUBGgWlhdGnAb25ANDVACQcMGwBWPGxhbWJkYQBfMj5AP0JCQAA/P0ZpbmFsaQR6ZQQ4U2V0dXAAQEBZQUhQRUHASDBAWkBAgdkS1geUmy8x030/JG1vZAB1bGVfbG9jaxhfdXBANEBLJDAwa1gk2SMxwCNPoyPaoz8aJEaxcwajlHZEaXIhwGgzRDExRBtGcoBhbWVQb29sf3j/XHimOxl48rM/PZ8enx6fHgeIHvEcsDxfYmFzZQf/JesI4YNAPyRhYt5p/3//fx8lGSVY/x7qFQBJVW5rbm93bgdfCv8h5QttYXJzaAJhIR8/MT8/bWH4a2VfRwJpCcM1/xHtEdgyM0DgBkAAWIt5/3n//nlfNV81XzVftZ9aAx//UT//d/93fx3fUpsLfwtBVfxJTVMiXw4PAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwAPDwAPAA8ACQAQEAAAgkMwAPCsAABYcAAqmzAA+LAA/HAAHBHQAAAErXMAWTAAMQKqXHAAmbQAnHAArjAACgwwArBwABgSAAB2FLAAcQBVMAAyBXAAlQW0AKxwAE4TAAAktTACUHAAiTAAcQGMcACgAhYAADRwAQRw'
    $GraphicsCaptureWrapper_x64dll &= 'ACqSMABwsACUcACWF6gAAIiwAJhwALgwACvxAnEA6rQA7HAADBjbswBxACy0AHEATLQAcQC2bLQAcQCMtABxAKy0AG1xAMy0AHEA7LQAcQAMthn0BXAALLQAcQBMtADNcQBstABxAI0b8AQwC6qQcADdMAC8sADgcACEOh0wDa4AAHxwAMreMAC0sACQHrATMABTMhRwAHcf8xeAcAAnUCAAAMAwAihwALZQIQAA0LAAuHAAzKcwAPECcQC1IjAcr3ABWXAAOyZwFbAAPHAAUpYq8BmwAFRwAAsrsBVWsDADcADDtADEcAC3UCwAAGCwALhwAAJQLQAAeLAABHAAipYu8BawAIxwALMvcAYlsAC0cAACMbAgsQBkACBwAKYzsA6wAKhZcAA5NnAKsAA8cABrKzAAsQlscACzMAAQsrOwAXAAijdwA7AAjHAABscwALESiDgAAF+WOXADcAFgcAAjOrMAsiRwAAY7sAywAAhwACraMABksADccADdPSgAAHSwAOBwAJU+y7AJsACYcAAoPzAFsADdcQA8MAAxCHEAVLQAcQCCxzAABLMAAMhwAM49gEqxAAFLz0EwArAAUtBwAGJCswlkcACAzkawCHABcQAOR/AIsABaEHAAZjAAsRt0cACVVTAAXHABrHAAzbQA0DlwAA1IMATxAnAAvU8rMAqwAMBwAN0wADS0s/ALcAAnUbAjsAAocACWOjAAcQpAcACXUvAQ1XABwHAA3jAAaPECcACsHFOzCXEALzAAbHABujBwAGkwADIXcACgtADVcQC1tAC4cADgtABxAMr1tAD4cABYVLAgcATdcQCIMABxAXEAnLQAcQDK1rQA2HAAY1X0EXAAmvwwAJywA3EAIFZzAVVxAEm0AExwAIa0AIhdcACfMAByLnAA23QB3JlwACxXcwFxAEJYcAaVMAVEcADHMAAUtfAaOXAA8FlwELAAcQAtWmvwFLAAMHAATTAAsQNQNXAAsDAAqHAB'
    $GraphicsCaptureWrapper_x64dll &= 'cQBFXetwALAASHAAfDAAsQZxAGxPXvAOcAFQcQAwAMybsABxAOQwALFOBF8wAhZgMAhwAVRwAANhANQA6LAABHAAJzAAsiTVcABvtAB4cAC0MAAxOwVxAPC0ANhiAABXWmNwA7awTHAAcjAA+NVwBJBwAJYwAABwAXEA2sIwACywJHEA6rQAcQCc0mTwE7AAcQC6ZbMAWXEApWbwBLAAyXAA7wUwAEgwPgdnAAAl1TAALHA6PXAAW7QAcQCqebQAkXAAr7QAu3AAAtm0AAO1INlnAAD3ADAssFkDcBVoA1gBOEEBWK6oAABZABx3ASy0AxxqlQQsrQAcywRGAQ7jLQAGvAAuAQ76AAZIr9kDDhNpAxYBDicEFgEOgl0ABpC1AABgAAdijQAD8KwA/wB6AAIEABBAASAAAIAYLcABOMABywcBQAAAADpQ0AUCQAGAes4FCQQrDgXGBZBAAqDAAjQFQUcG2AUBAJFICjQEBTRAAVYAUwBfEUABRQBSQAJJAE/UAE7AA0lAAUbAAgEA0L0E7/7BFQPEDcUBrwUAgBvCLgkAkgAFAcATAHQAcgBpAG4AgmdAE2kAbABlQBagbgBmAG/ACG7CCOgwADTAADnAAEMAwCUUAAjABVBADm8AZFAAdQBjQBFWQA5yVABzwBBvwA8AwAkuHAAzwADBAcEMUgAZBcAMQ0AHbQBwAGFVwAh5QDBhQANlwiNVVcA3WkBfU0AIZsATd0XABnLABiAAREABdtXAAGxABnDCC27ABwEAuHoAKcAUxS3BCXPAIo3BM3BACEUiAABXwARqYcAEcMIoIEI3wQFXFSIfZKABdyAHIABHVeQEaOACYyICQ+IBdCtgHGMRQaAeSWIKWABWHGAPYSV0ogpuIAVs3ygabQkrCSsS4SRjogGhPbXhJEzgAmciCiEmcGAlPaEaZ6AJIR9/JW8lZgD6H+AKT+QI4R6hC2UnoQGD/xbtFl8AeAA/IAAaLmAobCAAAQBO'
    $GraphicsCaptureWrapper_x64dll &= 'ABcfbkPpPP8L5wsBAOoB6YvmRuUZc+ACSQBNoAyqT+BKVKAyTqAAOuAfWlngBHXgAOUhbuABdFfiAeET4TxloBIgYAJvdaAAcyIlbOIB4REhPmPX4hZhB2NEauAJc2IIoVbWcqIPYQNmoABp4gJhKdchDGMHoxRyYAFpog7hBl1hIWqgAmEh5Qpt4gxp/eAIeSYJoWKhE+ECYQ5hNa5i4A8hTGUEd+IAaCQOPSMIZiIOYyNhHqMtIQDeLCJCbQmjfaMVcKABoWavJRohC2ENYxZnojFtZhzf4xthBmFGIRUjaW2gBCEPaiigAnhgACniG+UmYv0iCmYiFOMqIQ0jgOECoQJqIWI9ROKUVuIsr5EAVAAkIplUohJuoAtsQ+IO53wJBOn94QA8AD94bWwgdmVyAHNpb249JzEuADAnIGVuY29kAGluZz0nVVRGAC04JyBzdGFuAGRhbG9uZT0nAHllcyc/Pg0KADxhc3NlbWJsBHkgAARucz0ndQBybjpzY2hlbQBhcy1taWNybwBzb2Z0LWNvbQA6YXNtLnYxJwAgbWFuaWZlc+x0VtkGoQQvtQTAAM9m/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ACQAAV7F+APiiAKMIoxCjwBijKKM4owABwHkB0UzQqNio6KjwAKj4qACpCKkQAKkYqSCpKKkwAKk4qUCpSKlQAKlYqWCpoKyoAKywrLiswKzYAKzwrPisAK0IAK0QrRitIK0oAK0wrTitQK1IAK1QrVitYK1oAK0IryCvKK+wAK/Ir9Cv2K/gxK/osKAA0ADQXrCAAKDQoBChSKGAAKG4oeChIKJQAKKAoqii4KIYAKNQo4CjuKPgAKMgpGCkmKTAAKTgpNClGKZgAKawprCnmKjgAKiQqfCpgKpw/KsoH6QPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwAHDwAPAA4A'
    $GraphicsCaptureWrapper_x64dll = _WinAPI_Base64Decode($GraphicsCaptureWrapper_x64dll)
    If @error Then Return SetError(1, 0, 0)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($GraphicsCaptureWrapper_x64dll) & ']')
    DllStructSetData($tSource, 1, $GraphicsCaptureWrapper_x64dll)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 56320)
    If @error Then Return SetError(3, 0, 0)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\GraphicsCaptureWrapper_x64.dll", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_GraphicsCaptureWrapper_x64dll

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 _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
    $tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
    If @error Then Return SetError(1, 0, 0)
    Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
    If @error Then Return SetError(2, 0, 0)
    If $aRet[0] Then Return SetError(3, $aRet[0], 0)
    Return $aRet[6]
EndFunc   ;==>_WinAPI_LZNTDecompress

 

I tried almost every possibility but always crash with -1073740791 (Stack Buffer Overflow).

No issues when calling it from Freebasic.

 

Any ideas?

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

  • UEZ changed the title to DLL Call Problems
Posted (edited)
13 minutes ago, KaFu said:

Their seems to be an error in ASM_DecompressLZMAT(), script crashes at that point and I can't create the dll.

The DLLs can be found also on my 1Drv where WebP stuff is hosted.

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted (edited)

Can't see an issue (like in: it crashes for me too, but I don't no why either).

Maybe it's related to the InitRegionCapture() function itself? Maybe Freebasic captures something AutoIt doesn't, like freeing resources?

Edited by KaFu
Posted
9 minutes ago, pixelsearch said:

@UEZ glad you created this thread.
Could you please be kind enough and share again the preceding DLL version 0.4.4 (x86) ?
Thanks

You are lucky. I found a backup file which is dated to 0.4.4 but what is the reason for the request for the older version?

V0.4.4 is uploaded to my 1drv.

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

drop it like it's hot :lol:

7 minutes ago, KaFu said:

Maybe Freebasic captures something AutoIt doesn't, like freeing resources?

..any resources that the DLL has/uses would need to be freed by the DLL, to make it safer ?. If AutoIt needs to free a resource, could it do a call to the DLL to free it ?
( haven't look at any code, just imagining )

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Posted
13 minutes ago, KaFu said:

Can't see an issue (like in: it crashes for me too, but I don't no why either).

Maybe it's related to the InitRegionCapture() function itself? Maybe Freebasic captures something AutoIt doesn't, like freeing resources?

It is very odd why it is not working with Autoit. In FB it is straight forward - nothing special.

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

May not be related, but in AutoIt after version 3.3.12 there were things that were broken, like stuff I was able to do in 3.3.12 didnt work in later AutoIt versions, but that was concerning ImageMagick.dll COM object, dont know if that also ruined stuff like your problem.

Reference post
https://www.autoitscript.com/forum/topic/199781-rgb-imgs-to-cmyk-to-tiff/#comment-1433227

Some guy's script + some other guy's script = my script!

Posted
1 hour ago, UEZ said:

You are lucky. I found a backup file which is dated to 0.4.4 but what is the reason for the request for the older version?

V0.4.4 is uploaded to my 1drv.

Thanks for the upload !
For the record, just re-tested on a XP machine :

1) Dll 0.4.4
All examples work, from example01 to example 16 included

2) Dll 0.5.0
Only one example works (example02), all other examples throw a fatal error

"I think you are searching a bug where there is no bug... don't listen to bad advice."

Posted
23 minutes ago, Werty said:

May not be related, but in AutoIt after version 3.3.12 there were things that were broken, like stuff I was able to do in 3.3.12 didnt work in later AutoIt versions, but that was concerning ImageMagick.dll COM object, dont know if that also ruined stuff like your problem.

Reference post
https://www.autoitscript.com/forum/topic/199781-rgb-imgs-to-cmyk-to-tiff/#comment-1433227

Made a quick test with 3.3.12.0 by replacing AutoIt3.exe only - same result.

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted (edited)
1 hour ago, pixelsearch said:

Thanks for the upload !
For the record, just re-tested on a XP machine :

1) Dll 0.4.4
All examples work, from example01 to example 16 included

2) Dll 0.5.0
Only one example works (example02), all other examples throw a fatal error

I changed for unknown reason the Extern "Windows-MS" to Extern "Windows" which is causing the problem when running it as x86 because obviously some functions require __msfastcall convention instead of stdcall.

Can you please check for the latest x86 version for the examples?

 

Thanks!

 

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted
57 minutes ago, UEZ said:

Can you please check for the latest x86 version for the examples?

For sure :)
Unfortunately new DLL 0.5.1 makes things worse on XP, as a new error message immediately appears at 1st initial Dll call :
windowserror.png.9dfb5808b1e4c7abebaccc58ff488e38.png

English corresponding message is found at this MS link :

ERROR_NET_OPEN_FAILED
570 (0x23A)

The NtCreateFile API failed. This error should never be returned to an application,
it is a place holder for the Windows Lan Manager Redirector to use in its internal error mapping routines.

Anyway UEZ, thanks for DLL 0.4.4 which did the job, no need to investigate more imho so it will save your time.

I made a big mistake a few days ago when deleting all your previous dll versions and corresponding WebP.au3
Today I start again to keep your last dll's and corresponding WebP.au3 in separated subfolders (renamed in archive subfolders) starting with 0.4.4

..\WebP UEZ 2025\_WebP_DLL_v0.4.4\0.4.4 _WebP_x64.dll
..\WebP UEZ 2025\_WebP_DLL_v0.4.4\0.4.4 _WebP_x86.dll
..\WebP UEZ 2025\_WebP_DLL_v0.4.4\0.4.4 WebP.au3  <========= unfortunately missing

..\WebP UEZ 2025\_WebP_DLL_v0.5.0\0.5.0 _WebP_x64.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.0\0.5.0 _WebP_x86.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.0\0.5.0 WebP.au3

..\WebP UEZ 2025\_WebP_DLL_v0.5.1\0.5.1 _WebP_x64.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.1\0.5.1 _WebP_x86.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.1\0.5.1 WebP.au3

 

"I think you are searching a bug where there is no bug... don't listen to bad advice."

Posted
8 hours ago, Andreik said:

What is the actual implementation of the function? If you can share it I will take a look.

Sure

__declspec(dllexport) int InitRegionCapture(int x, int y, int regionWidth, int regionHeight, int* actualWidth, int* actualHeight) {
        if (g_ctx && g_ctx->isCapturing) {
            if (actualWidth)  *actualWidth = g_ctx->width;
            if (actualHeight) *actualHeight = g_ctx->height;
            return 1;
        }

        if (!InitializeCaptureCommon()) return 0;

        g_ctx->mode = CaptureMode::Region;

        try {
            HMONITOR primaryMonitor = MonitorFromWindow(GetDesktopWindow(), MONITOR_DEFAULTTOPRIMARY);

            MONITORINFO mi{ sizeof(MONITORINFO) };
            if (!GetMonitorInfoA(primaryMonitor, &mi)) return 0;

            int monitorWidth = mi.rcMonitor.right - mi.rcMonitor.left;
            int monitorHeight = mi.rcMonitor.bottom - mi.rcMonitor.top;

            x = std::max(0, x);
            y = std::max(0, y);
            if (x >= monitorWidth || y >= monitorHeight) return 0;

            if (x + regionWidth > monitorWidth) regionWidth = monitorWidth - x;
            if (y + regionHeight > monitorHeight) regionHeight = monitorHeight - y;
            if (regionWidth <= 0 || regionHeight <= 0) return 0;

            g_ctx->regionX = x;
            g_ctx->regionY = y;
            g_ctx->regionWidth = regionWidth;
            g_ctx->regionHeight = regionHeight;
            g_ctx->fullMonitorWidth = monitorWidth;
            g_ctx->fullMonitorHeight = monitorHeight;

            g_ctx->width = regionWidth;
            g_ctx->height = regionHeight;

            auto itemInterop = winrt::get_activation_factory<GraphicsCaptureItem, IGraphicsCaptureItemInterop>();
            HRESULT hr = itemInterop->CreateForMonitor(
                primaryMonitor,
                winrt::guid_of<GraphicsCaptureItem>(),
                winrt::put_abi(g_ctx->item)
            );
            if (FAILED(hr)) return 0;
        }
        catch (...) {
            return 0;
        }

        if (actualWidth)  *actualWidth = g_ctx->regionWidth;
        if (actualHeight) *actualHeight = g_ctx->regionHeight;

        return FinalizeCaptureSetup(nullptr, nullptr);
    }

 

8 hours ago, pixelsearch said:

For sure :)
Unfortunately new DLL 0.5.1 makes things worse on XP, as a new error message immediately appears at 1st initial Dll call :
windowserror.png.9dfb5808b1e4c7abebaccc58ff488e38.png

English corresponding message is found at this MS link :

ERROR_NET_OPEN_FAILED
570 (0x23A)

The NtCreateFile API failed. This error should never be returned to an application,
it is a place holder for the Windows Lan Manager Redirector to use in its internal error mapping routines.

Anyway UEZ, thanks for DLL 0.4.4 which did the job, no need to investigate more imho so it will save your time.

I made a big mistake a few days ago when deleting all your previous dll versions and corresponding WebP.au3
Today I start again to keep your last dll's and corresponding WebP.au3 in separated subfolders (renamed in archive subfolders) starting with 0.4.4

..\WebP UEZ 2025\_WebP_DLL_v0.4.4\0.4.4 _WebP_x64.dll
..\WebP UEZ 2025\_WebP_DLL_v0.4.4\0.4.4 _WebP_x86.dll
..\WebP UEZ 2025\_WebP_DLL_v0.4.4\0.4.4 WebP.au3  <========= unfortunately missing

..\WebP UEZ 2025\_WebP_DLL_v0.5.0\0.5.0 _WebP_x64.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.0\0.5.0 _WebP_x86.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.0\0.5.0 WebP.au3

..\WebP UEZ 2025\_WebP_DLL_v0.5.1\0.5.1 _WebP_x64.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.1\0.5.1 _WebP_x86.dll
..\WebP UEZ 2025\_WebP_DLL_v0.5.1\0.5.1 WebP.au3

 

WindowsXP? Really? 😲

I found 0.4.3

#cs
Copyright (c) 2025 UEZ

The following terms apply to the use of this code (AutoIt scripts and both DLLs), unless otherwise agreed upon in writing with the author:

1. **No commercial use**
   Any commercial usage - including but not limited to selling, licensing, integrating into commercial software, or using in revenue-generating products - is prohibited.

2. **Modification allowed, for non-commercial use only**
   You may modify or adapt the code as long as it remains non-commercial. Even in modified versions, the original author must be clearly credited as UEZ.

3. **Attribution required**
   In any non-commercial distribution or use, clear credit must be given to the original author: UEZ.

For exceptions or commercial licensing, please contact:

uez at hotmail de
#ce

;Version 0.4.3 build 2025-08-03 beta
#include-once
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <Memory.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIGdi.au3>
#include <WindowsConstants.au3>
#include <WinAPIConstants.au3>
#include <WinAPISysWin.au3>
;~ #include <WinAPIDiag.au3>

;WEBP_HINT_ENUMARTION
Enum  $WEBP_HINT_DEFAULT = 0, _ ; default preset.
      $WEBP_HINT_PICTURE, _     ; digital picture, like portrait, inner shot
      $WEBP_HINT_PHOTO, _       ; outdoor photograph, with natural lighting
      $WEBP_HINT_GRAPH, _       ; Discrete tone image (graph, map-tile etc).
      $WEBP_HINT_LAST

Global Const $tagWebPConfig = _
                                "long lossless;" & _
                                "float quality;" & _
                                "long method;" & _
                                "long image_hint;" & _
                                "long target_size;" & _
                                "float target_PSNR;" & _
                                "long segments;" & _
                                "long sns_strength;" & _
                                "long filter_strength;" & _
                                "long filter_sharpness;" & _
                                "long filter_type;" & _
                                "long autofilter;" & _
                                "long alpha_compression;" & _
                                "long alpha_filtering;" & _
                                "long alpha_quality;" & _
                                "long pass;" & _
                                "long show_compressed;" & _
                                "long preprocessing;" & _
                                "long partitions;" & _
                                "long partition_limit;" & _
                                "long emulate_jpeg_size;" & _
                                "long thread_level;" & _
                                "long low_memory;" & _
                                "long near_lossless;" & _
                                "long exact;" & _
                                "long use_delta_palette;" & _
                                "long use_sharp_yuv;" & _
                                "long qmin;" & _
                                "long qmax"

Global $g_hDLL
; #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_BitmapCreateGDIp($sFilename[, $bGDIImage = False[, $bDither = False[, $iDitherStrength = 32[,
;                   $bCountColors = 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.
;                   $bDither                - [optional] a boolean value. Default is False. If true pseudo dithering (noise) will applied to image.
;                   $iDitherStrength        - [optional] an integer value. Default is 32. Valid values are from 0 to 64.
;                   $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! Dithering makes only sense for images which are heavily compressed.
; Related .......:
; Link ..........:  https://developers.google.com/speed/webp
; Example .......:  No
; ===============================================================================================================================
Func WebP_BitmapCreateGDIp($sFilename, $bGDIImage = False, $bDither = False, $iDitherStrength = 32, $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
    $iDitherStrength = $iDitherStrength > 64 ? 64 : $iDitherStrength < 0 ? 0 : $iDitherStrength
    Local $iFileSize = FileGetSize($sFilename), $nBytes
    If $iFileSize < 1 Then Return SetError(3, 0, 0)
    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(4, 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", $bDither, "ubyte", $iDitherStrength, "boolean", $bGDIImage, "boolean", $bCountColors, "struct*", $tColors)[0]
    If $hBitmap = 0 Then Return SetError(5, 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[, $bDither = False[,
;                   $iDitherStrength = 32[, $bCountColors = 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.
;                   $bDither                - [optional] a boolean value. Default is False. If true pseudo dithering (noise) will applied to image.
;                   $iDitherStrength        - [optional] an integer value. Default is 32. Valid values are from 0 to 64.
;                   $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, $bDither = False, $iDitherStrength = 32, $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("ulong cc")
    Local Const $hBitmap = DllCall($sDLL, "ptr", "WebP_BitmapCreateGDIp", "struct*", $tBuffer, "uint", $iBufferSize, "boolean", $bDither, "ubyte", $iDitherStrength, "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 GDI+ 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 .:  1 on success, otherwise error -> -1 to -4
; 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 GDI+ 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[, $lossless = 0[, $quality = 75.0[, $method = 4[,
;                  $sns_strength = 50[, $filter_sharpness = 0[, $filter_strength = 60[, $pass = 6[, $near_lossless = 100[,
;                  $alpha_compression = 1[, $alpha_filtering = 1[, $alpha_quality = 100[, $target_size = 0[,
;                  $WebPImageHint = $WEBP_HINT_DEFAULT[, $NoSave = False[, $sPath2DLL = ""]]]]]]]]]]]]]]])
; Parameters ....: $sFilename           - a string value.
;                  $hBitmap             - a handle value.
;                  $lossless            - [optional] an unknown value. Default is 0.
;                  $quality             - [optional] an unknown value. Default is 75.0.
;                  $method              - [optional] a map. Default is 4.
;                  $sns_strength        - [optional] a string value. Default is 50.
;                  $filter_sharpness    - [optional] a floating point value. Default is 0.
;                  $filter_strength     - [optional] a floating point value. Default is 60.
;                  $pass                - [optional] a pointer value. Default is 6.
;                  $near_lossless       - [optional] a general number value. Default is 100.
;                  $alpha_compression   - [optional] an array of unknowns. Default is 1.
;                  $alpha_filtering     - [optional] an array of unknowns. Default is 1.
;                  $alpha_quality       - [optional] an array of unknowns. Default is 100.
;                  $target_size         - [optional] a dll struct value. Default is 0.
;                  $WebPImageHint       - [optional] an unknown value. Default is $WEBP_HINT_DEFAULT.
;                  $NoSave              - [optional] an unknown value. Default is False.
;                  $sPath2DLL           - [optional] a string value. Default is "".
; Return values .:  negative value up to -8 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, $lossless = 0, $quality = 75.0, $method = 4, $sns_strength = 50, _
        $filter_sharpness = 0, $filter_strength = 60, $pass = 6, $near_lossless = 100, $alpha_compression = 1, $alpha_filtering = 1, $alpha_quality = 100, _
        $target_size = 0, $WebPImageHint = $WEBP_HINT_DEFAULT, $NoSave = False, $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 $tWebPConfig = DllStructCreate($tagWebPConfig)
    FilltWebPConfigWithDefaults($tWebPConfig)
    With $tWebPConfig
        .lossless = $lossless
        .quality = ($quality < 0) ? 0 : (($quality > 100) ? 100 : $quality)
        .method = ($method < 0) ? 0 : (($method > 6) ? 6 : $method)
        .image_hint = ($WebPImageHint < 0) ? 0 : (($WebPImageHint > 4) ? 4 : $WebPImageHint)
        .target_size = $target_size ;in bytes
        .sns_strength = ($sns_strength < 0) ? 0 : (($sns_strength > 100) ? 100 : $sns_strength)
        .filter_strength = ($filter_strength < 0) ? 0 : (($filter_strength > 100) ? 100 : $filter_strength)
        .filter_sharpness = ($filter_sharpness < 0) ? 0 : (($filter_sharpness > 7) ? 7 : $filter_sharpness)
        .alpha_compression = $alpha_compression
        .alpha_filtering = ($alpha_filtering < 0) ? 0 : (($alpha_filtering > 2) ? 2 : $alpha_filtering)
        .alpha_quality = ($alpha_quality < 0) ? 0 : (($alpha_quality > 100) ? 100 : $alpha_quality)
        .pass = ($pass < 0) ? 0 : (($pass > 10) ? 10 : $pass)
        .near_lossless = ($near_lossless < 0) ? 0 : (($near_lossless > 100) ? 100 : $near_lossless)
        .exact = BitAND($near_lossless = 0, $lossless = 1) ? 1 : 0
    EndWith

    Local $iReturn = DllCall($sDLL, "long", "WebP_CreateWebPAdvancedFromBitmap", _
                                    "str", $sFilename, _                                      ;Webp filename
                                    "ptr", $hBitmap, _                                        ;handle to GDI+ bitmap
                                    "struct*", $tWebPConfig, _                                ;WebP config settings
                                    "bool", $NoSave, _
                                    "struct*", $tMem)[0]
    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 Const $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(2, 0, 0) ;DLL not found
    Local $iReturn = DllCall($sDLL, "ulong", "BitmapCountColors", "ptr", $hBitmap)[0]
    If Not $iReturn Or @error Then Return SetError(3, 0, 0)
    Return $iReturn
EndFunc   ;==>BitmapCountColors

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_ExtractAnimFramesToDisk
; Description ...: Extracts the frames of a WebP animated file
; Syntax ........: WebP_ExtractAnimFramesToDisk($sFile, $sDestPath = ""[, $sOutputFormat = "webp"[, $sPath2DLL = ""]])
; Parameters ....: $sFilename           - path to webp anim file.
;                  $sDestPath           - destination folder. If empty then script path will be used.
;                  $sOutputFormat       - [optional] a string value. Default is "webp". Any GDI+ supported or WebP image format.
;                  $sPath2DLL           - [optional] a string value. Default is "".
; Return values .: number of extracted frames on success, otherwise error -> -1 to -3
; Author ........: UEZ
; Modified ......:
; Remarks .......: If output image format is WebP then frames will be saved lossless.
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_ExtractAnimFramesToDisk($sFilename, $sDestPath = "", $sOutputFormat = "webp", $sPath2DLL = "")
    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    Local Const $iResult = DllCall($sDLL, "long", "WebP_ExtractAnimFramesToDisk", "str", $sFilename, "str", $sDestPath, "str", StringStripWS($sOutputFormat, $STR_STRIPALL))[0]
    If $iResult < 1 Then Return SetError(2, 0, $iResult)
    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           - path to webp anim file.
;                  $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           - path to webp anim file.
;                  $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, $bDither = False, $iDitherStrength = 32, $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 $tImgPtr = DllStructCreate((@AutoItX64 ? "int64 array[" : "int array[") & $iFrames * 2 + 2 & "]")
    Local Const $iResult = DllCall($sDLL, "long", "WebP_ExtractAnimFramesToMem", "str", $sFilename, "ptr*", DllStructGetPtr($tImgPtr), "boolean", $bDither, "ubyte", $iDitherStrength)[0]
    If $iResult < 1 Or @error Then Return SetError(4, $iResult, 0)
    $iUB = $iFrames * 2
    Return $tImgPtr
EndFunc   ;==>WebP_ExtractAnimFramesToMem

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_CreateWebPCreateAnim
; Description ...: Creates an WebP animation file
; Syntax ........: WebP_CreateWebPCreateAnim($aFilenames, $sOutfile[, $quality = 75.0[, $lossless = 0[, $method = 4[,
;                  $filter_strength = 60[, $sns_strength = 50[, $pass = 6[, $filter_sharpness = 0[,
;                  $near_lossless = 100[, $alpha_compression = 1[, $alpha_filtering = 1[, $alpha_quality = 100[,
;                  $target_size = 0[, $loop_count = 0[, $WebPImageHint = $WEBP_HINT_DEFAULT[, $iDefaultDelay = 75[,
;                  $pCallback = 0[, $sPath2DLL = ""]]]]]]]]]]]]]]]]])
; Parameters ....: $aFilenames          - an 2D array of pathes to the image files and delay per frame.
;                  $sOutfile            - filename of WebP animation output file.
;                  $quality             - [optional] an unknown value. Default is 75.0. Valid range is 0 - 100.
;                  $lossless            - [optional] an unknown value. Default is 0. 0 for lossy encoding / 1 for lossless.
;                  $method              - [optional] a map. Default is 4. Valid range is 0 - 6 (0=fast, 6=slower-better).
;                  $filter_strength     - [optional] a floating point value. Default is 60. Range: [0 = off .. 100 = strongest]
;                  $sns_strength        - [optional] a string value. Default is 50. Spatial Noise Shaping. 0=off, 100=maximum
;                  $pass                - [optional] a pointer value. Default is 1. Number of entropy-analysis passes (in [1..10]).
;                  $filter_sharpness    - [optional] a floating point value. Default is 0. Range: [0 = off .. 7 = least sharp]
;                  $near_lossless       - [optional] a general number value. Default is 0 Near lossless encoding [0 = max loss .. 100 = off (default)].
;                  $alpha_compression   - [optional] an array of unknowns. Default is 1. Algorithm for encoding the alpha plane (0 = none,1 = compressed with WebP lossless). Default is 1.
;                  $alpha_filtering     - [optional] an array of unknowns. Default is 1. Predictive filtering method for alpha plane.0: none, 1: fast, 2: best. Default if 1.
;                  $alpha_quality       - [optional] an array of unknowns. Default is 100. Between 0 (smallest size) and 100 (lossless). Default is 100.
;                  $target_size         - [optional] a dll struct value. Default is 0. If non-zero, set the desired target size in bytes.
;                  $loop_count          - [optional] an unknown value. Default is 0. 0 = endless.
;                  $WebPImageHint       - [optional] an unknown value. Default is $WEBP_HINT_DEFAULT.
;                  $iDefaultDelay       - [optional] an integer value. Default is 75. Delay in milli seconds.
;                  $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 .: 1 on success, otherwise error -> -1 to -12
; Author ........: UEZ
; Modified ......:
; Remarks .......: All frames must have same image dimension. First image defines the dimension of the animation.
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_CreateWebPCreateAnim($aFilenames, $sOutfile, $quality = 75.0, $lossless = 1, $method = 4, $filter_strength = 60, $sns_strength = 50, _
        $pass = 1, $filter_sharpness = 0, $near_lossless = 0, $alpha_compression = 1, $alpha_filtering = 1, $alpha_quality = 100, _
        $target_size = 0, $loop_count = 0, $WebPImageHint = $WEBP_HINT_DEFAULT, $iDefaultDelay = 75, $pCallback = 0, $sPath2DLL = "")

    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    If $sOutfile = "" Then Return SetError(2, 0, 0)

    If Not IsArray($aFilenames) Or UBound($aFilenames) < 2 Then Return SetError(3, 0, 0)
    Local $iNumberOfFrames = UBound($aFilenames), $i

    Local $tArrayFrames = DllStructCreate("ptr ptr[" & $iNumberOfFrames & "]"), $tArrayFramesDelay = DllStructCreate("uint delay[" & $iNumberOfFrames & "]")
    Local $tArrayAnim[$iNumberOfFrames], $tArrayFrameDelay[$iNumberOfFrames], $aDim, $iW, $iH

    For $i = 0 To $iNumberOfFrames - 1
        If Not FileExists($aFilenames[$i][0]) Then Return SetError(4, 0, 0)
        $tArrayAnim[$i] = DllStructCreate("char path[" & StringLen($aFilenames[$i][0]) + 1 & "]")
        $tArrayAnim[$i].path = $aFilenames[$i][0]
        $tArrayFrames.ptr(($i + 1)) = DllStructGetPtr($tArrayAnim[$i])
        $tArrayFramesDelay.delay(($i + 1)) = (UBound($aFilenames, 2) ? ($aFilenames[$i][1] > 0 ? $aFilenames[$i][1] : $iDefaultDelay) : $iDefaultDelay)
    Next

    Local $tAnim = DllStructCreate("ptr pFrames;ptr pDelays")
    $tAnim.pFrames = DllStructGetPtr($tArrayFrames)
    $tAnim.pDelays = DllStructGetPtr($tArrayFramesDelay)

    If StringRight($sOutfile, 5) <> ".webp" Then $sOutfile &= ".webp"
    $loop_count = $loop_count < 0 ? 0 : $loop_count

    Local $tWebPConfig = DllStructCreate($tagWebPConfig)
    FilltWebPConfigWithDefaults($tWebPConfig)
    With $tWebPConfig
        .lossless = $lossless
        .quality = ($quality < 0) ? 0 : (($quality > 100) ? 100 : $quality)
        .method = ($method < 0) ? 0 : (($method > 6) ? 6 : $method)
        .image_hint = ($WebPImageHint < 0) ? 0 : (($WebPImageHint > 4) ? 4 : $WebPImageHint)
        .target_size = $target_size ;in bytes
        .sns_strength = ($sns_strength < 0) ? 0 : (($sns_strength > 100) ? 100 : $sns_strength)
        .filter_strength = ($filter_strength < 0) ? 0 : (($filter_strength > 100) ? 100 : $filter_strength)
        .filter_sharpness = ($filter_sharpness < 0) ? 0 : (($filter_sharpness > 7) ? 7 : $filter_sharpness)
        .alpha_compression = $alpha_compression
        .alpha_filtering = ($alpha_filtering < 0) ? 0 : (($alpha_filtering > 2) ? 2 : $alpha_filtering)
        .alpha_quality = ($alpha_quality < 0) ? 0 : (($alpha_quality > 100) ? 100 : $alpha_quality)
        .pass = ($pass < 0) ? 0 : (($pass > 10) ? 10 : $pass)
        .near_lossless = ($near_lossless < 0) ? 0 : (($near_lossless > 100) ? 100 : $near_lossless)
    EndWith

    Local $iReturn = DllCall($sDLL, "long", "WebP_CreateWebPCreateAnim", _
                                    "struct*", $tAnim, _                            ;array of filenames with GDi+ supported images and delay per frame
                                    "uint",    $iNumberOfFrames, _                  ;amount of frames
                                    "str",     $sOutfile, _                         ;output filename
                                    "long",    $loop_count, _                       ;loop count -> 0 = endless
                                    "struct*", $tWebPConfig, _                      ;WebP config settings
                                    "ptr",     $pCallback)[0]                       ;callback pointer for progress status
    If $iReturn < 1 Then Return SetError(7, 0, $iReturn)
    ReDim $tArrayAnim[0]
    ReDim $tArrayFrameDelay[0]
    Return 1
EndFunc   ;==>WebP_CreateWebPCreateAnim

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_CreateWebPCreateAnimFromScreenCapture
; Description ...: Capture the screen to WebP animation file
; Syntax ........: WebP_CreateWebPCreateAnimFromScreenCapture($x, $y, $w, $h, $sec, $sOutfile[, $fps = 30[, $CapCursor = 1[,
;                  $quality = 75.0[, $lossless = 0[, $method = 0[, $filter_strength = 60[, $sns_strength = 50[, $pass = 1[,
;                  $level = 6[, $filter_sharpness = 0[, $near_lossless = 100[, $alpha_compression = 0[,
;                  $alpha_filtering = 0[, $alpha_quality = 100[, $target_size = 0[, $loop_count = 0[,
;                  $WebPPreset = $WEBP_HINT_DEFAULT[, $pCallback = 0[, $sPath2DLL = ""]]]]]]]]]]]]]]]]]]])
; Parameters ....: $x                   - x position on the screen where to start the capturing.
;                  $y                   - y position on the screen where to start the capturing.
;                  $w                   - width of the screen to capture.
;                  $h                   - height of the screen to capture.
;                  $sec                 - seconds to capture
;                  $sOutfile            - filename of WebP animation output file.
;                  $fps                 - [optional] a floating point value. Default is 30 fps.
;                  $CapCursor           - [optional] an unknown value. Default is 1.
;                  $quality             - [optional] an unknown value. Default is 75.0. Valid range is 0 - 100.
;                  $lossless            - [optional] an unknown value. Default is 0. 0 for lossy encoding / 1 for lossless.
;                  $method              - [optional] a map. Default is 0. Valid range is 0 - 6 (0=fast, 6=slower-better).
;                  $filter_strength     - [optional] a floating point value. Default is 60. Range: [0 = off .. 100 = strongest]
;                  $sns_strength        - [optional] a string value. Default is 50. Spatial Noise Shaping. 0=off, 100=maximum
;                  $pass                - [optional] a pointer value. Default is 1. Number of entropy-analysis passes (in [1..10]).
;                  $filter_sharpness    - [optional] a floating point value. Default is 0. Range: [0 = off .. 7 = least sharp]
;                  $near_lossless       - [optional] a general number value. Default is 100. Near lossless encoding [0 = max loss .. 100 = off (default)].
;                  $alpha_compression   - [optional] an array of unknowns. Default is 0. Algorithm for encoding the alpha plane (0 = none,1 = compressed with WebP lossless). Default is 1.
;                  $alpha_filtering     - [optional] an array of unknowns. Default is 0. Predictive filtering method for alpha plane.0: none, 1: fast, 2: best. Default if 1.
;                  $alpha_quality       - [optional] an array of unknowns. Default is 100. Between 0 (smallest size) and 100 (lossless). Default is 100.
;                  $target_size         - [optional] a dll struct value. Default is 0. If non-zero, set the desired target size in bytes.
;                  $loop_count          - [optional] an unknown value. Default is 0. 0 = endless.
;                  $WebPImageHint       - [optional] an unknown value. Default is $WEBP_HINT_DEFAULT.
;                  $pCallback           - [optional] a pointer value. Default is 0. Callback pointer for progress status
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: 1 on success, otherwise error -> -1 to -9
; Author ........: UEZ
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_CreateWebPCreateAnimFromScreenCapture($x, $y, $w, $h, $sec, $sOutfile, $fps = 30, $CapCursor = 1, $quality = 75.0, $lossless = 0, $method = 0, $filter_strength = 60, $sns_strength = 50, _
        $pass = 1, $filter_sharpness = 0, $near_lossless = 100, $alpha_compression = 0, $alpha_filtering = 0, $alpha_quality = 100, $target_size = 0, $loop_count = 0, _
        $WebPImageHint = $WEBP_HINT_DEFAULT, $pCallback = 0, $sPath2DLL = "")

    If $w < 1 Or $h < 1 Or $fps < 1 Or $sec < 1 Then Return SetError(1, 0, 0)
    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(2, 0, 0) ;DLL not found
    $loop_count = $loop_count < 0 ? 0 : $loop_count

    Local $tWebPConfig = DllStructCreate($tagWebPConfig)
    FilltWebPConfigWithDefaults($tWebPConfig)
    With $tWebPConfig
        .lossless = $lossless
        .quality = ($quality < 0) ? 0 : (($quality > 100) ? 100 : $quality)
        .method = ($method < 0) ? 0 : (($method > 6) ? 6 : $method)
        .image_hint = ($WebPImageHint < 0) ? 0 : (($WebPImageHint > 4) ? 4 : $WebPImageHint)
        .target_size = $target_size ;in bytes
        .sns_strength = ($sns_strength < 0) ? 0 : (($sns_strength > 100) ? 100 : $sns_strength)
        .filter_strength = ($filter_strength < 0) ? 0 : (($filter_strength > 100) ? 100 : $filter_strength)
        .filter_sharpness = ($filter_sharpness < 0) ? 0 : (($filter_sharpness > 7) ? 7 : $filter_sharpness)
        .alpha_compression = $alpha_compression
        .alpha_filtering = ($alpha_filtering < 0) ? 0 : (($alpha_filtering > 2) ? 2 : $alpha_filtering)
        .alpha_quality = ($alpha_quality < 0) ? 0 : (($alpha_quality > 100) ? 100 : $alpha_quality)
        .pass = ($pass < 0) ? 0 : (($pass > 10) ? 10 : $pass)
        .near_lossless = ($near_lossless < 0) ? 0 : (($near_lossless > 100) ? 100 : $near_lossless)
    EndWith

    Local $iReturn = DllCall($sDLL, "long", "WebP_CreateWebPCreateAnimFromScreenCapture", _
                                    "long",     $x, _                                ;x position of the screen
                                    "long",     $y, _                                ;y position of the screen
                                    "ulong",    $w, _                                ;width of the screen to capture
                                    "ulong",    $h, _                                ;height of the screen to capture
                                    "long",     $sec, _                              ;duration in seconds
                                    "ushort",   $fps, _                              ;fps for capturing
                                    "str",      $sOutfile, _                         ;output file name
                                    "ubyte",    $CapCursor, _                        ;capture cursor
                                    "long",     $loop_count, _                       ;loop count -> 0 = endless.
                                    "struct*",  $tWebPConfig, _                     ;WebP config settings
                                    "ptr",      $pCallback)[0]                       ;callback pointer for progress status
    If $iReturn < 1 Then Return SetError(3, 0, $iReturn)
    Return 1
EndFunc   ;==>WebP_CreateWebPCreateAnimFromScreenCapture

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_ConvertGIF2WebP
; Description ...: Converts a GIF animation to WebP animation
; Syntax ........: WebP_ConvertGIF2WebP($sGIFAnimFile, $sOutWebPFile[, $quality = 75.0[, $lossless = 1[, $method = 6[,
;                  $filter_strength = 60[, $sns_strength = 50[, $pass = 10[, $filter_sharpness = 0[,
;                  $near_lossless = 100[, $alpha_compression = 1[, $alpha_filtering = 1[, $alpha_quality = 100[,
;                  $target_size = 0[, $loop_count = 0[, $WebPPreset = $WEBP_HINT_DEFAULT[, $pCallback = 0[,
;                  $sPath2DLL = ""]]]]]]]]]]]]]]]])
; Parameters ....: $sGIFAnimFile        - a string value.
;                  $sOutWebPFile        - a string value.
;                  $quality             - [optional] an unknown value. Default is 75.0. Valid range is 0 - 100.
;                  $lossless            - [optional] an unknown value. Default is 1. 0 for lossy encoding / 1 for lossless.
;                  $method              - [optional] a map. Default is 6. Valid range is 0 - 6 (0=fast, 6=slower-better).
;                  $filter_strength     - [optional] a floating point value. Default is 60. Range: [0 = off .. 100 = strongest]
;                  $sns_strength        - [optional] a string value. Default is 50. Spatial Noise Shaping. 0=off, 100=maximum
;                  $pass                - [optional] a pointer value. Default is 10. Number of entropy-analysis passes (in [1..10]).
;                  $filter_sharpness    - [optional] a floating point value. Default is 0. Range: [0 = off .. 7 = least sharp]
;                  $near_lossless       - [optional] a general number value. Default is 100. Near lossless encoding [0 = max loss .. 100 = off (default)].
;                  $alpha_compression   - [optional] an array of unknowns. Default is 1. Algorithm for encoding the alpha plane (0 = none,1 = compressed with WebP lossless). Default is 1.
;                  $alpha_filtering     - [optional] an array of unknowns. Default is 1. Predictive filtering method for alpha plane.0: none, 1: fast, 2: best. Default if 1.
;                  $alpha_quality       - [optional] an array of unknowns. Default is 100. Between 0 (smallest size) and 100 (lossless). Default is 100.
;                  $target_size         - [optional] a dll struct value. Default is 0. If non-zero, set the desired target size in bytes.
;                  $loop_count          - [optional] an unknown value. Default is 0. 0 = endless.
;                  $WebPPreset          - [optional] an unknown value. Default is $WEBP_HINT_DEFAULT.
;                  $pCallback           - [optional] a pointer value. Default is 0.
;                  $sPath2DLL           - [optional] a string value. Default is "".
; Return values .: 1 on success, otherwise error -> -1 to -11
; Author ........: UEZ
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_ConvertGIF2WebP($sGIFAnimFile, $sOutWebPFile, $quality = 75.0, $lossless = 1, $method = 6, $filter_strength = 60, $sns_strength = 50, _
        $pass = 10, $filter_sharpness = 0, $near_lossless = 100, $alpha_compression = 1, $alpha_filtering = 1, $alpha_quality = 100, _
        $target_size = 0, $loop_count = 0, $WebPImageHint = $WEBP_HINT_DEFAULT, $pCallback = 0, $sPath2DLL = "")

    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    If $sOutWebPFile = "" Then Return SetError(2, 0, 0)
    If StringRight($sOutWebPFile, 5) <> ".webp" Then $sOutWebPFile &= ".webp"
    $loop_count = $loop_count < 0 ? 0 : $loop_count

    Local $tWebPConfig = DllStructCreate($tagWebPConfig)
    FilltWebPConfigWithDefaults($tWebPConfig)
    With $tWebPConfig
        .lossless = $lossless
        .quality = ($quality < 0) ? 0 : (($quality > 100) ? 100 : $quality)
        .method = ($method < 0) ? 0 : (($method > 6) ? 6 : $method)
        .image_hint = ($WebPImageHint < 0) ? 0 : (($WebPImageHint > 4) ? 4 : $WebPImageHint)
        .target_size = $target_size ;in bytes
        .sns_strength = ($sns_strength < 0) ? 0 : (($sns_strength > 100) ? 100 : $sns_strength)
        .filter_strength = ($filter_strength < 0) ? 0 : (($filter_strength > 100) ? 100 : $filter_strength)
        .filter_sharpness = ($filter_sharpness < 0) ? 0 : (($filter_sharpness > 7) ? 7 : $filter_sharpness)
        .alpha_compression = $alpha_compression
        .alpha_filtering = ($alpha_filtering < 0) ? 0 : (($alpha_filtering > 2) ? 2 : $alpha_filtering)
        .alpha_quality = ($alpha_quality < 0) ? 0 : (($alpha_quality > 100) ? 100 : $alpha_quality)
        .pass = ($pass < 0) ? 0 : (($pass > 10) ? 10 : $pass)
        .near_lossless = ($near_lossless < 0) ? 0 : (($near_lossless > 100) ? 100 : $near_lossless)
    EndWith

    Local $iReturn = DllCall($sDLL, "long", "WebP_ConvertGIF2WebP", _
                                    "str",      $sGIFAnimFile, _                    ;GIF animated input file
                                    "str",      $sOutWebPFile, _                    ;WebP animation output file
                                    "long",     $loop_count, _                      ;loop count -> 0 = endless
                                    "struct*",  $tWebPConfig, _                     ;WebP config settings
                                    "ptr",      $pCallback)[0]                      ;callback pointer for progress status
    If $iReturn < 1 Then Return SetError(3, 0, $iReturn)
    Return 1
EndFunc

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_ConvertAPNG2WebP
; Description ...: Converts a PNG animation to WebP animation
; Syntax ........: WebP_ConvertAPNG2WebP($sAPNGAnimFile, $sOutWebPFile[, $quality = 75.0[, $lossless = 1[, $method = 5[,
;                  $filter_strength = 60[, $sns_strength = 50[, $pass = 10[, $filter_sharpness = 0[,
;                  $near_lossless = 100[, $alpha_compression = 1[, $alpha_filtering = 1[, $alpha_quality = 100[,
;                  $target_size = 0[, $loop_count = 0[, $WebPPreset = $WEBP_HINT_DEFAULT[, $iDefaultDelay = 50[,
;                  $pCallback = 0[, $sPath2DLL = ""]]]]]]]]]]]]]]]]]])
; Parameters ....: $sAPNGAnimFile       - a string value.
;                  $sOutWebPFile        - a string value.
;                  $quality             - [optional] an unknown value. Default is 75.0. Valid range is 0 - 100.
;                  $lossless            - [optional] an unknown value. Default is 1. 0 for lossy encoding / 1 for lossless.
;                  $method              - [optional] a map. Default is 6. Valid range is 0 - 6 (0=fast, 6=slower-better).
;                  $filter_strength     - [optional] a floating point value. Default is 60. Range: [0 = off .. 100 = strongest]
;                  $sns_strength        - [optional] a string value. Default is 50. Spatial Noise Shaping. 0=off, 100=maximum
;                  $pass                - [optional] a pointer value. Default is 10. Number of entropy-analysis passes (in [1..10]).
;                  $filter_sharpness    - [optional] a floating point value. Default is 0. Range: [0 = off .. 7 = least sharp]
;                  $near_lossless       - [optional] a general number value. Default is 100. Near lossless encoding [0 = max loss .. 100 = off (default)].
;                  $alpha_compression   - [optional] an array of unknowns. Default is 1. Algorithm for encoding the alpha plane (0 = none,1 = compressed with WebP lossless). Default is 1.
;                  $alpha_filtering     - [optional] an array of unknowns. Default is 1. Predictive filtering method for alpha plane.0: none, 1: fast, 2: best. Default if 1.
;                  $alpha_quality       - [optional] an array of unknowns. Default is 100. Between 0 (smallest size) and 100 (lossless). Default is 100.
;                  $target_size         - [optional] a dll struct value. Default is 0. If non-zero, set the desired target size in bytes.
;                  $loop_count          - [optional] an unknown value. Default is 0. 0 = endless.
;                  $WebPPreset          - [optional] an unknown value. Default is $WEBP_HINT_DEFAULT.
;                  $iDefaultDelay       - [optional] an integer value. Default is 50.
;                  $pCallback           - [optional] a pointer value. Default is 0.
;                  $sPath2DLL           - [optional] a string value. Default is "".
; Return values .: 1 on success, otherwise error -> -1 to -13
; Author ........: UEZ
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_ConvertAPNG2WebP($sAPNGAnimFile, $sOutWebPFile, $quality = 75.0, $lossless = 1, $method = 6, $filter_strength = 60, $sns_strength = 50, _
        $pass = 10, $filter_sharpness = 0, $near_lossless = 100, $alpha_compression = 1, $alpha_filtering = 1, $alpha_quality = 100, _
        $target_size = 0, $loop_count = 0, $WebPImageHint = $WEBP_HINT_DEFAULT, $iDefaultDelay = 50, $pCallback = 0, $sPath2DLL = "")

    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    If $sOutWebPFile = "" Then Return SetError(2, 0, 0)
    If StringRight($sOutWebPFile, 5) <> ".webp" Then $sOutWebPFile &= ".webp"
    $loop_count = $loop_count < 0 ? 0 : $loop_count

    Local $tWebPConfig = DllStructCreate($tagWebPConfig)
    FilltWebPConfigWithDefaults($tWebPConfig)
    With $tWebPConfig
        .lossless = $lossless
        .quality = ($quality < 0) ? 0 : (($quality > 100) ? 100 : $quality)
        .method = ($method < 0) ? 0 : (($method > 6) ? 6 : $method)
        .image_hint = ($WebPImageHint < 0) ? 0 : (($WebPImageHint > 4) ? 4 : $WebPImageHint)
        .target_size = $target_size ;in bytes
        .sns_strength = ($sns_strength < 0) ? 0 : (($sns_strength > 100) ? 100 : $sns_strength)
        .filter_strength = ($filter_strength < 0) ? 0 : (($filter_strength > 100) ? 100 : $filter_strength)
        .filter_sharpness = ($filter_sharpness < 0) ? 0 : (($filter_sharpness > 7) ? 7 : $filter_sharpness)
        .alpha_compression = $alpha_compression
        .alpha_filtering = ($alpha_filtering < 0) ? 0 : (($alpha_filtering > 2) ? 2 : $alpha_filtering)
        .alpha_quality = ($alpha_quality < 0) ? 0 : (($alpha_quality > 100) ? 100 : $alpha_quality)
        .pass = ($pass < 0) ? 0 : (($pass > 10) ? 10 : $pass)
        .thread_level = 1
        .near_lossless = ($near_lossless < 0) ? 0 : (($near_lossless > 100) ? 100 : $near_lossless)
    EndWith

    $iDefaultDelay = ($iDefaultDelay < 0) ? 0 : $iDefaultDelay
    Local $iReturn = DllCall($sDLL, "long", "WebP_ConvertAPNG2WebP", _
                                    "str",      $sAPNGAnimFile, _                   ;GIF animated input file
                                    "str",      $sOutWebPFile, _                    ;WebP animation output file
                                    "long",     $loop_count, _                      ;loop count -> 0 = endless
                                    "long",     $iDefaultDelay, _                   ;delay of each frame
                                    "struct*",  $tWebPConfig, _                     ;WebP config settings
                                    "ptr",      $pCallback)[0]                      ;callback pointer for progress status
    If $iReturn < 1 Then Return SetError(3, 0, $iReturn)
    Return 1
EndFunc

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_GetAnimFileInfo
; Description ...: Get information about a WebP anim file
; Syntax ........: WebP_GetAnimFileInfo($sFilename, Byref $tAnimInfo[, $sPath2DLL = ""])
; Parameters ....: $sFilename           - path to webp anim file.
;                  $tAnimInfo           - [in/out] a dll struct value. Must be "ulong Width;ulong Height;ulong FrameCount;ulong Duration;double FPS"
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: 1 on success, otherwise error -> -1 to -6
; Author ........: UEZ
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_GetAnimFileInfo($sFilename, ByRef $tAnimInfo, $sPath2DLL = "")
    If Not FileExists($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_GetAnimFileInfo", "str", $sFilename, "struct*", $tAnimInfo)[0]
    If @error Or $iReturn < 1 Then SetError(3, 0, $iReturn)
    Return $iReturn
EndFunc   ;==>WebP_GetAnimFileInfo

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_GetImagesDiffFromFile
; Description ...: Displays the difference of two WebP images.
; Syntax ........: WebP_GetImagesDiffFromFile($sFilename1, $sFilename2[, $iMetricType = 1[, $sPath2DLL = ""]])
; Parameters ....: $sFilename1          - a string value. First WebP image filename.
;                  $sFilename2          - a string value. Second WebP image filename.
;                  $iMetricType         - [optional] an integer value. Default is 1. Valid values 0 - 2.
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: array with distortion values, otherwise error
; Author ........: UEZ
; Modified ......:
; Remarks .......: Possible metric type:
;                   0: PSNR - Peak signal-to-noise ratio - measures numerical deviation (higher = better).
;                           Value range Interpretation
;                           > 50 dB Excellent quality - barely visible
;                           40-50 dB Very good quality
;                           30-40 dB Good to medium quality
;                           < 30 dB Clearly visible losses
;                   1: SSIM - Structural Similarity Index - takes visual perception into account (0 - 100, closer to 100 = better).
;                           Value range Interpretation
;                           95 - 100 Almost identical / perfect quality
;                           90 - 95 Very good quality
;                           85 - 90 Good quality
;                           < 85 Visible structural differences
;                   2: LSIM - Local Similarity - more detailed, for local differences (more experimental). Same as SSIM.
;
;                   Both images must have same dimension!
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_GetImagesDiffFromFile($sFilename1, $sFilename2, $iMetricType = 1, $sPath2DLL = "")
    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    If Not FileExists($sFilename1) Then Return SetError(2, 0, 0)
    If Not FileExists($sFilename2) Then Return SetError(3, 0, 0)
    $iMetricType = ($iMetricType > 2) ? 2 : ($iMetricType < 0 ? 0 : $iMetricType)
    Local $tDistortion = DllStructCreate("float d[5]")
    Local $iReturn = DllCall($sDLL, "long", "WebP_GetImagesDiffFromFile", "str", $sFilename1, "str", $sFilename2, "long", $iMetricType, "ptr*", DllStructGetPtr($tDistortion))[0]
    If $iReturn < 1 Then SetError(4, 0, $iReturn)
    Local $aDistortion[5] = [$tDistortion.d((1)), $tDistortion.d((2)), $tDistortion.d((3)), $tDistortion.d((4)), $tDistortion.d((5))]
    Return $aDistortion
EndFunc   ;==>WebP_GetImagesDiffFromFile

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_ScaleImage
; Description ...: Resizes a WebP image.
; Syntax ........: WebP_ScaleImage($sSourceFile, $iW, $iH, $sDestFile[, $sPath2DLL = ""])
; Parameters ....: $sSourceFile         - source WebP file to load.
;                  $iW                  - an integer value.
;                  $iH                  - an integer value.
;                  $sDestFile           - destination WebP file to save.
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: 1 on success, otherwise error -> -1 to -9
; Author ........: UEZ
; Modified ......:
; Remarks .......: Resized image will be saved lossless.
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_ScaleImage($sSourceFile, $iW, $iH, $sDestFile, $sPath2DLL = "")
    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    Local $iReturn = DllCall($sDLL, "long", "WebP_ScaleImage", "str", $sSourceFile, "long", $iW, "long", $iH, "str", $sDestFile)[0]
    If $iReturn < 1 Then SetError(2, 0, $iReturn)
    Return 1
EndFunc   ;==>WebP_ScaleImage

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_GetImageQuality
; Description ...: Estimates the quality of a WebP image.
; Syntax ........: WebP_GetImageQuality($sFilename[, $sPath2DLL = ""])
; Parameters ....: $sFilename           - source WebP file to load.
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: the quality of the WebP image. 0 - 100 for lossy - 101 for lossless. 0 or negative value on error.
; Author ........: UEZ
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_GetImageQuality($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)
    Local $iReturn = DllCall($sDLL, "long", "WebP_GetImageQuality", "str", $sFilename)[0]
    If $iReturn < 0 Then SetError(3, 0, $iReturn)
    Return $iReturn
EndFunc   ;==>WebP_GetImageQuality

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_PlayAnimFile
; Description ...: Plays an animated WebP file and display it in the GUI
; Syntax ........: WebP_PlayAnimFile($sFilename, $hGUI[, $w = 0[, $h = 0[, $pCallback = 0[, $sPath2DLL = ""]]]])
; Parameters ....: $sFilename           - path to webp anim file.
;                  $hGUI                - the handle to the GUI to copy the frames to it.
;                  $w                   - [optional] an unknown value. Default is 0. If 0 the width from the animation file will be used.
;                  $h                   - [optional] a handle value. Default is 0. If 0 the height from the animation file will be used.
;                  $pCallback           - [optional] a pointer value. Default is 0.
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: a pointer to the thread on success, otherwise error -> 0
; Author ........: UEZ
; Modified ......:
; Remarks .......: Don't use $pCallback yet because it is not working properly! Don't forget DllClose($g_hDLL) when done! DllOpen must be used otherwise crash.
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_PlayAnimFile($sFilename, $hGUI, $w = 0, $h = 0, $pCallback = 0, $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)
    $g_hDLL = DllOpen($sDLL)
    Local $pReturn = DllCall($g_hDLL, "ptr", "WebP_PlayAnimFile", "str", $sFilename, "hwnd", HWnd($hGUI), "ulong", $w, "ulong", $h, "ptr", $pCallback)[0]
    If $pReturn = 0 Then SetError(3, 0, 0)
    Return $pReturn
EndFunc

; #FUNCTION# ====================================================================================================================
; Name ..........: WebP_StopAnimFile
; Description ...: Stops the animation which was started by WebP_PlayAnimFile() function.
; Syntax ........: WebP_StopAnimFile($pThread[, $sPath2DLL = ""])
; Parameters ....: $pThread             - a thread parameter pointer
;                  $sPath2DLL           - [optional] a string value. Default is "". Path to WebP dll if not in script dir.
; Return values .: 1 on success, otherwise error -> -1
; Author ........: UEZ
; Modified ......:
; Remarks .......: You must call WebP_PlayAnimFile() before you call WebP_StopAnimFile()! Don't forget DllClose($g_hDLL) when done!
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WebP_StopAnimFile($pThread, $sPath2DLL = "")
    Local $sDLL = Path2DLL($sPath2DLL)
    If Not FileExists($sDLL) Then Return SetError(1, 0, 0) ;DLL not found
    If Not $g_hDLL Then Return SetError(2, 0, 0)
    Local $iReturn = DllCall($g_hDLL, "long", "WebP_StopAnimFile", "ptr", $pThread)[0]
    If $iReturn < 1 Then SetError(3, 0, $iReturn)
    Return $iReturn
EndFunc

; #FUNCTION# ====================================================================================================================
; Name ..........: _WinAPI_MarkScreenRegion
; Description ...: Selected area on desktop will be captured and save to clipbord or GDI bitmap handle will be returned.
; Syntax ........: _WinAPI_MarkScreenRegion([$iFillMode = 0])
; Parameters ....: $iFillMode           - [optional] an integer value. Default is 0.
;                                           0: marked area filled with solid color
;                                           1: marked area filled with hatch pattern ($HS_DIAGCROSS)
;                                           2: marked area without any fill pattern / color - only red border
; Return values .: 0 / 1 / -1 / array with coordinates [x, y, w, h]
; Author ........: UEZ
; Version .......: 0.90 build 2025-06-27
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: no
; ===============================================================================================================================
Func _WinAPI_MarkScreenRegion($iFillMode = 0)
    If @OSBuild > 6299 Then ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
        DllCall("Shcore.dll", "long", "PROCESS_DPI_AWARENESS", 1) ;PROCESS_SYSTEM_DPI_AWARE = 1 (https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx)
    Else
        DllCall("User32.dll", "bool", "SetProcessDPIAware")
    EndIf
    Local $iOld = AutoItSetOption("MouseCoordMode", 1)

    Local Const $hDesktop = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]")
    Local Const $aFullScreen = WinGetPos($hDesktop) ;should work also on multi screens
    Local Const $iW = $aFullScreen[2], $iH = $aFullScreen[3]
    Local Const $hGUI_MarkScreen = GUICreate("", $iW, $iH, $aFullScreen[0], $aFullScreen[1], $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED))
    GUISetState(@SW_SHOW, $hGUI_MarkScreen)
    Local Const $hDC = _WinAPI_GetDC($hGUI_MarkScreen)
    Local Const $hGfxDC = _WinAPI_CreateCompatibleDC($hDC)
    Local Const $hBitmapGDI = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
    Local $hObjOld = _WinAPI_SelectObject($hGfxDC, $hBitmapGDI)
    Local $tSize = DllStructCreate($tagSIZE)
    $tSize.x = $iW
    $tSize.y = $iH
    Local $tSource = DllStructCreate($tagPOINT)
    Local $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $tBlend.Alpha = 0xFF
    $tBlend.Format = 1
    Local $tDest = DllStructCreate($tagPOINT), $pPoint = DllStructGetPtr($tDest)
    $tDest.x = $aFullScreen[0]
    $tDest.y = $aFullScreen[1]

    Local Const $hPen = _WinAPI_CreatePen($PS_SOLID, 1, 0x0000FF)
    Local Const $hPen_Orig = _WinAPI_SelectObject($hGfxDC, $hPen)
    Local $hBrush, $iAlpha2, $iFlag
    $iFillMode = $iFillMode > 2 ? 2 : $iFillMode < 0 ? 0 : $iFillMode
    Switch $iFillMode
        Case 0
            $hBrush = _WinAPI_CreateBrushIndirect($BS_SOLID, 0x808080)
            $iAlpha2 = 0xA0
            $iFlag = $ULW_ALPHA
        Case 1
            $hBrush = _WinAPI_CreateBrushIndirect($BS_HATCHED, 0x808000, $HS_DIAGCROSS)
            $iAlpha2 = 0x30
            $iFlag = $ULW_ALPHA
        Case 2
            $hBrush = _WinAPI_CreateBrushIndirect($BS_HOLLOW, 0x000000)
            $iAlpha2 = 0xFF ;not needed
            $iFlag = $ULW_COLORKEY
    EndSwitch

    Local $hBrush_Orig = _WinAPI_SelectObject($hGfxDC, $hBrush)

    Local $aMPos[5], $aMPos_old[4], $tRECT = _WinAPI_CreateRect(0, 0, 0, 0)
    Do
        GUISetCursor(16, 1, $hGUI_MarkScreen)
        $aMPos = GUIGetCursorInfo($hGUI_MarkScreen)
        $aMPos_old[0] = $aMPos[0]
        $aMPos_old[1] = $aMPos[1]
        $aMPos_old[2] = MouseGetPos(0)
        $aMPos_old[3] = MouseGetPos(1)
        Switch $aMPos[2]
            Case 0 ;display crosshair
                _WinAPI_BitBlt($hGfxDC, 0, 0, $iW, $iH, $hGfxDC, 0, 0, $CAPTUREBLT)
                _WinAPI_DrawLine($hGfxDC, $tDest.x, $aMPos[1], $iW, $aMPos[1])
                _WinAPI_DrawLine($hGfxDC, $aMPos[0], $tDest.y, $aMPos[0], $iH)
                _WinAPI_UpdateLayeredWindow($hGUI_MarkScreen, $hDC, $tDest, $tSize, $hGfxDC, $tSource, 0, $tBlend, $ULW_COLORKEY)
            Case 1 ;
                $tBlend.Alpha = $iAlpha2
                While $aMPos[2] ;mark region
                    GUISetCursor(14, 1, $hGUI_MarkScreen) ;WinGetHandle(AutoItWinGetTitle()))
                    $aMPos = GUIGetCursorInfo($hGUI_MarkScreen)
                    _WinAPI_BitBlt($hGfxDC, 0, 0, $iW, $iH, $hGfxDC, 0, 0, $CAPTUREBLT) ;clear bitmap

                    ;draw rectangle
                    $tRECT.Left = $aMPos_old[0]
                    $tRECT.Top = $aMPos_old[1]
                    $tRECT.Right = $aMPos[0]
                    $tRECT.Bottom = $aMPos[1]
                    _WinAPI_Rectangle($hGfxDC, $tRECT)
                    If $iFillMode <> 2 Then _WinAPI_InvertRect($hGfxDC, $tRECT)
                    _WinAPI_UpdateLayeredWindow($hGUI_MarkScreen, $hDC, $tDest, $tSize, $hGfxDC, $tSource, 0, $tBlend, $iFlag)
                    Sleep(10)
                WEnd
                _WinAPI_SelectObject($hGfxDC, $hObjOld)
                _WinAPI_ReleaseDC($hGUI_MarkScreen, $hDC)
                _WinAPI_DeleteDC($hGfxDC)
                _WinAPI_DeleteObject($hBitmapGDI)
                _WinAPI_SelectObject($hGfxDC, $hPen_Orig)
                _WinAPI_DeleteObject($hPen)
                _WinAPI_SelectObject($hGfxDC, $hBrush_Orig)
                _WinAPI_DeleteObject($hBrush)
                GUIDelete($hGUI_MarkScreen)
                AutoItSetOption("MouseCoordMode", $iOld)
                Local $aCoords[4] = [($aMPos[0] > $aMPos_old[2] ? $aMPos_old[2] : $aMPos[0]), ($aMPos[1] > $aMPos_old[3] ? $aMPos_old[3] : $aMPos[1]), Abs($tRECT.Right - $tRECT.Left) + 1, Abs($tRECT.Bottom - $tRECT.Top) + 1]
                Return $aCoords
        EndSwitch

        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                _WinAPI_SelectObject($hGfxDC, $hObjOld)
                _WinAPI_ReleaseDC($hGUI_MarkScreen, $hDC)
                _WinAPI_DeleteDC($hGfxDC)
                _WinAPI_DeleteObject($hBitmapGDI)
                _WinAPI_SelectObject($hGfxDC, $hPen_Orig)
                _WinAPI_DeleteObject($hPen)
                GUIDelete($hGUI_MarkScreen)
                AutoItSetOption("MouseCoordMode", $iOld)
                Return -1
        EndSwitch
    Until False
EndFunc   ;==>_WinAPI_MarkScreenRegion

; #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

Func FilltWebPConfigWithDefaults(ByRef $tWebPConfig)
    With $tWebPConfig
        .lossless = 0
        .quality = 75
        .method = 4
        .image_hint = 0
        .target_size = 0
        .target_PSNR = 0
        .segments = 4
        .sns_strength = 50
        .filter_strength = 60
        .filter_sharpness = 0
        .filter_type = 1
        .autofilter = 0
        .alpha_compression = 1
        .alpha_filtering = 1
        .alpha_quality = 100
        .pass = 1
        .show_compressed = 0
        .preprocessing = 0
        .partitions = 0
        .partition_limit = 0
        .emulate_jpeg_size = 0
        .thread_level = 0
        .low_memory = 0
        .near_lossless = 100
        .exact = 0
        .use_delta_palette = 0
        .use_sharp_yuv = 0
        .qmin = 0
        .qmax = 100
    EndWith
EndFunc

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

Are you sure is an AutoIt issue? I tested with PureBasic and still can't use that api. I tested with GetMonitorCount and it works fine.  Can you provide a working example using FB?

 

Saludos

Posted (edited)
22 minutes ago, Danyfirex said:

Are you sure is an AutoIt issue? I tested with PureBasic and still can't use that api. I tested with GetMonitorCount and it works fine.  Can you provide a working example using FB?

 

Saludos

Look here for ScreenCapture2WebPAnim.7z

Start ScreenCapture2WebPAnim.exe (x64 compiled as console app) and it will record main screen for 20 seconds and save the result to Capture_1920x1080.webp. Requires Win10 build 18362+!

It calls the function WebP_CreateWebPCreateAnimFromGraphicsCapture in the WebP DLL which calls GraphicsCaptureWrapper DLL.

Function WebP_CreateWebPCreateAnimFromGraphicsCapture(_
        ByVal x As Long, ByVal y As Long, ByVal w As Long, ByVal h As Long, ByVal sec As Long, ByVal fps As UShort, ByVal sFileOut As WString Ptr, _ 
        ByVal CapCursor As UByte = 0, ByVal loopcount As Long = 0, ByVal pWebPConfig As WebPConfig Ptr, ByVal pCallback As Any Ptr = 0) As Long Export

    If OS.dwBuildNumber < 18362 Then Return -1
    If w < 1 OrElse h < 1 Then Return -2
    If sec < 1 Then Return -3
    If fps < 1 Then Return -4
    If sFileOut = 0 Then Return -5
    

    Dim As Long actualW, actualH, result 

    result  = InitRegionCapture(x, y, w, h, actualW, actualH)
    If result  <> 1 Then Return -6

    pWebPConfig->thread_level = 1
    
    If WebPValidateConfig(pWebPConfig) = 0 Then Return -8

    Dim As WebPAnimEncoderOptions enc_options
    WebPAnimEncoderOptionsInit(@enc_options)
    'enc_options.verbose = 1 
    Dim As WebPAnimEncoder Ptr pEnc = WebPAnimEncoderNew(actualW, actualH, @enc_options)

    Dim As WebPPicture pic 
    If WebPPictureAlloc(@pic) <> VP8_STATUS_OK Then
        WebPPictureFree(@pic)
        Return -9
    End If

    If WebPPictureInitInternal(@pic, WEBP_ENCODER_ABI_VERSION) = 0 Then Return -10
    pic.width   = actualW
    pic.height  = actualH
    pic.use_argb = 1
    
    If pCallback Then AutoItProgressCB = Cast(AutoItProgressCallback, pCallback)
    
    ' Buffer vorbereiten
    Dim As Long stride = actualW * 4
    Dim As ULong bufferSize = stride * actualH
    Dim frameBuffer As UByte Ptr = Allocate(bufferSize)
    If frameBuffer = 0 Then
        WebPPictureFree(@pic)
        Return -11
    End If
    
    timeBeginPeriod(1)
    
    Dim As Long frame_delay_ms = 1000 \ fps, total_frames = sec * fps, maxDuration = sec * 1000, delay
    Dim As Integer timestamp_ms = 0
    Dim As Long frameIndex, frameResult
    
    timeBeginPeriod(1)
    
    Dim As LONGLONG tStart = SafeGetTickCount64(), tCurrent
    Dim As Double fTimer = Timer, fEnd, fTimerSleep
    While True
        fTimerSleep = Timer
        timestamp_ms = SafeGetTickCount64() - tStart
        If AutoItProgressCB <> 0 Then
            If AutoItProgressCB(timestamp_ms / maxDuration * 100, 0) = 0 Then Exit While
        End If
        frameResult = GetCapturedFrame(frameBuffer, bufferSize)
        If frameResult = 1 Then
            WebPPictureImportBGRA(@pic, frameBuffer, stride)
            WebPAnimEncoderAdd(pEnc, @pic, timestamp_ms, pWebPConfig)
            frameIndex += 1
        End If
        If SafeGetTickCount64() - tStart > maxDuration Then Exit While
        delay = frame_delay_ms - (Timer - fTimerSleep)
        Sleep(IIf(delay < 0, 0, delay) , 1)
    Wend
    fEnd = Timer - fTimer 
    timeEndPeriod(1)
    
    WebPPictureFree(@pic)
    WebPAnimEncoderAdd(pEnc, NULL, frameIndex * frame_delay_ms, NULL)
    
    Dim As WebPData webp_data
    WebPDataInit(@webp_data)
    If WebPAnimEncoderAssemble(pEnc, @webp_data) = 0 Then
        WebPDataClear(@webp_data)
        WebPAnimEncoderDelete(pEnc)
        Deallocate(frameBuffer)
        CleanupCapture()
        Return -12
    End If
    
    ' Loop Count setzen
    loopcount = IIf(loopcount < 0, 0, loopcount)
    Dim As WebPMux Ptr pMux = WebPMuxCreate(@webp_data, 1)
    Dim As WebPMuxAnimParams new_params
    WebPMuxGetAnimationParams(pMux, @new_params)
    new_params.loop_count = loopcount
    WebPMuxSetAnimationParams(pMux, @new_params)
    WebPMuxAssemble(pMux, @webp_data)
    WebPMuxDelete(pMux)
    
    WebPAnimEncoderDelete(pEnc)
    Deallocate(frameBuffer)
    CleanupCapture()
    
    ' Datei speichern
    If webp_data.size > 0 Then
        If SaveWebPImageBin(sFileOut, webp_data.size, Cast(UByte Ptr, webp_data.bytes)) < 1 Then
            WebPDataClear(@webp_data)
            Return -13
        End If
    Else
        WebPDataClear(@webp_data)
        Return -14
    End If
    
    WebPDataClear(@webp_data)
    Return 1
End Function

In that function InitRegionCapture() will be called to init screen region.

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted (edited)
On 8/20/2025 at 10:10 PM, UEZ said:

Can you please check for the latest x86 version for the examples?

Wow you're a genius :thumbsup:
A couple of hours ago, you reverted from 0.5.1 to a new build of 0.5.0 (dated Aug 22, 2025)
So I downloaded the revised 0.5.0 dll & WebP.au3 and nearly all examples work by my side, which means the options you took when compiling the dll make it work again with all OS's, bravo !

Example 03 ("WebP information" confirms the dll version used :

NewbuildDll0.5.0(2025-08-22)works.png.75f67b3687a9d6e1a686203ce0b399be.png

So now even examples 17 & 18 work (they require version 0.5.0+)

I didn't test yet all examples but I got a problem with 2 examples :

1) Minor issue : example15 requires "Rostislav Uzunov Animation 960x540@30FPS.webp" but thid file is not found on 1drv (I guess)
Changing the string with "Rostislav Uzunov Animation 480x270@30FPS.webp" or "Rostislav Uzunov Animation 1920x1080@30FPS.webp" makes it work, no big deal

2) Example 09 (WebP animation from screen capture) only displays an empty GUI with white background. It worked fine with 0.4.4 but it doesn't with revised 0.5.0 (on my PC) . No more mouse moves or typed text are captured in it. But you'll find a solution for sure, that's why you created this thread I guess, fingers crossed :)

Edited by pixelsearch
typo

"I think you are searching a bug where there is no bug... don't listen to bad advice."

Posted (edited)

Thanks for your feedback. :thumbsup:

1) I uploaded the missing animation.

2) I tested it with x86 and the capturing worked. Did you get an error message? The difference between the two is only slight. In 0.5.0 file exists is using winapi unicode version instead of FB built-in function. _WinAPI_FileExistsW() is also used by several other functions. Another difference is the declaration of a variable: old: long, new: integer.

 

Btw, why are you still on WinXP?

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted (edited)
3 hours ago, UEZ said:

Btw, why are you still on WinXP?

Some severe health issues (1st one is a very bad sight after retina surgery in 2000) + not really young any more (born in 1951, do the math...) so I'm not into learning new OS's . Happy with I've got... as long as it will last :)

3 hours ago, UEZ said:

I tested it with x86 and the capturing worked. Did you get an error message?

No error message at all. Here are my results of example09 (screen capture), I did change $iRecordSeconds from 10s to 5s to get smaller attached WebP animated files :

1) 0.4.4

0.4.4Captured.png.d5a437604f608ae86362f59105baa889.png

2) 0.5.0 (August 22, 2025)

0.5.0Captured.png.72e67a68394e7dfbf7350ebeee809ee7.png

It seems I (we ?) can't upload Web files within the post, so I'll attach both Web animated files in a zip file if it helps :

0.4.4 and 0.5.0 Captured.webP.zip

imho I don't think it's worth investigating if example09 (screen capture) works fine for everybody but me. If I need to capture the screen to create a WebP animated file, then I'll use dll's 0.4.4, which are kept in separate subfolders :

UEZWebPbackupfolders2.png.a165f040ee2113eef0d9e6967631c594.png

Big thanks for your hard work :thumbsup:

Edited by pixelsearch

"I think you are searching a bug where there is no bug... don't listen to bad advice."

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...