Sign in to follow this  
Followers 0
ZeR0

Execute File in the memory

4 posts in this topic

Hi everybody,

On my way to do this like, i have found a good script, to make calls in the memory with the dll, I need to execute a file in memory, but i dont undestand much of this script, how can help me?

The code is:

#include-once

Global $_MDCodeBuffer, $_MDLoadOffset, $_MDGetOffset, $_MDFreeOffset
Global $_MFHookPtr, $_MFHookBak, $_MFHookApi = "LocalCompact"
Global $_MDKernel32Dll = DllOpen("kernel32.dll")

Func MemoryFuncInit()
    Local $KernelHandle = DllCall($_MDKernel32Dll, "ptr", "LoadLibrary", "str", "kernel32.dll")
    Local $HookPtr = DllCall($_MDKernel32Dll, "ptr", "GetProcAddress", "ptr", $KernelHandle[0], "str", $_MFHookApi)
    $_MFHookPtr = $HookPtr[0]

    $_MFHookBak = DllStructCreate("ubyte[7]")
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", DllStructGetPtr($_MFHookBak), "ptr", $_MFHookPtr, "uint", 7, "uint*", 0)

    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr, "byte*", 0xB8, "uint", 1, "uint*", 0)
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr + 5, "ushort*", 0xE0FF, "uint", 2, "uint*", 0)
EndFunc

Func MemoryFuncCall($RetType, $Address, $Type1 = "", $Param1 = 0, $Type2 = "", $Param2 = 0, $Type3 = "", $Param3 = 0, $Type4 = "", $Param4 = 0, $Type5 = "", $Param5 = 0, $Type6 = "", $Param6 = 0, $Type7 = "", $Param7 = 0, $Type8 = "", $Param8 = 0, $Type9 = "", $Param9 = 0, $Type10 = "", $Param10 = 0, $Type11 = "", $Param11 = 0, $Type12 = "", $Param12 = 0, $Type13 = "", $Param13 = 0, $Type14 = "", $Param14 = 0, $Type15 = "", $Param15 = 0, $Type16 = "", $Param16 = 0, $Type17 = "", $Param17 = 0, $Type18 = "", $Param18 = 0, $Type19 = "", $Param19 = 0, $Type20 = "", $Param20 = 0)
    If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit()

    MemoryFuncSet($Address)
    Local $Ret
    Switch @NumParams
    Case 2
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi)
    Case 4
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1)
    Case 6
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2)
    Case 8
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3)
    Case 10
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4)
    Case 12
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5)
    Case Else
        Local $DllCallStr = 'DllCall($_MDKernel32Dll, $RetType, $_MFHookApi', $n, $i
        For $i = 4 To @NumParams Step 2
            $n = ($i - 2) / 2
            $DllCallStr &= ', $Type' & $n & ', $Param' & $n
        Next
        $DllCallStr &= ')'
        $Ret = Execute($DllCallStr)
    EndSwitch
    Return $Ret
EndFunc

Func MemoryFuncSet($Address)
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr + 1, "uint*", $Address, "uint", 4, "uint*", 0)
EndFunc

Func MemoryFuncExit()
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr, "ptr", DllStructGetPtr($_MFHookBak), "uint", 7, "uint*", 0)
    $_MFHookBak = 0
EndFunc

Func MemoryDllInit()
    If IsDllStruct($_MDCodeBuffer) Then Return

    Local $Opcode = '4D7367426F782834382C224572726F72222C22574F524B532121212229'
        

    $_MDLoadOffset = (StringInStr($Opcode, "59585A51") - 1) / 2 - 1
    $_MDGetOffset = (StringInStr($Opcode, "5990585A51") - 1) / 2 - 1
    $_MDFreeOffset = (StringInStr($Opcode, "5A585250") - 1) / 2 - 1

    $_MDCodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
    DllStructSetData($_MDCodeBuffer, 1, $Opcode)

    If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit()
EndFunc

Func MemoryDllExit()
    MemoryFuncExit()
    $_MDCodeBuffer = 0
EndFunc

Func MemoryDllOpen($DllBinary)
    If Not IsDllStruct($_MDCodeBuffer) Then MemoryDllInit()

    Local $Ret = DllCall($_MDKernel32Dll, "hwnd", "LoadLibraryA", "str", "kernel32.dll")
    Local $GetProcAddress = DllCall($_MDKernel32Dll, "uint", "GetProcAddress", "hwnd", $Ret[0], "str", "GetProcAddress")
    Local $LoadLibraryA = DllCall($_MDKernel32Dll, "uint", "GetProcAddress", "hwnd", $Ret[0], "str", "LoadLibraryA")

    Local $DllBuffer = DllStructCreate("byte[" & BinaryLen($DllBinary) & "]")
    DllStructSetData($DllBuffer, 1, $DllBinary)

    MemoryFuncSet(DllStructGetPtr($_MDCodeBuffer) + $_MDLoadOffset)

    Local $Module = DllCall($_MDKernel32Dll, "uint", $_MFHookApi, "uint", $LoadLibraryA[0], "uint", $GetProcAddress[0], "ptr", DllStructGetPtr($DllBuffer))

    $DllBuffer = 0
    Return $Module[0]
EndFunc

Func MemoryDllClose($Module)
    MemoryFuncSet(DllStructGetPtr($_MDCodeBuffer) + $_MDFreeOffset)
    DllCall($_MDKernel32Dll, "none", $_MFHookApi, "uint", $Module)
EndFunc

Func MemoryDllCall($Module, $RetType, $Funcname, $Type1 = "", $Param1 = 0, $Type2 = "", $Param2 = 0, $Type3 = "", $Param3 = 0, $Type4 = "", $Param4 = 0, $Type5 = "", $Param5 = 0, $Type6 = "", $Param6 = 0, $Type7 = "", $Param7 = 0, $Type8 = "", $Param8 = 0, $Type9 = "", $Param9 = 0, $Type10 = "", $Param10 = 0, $Type11 = "", $Param11 = 0, $Type12 = "", $Param12 = 0, $Type13 = "", $Param13 = 0, $Type14 = "", $Param14 = 0, $Type15 = "", $Param15 = 0, $Type16 = "", $Param16 = 0, $Type17 = "", $Param17 = 0, $Type18 = "", $Param18 = 0, $Type19 = "", $Param19 = 0, $Type20 = "", $Param20 = 0)
    Local $Ret, $OpenFlag = False
    Local Const $MaxParams = 20
    If (@NumParams < 3) Or (@NumParams > $MaxParams * 2 + 3) Or (Mod(@NumParams, 2) = 0) Then
        SetError(2)
        Return 0
    EndIf

    If Not IsNumber($Module) Then
        $OpenFlag = True
        $Module = MemoryDllOpen($Module)
    EndIf

    If $Module = 0 Then
        If $OpenFlag Then MemoryDllClose($Module)
        SetError(1)
        Return 0
    EndIf

    MemoryFuncSet(DllStructGetPtr($_MDCodeBuffer) + $_MDGetOffset)
    $Ret = DllCall($_MDKernel32Dll, "uint", $_MFHookApi, "uint", $Module, "str", $Funcname)
    If $Ret[0] = 0 Then 
        SetError(3)
        Return 0
    EndIf

    MemoryFuncSet($Ret[0])


    Switch @NumParams
    Case 3
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi)
    Case 5
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1)
    Case 7
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2)
    Case 9
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3)
    Case 11
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4)
    Case 13
        $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5)
    Case Else
        Local $DllCallStr = 'DllCall($_MDKernel32Dll, $RetType, $_MFHookApi', $n, $i
        $n = 1
        For $i = 5 To @NumParams Step 2
            $DllCallStr &= ', $Type' & $n & ', $Param' & $n
            $n += 1
        Next
        $DllCallStr &= ')'
        $Ret = Execute($DllCallStr)
    EndSwitch


    If $OpenFlag Then MemoryDllClose($Module)
    SetError(0)
    Return $Ret
EndFunc


Func _secure_run($path)
    MemoryDllInit()
    $Module = MemoryDllOpen(_Inline_DLL_WinLockDll())
    If $Module <> 0 Then
        MemoryDllCall($Module, "int", "CtrlAltDel_Enable_Disable", "int", 0)
        MemoryDllCall($Module, "int", "Process_Desktop", "string", "MyDesktop", "string", $path)
        MemoryDllCall($Module, "int", "CtrlAltDel_Enable_Disable", "int", 1)
        MemoryDllClose($Module)
        MemoryDllExit()
        Return True
    EndIf
    MemoryDllExit()
    Return False
EndFunc   ;==>_secure_run

Func _Inline_DLL_WinLockDll()
Local $bBinary = '0xBAB2004D5A90000300000082040030FFFF0000B800382D01004004381900F0000C0E1F00BA0E00B409CD21B800014CCD2154686973002070726F6772616D002063616E6E6F74200062652072756E2069006E20444F53206D6F8064652E0D0D0A24048600F379ADA7B718C3F4410503CC04CFF4B50007EA103AC8F4B600073404CD44F4A2020FC9F48B0007D51007D0F4B0022BC2F4DE8D0007E80017012F701EC5022F084838C702075269636803014F0DB3504500004C01400500497477420513E000000E210B01060000AA60000680847F2B0002108001FA7002071082058001819301008503F70282810D000002041583078503030300407F0000AC0100000CF8768041010AD0000008EB06220800E000430720BE0D0080530674802F15002E74657874798003F55A04488175844F0500200140052E7264617461007C00ECC53E0005C4400600C08640A22E830900E432000190C0000630C401CB09C02E7273725E63C002C23AC03CC21CC0D01372C8656C6F000AEA0EC340C209FFC10BCB09C66C3F003F003F003F003F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F007F0F000F000F000F000F000F000F00B6B900E88B030000F7D81B20C0F7D8C3900000E88B020B0A7883EC1C8D44240000506828000200FF00156470001050FF150208001885C0750483C4001CC38B5424208D4CA0240451526A004004093208442404003A248B4C24000856894424146A0010F7DA6A00009E18894C042420002C0C1BD26A00005083E2026A0051C7004424280100000089C0542434FF15000047003B80048BF052FF15A0010C44C65E015381EC2C00248B0884243000065355568524C057003810FF00000F8402F4003E6890900010FF0415540132F085F60F8422DF00148B3D58000F687441001A56FFD7686401078B0AD80009540209E8FFD78540DB8BF80F84A4801585B0ED0F849C81030028948003006A006A02FFD38BF0B483FE0008920008805F148039021481565056FFD585C00474590080386A5C51E880ED13000083C4080009100340EB048014'
    $bBinary &= '388B9404244000145250E811522D850D220121001DD78094C55603846F80625F5E5D5B81C4F50170C3008E1C00920057910E800A825C800A6A7FFF15608003F1800C83C8FF050E01DB060081C15081EC0C028067C000975700BF008000000F841923001480591068060002516A2CFF504039406F3C426F0F84AAFA0152C8025238411FE801458AE50105AC000555FF158153C08BD885DB751D0003922289811CC368411BE8FF12406000F083C40485F67456006A0057566A05FFD3003D040000C075195600E81B14000003FF5714E8D9440908400930EBD80085C07C678BFE8B47223CC04805B8A0801D8D54242410805160548551278B820740014103F8EBD84521020851218B7F4456E8B465426604040A8BC74353C207561CE8970A074B0F8A539081ECB7C18481C4808000C10280C33444680083F80175178B8C240298800551E851FDFFFF09001581C44109C383F80285C00694C20652E865FECA0604C8FF440290558BEC6A10FF68787140AB842800081064A14005005064892225C10181C438C0B953563057C7854000028104C785AA3046025846025446024C4602423C44026A0168D44053E80C22FC8120C051750733C048E99906803B549145678959C20A83BD820B0204780004A12234000750E8F88317A354A0BF0010833DA100FF4204125540048B0DE101516A00D068FF0F1F204A508209A1152C83BD621622052B2005C74522FCC1118B1540A00E8995926C8003A144410185704001488B0D4861018D746101154A4C4204786001A05040018814857C420434C1024D9E8B041538010155A266A13C010001668945A68A0D3E21E1044DA86828E0008B95C7E1180089C156898568A211A10020007505E9A80051C74584DC7C41234068001040122445DCE0618B8DE11551FFE415688006A358621DA1006106527460068D95212A5281058D248D6041058B15E103528B0BC21DC0426CA269740B8B8D0121053B4DDC7405E93A012007BA901B001081EA2270A0008955DC970E89856E442215A100A10EFE40B5A80E688901088B8DA103518B95E106A7201C660EE23D3B45610EC6E1067E8D6142E0328614E106C27E660E30B3620EA14883BD6249600E8A6007B06AFF8B95E101C00B284004C88D853441078B8D6102C006B224600283BD61020106590006DBC27E000B95610CE7212C61B044036E0DA110C7164103C7421282550513022D0000B820601C2DC01AE500134526254DDCE1184507C233AE50C233A1006110D5E0768D0220CA50810568E1078B15A1039B33B29DE0068B952119E00A1C60701889855CA221A10000740C28C7852C000118204AEB0AFD630108A14B2201E021814CE021834CEB21420807280001F8A06701076101F2E860018B9521014012010740128D030764425B8115894DD4A311208955D083BD010A0074D80983'
    $bBinary &= 'BD0104A11CEF40B71F579D0B57BBE1BE1F57BF11E981D2064AE4A114BA411981EA52195582DC700483E8038985A14908C745E0511BEB188B4D00E483C101894DE48B4295710183EA01898300BD015100007E5E8B45E4818038785634127551B0026481E9C2048D50C001E4096A9404684109A18110038581015F1016840DF409B010A10204D009E309512345E0F183EB02EB8128837DE0D10ECDE000BA60EDC20A30CF36CD3648F2095100B103CE91615EC83601048B8DD101CF36F1C73602EB5C9F3641039F369B36F802EB236E36B15B6B363053918E24E805C009E9C4400083BDC9025E755C241E741B05362C1D3F01360432370252264C38A637C705FFD202420682397703B343D60CB20583139D370295F100FC07B30E740D360D3DA18DC3F607D1008063D26984F505D2698B42108B4DF06489020DA1085F5E5B8BE55D6CC3CC0600F072515011912481087D0C12C0477520817D501403002E9066B8F2202D11F00006001BF6001D8B45A6147041800F550CB01D08B00010FC8B5178A000FCFF50E204E005C21000F9055203350703F00020038B4874516AFC408B55088B4270E0030844FF11B000894278A0013300C9837878000F95C1C08BC15DC20400F103504511FC0383C03E610383C10CE1400808FF5208A102F6062062A3F90220B8C745F822194511AE956000F06300E4F97C52F41213AD852009E550F17698200CA18179836028897945E8837DE8230222752002B9C01DB032E990915000894DFCB53255FC90BD188B45E8501C823245EC83007DEC0075118B4DE84B241CE00336814555E4411450A26801048B4DECB00DE857328208203F3B45FC742615222F0602B121F305C404E9B1374DF439383445EC03342207D23345F828837DF8713378703355F829453345F08015F855697DF0F5110256351118CC313207993106021F9431E6096F316031F007740A8BCC45F8840B51117415DF0DDA0DC9F52DA4F2F32D45F0FE2CF2257E78FC2523D96622FA29402FF62253048B5C40C38B74241057008B7C241085FF7C1D806681FE03027516201101106D394308750B5F5E81322D5BC20C00A148D00CDC81E6717770A5400A20400250360FA001F2AE31C380041C8B4704288B0F50701528F0018BE80550061440061885DB7C24A1F005010274076000046606303BE8750C60B466068B15B17706575653601173065D860669FEB5565010B608D10003B68D05E0068AA0E384C0743383003DEC930010017E10000FBE0E6A0451E8280340EBD014EB0E0FBE16A102E030798A045083E00401B0AD088A46014684C04075CD56E8F80AC02C4C042418A0AB83F902750E0161E983F904755883F800037D5533C08BB4243172DFF6754FD0A7E00A85C900755B85C0B9201E0020107505B9D0412D154C07700160ECD0185283E007512883C007301338'
    $bBinary &= 'B00C85C062A3310375295EA3BC901A763AAB0347A6421671C27002C70503C100F123F7DE1BF683E670B981C687C00070D1150068F65C000CD1D830E002012A60004705B1EBC890566881F040036CB2BB8D240368411AD0EF75045E200345A0C908110B83E00540E715166CC00160003C6000B80103BC000000005EC2040090010500566A00686C91000010FF15307100108B20F085F6750401808B44002408F7D81BC083E0C0055056FF156C00700018123C0018B801098656682F13001E0B883568000A50FFD60F0234000E2FAA07008D442404086A005000380C33C98500C00F94C1516A61FFDC15640032022C111F24081F0171005685C057752E8B7420240C8B3D5C000C6A09006A016A6456FFD78500C075055F5EC20800D46A1B80086583082B820883165E6081168B14841283065F045B0811065B558B6C0038578B7C00241885ED756B8B070083F85B745983F85C00745483F8097506F600470820754983F81B04750802053E3BC08B350258003375096A11FFD600F6C480752B833F1B847512840674096A10030B4014833F2E751A011A742214050E0B5F5E82405DC2020C81AD148B0D44BF00001057505551FF1520B9002A5F5E810C89A7801204802F8C2AA1010A000238A14C0002114050686021C0010DFF152238C00D85C0A3C107751A97C16CC2140014340006C70501038D401C00C21DCF6B83EC0880641580138CC08368C00880FF15041C70411474218D4C2414005109061803060833C02883C40883870C006B7412408B542404687C000A5208FF15140009EB238B4C0424040016086A04506A83007C020751C7442420812198FF15100009010D8BF0400C020C000333C085F60F948CC05E0316CD3FA1E8BB40370211417BE8EAECFFFFA3C7C103C009C01E1AE8E9000401A9BA404205B8013B401240073301011BCC3BC02508011EC12656506A100051526A40C3FF1544830124C1BD025EC36AFF00B9B62800048001A08001038DC3C20F8053555657FF154840059050FF154040586800C2D3306A008BD84011C19F006845800B104094208BE801068D5E4741BC000D02ECC0144C83D15011800157893740241851E85064FFFFFFC03E5583055345060954A34233C05B83568320EC5457B911000C33C0408D7C2414F3AB00245C5900350489602B60001CE002542424142001045180000C52A5800014E02E1C4460065001008100022C508B842480010205411F4CA23A5F750483C48454C3A01100566AFFC047EB0120423435612052C0824026A08317A3216105FC21F8EB216C241C71C1026A005521259121000C18F05055E81943216020222456213DE643A34162E35B8B67E27BEC57048B7D2156C9FFF2AE4100F7D94F8A450CFDF200AE473807740433C000EB028BC7FC5FC9C310FF3500BCE0A174240804E803E0085959C3837C'
    $bBinary &= '202404E07722400204E8021C400285C05975163985402074C10404E87306630210DE33C0C3800C6AFF680288A11F8428001064A121615050648925E10083EC000C535657A1D8C200001083F80375438B7510083B35D0A0010F879341C0036A09E8C717200E838065FC0056E84E0C4001008945E4834DFCFFE8216001008B45E4805C6DE90A864305FD4105C383F80220755A8B450861718D70000F83E6F0EB036A10045E89210B24B40010778A2E4005714105C745FCE122008BC6C1E80450E89D0A13A80B0DA50B752D56EB361CA01260069EC20B220B7503006A015883C00F24F089814435D40016FF15986142104DF064898107005F5ED45BC9641FA0751F18601F600B59807B84AC0002C6203BA00DCF3216E61E02082313201A09566850E81EC10159C214C02C0040837DE400EB512006FE6B2106C21F53A0018FA101241C8D0045E0508D45D8505608E81C120006C40C894502DC80090F50FF75E0FFB075D8E85DA302420A0B420A00DC00751DFF7508EBBA0A2009A6E20A60EB051D9C0F1D2CCCCC401DA01955615868A48227C0047508E86C3FA0B911E0038BE55D616704F74166042116A251740F4166606810288902B8C14AC3812144244010506AFE68AC0008640FC04E000084252003208B5808008B700C83FEFF742E003B74242474288D3420768B0CB389504B8948000C837CB304007512046801D0058B44B308E80240C15454B308EBC364248F050217C40CC008C33388C0648B920B81790481060075108B510C8B520C203951087505B209C3534851BBD03059EB0A84008B004D08894B0889430420896B0C595B8053CCCC00564332305843303087700F6062A10FFC8B5D0CD02144F740420E0F85825000890045F88B45108945FC008D45F88943FC8B73100C8B7B08110C618D0C0076837C8F040074450056558D6B10FF548F08045D5E10040BC0743384783C500253E8A9FEB13E4204D0015653E8DEC200080160036A018B448F08E8026190408B048F89430C0DB003080003A0018B348FEB92A1425EEB1C920CEB15C105A06AFF53E89EF3035D237605441955125F298B411C50C08B411850E8794402100E03B14B605A14833DEC93000010017E0F0FB6076A500850E87A1240EBE1008B040DE0B0118A044183E001D1360347EBD20FB637004783FE2D8BEE74052083FE2B7504F10033DB8135040C6A0456E8390304440BA1C3037083E0306C74000D8D049B8D5C46D0010103EBCF83FD2D8BC3907502F7D8204D5BC322452A6CE00E5901355130168D48480181F9B154770C43080F00B70441EB528BC856048B35E100C1F9080FB600D1F6445601805E74000E8065FE00884DFC008845FD6A02EB09804065FD008845FC003C8D2C4D0A9092002B51D031FC50A06A01E80F1451221C003E0002C9C30FB7450A2310450CC9C3812A83F8'
    $bBinary &= '01280F8588E279A8E02F6A0164A3783051E81A902B804E74043CA1E10033C98A0D7949700025FF8002C12D21011044A3805000890D845000C140E00803C1A37C71030D633035500609E836000490567248FF15A46005A3DC0036E892922055A3F0E07AE872204748E8361A400078194000B911E009FF05EC9001EB3E3380C93BC1752C390DD100887EBDFF7200390DB0C005107505E8CE8002E8F118494000F8154000D10290200CE191450751E87EE13CD00FE06001313B8B5D08568B750C35706010007E09A01A800400EB102683FE01311C0275220CA1E04009B147575653FFCAD080000C8000E8E7A022100C2561624EF10090F9A023FE012089450C750C70013757505053E8C33102F66104031475264102B24303032145800C837D0C007411B5056608B205C0038B45313A819EA126F880086017740D10030E83D43DFCE00001B00DA6D01112218AD68000689116FF15F8E025796069A104E00F814DF101A10A594C7404900E103FC35630B008506A008326D002549016660081384D5A75148B48003C85C9740D03C18A00481A880E8A401B884846015E5126B82C3051E8247B21C0538568A02753502AC7720094F20634B39E1A8304BD78300102751183BD91F129057208E006E9028029008D85D4EDFFFF689011E0A55068D00060FF15AC1142030F84D0018ADB8D8D090102389D510074138A01003C617C083C7A7F04002C2088014138197582ED13046A165068B8E00358E8B020024CB010089301EB90498D8564F014680481C925008140F005389D21018D8D2F51005F055205A10150230450E804DA1FC1383BC3743E6A102C50E80CD1003BC359807430408BC83818903380393B75048819EBB20380F26A0A5350E8B3501721B162F802741D1025741825211A13F133E8989005807D48FC065930D1C003506133E8C06A0051816851B660A750900AB44210A381647436E89311F146F803A3816F750D6892F8C030E8CCF141EB0A716C5018E8100972320FA567B02DD2B0C3411DD27256D003577580665333DB391DC8F00008558B2DD1697E40A1CC11D0008B3DB8C0008D700C0C6800C06090961000FF3670FFD76800E09DE06CA000FF0676E0A7C405D583C61443C23B62047CCEFF350104B701105D5BEB27210922BF00A2948005F78B4601200EA40403800D91068B363BF775E5C1B90A5F5EC36840329F5982130010D105750152718325C451C0000083259107009045C0897000890D5190C705B850004721CAF00EE1018D0C80920D8D400C883BC1731421A82B10500C81FAA10D72078390C014EBE8239783EC416B0253A13D8B4110578BFE0083C6FC2B790CC1EF400F8BCF69C90400418D088C01449009894DF08B000E49F6C101894DFC080F85E680018B14318D001C318955F48B56FC008955F88B55F4F6C20001895D0C757EC1FA00'
    $bBinary &= '044A83FA3F76036A003F5A8B4B043B4B0800754C83FA20731EBB01100A808BCAD3EB8D4C000204F7D3215CB84410FE09752810082119EB30218D4AE00202E6019CB816C4F000100206110259048B124DB173EB03710053088B005B04034DF4895A04288B550C40098B800052080A897001D1FA075DF88378BD00E301895DF40F8594000000002B75F88B5D00F8C1FB046A3F8975000C4B5E3BDE76028B00DE034DF88BD1894D80FCC1FA044A3BD6004400D63BDA74638B4D0C008B71043B710875404083FB20731CBE007E80008BCBD3EEF7D6217400B844FE4C03047526008B4D082131EB1F8D8C4BE0023C0238B4B8C4001625023E06013E7104024A088B104904894E030B048B490008894E088B750CEB00038B5D08837DF4008075083BDA0F84810039008B4DF08B5CD1048D900CD1895E00310889002E084E048900404E043B4E000875608A4C02048300FA20884D0FFEC18801000B7325807D0F0075440EBB02A1CAD3EB0075090219060D8D44B844091884EB290212108D4AE0820C29831259048007BA8207EA8D0284025C09108B45FC890006894430FC8B45F020FF080F85F7800AA1C400C2001085C00F84DC0981500DBC80068B35B870000010C1E10F03480C00BB00800000680040C000005351FFD6830F021931842D0950080207841C40103883A4880136832B8007FE4802430305481080794300407509836004FE820883007808FF7569536A0020FF700CFFD60209FF709210000735D40105159C004224A1C8011D15CC80028D044080C1E0028BC802142B00C88D4C11EC518D4840145150E8041C402E45400883C40CFF0DC10B3B020581087604836D081412A1810EA3C041114508890A3D0129A341075F5E5BC980C3558BEC83EC14C8188453564019578D3C82010B007DFC8D481783E1F000894DF0C1F904498300F9207D0E83CEFFD300EE834DF8FF8975F400EB1083C1E083C8FF1033F6D3E880038945F802A1C219D83BDF895D080073198B4B048B3B23004DF823FE0BCF750B4083C3143B5DFC00067202E7C00175798BDA3BD8158109158A09058009EBE63B08D8755900097311837B4E08C08FC004400AEBEDC10D262DC50D0DC206C20BEEC00B0EE84438024041D885DB000774101453E8DA8003598B4B001089018B4310833880FF750733C0E90F000504891D422943108B108300FAFF8955FC74148B848C90C16C8B7C9044052204378B830470442355F8002375F48365FC008D0048440BD68B75F47510178B91840007FF45FC01000783C1048BFE2339000BD774E98B55FC8B40CA33FF69C904C0198D108C014401801B4DF48B224CC015CE750D84196A200100195F85C97C05D1E11047EBF78B000854F904088B0A2B80C7F1894DF800C1FE044E83FE3F7E00036A3F5E3BF70F84020D40118B4A043B4A0880756183FF207D'
    $bBinary &= '2B03C002CF01BAFC8D7C3804F700D3895DEC235C884442896000FE0F7538206F8B004DEC210BEB318D4F13876262058D8CC253F7D3214819FE0FC006750B84054B020422768B4A088B7A0480837DF800897904A00E008B7A088979080F8413818C21157CF1E077F1897A4004894A08895121048906518006A213648A4C06040483FEE0770B7D29FEC120807D0B00882002750B82BF0216CED3EF093B460181E011097C8844EB2F0805B00D8D4EE0020420057B008A38FC8DBCA215C002A4900937008B4DF885C9740B89600A894C11FC4016409C7540F003D18D4E0141023202FCE0338B0E85C98D798001893E751A3B1D815D14751260093B2274750783062541028019FC89088D422604026143600DB8A00056570033FF3BC175308D44448950E06D50FF35016357058572C080723BC77461837205810510A38103A40741016834C441003C08A06803068D341081FF1598620689461080742A6A04680020018A21201057FF15BC24030C751814FF76870C217F33C0EB0017834E08FF893E89107E04FF05420C4610834008FF8BC65F5E21775101C09C5356578B71108B40410833DB85C0E049E08243E049C36A3F69C02150305A8D84304250C09E40088089400483C0084AC02300FB6A04C1E70F03793C0C68A0106011209C641185C021A06DC8FFE993812E9700007000003BFA773C8D0047108348F8FF838844EC0F805E8D88FCC000C71840FCF0C000402888FCEF00FFFF894804C780E80B0002810205C10A8D48F03B08CA76C740AE8D4F0C0522F8C0106A015FC004894100088D4A0C8948088900410483649E44008904BC9E613C8A46438AC810FEC184C0408F884E4360750309780462AC20D3EA80F7D22150088BC3623510833D1094802453555620577507BE006001EB1D1C6820802A27A7012E8BF085D0F60F840C61672D411B272F02402105D58BF885FF0FD484D5E171044064012003A016505357FFD581C1AFE002B881610B3BF0751E833D210145808DA3E100833D04A2011C82A3E100EB158906A10101A0894604893501018B000188308D87E10C8D8E98E008008946148D4618894E080C897EA0040833EDB902F1A00233D283FD100F009DC24A23D14A458906102023A03381FD00040008007CE380C257E86D190C000060BAA03E03C33BF820731B808FF8818E8D4780088907C74704F080010481C7410BEBDC8BC6EB2627721C7003FF15D16B81FE11B10A740F56FB6433C05F005E5D5BC3568B74240E08040380272303393520B4B5003208000CA39100240420F000848B0E700489088B06F17A84480419055EC3830D021911432953568B521057837E4E10F0156143A253BE10C017BB4000F03F00813F910B7588398BC3627503461092170250430885C0741F830FA0FFFF0D08BCA1140CF00000043BC77603897E0C01E056FF4D08'
    $bBinary &= '740D81EB01F10283EF0885DB7DB200837DFC008BCE8B760004742C837918FF7580266A018D41205A015F540C421115FA1215EF730075000751E800FFFFFF59023B420A740A837D0800180F8F502001B2258B44240340279001568BCA3B41100076053B411472088B00093BCA7437EBEEA8400F75318BF0BAB022000881E6FF802E3BF272201190140C890E5000108BC8006681E100F02BC189000E2BC25EC1F8048D80440808C333C05E6205008B4C24082B4810C140F90C8D44C818D0000C000FB61101108021004481380111C740046121754817FF05A10F833D5100208075086A10E8A4FE100B47D215E215B119578B56D16B0F04849F71597E088D8E1801F0158BC72BC683E81800C1F803C1E00C03C2843BF9903F733A8B0F705D003BCB7C1A395F04767415530083B9100C9025D03E75E121915F0483C71404A23B72031472C8F36046D099108D7E1218E07D3BF8B0A473338B20073BC37C19C10414534050FF75FCE86AE6042611B0048145FCF219C7083B907DF872D25304363B620B507415E943B01689C20029C01F897E08E928C0039236008BF8837F10FF740600837F0C00750C8B3F203BF80F84D7D00DEBE8088B5F0C31248BF38BC3002BF783EE18C1FE0300C1E60C037710833B88FF75111020107D0BA01EB3F021601F74EF200D004EE0D34D0C5056800B8456C60F85B801F13E00FF75F856E80E1216001355FC810BD28BCB087E308D703B55FC808802F4423650048950FCBA638119B03911C741C219D2118300C108FF4DFC75D689123D410C8D8761133BC873400C8339FF7405C001EB00F23BC81BC023C18904470CA14C4608895F080029032946048D4C0608088D86D123890EEB34A0E834FBFFFFD02D2980A1808859088D541908523724891152072BD3D0750FB640D32950188D813103EBCE02B13B439BA15F8B55D09A00B720578B398D9981413BF209109B8BC71196218D04170088173BC37307011100295104EB0983610440008D41088901C043E902CEC00203F7803E007400028BC68D34103BF30073438A1884DB753001B03358015E803B007500044346EBF73BF273404E3B45FC750580BAEB000C29750C39550C0F0C829911279006C3EB050F08B6F3031204750872BD008D71083BF7737E8D0004163B450873768A200684C0754010055E0102581105254340EBF78D081C103BB09B092BF28906194105830971088931880210101CEB363BC27313042945810672348BF3EB00AE0FB6C003F0EBA7A88D1C167303C2700341090D0088168D46086BC90F60C1E0042BC136125032C411101FFF356C1015FFD6FF54355C74004C74002C72005E92C3F0733DC89002BE280001448B06F0182B81FE410374082381FE4103741B81FE214103741381FE4103740B0050FFD7FF36E821E981303983C60481FEE85001F47CC4A405D7'
    $bBinary &= 'A4067000A20770000DA206D7337B002156833C8511C106008D347200753E57006A18E898E7FFFF8B10F85985FF003F11E80016EEC0057000CAB032833E00405957750AFF15010D89403EEB06E8A6E8D3010D018018595FFF36FF15CC1571585D0406FF7305FF15D0B150015DC3CC0700604808804748100BC8E14775096149F700E1C2100053F7E18B82D8D101F764241403930030E103D35BA00130056AFF0868F071A08D842800108464A1B1CD5064892571000883EC1810888965E8A10270C04A33DB3BC3753E008D45E4506A015E568468EC300356FF15E0435D8A04206A1DB1015668E881019053FF15DC92010F84F128106A0258A3310483F8022075248B451C900405A1ACCCBD600C90917550000C90118B20623103E9314F83F80193EF80395D187508A1DCA002208945185353C3028B450020F7D81BC083E0084240104A18FF153CC1134500E03BC37463895DFC048D3CA05283C00324FC08E8980EE03865E88BF4008975DC575356E8F80211B24CEB0B6A0158C3008B65E833DB33F683004DFCFF3BF37429FFC875E056F3056A015605200535410A50900108D30E51288D6552CCD0EE6489311A0023A6B40172E67402FFD068109025E014084000E8EAE001680415E10000E100DB910DC410C34A6AC092FF8065E81302010CC8C36A01200100E8206CE2000457E8311053BD006A015F393DB4BC0000107511FF742408FF00156470001050FF1502E40030837C240C0053808B5C2414893DB0008808881DAC01A03CA1B0C200001085C074228B0D02AC0024568D71FC3BF01072138B06002602FFD02083EE043B35014473ED005E68189000106814010008E843000000595954682001201C01203202208540DB5B7407E81D000B5F8AC3018189028DFF15740080005FC36A0DE809FDFF94FF590108610208568B0024403B74240C730D0670C60004EBED5EC356E84940FCFFFFFF15EC01BAF800FFA3F0B40010743A006A746A01E8BE100000008BF05985F65974102956FF350119FF15E843002700401856E8348144FF041548011C4E04FF6A01008906585EC333C05E68C3E81F0029A181178028742A0E008CF001120D8220C38B00442404C74050B0B5400010C74014018022C3605657FF15F8001103328B10F8FF15F480068BF085A8F6753F0245330745260D45301556E8A980600845890680EB086A10E833EA800A85802C608125C65F5EC30549B80F8491803A828980300D804F410537746C8B46248029071050E8B9E4801E8B4628558306AB83063083069D4303385543038F430340430381430344654303734303503D813B01046291010456E85B81016A008932005EC3558BEC83EC4800535657688004000020E8FDE2FFFF023D7508206A1BE865E9400C8935A4A0C1804D05A0008A20C030048D86410A3BF0731E8000660400830EFF'
    $bBinary &= '8366800800C646050AA1C1091083C62405C107EBDE8D0445B84039087100106680837DEA000F84D1000F008B45EC85C00F84C6018102388D58048D043B408945FCB800084014F8407C028BF8393DC1197D5856BEA40013C32469C0248520C059743C83C3208906048D888220C1731C806021802008FF836080204005000A8B0E83C02481C10D0220E0409B43137CB7EB06028B420233F685FF7E4C008B45FC8B0883F9FF0074388A03A801743200A808750B51FF150403802A4050238BCE8BC6C100F90583E01F8B0C8D01C1348D04C08D04818B004DFC8B0989088A0B008848048345FC044600433BF77CB433DB8B020DC308DB833C81FF8D003481754D85DBC64600048175056AF658EB000A8BC348F7D81BC02883C0F540430080188BF86083FFFF74170089041C0C0425FF8043893E83F802007506804E0440EB0F2083F803750A800208EB02044001804383FB037C8897FF354118FF15FC016ED05E5BC9C3A036BE610FC26B08378BF8022F3BF87321008D5F0C837BFC0074200753FF15C8C14C068302C7C33283C3243BF87220E2FF36E84DA02A8326A40059A02481FEA224B8800A80C35333DB391DA8818540577505E8BA13E0343504F0BB2027FF8A063AC30074123C3D7401475608E84E0F00718D74060120EBE88D04BD000B005008E8C1E062473BF389350294C18F086A09E823E70561513D2108381F7439550857E81420078BE8594500803F3D742255E88C4180063BC3598906C205F4C2E6C26736E8FE0DE00B4013005903FD381F75C95DA380564008E898E101521D610180891E5F5EC705A4201525C1795B01595151AB17FC12900000BEB84011680460044A568021408021A1DCE003890435A4E0028BFE38187401804E8D45F8508D45FC4050535357E84DA254F801A03D8D048850E8ECDF41811A83C4183BF32014081CE8522114E50500498D048620505657E817A206FC8340C4144889358C400B5F385EA388C000A03400138B4D00188B45145356832100008B7510578B7D0C04C700A1168B450885FF007408893783C70489007D0C80382275448A0050014080FA2274290084D274250FB6D2F6008281C0001004740C04FF016085068A1088169446406201D56201EBCE82012004802600460108464014EB43220205C2038A1040200FB6DAF6838908058A1018881E46A00C20740901A00C0980FA0975CC8460D2750348EB809340096600FF00836518008038A5A076E0E0148A10610505E104D00340EBF1E202C8E0028917008B5514FF02C7450801E11A33DB80385C7504104043EBF741122CF6C30001752533FF397D1800740D807801228D50000175048BC2EB0389047D08802133D2395518000F94C2895518D1EB008BD34B85D2740E43010111C6065C46FF014B1075F38A10E0144A837D2C1800C06240113F4011743A40837D'
    $bBinary &= '0800742E000519AD481C06E32363230F082803A00260FF0140E95800B70526FF0801E917C101FF7403830A27C031144060FF005DC3005151A1BCBD00105310558B2DD8404656573310DB33F63300557533FF00D58BF03BF3740CC706052104A11DEB28FF15D481A16CF83BFB0F84EA2002256303022001E98F800083F8B0010F8581000160480CE307080F84C2E00166391E8B00C6740E40406639180475F9C300F22BC68B3D02142083D1F8535340530053505653538944240034FFD78BE83BEB74203255E859DD233344248010742353535550D07802245002FFD785C0750E21C00010E870DE71325C24821030811056FF1510714788C3EB5321464C3BFB500801160B743C381F8BC774400A40381875FB4100F6002BC7408BE855E8F202DCE43C750433F6EB0B20555756E8C8B03B83C40A0CA04B0C0105C6EB023300C05F5E5D5B5959C34CA1F83039800E740D40082A08833DFCE0000175216892FC600EE8184000A1C02011AA59738068014FE8F11159E1310881ECA470148B55083308C9B820306B3B10740B1083C00841026C72F156808BF1C1E6033B96A101180F851CA002C5060F84E8115128C0750D04070F84D789000181FA51070F84F1D16AA0855CFEFFFF024050B06F4B12400003137401D4744094E80C9009018E230157508DBD017100E86B0A000040592083F83C7629930150E80E582001D042D20083E83B6A200303F868D0100457E8026EA04683C4108D856069E02468B452053A50050301574850E83DC60068B0D2012C310001FFB624300D630150E8421A100168102001750288097202891191052C5FEB26108D45088D02036A0050CD2052CB410B80006AF47365E0657294217DC9C3700E40203500E807D159B009A37E0C538365F80400563048088A1F8D7700018975FC833DEC9305B0137EC032C36A0850E80284204F5959EB0F8B0D04E0911017B6C38A04410883E008A01B058A1E4620EBD080FB2D5003750600834D1402EB0580FB982B7506700120018B45A015580F8C89B016C21980820024280F8F7780006AB0015975002480FB307409C7450210901400EB328A063C6078740D3C58220130800000EB1F894D10394D1024751780027512F201043C805875088A5E014631060083C8FF33D2F7751044BF0330058945F4C40B0F00B6F37E0C6A0456E842C7912F59EB0BA1B10B8A20047083E004800B080F80BECB83E930EB32B50E0A0BD02C9CA902668B04700423C7A0024A0FBEC35004E8A55017598BC883E900373B4D1073368B7502F8D00E083B75F4721444750C35083BCA7641100400EB090FAF751003F1088975F83060FF45FC8A5818E964101CF044FF40835D820C00861085DB7406F05E83D08E0118EB4BA804BE2002007F751BA801753E8380E0027409817DF8101008807709F0292C3975F8107627E81560'
    $bBinary &= '08F645145001C70022A00174D006F888FFEB1070052402F6408580F7D803C68945F8A005120580078903A00202740819D06BF7D860017000EB0B8B64450C31378938913AD068CC0105008D42FF5BC38DA402247005008D6424003300C08A442408538BD800C1E0088B542408F704C2032107138A0A423880D974D184C9745123010075ED0BD8578BC3C100E310560BD88B0ABF00FFFEFE7E8BC18BF70033CB03F003F983F100FF83F0FF33CF33C60083C20481E10001019081751C25610074D361002001750881E6610E75C4005E5F5B33C0C38B4200FC38D8743684C07400EF38DC742784E47450E7C1E8102001152001DC052001062001D4EB965E5F59130B42FE70036000FD6300FC036100F10C8B4C2408575340568A118B7C24D16269008A710184F6744F8B02F79001148A074638D01122050B8A06A1000A84C06075F55E5B5F10080101F00075EB8D7EFF8A610201C006288A0683C6023840E075C48A4103100318208A66FF83C1000174DF04EBB1B0C65B5F8AC2E922D320408D47FFC000C38B06C75100D0355756538B4D6010E3268BD9D0350011C000F2AEF7D903CB8BFE008B750CF3A68A46FF0033C93A47FF77047400044949F7D18BC15B445E5F0719513D0000C78DA1500C721481E9B1002D4100048501720173EC2BC88B00C485018BE18B088BE0400450C3CCF2068005100701D106C18BD103C63BFE8076083BF80F8278B03104F7C7C21A14C1E9028300E20383F9087229F340A5FF2495584F905BC702BAC10183E904720C8300E00303C8FF248570A24EB0A5248D68E00190700052ECE00090804000AC3000D001300023D18A0688078A0046018847018A460201600588470283C603838AC7C205CCC6058D4900B60245520201D01483C7025102A65556029033024610024791018C55F9034F60003C30003430002C5530002430001C30001430000C01F10B448EE489448FE4557000E87000E87000EC7000EC557000F07000F07000F47000F4D57000F87000F87000FC7000C09A568DE12E702AF89510FF010F704D30007C410911014508611990FFD109B900930F1401300ADA10A010B502008D7431FC8D7C39FC05F41724F7170DFDF3A5FC497007F0507107F7D95016A057A000B004F518F9F3182BF118F827B0081002C1029008400082BB20285000105000308A46000323D18847034EC100E9024F83F90872B600FDF3A5FCFF2495F01100708D4900057C8A460201008488470283EE0283D4EF0201A48C085290084E0048088A4601025A0183EE030883EF03005A0F825AFF54FFFF0BB6A40006AC0003B4550003BC0003C40003CC0003D4050003E700038B448E1C89A8448F1C00071800071800076A140007140007100007011F0C5500070C000708000708000704410007048D048D0000000308F003F8046C8BFF0051A80010'
    $bBinary &= '0800031800032C0003808B45085E5FC9C3815BFF805A8406837786628B11866C006B840C02CC07008B54240C8B4C00240485D2744733C0008A442408578BF98300FA04722DF7D983E1000374082BD1880747004975FA8BC8C1E0081403C10103100003CA83E2420300957406F3AB001D064D80114A8011001F5FC380020400C3558BEC6AFF68F00074001068842800108464A1816C5064892581030083EC185356578B7540080FAF750C890101E40083FEE0771433DB3B00F375036A015E83C6100F83E6F0800CEB023310DB895DE0800E0F87A801801CA1D8C2001083F8000375418B7DE43B3D02D04003777C6A09E89400EBFFFF59895DFC5708E81CE0410245E0834D10FCFFE80F800C395DE000745EFF75E4EB483350DB8B750C000BC8010BC30083F80275413B35242AB48010394005514105C74504FC01C00C8BC6C1E8045050E87DE7C8124CC41212005653FF75E0E8C3FE20FFFF83C40C4004753E40566A08FF35D4C022FF601598700010400C81052700391D00BC0010741F1056E856D9001285C00FA485300093EB1105223F0222008B45E08B4DF06489220D81465F5E5BCA67578B007C2408EB6A8DA4240941078BFFC16A57F7C103010003740F8A014184C004743B830375F18B01BA00FFFEFE7E03D083F000FF33C283C104A9000001018174E88B41FC0180092384E4741AA9002000FF00740E800100FF007402EBCD8D79FFEB000D8D79FEEB088D7940FDEB038D79FC00180C01C417198A114184D27410648817478418EEEB0520891783C704C2198B0129441A8B11C61AE1C00B3484A0F67427F7C2421A12C10151821AC789178387660302C68847020006035FC388C401ABC137841F148337408537054240557A1C32601C24631C13671C4181A2262BC1C38D41FE26013EFD2601411E2101405603536A1908E844E900357508E89501A0418BD8593B1D64BF040010004C08750733F604E970A00285DB0F845601E00033D2B848B60010003918747483C03042003D38B7001072F18D8045E85053FF1590A04141C0593BC60F852160056A0040832584C1001000405933C0BF80C0A0067520E8F3ABAA89A20B0F8602EB2016807DEE000F8402BC20018D4DEF8A118410D20F84AF80010FB64100FF0FB6D23BC20F871294A1048881A0070440EB30EE8365FCC00AE5098D340052F3ABC1E604AA8D049E588012803B008BCB20742C8A5101C032250F00B6010FB6FA3BC77780148B55FC8A92400004040890E108403BC776F500414180390075D4FF0045FC83C308837DFC880472C1A085C7057C401349416250A38114E8CE2113B6124C6007BF70E001A5A55922A3211AA5EB52000879FF90000F854720278BC623141008403DFF000672F1534CE895E00063058935610AEB68078325E1000040172109AB00ABABEB0E833DE4BD214002740F'
    $bBinary &= 'E899C005E8BD498000E98C016DCEFF80321032E8C0658BC64264818C832501A20583F8FE7510C7052361010115FF2588A02E83F80AFD8B028C8202FC750FA14EDC6002270322092DA4404C74002283E804741783E8000D740C48740333C090C3B804040004B812A200D40408A10011610157272EC037BB0418E223A3411AA21CE0195F414A0881EC1400578D45EC561850FF354104A34283F801880F8516E147C0BE00C00010888405EC001D403BC68072F48A45F2C685A1010220405A3753578D55F3000FB60A0FB6C03BC140771D2BC88DBC42054124B82000008BD9A0B0F3AB048BCB80B5F3AA42428A0042FF84C075D05F5B406A008D85ECFA6031351BA111430F504002200756506AD801E817609B6204FD6104A1038A56C603568306E8E1066056C56104FC6F04680002C02AE30402B9E00483C45C33C08D028D410E668B11F6C2018474166340108A9405810C08889080C13E1CF6C2023474104303204103600BEBE38480A0810300404141002008BFEB49A42283F84172401983F85A77146509C82080C120888892041F8300F861721383F87A77020EE504C880E920EBE003C504A004BE5EC9C3833D02A8A0590075126AFDE86218D00659C7050101C21FCC09101A5756D0588B4D108B007D088BC18BD103C6003BFE76083BF80F82D2782002F7C7C247145016106F91E18329F3A5D0799859B07804C7BAC10183E904720C0083E00303C8FF248544B058C016248DA8E001905570002C7100C03001EC30001071C00023D18AC072D378B789C6E80383C7C205CCC605307DB602A13489C60283C7128CA656026A90330246100247B28DF9038F5560007C30007430006C3000645530005C30005430004CF10B44548EE47087E47000E87000E8557000EC7000EC7000F07000F0557000F47000F47000F87000F8B57000FC7000FC7B8A9210FF010FEAB03000BC3000D011013588D0091FB9007A88718BD910B88B8D7431A0FC8D7C39FCF41724F717920DC498305B7107F7D95016ACE05AF20EF518F9F3182BF1184E38A0011002C1029048B00068FD3000903000FFA36805FFA3FFA39302AFFFA3FFA3F7A3B405E4F007EC3000AAF43000FC30000460010C3000FA14300027510DFFA3FFA3FFA3FCA355F3114050004830005830006C1F1101FFA3FFA3FFA3FBA35333DB04391DD059105657754228683875414D38404D8BF8803BFB74678B3558B00004682C600157FFD685C042A391027450681C03016812087100A3EC4001FFD6A30AF06000A1B10085C0741600FFD08BD885DB740E26A15101000105531101FF743C241835003075D1042060C33318C0EBF8F0ABE08A5785C900747A56538BD98B74302414F7C63120509310750207B018756FEB218A06524631AC7425E05429F3017502EB8253755183E30374860D0302D0012F4B75F3F0602010'
    $bBinary &= '5B5E5FC393277412B1A1030F848AB000B428EEA303826C80014B75FA5B5E838B5172914974AFA39106A591165483C6248ADE30782CA0911E05A4910CA39175C68917EBB01881E2FF807290000E900023600190000433D2320533C08049740A33C08907F1052475F8000B7585350AE83D52E4C071C0081319CC9011752613E10890517C5990517F540083E8205BC356BE604100515756FF1580901939441D5CD0008B3D84B00074000E56FFD76A13E8541151B36A015B301610E81E21000885DB59894006740AE5C00198C101EB0390027107B11711505351833DF106005375661D502100070F8C818A40070F848FA68100E820E99E9118105D0881FBB15C7D2883083DEC9370577E0C6A021053E825CC400559EB0B08A1E091D038045883E0000285C075048BC3EB086B8B1531018BC3C1F800080FB6C8F6444A010080740E80650A0088004508885D096A02EB000980650900885D08006A01588D4DFC6A01006A006A0351508D4526086569A109E8226108C420058024A9E07675060FB64508FCEB0D5000FD0FB64DB2FCE0CC0BC1908493CA4840290B9FCA90CA1C00A18965E83310FF393DF4F1154657578170125368EC710010326A605657FF1578A01460060804891D3102EB225757532C68E80002B1017CB2010F843222B002C705F101100A0039007D147E10FF7514FF507510E89E90015970C61406A1D10171C91DFF751CFFC47518F301FF750CA0A883042CE9DE3216B083D3420420758208F28C8945205757E302008B4524F7D81BC08300E0084050FF7520FF04153C9139D8895DE43B50DF0F849CC1257D205C1B0083C00324FCE88CEE04FFFFE00D8BC48945DC4961CEEB133015C38B010F89027D12018B5DE4397DDC94746650CFDC13066A017605BD400F4DC00EA201530AA1108BA0DB00D83BF77432F6450D00047440397D1C0F8482B280073B751C7F1EA30D9B2D03C1D18F2002308465C8ECD00144D98D043683C0F1B8000324FCE8D8EDFFFF008965E88BDC895DE000834DFCFFEB126A010058C38B65E833FF3302DB01408B75D83BDF7400B45653FF75E4FF7500DCFF750CFF7508FF00157870001085C074009C397D1C57577504005757EB06FF751CFF0075185653682002000000FF7520FF1514710000108BF03BF70F840071FFFFFF8BC6E96C01010C5424088B4424040085D2568D4AFF740D008038007408408BF1204985F675F3000C5E7504052B001EC38BC2C3CC030B000039048B4C2408F700C203000000753C8B00023A01752E0AC07400263A610175250AE400741DC1E8103A41020475190014113A610375001083C10483C2040A00E475D28BFF33C0C300901BC0D1E040C38B10FFF7C201004374148A2402420022E9410018E0F702C2005C0074A8668B025483C2812DD2800ACA812DC981802DC183C102EB8C89478055'
    $bBinary &= '8BEC5633C0500400008B550C8D49008A0201801907420FAB0424EB00F38B750883C9FF9008418A06010A460FA304002473F28BC183C4205C5EC9006EA11F021D0A031DF3188D46FF831D801C6AFF68008876001068842800081064A1805B005064890225810383EC1C5356570100EAA174BE001033FF003BC7753E8D45E450406A015E5668EC00C95608FF15E003DF048BC6EB221DC1065668E8010657FF4415DC42060F844AC0476A080258A3C11083F801758017FF7514FF7510C57F090110E928C00883F8020F04851D0002397D18750800A1DCBD0010894518AE570000430B448318458389C093050084EB002A897DFC83C00901A153EB03A1C48945D480565750E8B3EEFF003A8A0CC2A313C6A3897DD404A440397DD40F84A9401057605756FF75D4111A813087114008C745FC017A8D44361202C31AE7EA06BCDCEB0B430CBB40BA558B451C404C0504A1CC40328B4D108D3C00098D341F66810EFF80FF66814EFEFFFF00C212D8021D0850434B8945E00866817E400674196681403EFFFF751257C008140CE8AD401A40318B45E0EB000233C08D65C88B4D10F064890D81685F5E5B03008040715756538B750C408B7D088D05C4C01B8300780800753BB0FF8B02FF407D2E8A06468A27004738C474F22C413C001A1AC980E12002C110044186E08A0338E07400D21AC01CFF0FBEC080EB78F0FF0560BFC011043D5C4001007F046A0020EB15F0FF0DC1046A1300E8BAD9FFFFC70424890144B8FF000133DB90E00C0227E10C1F4738D874F2105053E82CA0288BD88330C404E8222001E00038C30074DA1BC083D8FF8B40D8580BC07509C409EB1A0A000ACA000A40048BC35B0C5E5FA252E1194D100BC9180F84E9E00BE0578B7D0C01481B4EB741B35AB62001E15C260AE48A07742101E00F1D464738FC72060038DC770202E638F8052001D82001C638C4750D004975D733C938C40F14849BA009B98087FF0F82C2904001F7D9E989C000B01D5219C4138BD9C113D8E61D8B00CB33C033DB8BFF8A00060BC08A1F74230B40DB741F464751001E3B0BC003031E31C159C404593B00C375094975D533C9103BC37409A20E7202F76AD98A1F0EE20BCBE00BC11FCB4C8BC10220EC955356E09C1815C00618A0961460011033D250F7F18BD820010CE000D340EB418BC88B5C2003540424106102D1E9D1DBD100EAD1D80BC975F4F780F38BF0F7642418200400442414F7E603D172040E3BE004770872073B01600576014E33D28BC6E05E5BC21000E60D4105C40D0B020AC20D4400A6F18BC233A8D2EB50C20D10C00D0CA102A5CC0DC8C00D1491800010640D8A0C600D0E600D08760800B2A0101B542414E00008E000000CF7DAF7D883DA00A3810F803E51833D816500A08E00751D8B450883F841080F8CAA2191F85A0F8F41619383C020E999A1'
    $bBinary &= '305D0808BF00018B013BDF5E007D253935EC930010007E0B5653E862C3FF00FF5959EB0AA1E0910000108A045823C68584C075004BEB658B154102008BC3C1F8080FB6C800F6444A0180740F8004650AA093884508885D000958EB098065090000885D088BC6566A00008D4DFC6A0351508D4045085057FF350113E81465F7E13420009EAE3BC60075060FB645FCEB0D01A000FD0FB64DFCC1E088080BC10272FF2570C07941011A535633F6396207750248E0B28B4D08668B0100663D5A007709663D1041007203001A89450C0300C58C02418945088B45000C414242663BC60F048481601E663B45087410C0EB79BB014753FF159280600C393521567418C0016684C00140491FD6E01F8495EB50038975FC606757806766808B06465046E846C1A581010E07475047E838C10A40837D0C005959E00D7400066639450C74D583A07DFC005F74C17233810904EB07A40B0FB74D080FC0B7450C5E2BC1801CC11B096034663D009505660BC0A4C9C3D41B7511520C52120D024CB00CC9C3663D00018073146A0150E874B040805985C059750666C003E4C9C3601645FE8001501650001668311DB41611E11EC41C8552C0810274045000FEF56AE017FF6AFA6A3117407011754656E0566A015B53C26AF222605E11158708891D3102EB2256579086416BB1017C446B89B002C78605F101917C3975147E906199616BE8839001D11214A1D1019D016D1DF38A6B6D4106E945656D923A616D7520666D20560000EF03034B8E2060E11E0AF002A01B8366447EE4466DE4EB0C8566F6088975E491663975E40FEC84DA400A0105E0B2956F05210D4EB63A02530AE10E8BF8F0703BB0FE0F8495576E83070584071B116E2B9DF6249D8003DE746007516A5D05001648F6450D0404741C6170C674373BC7207C028BC750A00218E804DCF1026DEB2239751C1075045656259F57536A4A01320B3C72093BFE7085C7473F6F2136CC9F0F6683D09F0915D09F40E19FF1E1005E750719F19FD1F811A0D12A66817D7A08C075347100F028F02C30360D02E44041668B0441EB2311B128FC6A00B4286A01E854DEF6710A18014433F02D8B0445FC20300C0FB7C023F8C1C9C3A1080F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F000F0F000F000F00060064B9A0C47B0000DC0030F40030A0087C00001600182800181A3A00184A0018010066790054007A000C90000CA0000C5655000C30000C40000CDE0006F4410006047A00001A000622050016'
    $bBinary &= '0E0006FC780000EE550006DE0006CA0006CC0026B60500067E00A6707D000024107F0000140006FC7E005400E40003D80003CE0003C2550003B60003660027720003BC55003B8A00079C0003AA0003C4550003D20003E00003EE0003FE5500030C004F2800034000035855000384003F9C00037E000B90550003A20003B60003C40003D0550003DA0003E80003F800030A5580131A80012880013A800154AD80016E800101003A80674C8001AA5E8001728001848001948001AAA28001B88001CC8001A4809BAA9080017E80016A80015A8001AA4A80013680012480011080016AF88013EA8001DC80010500FF4300008103BF19001089070C2826001085056888050B270587056380055F5F474C4F0042414C5F48454150005F53454C45435445004400005F5F4D535638435254890B873A83335D3F08001061800172756E7400696D65206572726F40722000000D0AC03F4C184F535343048103005349044E47880300444F4D4104494E47045236303238000D0A2D20756E6162006C6520746F20696E00697469616C697A65602068656170C30DC1093701C1096E6F7420656E6F00756768207370616308652066C01E6C6F776941080E6174696F6EC70D3651D60D737464D80D35C10D700075726520766972740075616C2066756E63C1C1082063616C6C020AC1090234D6175F6F6E65786990742F617481012074813889C6173139CB3D6F70650016106F6E736FC0036465760C6963C80AC44865787065F0637465644246C955C108C24701C8086D756C7469746890726561644048636BCD0B43D745040D64617461800B0D800A61626E6F726D00400070726F6772616D20407465726D696ECB4B3013E219F209656E20286F6E6D78656E74C0056105E21972056128726775010573E52B3032116105666C6FC00D6E672060706F696E744207200264046564E30F4D6963726F00736F667420566973414135432B2B205204544CE06962726172A087E075614E85C40245C121210A0A50831A023A4058002E2E2E003C09A51C6E61A004756E6B6E906F776E3EEB6E3C52E76902C560014765744C6173047441C0437665506F7030757000006002E3015769006E646F77004D65730073616765426F784100007573657233322E08646C6CE70A625F0010066660006101166000101A016000483A6D6D3A737344006400002C204D000020050101790000004D2F642F81C00000504D000041600000446563656D62657211E1094E6F7666014F6374426F410153657074850241207567757374608D756C0DE2224AE046E100417072694141124D61726368E00046106562727564274A616EFF4201E00CE10BE10A610A6109E10861083DE006796108E1076107610600536061747572640003E109728269220154687572736402205765646E6584015475912301'
    $bBinary &= '4D6F6E02025375E400FC61746107E106E105E1046104E103C1E627A6620010AA60006101E003630010076000E003C004FFA00580066007400821096219C013A014FF80156016401720180019E019C01AA01B83811CE40A6C690010706000956101E9E000ED60006C7767A26A2CE0B224E03D6460CD0500B841E0B61C71000048E80458FFE1E1E0041100FFE8FFE8FFE8FFE8FFE8FFFFE87F747F747F747F747F747F747F74077F747F7473051B00436C6F00736548616E646C658400F7F13A43757272B04785104163C03A00710253733D91A2420000B430286565E5440C3E011003A1024164647209E102002611014D6F6475026C5405410000EF014FE3805D1505C2014C504B1404D00108E4014D515A4279746500546F57696465436885903375710456657273F0552A45D0420CF100452064436F08646554C25900CE025780616974466F72535051206C654F626A505F00C00C0256B36A810A45780046040043D002746552656D066F2006A30300E90257726869746544094DB001113EBC99B503416CE062C0030024F70C6046696C654EF050300B4A5B3405D504FA9813330149500144075402440670034B45524E45424C554F91014973835155086E6963700D001500430160754E657874486F6F0A6BF107FF91054465736B88746F70445400A90293002046726F6D50B160005B13511A4301506F5018D5004603C000030141008602556ED668F004F30073A4056237032401C0410091025570206FE55A80006A0253686F77D5004202B110446C674930540049912179739000506180626501E07073496E666F4100428ED00672656769B0017220486F744B657015FA010A521C01E3B26173796E6389E0005374300700003DD32801D40E00006F02537769E8746368050151110BE315360217951804013016D7D226496E701E7575135002910B9C0355534582529518170041646AD06048546F6B812A6976A01E6740657300F5004C9011754270260156616C75002042E3192D420300005B310E020C010E9E86D100E00A0203A11500641101D844656CA01254045E1203E20B712003410071F1008105D20041204456415049150A99016648F08E6229009FB200E12D0000002F0252746C556E1277201A00CA52286F6D6D5180374C696E1006745834000C0009323487885661726931A19741009D1205A0117472F06F79009BD2008309F0B5F9349C00BB1A321048B2025265E300A8AA0149A6AB43F0356950A276534039E107555073C10F7D01661800456E80216D0100C101104C656176EE02007D008B6140D54453310D537472104028547970B139561B01570030009E0254C49AA538000020A502546C73F51900A2DBD100140DA3B100B20EA4910001146D32021A710598506DD128334E432E6FF0945095930764E4540015A7F100514371080050'
    $bBinary &= 'D30161D0137A709332B2B2540819530B8042B3639F0192015700D2B03F235254326F765300069C1DE4020008337F01630400DFF34FD10900BF25722350410900B97239435088000031B1034F454DB1002EAD701D301A21B465103463722265D1040000B07901496E017601BF014C434D61703BE3063019C0F900D0070D004974D477427100E070780131DC3400AA68F000983000C83000D0C0A9AAF030005041AA23B06E1EF00709B000A024F0051F00006056227001300010300190F001EF413003068000001D30002D5530004730005930006D30007D553000933000AE3000CB3000DD03300091070200030004000005000600070008004009000A000B00D04F4C11F00D446C6C9238416C7440546162315F4552CB5F004469CCB1007361626C6500416C0074546162325F456E1101E05F446903B0436C6F00636B5F53686F775F88486964003C74726C00A80844656C0DA44465736B08746F7008564B657973010D4A50726F63657373025F045A00537461727440427574746F6E0839540061736B4D616E61670C65720D40011A53776974206368696E67111C6261827209496872656164066EFFFF007F003F003F003F003F003F003F00FF3F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F007F0F000F000F000F000F000F000500F8B2C20008003358001009F01100204890001038000C7769006E6C6F676F6E2E65047865012E696E6A646C046C2E0006000050726F006365737333324E650C78740036061E4669727301002043726561746554006F6F6C68656C70330032536E617073686F01012A004B65726E656C0433320349000049006408006C000262005A775100756572795379737400656D496E666F726D206174696F6E011B4E5430444C4C2E0003000B53650044656275675072692076696C6567023C4361006C6C57696E646F7755018D410C0F5780197403074C306F6E67418121880757000C004600060308410053417C5320807F800580138005830B2020636C617373813575731065723332827B677261006D204D616E61676508720053'
    $bBinary &= '00776C5F5472206179576E6480134469007361626C65546173106B4D677280256F667400776172655C4D696328726F7380065C032D735C0043757272656E74560865727300785C506F6CC069636965735C838588CF102005931989D7EA9100EE108101800C8E00288600CF064F00B648001159008450004B08814800D6016400C90F824800026400C50EBE201DB63F003F003F001A0001C000422EC401DA3F001002FB94AB80236000186400FF0400F04003FEF15F0A1F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F00040003B00200FC0FB4B382001D04940010E00143015010BC0010590540EC0358BDEC0128FC071F001F001D00FF000015E6000AFF05026000607400541008E00034E00009E0000843E0004107E4730010011AB855E00011E00088E00012E00064D5E00013E00038E000188108E0008219C000D87200101AE000AAA0E0001BE00068E0001CE12655E00078E00030E00079E00020ADE0007AE12DE000FCE0000CE000018116FC71001005000054C00B64131D6001046401965D68018D6001E11501008E68018F55680190680191680192680193756801036000076000E114C926011402044204A40004608279248221E402A6DFE300A1A511E300819FE0411900407E0A80E200A8E005C1A3DAA3B220F42E81FE644AE400B5FF0515020041E400B6E005CFA2E400A21A00E5A2E8A25B29F70B7EA1220151002B51DA005EDA20005FDA6ADA0232EF05D3D8DEE0F900B800317E2507E41F600016E4443F6100E124E1006131613FC00A000DDD6000066000614761280C6148E400FF6102E100612A6103613B6503E10A6107FDE1000FE40AE14D6102E14D614D610057E102E12EE10235E40141E4014355E40150640652E40253E40057D5F40559B4076C74016D7128300076703000312A72B40A710CF1028055340B81740082F40183F40184537404B025002930009EF400A155F408A4F406A77401B7F409CEF5F401D7F401184011B110710C3100FF0F000F000F000F000F000F000F003F087F0F000F000F000F00'
    $bBinary &= '0F000F000F00000800C8B9335580760010AA7C3000783000743000703000AA6C3000683000603000583000AA503000443000383000303000AA2430002030001C3000183000AA1430001030000C30000830000A043000003000FC750010AAF83000F43000EC3000E030005AD83000D03000F102C87000C0553000B83000AC3000A43000985530008C30008830008430007CB53000683000603000F10A2EF40BB478BAB00ABE3F003D007F04003680F002F90F80002A3138F0F1E0FFFF5053540F120F000F007904005044FF030F000F000500CC79B0090CBBF30975667D67FF68FF54FF1E70003B30005AF455976BF14E3000D43000F37131000E30B530004E30006D300035033A743B5277F35F00B43000D33000F2AB714270022F30004D30006CF47BFF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00030F000F0033B322000A00010010002818005400800DB801001430105C161008000048001260D0001800A4030B3A0100A4033441000A560053005F000A45040052001249004F004E35001E49000A46000B0100BD045CEFFE014F056B05073F044704550001020C5B04006F01004F740000720069006E006741004D69006C006500596E500066006F0023E00034015500B93400033902076201C700A842001500174300236D8000A2658017740073800B4C80088063006B0020005782298A64800777800C2000448012AA73800C74800870823F288049518521700061801679806861A38227010041004D8048008079578135854D8323638259708026695D801F6E8217AF3D852956800172238010872531002E800100005836000B801381877482116E5D804F6C88528334451E44C0066C51C20F6A0023C00D4CC008671B420C413970C037412D67006845401300D0042000A9C00041ADC01E20C03E41057540106C4003AA46C001694015E3C00C2CC0038E32406141630100560017CA1AAA54401461403F65C02861C0028E6B4266C153EB1546000FC0157E4FC427C1394117C54C4103D7402EABC01FC5422042A350C21176400DAD4152424020C11164C2C508C4076A6FC00375401174CA81CB1700BFC029C16ECB0B4D70C56FC31E53C0595A65C009694230C91E44C20756A3C2494FBF000024C01A0044541A6EC0176CC22FC7890904B0FF01041F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F001F00FF1F001F001F001F001F001F001F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F'
    $bBinary &= '000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00010800CCB8000010000064010000002F3036305030983000A530D230D830E83000ED30F530FF30853100A331B931C1310E32001B322132303237320044324C32A732CA3200D232F332103345330096339B33F5330D340013342E343C344234005234603483348E34009A34A634B134BD3400C634CF34D934E13400EE34233528352E35004E355C3575357B35009835BC35D035F335000C362F3643366C3600793687369736A03600A536C236C736CD3600E536EB36F9361A370033373F3753376C370078378C379837DC3700E137E7370738153800303835383B388838009C38A138B538E23800E838053929393D39005D3976399639AA3900CA39DA39E839EE3900FE390C3A123A1C3A00443A683A7E3A8C3A00933AC53BD33BDC3B00EB3BF93B0E3C143C002E3C413C553C633C00843C8E3CA13CB43C00CB3CD93CE73CF73C00023D083D183D233D00293D333D473D623D006C3D733DEC3D013E00113E313E533E693E00793EA63EB83ED33E00183F233F2A3F303F00453F4C3F663F6D3F00733F943F9C3FA33F00C93FCF3FD63FF33F00FA3F000000200000022480B114301A303730003E3059305F306530008D309430C730E7300000312E319531E03100EA31093212321A32002232293234323B32004132693274328232008D32AB32B232C83200D732E43207331733802D33683379338080BC009D33AE33CB33D43300DB33F233F93300342063347A348480BBAD3408BE34D880B9E834FD340004350B352535693500AB35B035C935D73500313688368E36A73680AC36D03671377780A900D93742385C38653808663981C04DBE39063A20153A763A7DC04A943A009F3AA53AAB3AB53A00CD3AD23ADC3AF63A00043B0C3B123B553B00673BC33BDE3BED3B00093C113C373C793C08A83CAE404D0E3DB33D08BA3DC9C049F23DFE3D000E3E153E1C3E223E00493E553E5D3E653E00753E8C3E983E9E3E00AE3EB43EBB3EC83E00CF3ED73EDD3EE33ED0EE3EF63EC04830C000C04800463154315A31743100793188318E319E3100A931BB31CE31D93188DF31E44048F7311440480025322A32333238320048324E3292323833002535303538354B3500513567356E357435007E35843589358F35009F35A835'
    $bBinary &= 'C235D33500D935EC354E36F8360004371337193729372060376A377240948037008937923718381E380029382F384B385138005B3861387B3881380089389838D038DD38003D395739D839DE3900F739AE3ABB3ACA3A802B3B803BD13B1DC0850A2BC0853B40864C3D583D00603D683D703D863D008E3D963D9E3DA63D00B93DC13DEE3D093E00193E1F3E6A3E6F3E828B403DA53EB73EBFC03C00E03EF33E0B3F2B3F00813F933FAE3FB93FA0BE3FC83FCDC18840C08701C03F0530113018302800302E3035303F3058043060408A713076309340309930D330DB40E5FB00300C312531313137043144C24A623180318600319731AE31B831D1003133324B3251327B00328132A332B732E90032F0320533373341103362337740EAC533D3003304340A3417343840345D346C347BC08ABD003400350C3516352A41602845354A35506045B20035FA353F3622373B043770E02492379E37AE0037ED373D3850388E0038A038AF38C138E70038F43802390D39200039473956399839AC01206ED639F239073A1D003A243A5C3A743A19003B303B483B5B3B48103E603E67A020743E78043E7CE020CB3EE53EEC003EF03EF43EF83EFC003E003F043F083F52003F583F5C3F603F64003FCA3FD53FF03FF7343FFC61225040006022003000043021304B307D3080843088308C309020670098309C30A030EA3000F030F430F830FC3080AE31B33100320E601F009A32A032AE327834009434A134AE34C13400CA34D63408351A350A29621B71608F86358B35009335AA35BF35C53500CD35D535E0350E36281A362420913960914936208C3696369B6291BE3600C4363337393757372068377B3790A020BC3702C92066FA37063818388A266090466090A038A7602200B438B838BC38E538000B3925392C39303900343938393C39403920443948399220249C3920A039A4390AA06B303A20373A3C3A406092613A008B3ABD3AC43AC83A80CC3AD03AD43AD8A06C08E03A2A2027343B383B003C3B8A3B933B993B80A53BAA3BB43BBB606E00C93BD03BD53BE63B00023C1C3D373D3F3D00453D4B3D8C3DBE3D80D23DE63D273E58E06C007C3E893E963EA03E00AA3EB23EC03EDE3E00FB3E133F333F8B3F00A13FD43F00600000027CC0293C306130C03100C531E131F431FB31080D3215206A3C325432006F32D8321E334333008E33D633DC33EA332039346934C4E027D8340036354B368336953600A836E43612372037006F3776377C37853708E337096042703875380A94E0B0AE2020C238CA3800D838F63813392B390046399D39B9390F3A8251601C0070000034600F00803190319C31A831A2B4600FF831F8E0934CA0320258A0C28C3690369836029C200CE836F036F4362180059000001CC0000C30A030303430E02080F8A09C00043408340C3400'
    $bBinary &= 'B0080000A841AB342C344C04345C605924352C353450353C3544200A54E0096414356C60817C60818C359400359C35A435AC35C00039C839CC39D039D441A07ADC39E039E460C4EC0039F039F439F839FC0039003A043A083A0C403A103A143A1860C620112059283A2CE035343A38012436483A4C3A503A54443A58605C603A64A0CA6C003A703A803A843A880520A69060A6983A9C3AA0003AA43AB03A4C3B50FE3B40141F001F001F001F001F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F00FF0F000F000F000F000F000F000F000F000000'
    $bBinary = Binary($bBinary)
    Local $tInput = DllStructCreate("byte[" & BinaryLen($bBinary) & "]")
    DllStructSetData($tInput, 1, $bBinary)
    Local $tBuffer = DllStructCreate("byte[" & 16 * DllStructGetSize($tInput) & "]") ; initially oversizing buffer
    Local $a_Call = DllCall("ntdll.dll", "int", "RtlDecompressBuffer", "ushort", 2, "ptr", DllStructGetPtr($tBuffer), "dword", DllStructGetSize($tBuffer), "ptr", DllStructGetPtr($tInput), "dword", DllStructGetSize($tInput), "dword*", 0)
    If @error Or $a_Call[0] Then
        Return SetError(1, 0, "") ; error decompressing
    EndIf
    Local $tOutput = DllStructCreate("byte[" & $a_Call[6] & "]", DllStructGetPtr($tBuffer))
    Return SetError(0, 0, DllStructGetData($tOutput, 1))
EndFunc

Share this post


Link to post
Share on other sites



Where did you get the script from? Do you know who the author is?


Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Share this post


Link to post
Share on other sites

From what I can, this script is structured round the DLL created in _Inline_DLL_WinLockDll(). It used the DllStructCreate function to create the DLL hard coded.

If you want to put a non-dll binary file in, that is much different. AutoIt knows about DLLs so working with DLLs is simpler.

You can use the same principle for a file by putting in the binary, but i'm not really sure how. If I was trying to do this, I would start with swapping DllStructCreate() with _FileCreate() and see how that works.

From there you can start working on working with the file.


Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Share this post


Link to post
Share on other sites

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
Sign in to follow this  
Followers 0