Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode("Pz4=").base64_decode("PD9waHAKJGFkZG9uX3BhdGg9Ii4uLy4uLyI7CmluY2..

Decoded Output download

b'?>'b'<?php
$addon_path="../../";
include $addon_path."includes/start_ajax.php";


if($_REQUEST["total_amount"]>0)
{
       $_REQUEST["cents_1"] = 0;
       $_REQUEST["cents_5"] = 0;
       $_REQUEST["cents_10"] = 0;
       $_REQUEST["cents_20"] = 0;
       $_REQUEST["cents_50"] = 0;
       $_REQUEST["rm_1"] = 0;
       $_REQUEST["rm_5"] = 0;
       $_REQUEST["rm_10"] = 0;
       $_REQUEST["rm_20"] = 0;
       $_REQUEST["rm_50"] = 0;
       $_REQUEST["rm_100"] = 0;
       
          
    
}

function  mon_render_number_picker($vfield,$vtype,$vlabel)
{

    global $mode_button_event;

    echo "<div id=\'num_picker_".$vfield."\' style=\'opacity:0.98;z-index:2000;top:50px;width:500px;left:30%;visibility:hidden;border-radius:20px;position:absolute;padding:10px;border:0px solid #000000;background:#222222;color:#eeeeee;\' >";


          echo "<div style=\'color:#fff;background:none;padding:8px;font-size:50px;\' >".$vlabel."</div>";
          echo "<div id=\'num_picker_preview_".$vfield."\' style=\'background:none;float:left;padding:8px;font-size:40px;\' ></div>";


          echo "<table cellpadding=0 align=right >";
            echo "<tr>";

                for($num=1;$num<=3;$num++)
                {
                    echo "<td>";
                    echo "<div class=\'touch_box_quantity\' style=\'background:#000;border:1px solid #000;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"document.closingform.".$vfield.".value = document.closingform.".$vfield.".value + \'".$num."\'; document.getElementById(\'num_picker_preview_".$vfield."\').innerHTML = document.closingform.".$vfield.".value ;\" ";
                            echo " >";
                    echo "".$num."";
                    echo "</div>";
                    echo "</td>";
                }

            echo "</tr>";


            echo "<tr>";

                for($num=4;$num<=6;$num++)
                {
                    echo "<td>";
                    echo "<div class=\'touch_box_quantity\' style=\'background:#000;border:1px solid #000;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"document.closingform.".$vfield.".value = document.closingform.".$vfield.".value + \'".$num."\'; document.getElementById(\'num_picker_preview_".$vfield."\').innerHTML = document.closingform.".$vfield.".value ;\" ";
                            echo " >";
                    echo "".$num."";
                    echo "</div>";
                    echo "</td>";
                }

            echo "</tr>";


            echo "<tr>";

                for($num=7;$num<=9;$num++)
                {
                    echo "<td>";
                    echo "<div class=\'touch_box_quantity\' style=\'background:#000;border:1px solid #000;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"document.closingform.".$vfield.".value = document.closingform.".$vfield.".value + \'".$num."\'; document.getElementById(\'num_picker_preview_".$vfield."\').innerHTML = document.closingform.".$vfield.".value ;\" ";
                            echo " >";
                    echo "".$num."";
                    echo "</div>";
                    echo "</td>";
                }

            echo "</tr>";


            echo "<tr>";

                echo "<td>";
                    if($vtype=="F")
                    {
                    $num=".";
                    echo "<div class=\'touch_box_quantity\' style=\'background:#000;border:1px solid #000;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"document.closingform.".$vfield.".value = document.closingform.".$vfield.".value + \'".$num."\'; document.getElementById(\'num_picker_preview_".$vfield."\').innerHTML = document.closingform.".$vfield.".value ;\" ";
                            echo " >";
                    echo "".$num."";
                    echo "</div>";
                    }

                echo "</td>";


                echo "<td>";

                    $num=0;
                    echo "<div class=\'touch_box_quantity\' style=\'background:#000;border:1px solid #000;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"document.closingform.".$vfield.".value = document.closingform.".$vfield.".value + \'".$num."\'; document.getElementById(\'num_picker_preview_".$vfield."\').innerHTML = document.closingform.".$vfield.".value ;\" ";
                            echo " >";
                    echo "".$num."";
                    echo "</div>";

                echo "</td>";
            echo "</tr>";



            echo "<tr>";


                echo "<td>";

                     echo "<div class=\'touch_box_quantity\' style=\'background:#E74C3C;border:1px solid #E74C3C;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"document.closingform.".$vfield.".value = \'\' ;document.getElementById(\'num_picker_preview_".$vfield."\').innerHTML=\'\';\" ";
                            echo " >";
                    echo "C";
                    echo "</div>";
                echo "</td>";


                echo "<td>";
                    echo "<div class=\'touch_box_quantity\' style=\'background:#27AE60;border:1px solid #27AE60;opacity:100;\' ";
                            echo " ".$mode_button_event."=\"mon_submit_form(\'closingform\',\'screen/fastcounter/closing.php\',\'window_pop_container\');document.getElementById(\'num_picker_".$vfield."\').style.visibility=\'hidden\';\" ";
                            echo " >";
                    echo "OK";
                    echo "</div>";

                echo "</td>";

            echo "</tr>";


        echo "</table>";






    echo "</div>";

}



$total_cash_transaction_balance = 0;
$query_cash_transaction="select sum(tra_amount) as total 
            from t_".$key_table_prefix."_cash_transaction
            where ifnull(tra_batch,\'\') = \'\' ";
$result_cash_transaction = mysql_query($query_cash_transaction);
if($line_cash_transaction = mysql_fetch_array($result_cash_transaction,MYSQL_ASSOC))
{

    $total_cash_transaction_balance = $line_cash_transaction["total"]+0;
    

}






//get unclosed sales:
$query_sales="select *
           from t_".$key_table_prefix."_sales
           where  sal_status = \'PAID\'
           and ifnull(sal_closing_batch,\'\') = \'\'
           ";
$result_sales = mysql_query($query_sales);
while($line_sales = mysql_fetch_array($result_sales,MYSQL_ASSOC))
{

    if($line_sales["sal_payment_code"]=="MULTIPLE")
    {
        for($pmode=1;$pmode<=5;$pmode++)
        {
            
            if($line_sales["sal_payment_mode_".$pmode.""]!="")
            {
                 $closing_amount_by_mode[$line_sales["sal_payment_mode_".$pmode.""]] = $closing_amount_by_mode[$line_sales["sal_payment_mode_".$pmode.""]] + $line_sales["sal_payment_mode_".$pmode."_amount"]+0;
            }
            
        }
        
        
    }
    else
    {
        
        $closing_amount_by_mode[$line_sales["sal_payment_code"]] = $closing_amount_by_mode[$line_sales["sal_payment_code"]] + $line_sales["sal_collection_amount"];
    }


    
    $total_bills = $total_bills + 1;
    
    
    $total_bills_by_person[$line_sales["sal_cashier_name"]] = $total_bills_by_person[$line_sales["sal_cashier_name"]] + 1;
    
       
}

   

//collect all cash mode
$total_sales = 0;
$total_cash_sales = 0;
$total_non_cash_sales = 0;
if(isset($closing_amount_by_mode))
{
    foreach($closing_amount_by_mode as $mode_key=>$mode_value)
    {
        
        $query_payment_mode="select *
                            from t_".$key_table_prefix."_payment_mode
                            where pym_code = \'".$mode_key."\' ";
        $result_payment_mode = mysql_query($query_payment_mode);
        if($line_payment_mode = mysql_fetch_array($result_payment_mode,MYSQL_ASSOC))
        {
            
            if($line_payment_mode["pym_is_cash"]=="YES")
            {
               $total_cash_sales  = $total_cash_sales + $mode_value +0;
            }
            else
            {
                $total_non_cash_sales = $total_non_cash_sales +  $mode_value +0;
            }
            
            
            $total_sales=$total_sales + $mode_value +0;
        }
            
            
            
            
            
    }
   
}
   
   
   
/*
echo "<pre>";
print_r($closing_amount_by_mode);
echo "</pre>";
*/

















if ($_SERVER[REQUEST_METHOD] == \'POST\') {


    //echo $_REQUEST["initial_cash"];
    $query_check="select *
                from t_".$key_table_prefix."_closing
                where cls_status =\'DRAFT\' ";
    $result_check = mysql_query($query_check);
    if($line_check = mysql_fetch_array($result_check,MYSQL_ASSOC))
    {




    }
    else{

        $query_insert=" insert into t_".$key_table_prefix."_closing
                        (
                        cls_batch,
                        cls_status,
                        created_date,
                        modified_date,
                        created_by,
                        modified_by
                        )
                        values
                        (
                        \'DRAFT\',
                        \'DRAFT\',
                        \'".date("Y-m-d H:i:s")."\',
                        \'".date("Y-m-d H:i:s")."\',
                        \'".$CurrentUserID."\',
                        \'".$CurrentUserID."\'
                        );
                ";
        $result_insert = mysql_query($query_insert);
    }




    if($_REQUEST["user_action"]=="CONFIRM_NO_COUNT")
    {
        
            $total_cash=0;
    }
    else
    {
        
            $total_cash=0;
    
            if($_REQUEST["total_amount"]>0)
            {
                
                $total_cash=$_REQUEST["total_amount"];
            }
            else
            {
                
                  
        
                $total_cash=$total_cash + ( ($_REQUEST["cents_1"]+0)   * 0.01 );
                $total_cash=$total_cash + ( ($_REQUEST["cents_5"]+0)   * 0.05 );
                $total_cash=$total_cash + ( ($_REQUEST["cents_10"]+0)   * 0.10 );
                $total_cash=$total_cash + ( ($_REQUEST["cents_20"]+0)   * 0.20 );
                $total_cash=$total_cash + ( ($_REQUEST["cents_50"]+0)   * 0.50 );
            
                $total_cash=$total_cash + ( ($_REQUEST["rm_1"]+0)   * 1 );
                $total_cash=$total_cash + ( ($_REQUEST["rm_5"]+0)   * 5 );
                $total_cash=$total_cash + ( ($_REQUEST["rm_10"]+0)   * 10 );
                $total_cash=$total_cash + ( ($_REQUEST["rm_20"]+0)   * 20 );
                $total_cash=$total_cash + ( ($_REQUEST["rm_50"]+0)   * 50 );
                $total_cash=$total_cash + ( ($_REQUEST["rm_100"]+0)   * 100 );
            }
          
            
    
    }
    
    
    
    
    

    if($_REQUEST["user_action"]=="CONFIRM")
    {

        $this_status="CLOSED";
        $this_batch=date("YmdHis");
    }
    elseif($_REQUEST["user_action"]=="CONFIRM_NO_COUNT")
    {
        $this_status="CLOSED";
        $this_batch=date("YmdHis");
        
    }
    else{
        $this_status="DRAFT";

    }






    if($_REQUEST["user_action"]=="CONFIRM_NO_COUNT")
    {
        $total_different=  0;
        $_REQUEST["initial_cash"]=0;
        
        
        $_REQUEST["cents_1"]=0;
        $_REQUEST["cents_5"]=0;
        $_REQUEST["cents_10"]=0;
        $_REQUEST["cents_20"]=0;
        $_REQUEST["cents_50"]=0;
        
        $_REQUEST["rm_1"]=0;
        $_REQUEST["rm_5"]=0;
        $_REQUEST["rm_10"]=0;
        $_REQUEST["rm_20"]=0;
        $_REQUEST["rm_50"]=0;
        $_REQUEST["rm_100"]=0;
        
        $total_cash=0;
        
        $closing_no_counting="NO_COUNT";
        
        
    }
    else
    {
        $total_different=     $total_cash - ( ($_REQUEST["initial_cash"]+0) + $total_cash_sales + $total_cash_transaction_balance );    
    }



    
    



        $query_update="update t_".$key_table_prefix."_closing set

                            device_code = \'".$sys_system_master_setting_line["set_device_code"]."\',
                            cls_person = \'".$CurrentUserFullName."\',
                            cls_batch = \'".$this_batch."\',
                            cls_initial_cash = \'".($_REQUEST["initial_cash"]+0)."\',
                            cls_money_cents_1 = \'".($_REQUEST["cents_1"]+0)."\',
                            cls_money_cents_5 = \'".($_REQUEST["cents_5"]+0)."\',
                            cls_money_cents_10 = \'".($_REQUEST["cents_10"]+0)."\',
                            cls_money_cents_20 = \'".($_REQUEST["cents_20"]+0)."\',
                            cls_money_cents_50 = \'".($_REQUEST["cents_50"]+0)."\',
                            cls_money_ringgit_1 = \'".($_REQUEST["rm_1"]+0)."\',
                            cls_money_ringgit_5 = \'".($_REQUEST["rm_5"]+0)."\',
                            cls_money_ringgit_10 = \'".($_REQUEST["rm_10"]+0)."\',
                            cls_money_ringgit_20 = \'".($_REQUEST["rm_20"]+0)."\',
                            cls_money_ringgit_50 = \'".($_REQUEST["rm_50"]+0)."\',
                            cls_money_ringgit_100 = \'".($_REQUEST["rm_100"]+0)."\',

                            
                            cls_cash_transaction_balance = \'".($total_cash_transaction_balance+0)."\',
                            
                            
                            cls_closing_cash = \'".($total_cash+0)."\',
                            
                            cls_total_sales = \'".($total_sales+0)."\',
                            
                            cls_total_sales_cash = \'".($total_cash_sales+0)."\',
                            cls_total_sales_non_cash = \'".($total_non_cash_sales+0)."\', "; 
                            
            $pmode=1;
            if(isset($closing_amount_by_mode))
            {
                foreach($closing_amount_by_mode as $mode_key=>$mode_value)
                {
                       
                    $query_update=$query_update."  cls_mode_".$pmode." = \'".$mode_key."\', ";
                    $query_update=$query_update."  cls_mode_".$pmode."_amount = \'".($mode_value+0)."\', ";
                    
                    $pmode++;
                }
            }
                            
          
          
          
          
            $query_update=$query_update."
          
                    
                    cls_total_different=\'".($total_different+0)."\',
                    cls_no_count =\'".$closing_no_counting."\',
                    cls_status =\'".$this_status."\'
                    where cls_status=\'DRAFT\' ; ";
                            
                            
                            
    $result_update = mysql_query($query_update) or die("Error0").mysql_error();


    if(($_REQUEST["user_action"]=="CONFIRM")or($_REQUEST["user_action"]=="CONFIRM_NO_COUNT"))
    {
        $query_update="update t_".$key_table_prefix."_sales
                    set sal_closing_batch = \'".$this_batch."\',
                    
                    modified_by =\'".$CurrentUserID."\',
                    modified_date =\'".date("Y-m-d H:i:s")."\'
                    where (sal_status = \'PAID\' or sal_status = \'REJECTED\')
                    and ifnull(sal_closing_batch,\'\') =\'\'
                    ";

        $result_update = mysql_query($query_update) or die("Error1").mysql_error();

           
        $query_update="update t_".$key_table_prefix."_cash_transaction
                    set tra_batch = \'".$this_batch."\'
                    where  ifnull(tra_batch,\'\') =\'\'
                    ";

        $result_update = mysql_query($query_update) or die("Error2").mysql_error();
        
        
        
        
        if($sys_printing_switch)
	{
            include "print_closing.php";
        }
    }








}

 //echo $_REQUEST["initial_cash"];
    $query_check="select *
                from t_".$key_table_prefix."_closing
                where cls_status =\'DRAFT\' ";
    $result_check = mysql_query($query_check);
    if($line_check = mysql_fetch_array($result_check,MYSQL_ASSOC))
    {



            $_REQUEST["initial_cash"] = $line_check["cls_initial_cash"] +0 ;

            $_REQUEST["cents_1"] = $line_check["cls_money_cents_1"]+0;
            $_REQUEST["cents_5"] = $line_check["cls_money_cents_5"]+0;
            $_REQUEST["cents_10"] = $line_check["cls_money_cents_10"]+0;
            $_REQUEST["cents_20"] = $line_check["cls_money_cents_20"]+0;
            $_REQUEST["cents_50"] = $line_check["cls_money_cents_50"]+0;

            $_REQUEST["rm_1"] = $line_check["cls_money_ringgit_1"]+0;
            $_REQUEST["rm_5"] = $line_check["cls_money_ringgit_5"]+0;
            $_REQUEST["rm_10"] = $line_check["cls_money_ringgit_10"]+0;
            $_REQUEST["rm_20"] = $line_check["cls_money_ringgit_20"]+0;
            $_REQUEST["rm_50"]  = $line_check["cls_money_ringgit_50"]+0;
            $_REQUEST["rm_100"] = $line_check["cls_money_ringgit_100"]+0;


    }


    echo "<table width=100% border=0 cellpadding=1 >";
        echo "<tr>";
            echo "<td  valign=top >";
                echo "<div class=\'fa-stack fa-lg\' >";
                    echo \'<i class="fa fa-circle fa-stack-2x" style="color:#000;" ></i><i class="fa fa-trophy fa-stack-1x" ></i>\';
                echo "</div>";
                echo "<font style=\'font-size:30px;\'><b>Cashier Closing </b></font><br>";
	    echo "</td>";


	    echo "<td valign=top >";
		echo "<div style=\'float:right;cursor:pointer;\' class=\'fa-stack fa-lg\' ".$mode_button_event."=\"mon_send_get(\'screen/fastcounter/main.php\',\'div_content\');mon_hide_object(document.getElementById(\'window_pop\'));document.getElementById(\'window_pop_container\').innerHTML=\'\';\"  >";
		    echo \'<i class="fa fa-circle fa-stack-2x" style="color:#E74C3C;" ></i><i class="fa fa-times fa-stack-1x"></i>\';
		echo "</div>";
            echo "</td>";
        echo "</tr>";
    echo "</table>";



    echo "<form name=\'closingform\' action=\'return false\' >";



            echo "<table cellpadding=5 width=90% border=0>";

                echo "<tr>";
                    echo "<td>";
                        //echo "Initial Cash Amount in Drawer: ";
                        
                        
                    echo "</td>";

                    echo "<td width=200  >";
                        $_REQUEST["initial_cash"]=0;
                        echo "<input type=hidden  class=textbox_m name=\'initial_cash\' value=\'".$_REQUEST["initial_cash"]."\'
                         onfocus=blur() 
                                                        >";
                                                        //onclick=\"this.value=\'\';document.getElementById(\'num_picker_initial_cash\').style.visibility=\'visible\';\"
                                                        //mon_render_number_picker(\'initial_cash\',\'F\',\'Initial Cash\');
                    echo "</td>";
                echo "</tr>";


                /*

                echo "<tr>";
                    echo "<td>";
                        echo "Total Sales for this Session: ";
                    echo "</td>";

                    echo "<td >";


                        echo "RM <b>".$total_sales."</b>";
                        echo " ( ".$total_bills." Bills )";

                    echo "</td>";
                echo "</tr>";

                */

                
           
                

                echo "<tr>";
                    echo "<td valign=top >";
                        echo "Total Cash Counted during Closing: <font color=#ff000 >(Exclude Floating)</font> ";
                    
                        echo "<table border=0 >";
                            echo "<tr>";
                                echo "<td valign=top >";

                                    if($_REQUEST["total_amount"]>0)
                                    {
                                        echo "<table style=\'border:2px solid #555;border-radius:10px;\' cellpadding=5 width=350>";
                                        
                                    }
                                    else
                                    {
                                        echo "<table style=\'border:2px solid #E74C3C;border-radius:10px;\' cellpadding=5 width=350>";
                                        
                                    }
                                        

                                            echo "<tr>";

                                                echo "<td width=80 >RM 1";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'rm_1\' value=\'".$_REQUEST["rm_1"]."\'
                                                        onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_rm_1\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'rm_1\',\'D\',\'RM 1\');

                                                echo "</td>";
                                                
                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["rm_1"]*1),2,".",",");
                                                echo "</td>";
                                                

                                            echo "</tr>";


                                            echo "<tr>";

                                                echo "<td>RM 5";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'rm_5\' value=\'".$_REQUEST["rm_5"]."\'
                                                       onfocus=blur()  onclick=\"this.value=\'\';document.getElementById(\'num_picker_rm_5\').style.visibility=\'visible\';\"
                                                        >";
                                                    mon_render_number_picker(\'rm_5\',\'D\',\'RM 5\');
                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["rm_5"]*5),2,".",",");
                                                echo "</td>";
                                                
                                            echo "</tr>";



                                            echo "<tr>";

                                                echo "<td>RM 10";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'rm_10\' value=\'".$_REQUEST["rm_10"]."\'
                                                         onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_rm_10\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'rm_10\',\'D\',\'RM 10\');
                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["rm_10"]*10),2,".",",");
                                                echo "</td>";
                                                
                                            echo "</tr>";



                                            echo "<tr>";

                                                echo "<td>RM 20";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'rm_20\' value=\'".$_REQUEST["rm_20"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_rm_20\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'rm_20\',\'D\',\'RM 20\');

                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["rm_20"]*20),2,".",",");
                                                echo "</td>";
                                                
                                            echo "</tr>";



                                            echo "<tr>";

                                                echo "<td>RM 50";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'rm_50\' value=\'".$_REQUEST["rm_50"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_rm_50\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'rm_50\',\'D\',\'RM 50\');

                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["rm_50"]*50),2,".",",");
                                                echo "</td>";
                                                
                                                
                                            echo "</tr>";


                                            echo "<tr>";

                                                echo "<td>RM 100";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'rm_100\' value=\'".$_REQUEST["rm_100"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_rm_100\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'rm_100\',\'D\',\'RM 100\');

                                                echo "</td>";
                                                
                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["rm_100"]*100),2,".",",")."</font>";
                                                echo "</td>";
                                                

                                            echo "</tr>";


                                        echo "</table>";


                                echo "</td><td valign=top >";

                                
                                if($_REQUEST["total_amount"]>0)
                                    {
                                        echo "<table style=\'border:2px solid #555;border-radius:10px;\' cellpadding=5 width=350>";
                                        
                                    }
                                    else
                                    {
                                        echo "<table style=\'border:2px solid #E74C3C;border-radius:10px;\' cellpadding=5 width=350>";
                                        
                                    }
                                
                                         

                                            echo "<tr>";

                                                echo "<td width=80 >1 cents";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'cents_1\' value=\'".$_REQUEST["cents_1"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_cents_1\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'cents_1\',\'D\',\'1 Cent\');
                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["cents_1"]*0.01),2,".",",");
                                                echo "</td>";
                                                
                                                
                                                
                                            echo "</tr>";


                                            echo "<tr>";

                                                echo "<td>5 cents";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'cents_5\' value=\'".$_REQUEST["cents_5"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_cents_5\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'cents_5\',\'D\',\'5 Cents\');
                                                echo "</td>";
                                                
                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["cents_5"]*0.05),2,".",",");
                                                echo "</td>";

                                            echo "</tr>";



                                            echo "<tr>";

                                                echo "<td>10 cents";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'cents_10\' value=\'".$_REQUEST["cents_10"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_cents_10\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'cents_10\',\'D\',\'10 Cents\');
                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["cents_10"]*0.1),2,".",",");
                                                echo "</td>";
                                                
                                            echo "</tr>";



                                            echo "<tr>";

                                                echo "<td>20 cents";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'cents_20\' value=\'".$_REQUEST["cents_20"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_cents_20\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'cents_20\',\'D\',\'20 Cents\');
                                                echo "</td>";

                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["cents_20"]*0.2),2,".",",");
                                                echo "</td>";
                                                
                                            echo "</tr>";



                                            echo "<tr>";

                                                echo "<td>50 cents";
                                                echo "</td>";

                                                echo "<td>";
                                                    echo "x <input  style=\'font-size:20px;text-align:center\' type=text class=textbox_s name=\'cents_50\' value=\'".$_REQUEST["cents_50"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_cents_50\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'cents_50\',\'D\',\'50 Cents\');
                                                echo "</td>";
                                                
                                                echo "<td width=120 >";
                                                    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["cents_50"]*0.5),2,".",",");
                                                echo "</td>";
                                                

                                            echo "</tr>";



                                        echo "</table>";

                                echo "</td><td valign=top width=80 align=center >";
                        
                                        echo "<br><br>OR<br>";
                                echo "</td><td valign=top >";

                                
                                    if($_REQUEST["total_amount"]>0)
                                    {
                                        echo "<table style=\'border:2px solid #E74C3C;border-radius:10px;\' cellpadding=5 width=10>";
                                    }
                                    else
                                    {
                                        echo "<table style=\'border:2px solid #555;border-radius:10px;\' cellpadding=5 width=10>";
                                    }
                                    
                                    
                                    
                                         

                                            echo "<tr>";

                                                echo "<td align=center><br>Total Amount";
                                               
                                                    echo "<br><input  style=\'font-size:20px;text-align:center\' type=text class=textbox_m name=\'total_amount\' value=\'".$_REQUEST["total_amount"]."\'
                                                     onfocus=blur() onclick=\"this.value=\'\';document.getElementById(\'num_picker_total_amount\').style.visibility=\'visible\';\"
                                                        >";
                                                        mon_render_number_picker(\'total_amount\',\'F\',\'Total Amount\');
                                                
                                                //    echo " = <font color=#2ECC71>RM ".number_format(($_REQUEST["total_amount"]),2,".",",");
                                                
                                                echo "<br><br>";
                                                echo "</td>";
                                                

                                            echo "</tr>";
                                        echo "</table>";

                                echo "</td>";
                                
                                
                            echo "</tr>";
                        echo "</table>";


                    if($_REQUEST["total_amount"]>0)
                    {
                        $total_cash=$_REQUEST["total_amount"];
                    }
                    else
                    {
                        $total_cash=0;
                        $total_cash=$total_cash + ( ($_REQUEST["cents_1"]+0)   * 0.01 );
                        $total_cash=$total_cash + ( ($_REQUEST["cents_5"]+0)   * 0.05 );
                        $total_cash=$total_cash + ( ($_REQUEST["cents_10"]+0)   * 0.10 );
                        $total_cash=$total_cash + ( ($_REQUEST["cents_20"]+0)   * 0.20 );
                        $total_cash=$total_cash + ( ($_REQUEST["cents_50"]+0)   * 0.50 );
    
                        $total_cash=$total_cash + ( ($_REQUEST["rm_1"]+0)   * 1 );
                        $total_cash=$total_cash + ( ($_REQUEST["rm_5"]+0)   * 5 );
                        $total_cash=$total_cash + ( ($_REQUEST["rm_10"]+0)   * 10 );
                        $total_cash=$total_cash + ( ($_REQUEST["rm_20"]+0)   * 20 );
                        $total_cash=$total_cash + ( ($_REQUEST["rm_50"]+0)   * 50 );
                        $total_cash=$total_cash + ( ($_REQUEST["rm_100"]+0)   * 100 );

                    }


            
                        echo "<br>Total Amount Counted: <font size=8 color=#2ECC71 >RM ".number_format($total_cash+0,2,".",",")."</font><br>";


                       // echo "<input type=button value=\'Calculate & Save Draft\' class=button_blue onclick=\"mon_submit_form(\'closingform\',\'screen/fastcounter/closing.php\',\'window_pop_container\')\" >";
                    echo "</td>";
                echo "</tr>";


                $total_different =  $total_cash - ( $_REQUEST["initial_cash"] + $total_sales);




    echo "</table>";
    
    
    
    //=============================================================================================================================
    

echo "<hr style=\'border:0px solid #000;border-top:2px solid #2C3E50;\'>";




            echo "<input type=hidden name=\'user_action\' value=\'\' >";


            echo "<table width=90% cellpadding=10 border=0>";
                echo "<tr>";
                    echo "<td width=180 valign=top >";

                    $query_unclose="select * from t_".$key_table_prefix."_sales
                            where sal_status = \'PAID\'
                            and ifnull(sal_closing_batch,\'\') =\'\'
                            ";

                    $result_unclose = mysql_query($query_unclose) or die("Error").mysql_error();

                    if(mysql_num_rows($result_unclose)>0)
                    {

                        
                        
                        
                        
                        echo "<font color=#2ECC71 size=2>Total of ".mysql_num_rows($result_unclose)." bill(s) for closing.</font><br>";
                        
                        echo "<font size=2>";
                            $query_unclose_grouping = "select
                                                    count(sal_id) as total_bills, sal_payment_text
                                                    from t_".$key_table_prefix."_sales
                                                    where sal_status = \'PAID\'
                                                    and ifnull(sal_closing_batch,\'\') =\'\'
                                                    group by sal_payment_text 
                                                    ";
    
                            $result_unclose_grouping = mysql_query($query_unclose_grouping) or die("Error").mysql_error();
                            while($line_unclose_grouping = mysql_fetch_array($result_unclose_grouping,MYSQL_ASSOC))
                            {
                                
                                
                                echo "<span class=\'fa fa-file-text-o fa-1x\'></span> ".$line_unclose_grouping["sal_payment_text"].": ".$line_unclose_grouping["total_bills"]."<br>";
                                
                            }
                        echo "</font>";
                        
                        
                        
                     echo "</td>";
                     
                     
                     
                        
                        
                        
                     echo "<td width=180 valign=top >";
                     
                        echo "<font color=#2ECC71 size=2>Bill(s) Transacted by Person.</font><br>";
                        
                        
                        echo "<font size=2>";
                        
                        if(isset($total_bills_by_person))
                        {
                            foreach($total_bills_by_person as $person_name => $person_value)
                            {
                                echo "<span class=\'fa fa-male fa-1x\'></span> ".$person_name.": ".$person_value."<br>";
                                
                            }
                        }
                        echo "</font>";
                        
                     
                     echo "</td>";
                        
                        
                        
                        
                        
                    
                       
                       
                       
                            //===========================================Closing with Counting===================================================
                            echo "<td align=center >";
                            
                                        echo "<div id=\'div_closing_confirmation\' style=\'text-align:left;margin-top:-200px;z-index:2000;visibility:hidden;position:absolute;right:10%;width:420px;height:200px;background:#34495E;padding:10px;border-radius:10px;\'>";
                                                echo "Confirm Closing with Counting?<br>";
                 
                 
                                                echo "<div class=\'fa-stack fa-2x\' style=\'float:right;\'
                                                     ".$mode_button_event."=\"document.closingform.user_action.value=\'CONFIRM\';mon_submit_form(\'closingform\',\'screen/fastcounter/closing.php\',\'window_pop_container\');mon_hide_object(document.getElementById(\'window_pop\'));\"
                                                         \">";
                                                     echo \'<i class="fa fa-circle fa-stack-2x" style="color:#27AE60;" ></i><i class="fa fa-check fa-stack-1x"></i>\';
                                                echo "</div>";
                 
                 
                 
                                                echo "<div class=\'fa-stack fa-2x\' style=\'float:right;\'
                                                     ".$mode_button_event."=\"document.getElementById(\'div_closing_confirmation\').style.visibility=\'hidden\'; \"
                                                     >";
                                                     echo \'<i class="fa fa-circle fa-stack-2x" style="color:#E74C3C;" ></i><i class="fa fa-times fa-stack-1x"></i>\';
                                                echo "</div>";
                 
                                        echo "</div>";
                 
                                        
                                        
                                        
                                        
                                        
                                        echo "<div class=\'fa-stack fa-lg\'
                                            ".$mode_button_event."=\"document.getElementById(\'div_closing_confirmation\').style.visibility=\'visible\'; \"
                
                                            >";
                                            echo \'<i class="fa fa-circle fa-stack-2x" style="color:#27AE60;" ></i><i class="fa fa-check fa-stack-1x"></i>\';
                                        echo "</div>";
                                        
                                        echo "<br>";
                                        echo "<font size=2>Close with Money Counting</font>";
                                
                            echo "</td>";
                            
                     
                     
                     
                     
                     
                            //===========================================Closing without Counting===================================================       
                            echo "<td align=center >";
                            
                            
                            
                                        echo "<div id=\'div_closing_confirmation_no_count\' style=\'text-align:left;margin-top:-200px;z-index:2000;visibility:hidden;position:absolute;right:10%;width:420px;height:200px;background:#34495E;padding:10px;border-radius:10px;\'>";
                 
                                                echo "Confirm Closing and Count Later?<br>";
                 
                 
                                                echo "<div class=\'fa-stack fa-2x\' style=\'float:right;\'
                                                     ".$mode_button_event."=\"document.closingform.user_action.value=\'CONFIRM_NO_COUNT\';mon_submit_form(\'closingform\',\'screen/fastcounter/closing.php\',\'window_pop_container\');mon_hide_object(document.getElementById(\'window_pop\'));\"
                                                         \">";
                                                     echo \'<i class="fa fa-circle fa-stack-2x" style="color:#F39C12;" ></i><i class="fa fa-check fa-stack-1x"></i>\';
                                                echo "</div>";
                 
                 
                 
                                                echo "<div class=\'fa-stack fa-2x\' style=\'float:right;\'
                                                     ".$mode_button_event."=\"document.getElementById(\'div_closing_confirmation_no_count\').style.visibility=\'hidden\'; \"
                                                     >";
                                                     echo \'<i class="fa fa-circle fa-stack-2x" style="color:#E74C3C;" ></i><i class="fa fa-times fa-stack-1x"></i>\';
                                                echo "</div>";
                 
                                        echo "</div>";
                                        
                                        
                                        
                        
                                        echo "<div class=\'fa-stack fa-lg\'
                                           ".$mode_button_event."=\"document.getElementById(\'div_closing_confirmation_no_count\').style.visibility=\'visible\'; \"
               
                                           >";
                                           echo \'<i class="fa fa-circle fa-stack-2x" style="color:#F39C12;" ></i><i class="fa fa-check fa-stack-1x"></i>\';
                                        echo "</div>";
                                       
                                        echo "<br>";
                                        echo "<font size=2>Close but Count Later</font>";
                                       
                            echo "</td>";
                     
                        
                        
                        
                    }
                    else{



                        echo "<div style=\'background:#E74C3C;border-radius:10px;padding:20px;width:300px;\' id=\'pay_error_message\'>";

                                echo "No Unclose Bill(s)";

                        echo "</div>";


                    }







                    echo "</td>";
                echo "</tr>";

            echo "</table>";



           // echo "<input type=button value=\'Confirm Closing\' class=button_blue onclick=\"document.closingform.user_action.value=\'CONFIRM\';mon_hide_object(document.getElementById(\'window_pop\'));mon_submit_form(\'closingform\',\'screen/fastcounter/closing.php\',\'window_pop_container\')\" >";
           // echo " <input type=button value=\'Close Window\' class=button_red onclick=\"mon_send_get(\'screen/fastcounter/main.php\',\'div_content\');mon_hide_object(document.getElementById(\'window_pop\'));\"  >";
    echo "</form>";




$addon_path="../../";
include $addon_path."includes/end_ajax.php";
?>'

Did this file decode correctly?

Original Code

<?php eval(base64_decode("Pz4=").base64_decode("PD9waHAKJGFkZG9uX3BhdGg9Ii4uLy4uLyI7CmluY2x1ZGUgJGFkZG9uX3BhdGguImluY2x1ZGVzL3N0YXJ0X2FqYXgucGhwIjsKCgppZigkX1JFUVVFU1RbInRvdGFsX2Ftb3VudCJdPjApCnsKICAgICAgICRfUkVRVUVTVFsiY2VudHNfMSJdID0gMDsKICAgICAgICRfUkVRVUVTVFsiY2VudHNfNSJdID0gMDsKICAgICAgICRfUkVRVUVTVFsiY2VudHNfMTAiXSA9IDA7CiAgICAgICAkX1JFUVVFU1RbImNlbnRzXzIwIl0gPSAwOwogICAgICAgJF9SRVFVRVNUWyJjZW50c181MCJdID0gMDsKICAgICAgICRfUkVRVUVTVFsicm1fMSJdID0gMDsKICAgICAgICRfUkVRVUVTVFsicm1fNSJdID0gMDsKICAgICAgICRfUkVRVUVTVFsicm1fMTAiXSA9IDA7CiAgICAgICAkX1JFUVVFU1RbInJtXzIwIl0gPSAwOwogICAgICAgJF9SRVFVRVNUWyJybV81MCJdID0gMDsKICAgICAgICRfUkVRVUVTVFsicm1fMTAwIl0gPSAwOwogICAgICAgCiAgICAgICAgICAKICAgIAp9CgpmdW5jdGlvbiAgbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCR2ZmllbGQsJHZ0eXBlLCR2bGFiZWwpCnsKCiAgICBnbG9iYWwgJG1vZGVfYnV0dG9uX2V2ZW50OwoKICAgIGVjaG8gIjxkaXYgaWQ9J251bV9waWNrZXJfIi4kdmZpZWxkLiInIHN0eWxlPSdvcGFjaXR5OjAuOTg7ei1pbmRleDoyMDAwO3RvcDo1MHB4O3dpZHRoOjUwMHB4O2xlZnQ6MzAlO3Zpc2liaWxpdHk6aGlkZGVuO2JvcmRlci1yYWRpdXM6MjBweDtwb3NpdGlvbjphYnNvbHV0ZTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjBweCBzb2xpZCAjMDAwMDAwO2JhY2tncm91bmQ6IzIyMjIyMjtjb2xvcjojZWVlZWVlOycgPiI7CgoKICAgICAgICAgIGVjaG8gIjxkaXYgc3R5bGU9J2NvbG9yOiNmZmY7YmFja2dyb3VuZDpub25lO3BhZGRpbmc6OHB4O2ZvbnQtc2l6ZTo1MHB4OycgPiIuJHZsYWJlbC4iPC9kaXY+IjsKICAgICAgICAgIGVjaG8gIjxkaXYgaWQ9J251bV9waWNrZXJfcHJldmlld18iLiR2ZmllbGQuIicgc3R5bGU9J2JhY2tncm91bmQ6bm9uZTtmbG9hdDpsZWZ0O3BhZGRpbmc6OHB4O2ZvbnQtc2l6ZTo0MHB4OycgPjwvZGl2PiI7CgoKICAgICAgICAgIGVjaG8gIjx0YWJsZSBjZWxscGFkZGluZz0wIGFsaWduPXJpZ2h0ID4iOwogICAgICAgICAgICBlY2hvICI8dHI+IjsKCiAgICAgICAgICAgICAgICBmb3IoJG51bT0xOyRudW08PTM7JG51bSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J3RvdWNoX2JveF9xdWFudGl0eScgc3R5bGU9J2JhY2tncm91bmQ6IzAwMDtib3JkZXI6MXB4IHNvbGlkICMwMDA7b3BhY2l0eToxMDA7JyAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiICIuJG1vZGVfYnV0dG9uX2V2ZW50LiI9XCJkb2N1bWVudC5jbG9zaW5nZm9ybS4iLiR2ZmllbGQuIi52YWx1ZSA9IGRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlICsgJyIuJG51bS4iJzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfcHJldmlld18iLiR2ZmllbGQuIicpLmlubmVySFRNTCA9IGRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlIDtcIiAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIiIuJG51bS4iIjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgogICAgICAgICAgICBlY2hvICI8dHI+IjsKCiAgICAgICAgICAgICAgICBmb3IoJG51bT00OyRudW08PTY7JG51bSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J3RvdWNoX2JveF9xdWFudGl0eScgc3R5bGU9J2JhY2tncm91bmQ6IzAwMDtib3JkZXI6MXB4IHNvbGlkICMwMDA7b3BhY2l0eToxMDA7JyAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiICIuJG1vZGVfYnV0dG9uX2V2ZW50LiI9XCJkb2N1bWVudC5jbG9zaW5nZm9ybS4iLiR2ZmllbGQuIi52YWx1ZSA9IGRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlICsgJyIuJG51bS4iJzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfcHJldmlld18iLiR2ZmllbGQuIicpLmlubmVySFRNTCA9IGRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlIDtcIiAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIiIuJG51bS4iIjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgogICAgICAgICAgICBlY2hvICI8dHI+IjsKCiAgICAgICAgICAgICAgICBmb3IoJG51bT03OyRudW08PTk7JG51bSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J3RvdWNoX2JveF9xdWFudGl0eScgc3R5bGU9J2JhY2tncm91bmQ6IzAwMDtib3JkZXI6MXB4IHNvbGlkICMwMDA7b3BhY2l0eToxMDA7JyAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiICIuJG1vZGVfYnV0dG9uX2V2ZW50LiI9XCJkb2N1bWVudC5jbG9zaW5nZm9ybS4iLiR2ZmllbGQuIi52YWx1ZSA9IGRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlICsgJyIuJG51bS4iJzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfcHJldmlld18iLiR2ZmllbGQuIicpLmlubmVySFRNTCA9IGRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlIDtcIiAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIiIuJG51bS4iIjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgogICAgICAgICAgICBlY2hvICI8dHI+IjsKCiAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IjsKICAgICAgICAgICAgICAgICAgICBpZigkdnR5cGU9PSJGIikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJG51bT0iLiI7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBjbGFzcz0ndG91Y2hfYm94X3F1YW50aXR5JyBzdHlsZT0nYmFja2dyb3VuZDojMDAwO2JvcmRlcjoxcHggc29saWQgIzAwMDtvcGFjaXR5OjEwMDsnICI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgIi4kbW9kZV9idXR0b25fZXZlbnQuIj1cImRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlID0gZG9jdW1lbnQuY2xvc2luZ2Zvcm0uIi4kdmZpZWxkLiIudmFsdWUgKyAnIi4kbnVtLiInOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9wcmV2aWV3XyIuJHZmaWVsZC4iJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuY2xvc2luZ2Zvcm0uIi4kdmZpZWxkLiIudmFsdWUgO1wiICI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPiI7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiIi4kbnVtLiIiOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKCgogICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CgogICAgICAgICAgICAgICAgICAgICRudW09MDsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSd0b3VjaF9ib3hfcXVhbnRpdHknIHN0eWxlPSdiYWNrZ3JvdW5kOiMwMDA7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO29wYWNpdHk6MTAwOycgIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiAiLiRtb2RlX2J1dHRvbl9ldmVudC4iPVwiZG9jdW1lbnQuY2xvc2luZ2Zvcm0uIi4kdmZpZWxkLiIudmFsdWUgPSBkb2N1bWVudC5jbG9zaW5nZm9ybS4iLiR2ZmllbGQuIi52YWx1ZSArICciLiRudW0uIic7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdudW1fcGlja2VyX3ByZXZpZXdfIi4kdmZpZWxkLiInKS5pbm5lckhUTUwgPSBkb2N1bWVudC5jbG9zaW5nZm9ybS4iLiR2ZmllbGQuIi52YWx1ZSA7XCIgIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA+IjsKICAgICAgICAgICAgICAgICAgICBlY2hvICIiLiRudW0uIiI7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9kaXY+IjsKCiAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgoKICAgICAgICAgICAgZWNobyAiPHRyPiI7CgoKICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBjbGFzcz0ndG91Y2hfYm94X3F1YW50aXR5JyBzdHlsZT0nYmFja2dyb3VuZDojRTc0QzNDO2JvcmRlcjoxcHggc29saWQgI0U3NEMzQztvcGFjaXR5OjEwMDsnICI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgIi4kbW9kZV9idXR0b25fZXZlbnQuIj1cImRvY3VtZW50LmNsb3Npbmdmb3JtLiIuJHZmaWVsZC4iLnZhbHVlID0gJycgO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdudW1fcGlja2VyX3ByZXZpZXdfIi4kdmZpZWxkLiInKS5pbm5lckhUTUw9Jyc7XCIgIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA+IjsKICAgICAgICAgICAgICAgICAgICBlY2hvICJDIjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKCiAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSd0b3VjaF9ib3hfcXVhbnRpdHknIHN0eWxlPSdiYWNrZ3JvdW5kOiMyN0FFNjA7Ym9yZGVyOjFweCBzb2xpZCAjMjdBRTYwO29wYWNpdHk6MTAwOycgIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiAiLiRtb2RlX2J1dHRvbl9ldmVudC4iPVwibW9uX3N1Ym1pdF9mb3JtKCdjbG9zaW5nZm9ybScsJ3NjcmVlbi9mYXN0Y291bnRlci9jbG9zaW5nLnBocCcsJ3dpbmRvd19wb3BfY29udGFpbmVyJyk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfIi4kdmZpZWxkLiInKS5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nO1wiICI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPiI7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiT0siOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7CgogICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCiAgICAgICAgZWNobyAiPC90YWJsZT4iOwoKCgoKCgogICAgZWNobyAiPC9kaXY+IjsKCn0KCgoKJHRvdGFsX2Nhc2hfdHJhbnNhY3Rpb25fYmFsYW5jZSA9IDA7CiRxdWVyeV9jYXNoX3RyYW5zYWN0aW9uPSJzZWxlY3Qgc3VtKHRyYV9hbW91bnQpIGFzIHRvdGFsIAogICAgICAgICAgICBmcm9tIHRfIi4ka2V5X3RhYmxlX3ByZWZpeC4iX2Nhc2hfdHJhbnNhY3Rpb24KICAgICAgICAgICAgd2hlcmUgaWZudWxsKHRyYV9iYXRjaCwnJykgPSAnJyAiOwokcmVzdWx0X2Nhc2hfdHJhbnNhY3Rpb24gPSBteXNxbF9xdWVyeSgkcXVlcnlfY2FzaF90cmFuc2FjdGlvbik7CmlmKCRsaW5lX2Nhc2hfdHJhbnNhY3Rpb24gPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0X2Nhc2hfdHJhbnNhY3Rpb24sTVlTUUxfQVNTT0MpKQp7CgogICAgJHRvdGFsX2Nhc2hfdHJhbnNhY3Rpb25fYmFsYW5jZSA9ICRsaW5lX2Nhc2hfdHJhbnNhY3Rpb25bInRvdGFsIl0rMDsKICAgIAoKfQoKCgoKCgovL2dldCB1bmNsb3NlZCBzYWxlczoKJHF1ZXJ5X3NhbGVzPSJzZWxlY3QgKgogICAgICAgICAgIGZyb20gdF8iLiRrZXlfdGFibGVfcHJlZml4LiJfc2FsZXMKICAgICAgICAgICB3aGVyZSAgc2FsX3N0YXR1cyA9ICdQQUlEJwogICAgICAgICAgIGFuZCBpZm51bGwoc2FsX2Nsb3NpbmdfYmF0Y2gsJycpID0gJycKICAgICAgICAgICAiOwokcmVzdWx0X3NhbGVzID0gbXlzcWxfcXVlcnkoJHF1ZXJ5X3NhbGVzKTsKd2hpbGUoJGxpbmVfc2FsZXMgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0X3NhbGVzLE1ZU1FMX0FTU09DKSkKewoKICAgIGlmKCRsaW5lX3NhbGVzWyJzYWxfcGF5bWVudF9jb2RlIl09PSJNVUxUSVBMRSIpCiAgICB7CiAgICAgICAgZm9yKCRwbW9kZT0xOyRwbW9kZTw9NTskcG1vZGUrKykKICAgICAgICB7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkbGluZV9zYWxlc1sic2FsX3BheW1lbnRfbW9kZV8iLiRwbW9kZS4iIl0hPSIiKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgJGNsb3NpbmdfYW1vdW50X2J5X21vZGVbJGxpbmVfc2FsZXNbInNhbF9wYXltZW50X21vZGVfIi4kcG1vZGUuIiJdXSA9ICRjbG9zaW5nX2Ftb3VudF9ieV9tb2RlWyRsaW5lX3NhbGVzWyJzYWxfcGF5bWVudF9tb2RlXyIuJHBtb2RlLiIiXV0gKyAkbGluZV9zYWxlc1sic2FsX3BheW1lbnRfbW9kZV8iLiRwbW9kZS4iX2Ftb3VudCJdKzA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgfQogICAgZWxzZQogICAgewogICAgICAgIAogICAgICAgICRjbG9zaW5nX2Ftb3VudF9ieV9tb2RlWyRsaW5lX3NhbGVzWyJzYWxfcGF5bWVudF9jb2RlIl1dID0gJGNsb3NpbmdfYW1vdW50X2J5X21vZGVbJGxpbmVfc2FsZXNbInNhbF9wYXltZW50X2NvZGUiXV0gKyAkbGluZV9zYWxlc1sic2FsX2NvbGxlY3Rpb25fYW1vdW50Il07CiAgICB9CgoKICAgIAogICAgJHRvdGFsX2JpbGxzID0gJHRvdGFsX2JpbGxzICsgMTsKICAgIAogICAgCiAgICAkdG90YWxfYmlsbHNfYnlfcGVyc29uWyRsaW5lX3NhbGVzWyJzYWxfY2FzaGllcl9uYW1lIl1dID0gJHRvdGFsX2JpbGxzX2J5X3BlcnNvblskbGluZV9zYWxlc1sic2FsX2Nhc2hpZXJfbmFtZSJdXSArIDE7CiAgICAKICAgICAgIAp9CgogICAKCi8vY29sbGVjdCBhbGwgY2FzaCBtb2RlCiR0b3RhbF9zYWxlcyA9IDA7CiR0b3RhbF9jYXNoX3NhbGVzID0gMDsKJHRvdGFsX25vbl9jYXNoX3NhbGVzID0gMDsKaWYoaXNzZXQoJGNsb3NpbmdfYW1vdW50X2J5X21vZGUpKQp7CiAgICBmb3JlYWNoKCRjbG9zaW5nX2Ftb3VudF9ieV9tb2RlIGFzICRtb2RlX2tleT0+JG1vZGVfdmFsdWUpCiAgICB7CiAgICAgICAgCiAgICAgICAgJHF1ZXJ5X3BheW1lbnRfbW9kZT0ic2VsZWN0ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdF8iLiRrZXlfdGFibGVfcHJlZml4LiJfcGF5bWVudF9tb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBweW1fY29kZSA9ICciLiRtb2RlX2tleS4iJyAiOwogICAgICAgICRyZXN1bHRfcGF5bWVudF9tb2RlID0gbXlzcWxfcXVlcnkoJHF1ZXJ5X3BheW1lbnRfbW9kZSk7CiAgICAgICAgaWYoJGxpbmVfcGF5bWVudF9tb2RlID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdF9wYXltZW50X21vZGUsTVlTUUxfQVNTT0MpKQogICAgICAgIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCRsaW5lX3BheW1lbnRfbW9kZVsicHltX2lzX2Nhc2giXT09IllFUyIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2hfc2FsZXMgID0gJHRvdGFsX2Nhc2hfc2FsZXMgKyAkbW9kZV92YWx1ZSArMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0b3RhbF9ub25fY2FzaF9zYWxlcyA9ICR0b3RhbF9ub25fY2FzaF9zYWxlcyArICAkbW9kZV92YWx1ZSArMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICR0b3RhbF9zYWxlcz0kdG90YWxfc2FsZXMgKyAkbW9kZV92YWx1ZSArMDsKICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgIH0KICAgCn0KICAgCiAgIAogICAKLyoKZWNobyAiPHByZT4iOwpwcmludF9yKCRjbG9zaW5nX2Ftb3VudF9ieV9tb2RlKTsKZWNobyAiPC9wcmU+IjsKKi8KCgoKCgoKCgoKCgoKCgoKCgppZiAoJF9TRVJWRVJbUkVRVUVTVF9NRVRIT0RdID09ICdQT1NUJykgewoKCiAgICAvL2VjaG8gJF9SRVFVRVNUWyJpbml0aWFsX2Nhc2giXTsKICAgICRxdWVyeV9jaGVjaz0ic2VsZWN0ICoKICAgICAgICAgICAgICAgIGZyb20gdF8iLiRrZXlfdGFibGVfcHJlZml4LiJfY2xvc2luZwogICAgICAgICAgICAgICAgd2hlcmUgY2xzX3N0YXR1cyA9J0RSQUZUJyAiOwogICAgJHJlc3VsdF9jaGVjayA9IG15c3FsX3F1ZXJ5KCRxdWVyeV9jaGVjayk7CiAgICBpZigkbGluZV9jaGVjayA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHRfY2hlY2ssTVlTUUxfQVNTT0MpKQogICAgewoKCgoKICAgIH0KICAgIGVsc2V7CgogICAgICAgICRxdWVyeV9pbnNlcnQ9IiBpbnNlcnQgaW50byB0XyIuJGtleV90YWJsZV9wcmVmaXguIl9jbG9zaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgY2xzX2JhdGNoLAogICAgICAgICAgICAgICAgICAgICAgICBjbHNfc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkX2RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX2RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfYnksCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX2J5CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJ0RSQUZUJywKICAgICAgICAgICAgICAgICAgICAgICAgJ0RSQUZUJywKICAgICAgICAgICAgICAgICAgICAgICAgJyIuZGF0ZSgiWS1tLWQgSDppOnMiKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgJyIuZGF0ZSgiWS1tLWQgSDppOnMiKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgJyIuJEN1cnJlbnRVc2VySUQuIicsCiAgICAgICAgICAgICAgICAgICAgICAgICciLiRDdXJyZW50VXNlcklELiInCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAiOwogICAgICAgICRyZXN1bHRfaW5zZXJ0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5X2luc2VydCk7CiAgICB9CgoKCgogICAgaWYoJF9SRVFVRVNUWyJ1c2VyX2FjdGlvbiJdPT0iQ09ORklSTV9OT19DT1VOVCIpCiAgICB7CiAgICAgICAgCiAgICAgICAgICAgICR0b3RhbF9jYXNoPTA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgCiAgICAgICAgICAgICR0b3RhbF9jYXNoPTA7CiAgICAKICAgICAgICAgICAgaWYoJF9SRVFVRVNUWyJ0b3RhbF9hbW91bnQiXT4wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSRfUkVRVUVTVFsidG90YWxfYW1vdW50Il07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsiY2VudHNfMSJdKzApICAgKiAwLjAxICk7CiAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsiY2VudHNfNSJdKzApICAgKiAwLjA1ICk7CiAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsiY2VudHNfMTAiXSswKSAgICogMC4xMCApOwogICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbImNlbnRzXzIwIl0rMCkgICAqIDAuMjAgKTsKICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJjZW50c181MCJdKzApICAgKiAwLjUwICk7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbInJtXzEiXSswKSAgICogMSApOwogICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbInJtXzUiXSswKSAgICogNSApOwogICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbInJtXzEwIl0rMCkgICAqIDEwICk7CiAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsicm1fMjAiXSswKSAgICogMjAgKTsKICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJybV81MCJdKzApICAgKiA1MCApOwogICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbInJtXzEwMCJdKzApICAgKiAxMDAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAgIAogICAgCiAgICB9CiAgICAKICAgIAogICAgCiAgICAKICAgIAoKICAgIGlmKCRfUkVRVUVTVFsidXNlcl9hY3Rpb24iXT09IkNPTkZJUk0iKQogICAgewoKICAgICAgICAkdGhpc19zdGF0dXM9IkNMT1NFRCI7CiAgICAgICAgJHRoaXNfYmF0Y2g9ZGF0ZSgiWW1kSGlzIik7CiAgICB9CiAgICBlbHNlaWYoJF9SRVFVRVNUWyJ1c2VyX2FjdGlvbiJdPT0iQ09ORklSTV9OT19DT1VOVCIpCiAgICB7CiAgICAgICAgJHRoaXNfc3RhdHVzPSJDTE9TRUQiOwogICAgICAgICR0aGlzX2JhdGNoPWRhdGUoIlltZEhpcyIpOwogICAgICAgIAogICAgfQogICAgZWxzZXsKICAgICAgICAkdGhpc19zdGF0dXM9IkRSQUZUIjsKCiAgICB9CgoKCgoKCiAgICBpZigkX1JFUVVFU1RbInVzZXJfYWN0aW9uIl09PSJDT05GSVJNX05PX0NPVU5UIikKICAgIHsKICAgICAgICAkdG90YWxfZGlmZmVyZW50PSAgMDsKICAgICAgICAkX1JFUVVFU1RbImluaXRpYWxfY2FzaCJdPTA7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgJF9SRVFVRVNUWyJjZW50c18xIl09MDsKICAgICAgICAkX1JFUVVFU1RbImNlbnRzXzUiXT0wOwogICAgICAgICRfUkVRVUVTVFsiY2VudHNfMTAiXT0wOwogICAgICAgICRfUkVRVUVTVFsiY2VudHNfMjAiXT0wOwogICAgICAgICRfUkVRVUVTVFsiY2VudHNfNTAiXT0wOwogICAgICAgIAogICAgICAgICRfUkVRVUVTVFsicm1fMSJdPTA7CiAgICAgICAgJF9SRVFVRVNUWyJybV81Il09MDsKICAgICAgICAkX1JFUVVFU1RbInJtXzEwIl09MDsKICAgICAgICAkX1JFUVVFU1RbInJtXzIwIl09MDsKICAgICAgICAkX1JFUVVFU1RbInJtXzUwIl09MDsKICAgICAgICAkX1JFUVVFU1RbInJtXzEwMCJdPTA7CiAgICAgICAgCiAgICAgICAgJHRvdGFsX2Nhc2g9MDsKICAgICAgICAKICAgICAgICAkY2xvc2luZ19ub19jb3VudGluZz0iTk9fQ09VTlQiOwogICAgICAgIAogICAgICAgIAogICAgfQogICAgZWxzZQogICAgewogICAgICAgICR0b3RhbF9kaWZmZXJlbnQ9ICAgICAkdG90YWxfY2FzaCAtICggKCRfUkVRVUVTVFsiaW5pdGlhbF9jYXNoIl0rMCkgKyAkdG90YWxfY2FzaF9zYWxlcyArICR0b3RhbF9jYXNoX3RyYW5zYWN0aW9uX2JhbGFuY2UgKTsgICAgCiAgICB9CgoKCiAgICAKICAgIAoKCgogICAgICAgICRxdWVyeV91cGRhdGU9InVwZGF0ZSB0XyIuJGtleV90YWJsZV9wcmVmaXguIl9jbG9zaW5nIHNldAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV9jb2RlID0gJyIuJHN5c19zeXN0ZW1fbWFzdGVyX3NldHRpbmdfbGluZVsic2V0X2RldmljZV9jb2RlIl0uIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHNfcGVyc29uID0gJyIuJEN1cnJlbnRVc2VyRnVsbE5hbWUuIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHNfYmF0Y2ggPSAnIi4kdGhpc19iYXRjaC4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19pbml0aWFsX2Nhc2ggPSAnIi4oJF9SRVFVRVNUWyJpbml0aWFsX2Nhc2giXSswKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19tb25leV9jZW50c18xID0gJyIuKCRfUkVRVUVTVFsiY2VudHNfMSJdKzApLiInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzX21vbmV5X2NlbnRzXzUgPSAnIi4oJF9SRVFVRVNUWyJjZW50c181Il0rMCkuIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHNfbW9uZXlfY2VudHNfMTAgPSAnIi4oJF9SRVFVRVNUWyJjZW50c18xMCJdKzApLiInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzX21vbmV5X2NlbnRzXzIwID0gJyIuKCRfUkVRVUVTVFsiY2VudHNfMjAiXSswKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19tb25leV9jZW50c181MCA9ICciLigkX1JFUVVFU1RbImNlbnRzXzUwIl0rMCkuIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHNfbW9uZXlfcmluZ2dpdF8xID0gJyIuKCRfUkVRVUVTVFsicm1fMSJdKzApLiInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzX21vbmV5X3JpbmdnaXRfNSA9ICciLigkX1JFUVVFU1RbInJtXzUiXSswKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19tb25leV9yaW5nZ2l0XzEwID0gJyIuKCRfUkVRVUVTVFsicm1fMTAiXSswKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19tb25leV9yaW5nZ2l0XzIwID0gJyIuKCRfUkVRVUVTVFsicm1fMjAiXSswKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19tb25leV9yaW5nZ2l0XzUwID0gJyIuKCRfUkVRVUVTVFsicm1fNTAiXSswKS4iJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19tb25leV9yaW5nZ2l0XzEwMCA9ICciLigkX1JFUVVFU1RbInJtXzEwMCJdKzApLiInLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzX2Nhc2hfdHJhbnNhY3Rpb25fYmFsYW5jZSA9ICciLigkdG90YWxfY2FzaF90cmFuc2FjdGlvbl9iYWxhbmNlKzApLiInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc19jbG9zaW5nX2Nhc2ggPSAnIi4oJHRvdGFsX2Nhc2grMCkuIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc190b3RhbF9zYWxlcyA9ICciLigkdG90YWxfc2FsZXMrMCkuIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc190b3RhbF9zYWxlc19jYXNoID0gJyIuKCR0b3RhbF9jYXNoX3NhbGVzKzApLiInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzX3RvdGFsX3NhbGVzX25vbl9jYXNoID0gJyIuKCR0b3RhbF9ub25fY2FzaF9zYWxlcyswKS4iJywgIjsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgJHBtb2RlPTE7CiAgICAgICAgICAgIGlmKGlzc2V0KCRjbG9zaW5nX2Ftb3VudF9ieV9tb2RlKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yZWFjaCgkY2xvc2luZ19hbW91bnRfYnlfbW9kZSBhcyAkbW9kZV9rZXk9PiRtb2RlX3ZhbHVlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRxdWVyeV91cGRhdGU9JHF1ZXJ5X3VwZGF0ZS4iICBjbHNfbW9kZV8iLiRwbW9kZS4iID0gJyIuJG1vZGVfa2V5LiInLCAiOwogICAgICAgICAgICAgICAgICAgICRxdWVyeV91cGRhdGU9JHF1ZXJ5X3VwZGF0ZS4iICBjbHNfbW9kZV8iLiRwbW9kZS4iX2Ftb3VudCA9ICciLigkbW9kZV92YWx1ZSswKS4iJywgIjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkcG1vZGUrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAKICAgICAgICAgICAgJHF1ZXJ5X3VwZGF0ZT0kcXVlcnlfdXBkYXRlLiIKICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNsc190b3RhbF9kaWZmZXJlbnQ9JyIuKCR0b3RhbF9kaWZmZXJlbnQrMCkuIicsCiAgICAgICAgICAgICAgICAgICAgY2xzX25vX2NvdW50ID0nIi4kY2xvc2luZ19ub19jb3VudGluZy4iJywKICAgICAgICAgICAgICAgICAgICBjbHNfc3RhdHVzID0nIi4kdGhpc19zdGF0dXMuIicKICAgICAgICAgICAgICAgICAgICB3aGVyZSBjbHNfc3RhdHVzPSdEUkFGVCcgOyAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgJHJlc3VsdF91cGRhdGUgPSBteXNxbF9xdWVyeSgkcXVlcnlfdXBkYXRlKSBvciBkaWUoIkVycm9yMCIpLm15c3FsX2Vycm9yKCk7CgoKICAgIGlmKCgkX1JFUVVFU1RbInVzZXJfYWN0aW9uIl09PSJDT05GSVJNIilvcigkX1JFUVVFU1RbInVzZXJfYWN0aW9uIl09PSJDT05GSVJNX05PX0NPVU5UIikpCiAgICB7CiAgICAgICAgJHF1ZXJ5X3VwZGF0ZT0idXBkYXRlIHRfIi4ka2V5X3RhYmxlX3ByZWZpeC4iX3NhbGVzCiAgICAgICAgICAgICAgICAgICAgc2V0IHNhbF9jbG9zaW5nX2JhdGNoID0gJyIuJHRoaXNfYmF0Y2guIicsCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRfYnkgPSciLiRDdXJyZW50VXNlcklELiInLAogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX2RhdGUgPSciLmRhdGUoIlktbS1kIEg6aTpzIikuIicKICAgICAgICAgICAgICAgICAgICB3aGVyZSAoc2FsX3N0YXR1cyA9ICdQQUlEJyBvciBzYWxfc3RhdHVzID0gJ1JFSkVDVEVEJykKICAgICAgICAgICAgICAgICAgICBhbmQgaWZudWxsKHNhbF9jbG9zaW5nX2JhdGNoLCcnKSA9JycKICAgICAgICAgICAgICAgICAgICAiOwoKICAgICAgICAkcmVzdWx0X3VwZGF0ZSA9IG15c3FsX3F1ZXJ5KCRxdWVyeV91cGRhdGUpIG9yIGRpZSgiRXJyb3IxIikubXlzcWxfZXJyb3IoKTsKCiAgICAgICAgICAgCiAgICAgICAgJHF1ZXJ5X3VwZGF0ZT0idXBkYXRlIHRfIi4ka2V5X3RhYmxlX3ByZWZpeC4iX2Nhc2hfdHJhbnNhY3Rpb24KICAgICAgICAgICAgICAgICAgICBzZXQgdHJhX2JhdGNoID0gJyIuJHRoaXNfYmF0Y2guIicKICAgICAgICAgICAgICAgICAgICB3aGVyZSAgaWZudWxsKHRyYV9iYXRjaCwnJykgPScnCiAgICAgICAgICAgICAgICAgICAgIjsKCiAgICAgICAgJHJlc3VsdF91cGRhdGUgPSBteXNxbF9xdWVyeSgkcXVlcnlfdXBkYXRlKSBvciBkaWUoIkVycm9yMiIpLm15c3FsX2Vycm9yKCk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaWYoJHN5c19wcmludGluZ19zd2l0Y2gpCgl7CiAgICAgICAgICAgIGluY2x1ZGUgInByaW50X2Nsb3NpbmcucGhwIjsKICAgICAgICB9CiAgICB9CgoKCgoKCgoKfQoKIC8vZWNobyAkX1JFUVVFU1RbImluaXRpYWxfY2FzaCJdOwogICAgJHF1ZXJ5X2NoZWNrPSJzZWxlY3QgKgogICAgICAgICAgICAgICAgZnJvbSB0XyIuJGtleV90YWJsZV9wcmVmaXguIl9jbG9zaW5nCiAgICAgICAgICAgICAgICB3aGVyZSBjbHNfc3RhdHVzID0nRFJBRlQnICI7CiAgICAkcmVzdWx0X2NoZWNrID0gbXlzcWxfcXVlcnkoJHF1ZXJ5X2NoZWNrKTsKICAgIGlmKCRsaW5lX2NoZWNrID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdF9jaGVjayxNWVNRTF9BU1NPQykpCiAgICB7CgoKCiAgICAgICAgICAgICRfUkVRVUVTVFsiaW5pdGlhbF9jYXNoIl0gPSAkbGluZV9jaGVja1siY2xzX2luaXRpYWxfY2FzaCJdICswIDsKCiAgICAgICAgICAgICRfUkVRVUVTVFsiY2VudHNfMSJdID0gJGxpbmVfY2hlY2tbImNsc19tb25leV9jZW50c18xIl0rMDsKICAgICAgICAgICAgJF9SRVFVRVNUWyJjZW50c181Il0gPSAkbGluZV9jaGVja1siY2xzX21vbmV5X2NlbnRzXzUiXSswOwogICAgICAgICAgICAkX1JFUVVFU1RbImNlbnRzXzEwIl0gPSAkbGluZV9jaGVja1siY2xzX21vbmV5X2NlbnRzXzEwIl0rMDsKICAgICAgICAgICAgJF9SRVFVRVNUWyJjZW50c18yMCJdID0gJGxpbmVfY2hlY2tbImNsc19tb25leV9jZW50c18yMCJdKzA7CiAgICAgICAgICAgICRfUkVRVUVTVFsiY2VudHNfNTAiXSA9ICRsaW5lX2NoZWNrWyJjbHNfbW9uZXlfY2VudHNfNTAiXSswOwoKICAgICAgICAgICAgJF9SRVFVRVNUWyJybV8xIl0gPSAkbGluZV9jaGVja1siY2xzX21vbmV5X3JpbmdnaXRfMSJdKzA7CiAgICAgICAgICAgICRfUkVRVUVTVFsicm1fNSJdID0gJGxpbmVfY2hlY2tbImNsc19tb25leV9yaW5nZ2l0XzUiXSswOwogICAgICAgICAgICAkX1JFUVVFU1RbInJtXzEwIl0gPSAkbGluZV9jaGVja1siY2xzX21vbmV5X3JpbmdnaXRfMTAiXSswOwogICAgICAgICAgICAkX1JFUVVFU1RbInJtXzIwIl0gPSAkbGluZV9jaGVja1siY2xzX21vbmV5X3JpbmdnaXRfMjAiXSswOwogICAgICAgICAgICAkX1JFUVVFU1RbInJtXzUwIl0gID0gJGxpbmVfY2hlY2tbImNsc19tb25leV9yaW5nZ2l0XzUwIl0rMDsKICAgICAgICAgICAgJF9SRVFVRVNUWyJybV8xMDAiXSA9ICRsaW5lX2NoZWNrWyJjbHNfbW9uZXlfcmluZ2dpdF8xMDAiXSswOwoKCiAgICB9CgoKICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTEgPiI7CiAgICAgICAgZWNobyAiPHRyPiI7CiAgICAgICAgICAgIGVjaG8gIjx0ZCAgdmFsaWduPXRvcCA+IjsKICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J2ZhLXN0YWNrIGZhLWxnJyA+IjsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8aSBjbGFzcz0iZmEgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IiBzdHlsZT0iY29sb3I6IzAwMDsiID48L2k+PGkgY2xhc3M9ImZhIGZhLXRyb3BoeSBmYS1zdGFjay0xeCIgPjwvaT4nOwogICAgICAgICAgICAgICAgZWNobyAiPC9kaXY+IjsKICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IHN0eWxlPSdmb250LXNpemU6MzBweDsnPjxiPkNhc2hpZXIgQ2xvc2luZyA8L2I+PC9mb250Pjxicj4iOwoJICAgIGVjaG8gIjwvdGQ+IjsKCgoJICAgIGVjaG8gIjx0ZCB2YWxpZ249dG9wID4iOwoJCWVjaG8gIjxkaXYgc3R5bGU9J2Zsb2F0OnJpZ2h0O2N1cnNvcjpwb2ludGVyOycgY2xhc3M9J2ZhLXN0YWNrIGZhLWxnJyAiLiRtb2RlX2J1dHRvbl9ldmVudC4iPVwibW9uX3NlbmRfZ2V0KCdzY3JlZW4vZmFzdGNvdW50ZXIvbWFpbi5waHAnLCdkaXZfY29udGVudCcpO21vbl9oaWRlX29iamVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2luZG93X3BvcCcpKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2luZG93X3BvcF9jb250YWluZXInKS5pbm5lckhUTUw9Jyc7XCIgID4iOwoJCSAgICBlY2hvICc8aSBjbGFzcz0iZmEgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IiBzdHlsZT0iY29sb3I6I0U3NEMzQzsiID48L2k+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIGZhLXN0YWNrLTF4Ij48L2k+JzsKCQllY2hvICI8L2Rpdj4iOwogICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgZWNobyAiPC90cj4iOwogICAgZWNobyAiPC90YWJsZT4iOwoKCgogICAgZWNobyAiPGZvcm0gbmFtZT0nY2xvc2luZ2Zvcm0nIGFjdGlvbj0ncmV0dXJuIGZhbHNlJyA+IjsKCgoKICAgICAgICAgICAgZWNobyAiPHRhYmxlIGNlbGxwYWRkaW5nPTUgd2lkdGg9OTAlIGJvcmRlcj0wPiI7CgogICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vZWNobyAiSW5pdGlhbCBDYXNoIEFtb3VudCBpbiBEcmF3ZXI6ICI7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CgogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZCB3aWR0aD0yMDAgID4iOwogICAgICAgICAgICAgICAgICAgICAgICAkX1JFUVVFU1RbImluaXRpYWxfY2FzaCJdPTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiAgY2xhc3M9dGV4dGJveF9tIG5hbWU9J2luaXRpYWxfY2FzaCcgdmFsdWU9JyIuJF9SRVFVRVNUWyJpbml0aWFsX2Nhc2giXS4iJwogICAgICAgICAgICAgICAgICAgICAgICAgb25mb2N1cz1ibHVyKCkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9pbml0aWFsX2Nhc2gnKS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJztcIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCdpbml0aWFsX2Nhc2gnLCdGJywnSW5pdGlhbCBDYXNoJyk7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCiAgICAgICAgICAgICAgICAvKgoKICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJUb3RhbCBTYWxlcyBmb3IgdGhpcyBTZXNzaW9uOiAiOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkID4iOwoKCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlJNIDxiPiIuJHRvdGFsX3NhbGVzLiI8L2I+IjsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiICggIi4kdG90YWxfYmlsbHMuIiBCaWxscyApIjsKCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKICAgICAgICAgICAgICAgICovCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICBlY2hvICI8dHI+IjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgdmFsaWduPXRvcCA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiVG90YWwgQ2FzaCBDb3VudGVkIGR1cmluZyBDbG9zaW5nOiA8Zm9udCBjb2xvcj0jZmYwMDAgPihFeGNsdWRlIEZsb2F0aW5nKTwvZm9udD4gIjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRhYmxlIGJvcmRlcj0wID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHZhbGlnbj10b3AgPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1JFUVVFU1RbInRvdGFsX2Ftb3VudCJdPjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0YWJsZSBzdHlsZT0nYm9yZGVyOjJweCBzb2xpZCAjNTU1O2JvcmRlci1yYWRpdXM6MTBweDsnIGNlbGxwYWRkaW5nPTUgd2lkdGg9MzUwPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0YWJsZSBzdHlsZT0nYm9yZGVyOjJweCBzb2xpZCAjRTc0QzNDO2JvcmRlci1yYWRpdXM6MTBweDsnIGNlbGxwYWRkaW5nPTUgd2lkdGg9MzUwPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTgwID5STSAxIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCBzdHlsZT0nZm9udC1zaXplOjIwcHg7dGV4dC1hbGlnbjpjZW50ZXInIHR5cGU9dGV4dCBjbGFzcz10ZXh0Ym94X3MgbmFtZT0ncm1fMScgdmFsdWU9JyIuJF9SRVFVRVNUWyJybV8xIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9ybV8xJykuc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7XCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25fcmVuZGVyX251bWJlcl9waWNrZXIoJ3JtXzEnLCdEJywnUk0gMScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTEyMCA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA9IDxmb250IGNvbG9yPSMyRUNDNzE+Uk0gIi5udW1iZXJfZm9ybWF0KCgkX1JFUVVFU1RbInJtXzEiXSoxKSwyLCIuIiwiLCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RyPiI7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD5STSA1IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J3JtXzUnIHZhbHVlPSciLiRfUkVRVUVTVFsicm1fNSJdLiInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSAgb25jbGljaz1cInRoaXMudmFsdWU9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfcm1fNScpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25fcmVuZGVyX251bWJlcl9waWNrZXIoJ3JtXzUnLCdEJywnUk0gNScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTIwID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID0gPGZvbnQgY29sb3I9IzJFQ0M3MT5STSAiLm51bWJlcl9mb3JtYXQoKCRfUkVRVUVTVFsicm1fNSJdKjUpLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPlJNIDEwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J3JtXzEwJyB2YWx1ZT0nIi4kX1JFUVVFU1RbInJtXzEwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25mb2N1cz1ibHVyKCkgb25jbGljaz1cInRoaXMudmFsdWU9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfcm1fMTAnKS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJztcIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbl9yZW5kZXJfbnVtYmVyX3BpY2tlcigncm1fMTAnLCdEJywnUk0gMTAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTEyMCA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA9IDxmb250IGNvbG9yPSMyRUNDNzE+Uk0gIi5udW1iZXJfZm9ybWF0KCgkX1JFUVVFU1RbInJtXzEwIl0qMTApLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPlJNIDIwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J3JtXzIwJyB2YWx1ZT0nIi4kX1JFUVVFU1RbInJtXzIwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9ybV8yMCcpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCdybV8yMCcsJ0QnLCdSTSAyMCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTEyMCA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA9IDxmb250IGNvbG9yPSMyRUNDNzE+Uk0gIi5udW1iZXJfZm9ybWF0KCgkX1JFUVVFU1RbInJtXzIwIl0qMjApLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPlJNIDUwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J3JtXzUwJyB2YWx1ZT0nIi4kX1JFUVVFU1RbInJtXzUwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9ybV81MCcpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCdybV81MCcsJ0QnLCdSTSA1MCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTEyMCA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA9IDxmb250IGNvbG9yPSMyRUNDNzE+Uk0gIi5udW1iZXJfZm9ybWF0KCgkX1JFUVVFU1RbInJtXzUwIl0qNTApLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPlJNIDEwMCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAieCA8aW5wdXQgIHN0eWxlPSdmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcicgdHlwZT10ZXh0IGNsYXNzPXRleHRib3hfcyBuYW1lPSdybV8xMDAnIHZhbHVlPSciLiRfUkVRVUVTVFsicm1fMTAwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9ybV8xMDAnKS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJztcIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbl9yZW5kZXJfbnVtYmVyX3BpY2tlcigncm1fMTAwJywnRCcsJ1JNIDEwMCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTEyMCA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA9IDxmb250IGNvbG9yPSMyRUNDNzE+Uk0gIi5udW1iZXJfZm9ybWF0KCgkX1JFUVVFU1RbInJtXzEwMCJdKjEwMCksMiwiLiIsIiwiKS4iPC9mb250PiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90YWJsZT4iOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD48dGQgdmFsaWduPXRvcCA+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJF9SRVFVRVNUWyJ0b3RhbF9hbW91bnQiXT4wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgc3R5bGU9J2JvcmRlcjoycHggc29saWQgIzU1NTtib3JkZXItcmFkaXVzOjEwcHg7JyBjZWxscGFkZGluZz01IHdpZHRoPTM1MD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgc3R5bGU9J2JvcmRlcjoycHggc29saWQgI0U3NEMzQztib3JkZXItcmFkaXVzOjEwcHg7JyBjZWxscGFkZGluZz01IHdpZHRoPTM1MD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9ODAgPjEgY2VudHMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gInggPGlucHV0ICBzdHlsZT0nZm9udC1zaXplOjIwcHg7dGV4dC1hbGlnbjpjZW50ZXInIHR5cGU9dGV4dCBjbGFzcz10ZXh0Ym94X3MgbmFtZT0nY2VudHNfMScgdmFsdWU9JyIuJF9SRVFVRVNUWyJjZW50c18xIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9jZW50c18xJykuc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7XCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25fcmVuZGVyX251bWJlcl9waWNrZXIoJ2NlbnRzXzEnLCdEJywnMSBDZW50Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZCB3aWR0aD0xMjAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPSA8Zm9udCBjb2xvcj0jMkVDQzcxPlJNICIubnVtYmVyX2Zvcm1hdCgoJF9SRVFVRVNUWyJjZW50c18xIl0qMC4wMSksMiwiLiIsIiwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjUgY2VudHMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gInggPGlucHV0ICBzdHlsZT0nZm9udC1zaXplOjIwcHg7dGV4dC1hbGlnbjpjZW50ZXInIHR5cGU9dGV4dCBjbGFzcz10ZXh0Ym94X3MgbmFtZT0nY2VudHNfNScgdmFsdWU9JyIuJF9SRVFVRVNUWyJjZW50c181Il0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9jZW50c181Jykuc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7XCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25fcmVuZGVyX251bWJlcl9waWNrZXIoJ2NlbnRzXzUnLCdEJywnNSBDZW50cycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTIwID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID0gPGZvbnQgY29sb3I9IzJFQ0M3MT5STSAiLm51bWJlcl9mb3JtYXQoKCRfUkVRVUVTVFsiY2VudHNfNSJdKjAuMDUpLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjEwIGNlbnRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J2NlbnRzXzEwJyB2YWx1ZT0nIi4kX1JFUVVFU1RbImNlbnRzXzEwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9jZW50c18xMCcpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCdjZW50c18xMCcsJ0QnLCcxMCBDZW50cycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTIwID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID0gPGZvbnQgY29sb3I9IzJFQ0M3MT5STSAiLm51bWJlcl9mb3JtYXQoKCRfUkVRVUVTVFsiY2VudHNfMTAiXSowLjEpLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjIwIGNlbnRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J2NlbnRzXzIwJyB2YWx1ZT0nIi4kX1JFUVVFU1RbImNlbnRzXzIwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9jZW50c18yMCcpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCdjZW50c18yMCcsJ0QnLCcyMCBDZW50cycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTIwID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID0gPGZvbnQgY29sb3I9IzJFQ0M3MT5STSAiLm51bWJlcl9mb3JtYXQoKCRfUkVRVUVTVFsiY2VudHNfMjAiXSowLjIpLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjUwIGNlbnRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ4IDxpbnB1dCAgc3R5bGU9J2ZvbnQtc2l6ZToyMHB4O3RleHQtYWxpZ246Y2VudGVyJyB0eXBlPXRleHQgY2xhc3M9dGV4dGJveF9zIG5hbWU9J2NlbnRzXzUwJyB2YWx1ZT0nIi4kX1JFUVVFU1RbImNlbnRzXzUwIl0uIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPWJsdXIoKSBvbmNsaWNrPVwidGhpcy52YWx1ZT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtX3BpY2tlcl9jZW50c181MCcpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uX3JlbmRlcl9udW1iZXJfcGlja2VyKCdjZW50c181MCcsJ0QnLCc1MCBDZW50cycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTIwID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiID0gPGZvbnQgY29sb3I9IzJFQ0M3MT5STSAiLm51bWJlcl9mb3JtYXQoKCRfUkVRVUVTVFsiY2VudHNfNTAiXSowLjUpLDIsIi4iLCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGFibGU+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD04MCBhbGlnbj1jZW50ZXIgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPjxicj5PUjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+PHRkIHZhbGlnbj10b3AgPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1JFUVVFU1RbInRvdGFsX2Ftb3VudCJdPjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0YWJsZSBzdHlsZT0nYm9yZGVyOjJweCBzb2xpZCAjRTc0QzNDO2JvcmRlci1yYWRpdXM6MTBweDsnIGNlbGxwYWRkaW5nPTUgd2lkdGg9MTA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0YWJsZSBzdHlsZT0nYm9yZGVyOjJweCBzb2xpZCAjNTU1O2JvcmRlci1yYWRpdXM6MTBweDsnIGNlbGxwYWRkaW5nPTUgd2lkdGg9MTA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZCBhbGlnbj1jZW50ZXI+PGJyPlRvdGFsIEFtb3VudCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PGlucHV0ICBzdHlsZT0nZm9udC1zaXplOjIwcHg7dGV4dC1hbGlnbjpjZW50ZXInIHR5cGU9dGV4dCBjbGFzcz10ZXh0Ym94X20gbmFtZT0ndG90YWxfYW1vdW50JyB2YWx1ZT0nIi4kX1JFUVVFU1RbInRvdGFsX2Ftb3VudCJdLiInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25mb2N1cz1ibHVyKCkgb25jbGljaz1cInRoaXMudmFsdWU9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bV9waWNrZXJfdG90YWxfYW1vdW50Jykuc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7XCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25fcmVuZGVyX251bWJlcl9waWNrZXIoJ3RvdGFsX2Ftb3VudCcsJ0YnLCdUb3RhbCBBbW91bnQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIGVjaG8gIiA9IDxmb250IGNvbG9yPSMyRUNDNzE+Uk0gIi5udW1iZXJfZm9ybWF0KCgkX1JFUVVFU1RbInRvdGFsX2Ftb3VudCJdKSwyLCIuIiwiLCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RhYmxlPiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90YWJsZT4iOwoKCiAgICAgICAgICAgICAgICAgICAgaWYoJF9SRVFVRVNUWyJ0b3RhbF9hbW91bnQiXT4wKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JF9SRVFVRVNUWyJ0b3RhbF9hbW91bnQiXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9MDsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbImNlbnRzXzEiXSswKSAgICogMC4wMSApOwogICAgICAgICAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsiY2VudHNfNSJdKzApICAgKiAwLjA1ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJjZW50c18xMCJdKzApICAgKiAwLjEwICk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJjZW50c18yMCJdKzApICAgKiAwLjIwICk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJjZW50c181MCJdKzApICAgKiAwLjUwICk7CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbInJtXzEiXSswKSAgICogMSApOwogICAgICAgICAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsicm1fNSJdKzApICAgKiA1ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJybV8xMCJdKzApICAgKiAxMCApOwogICAgICAgICAgICAgICAgICAgICAgICAkdG90YWxfY2FzaD0kdG90YWxfY2FzaCArICggKCRfUkVRVUVTVFsicm1fMjAiXSswKSAgICogMjAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2Nhc2g9JHRvdGFsX2Nhc2ggKyAoICgkX1JFUVVFU1RbInJtXzUwIl0rMCkgICAqIDUwICk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b3RhbF9jYXNoPSR0b3RhbF9jYXNoICsgKCAoJF9SRVFVRVNUWyJybV8xMDAiXSswKSAgICogMTAwICk7CgogICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPlRvdGFsIEFtb3VudCBDb3VudGVkOiA8Zm9udCBzaXplPTggY29sb3I9IzJFQ0M3MSA+Uk0gIi5udW1iZXJfZm9ybWF0KCR0b3RhbF9jYXNoKzAsMiwiLiIsIiwiKS4iPC9mb250Pjxicj4iOwoKCiAgICAgICAgICAgICAgICAgICAgICAgLy8gZWNobyAiPGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSdDYWxjdWxhdGUgJiBTYXZlIERyYWZ0JyBjbGFzcz1idXR0b25fYmx1ZSBvbmNsaWNrPVwibW9uX3N1Ym1pdF9mb3JtKCdjbG9zaW5nZm9ybScsJ3NjcmVlbi9mYXN0Y291bnRlci9jbG9zaW5nLnBocCcsJ3dpbmRvd19wb3BfY29udGFpbmVyJylcIiA+IjsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICBlY2hvICI8L3RyPiI7CgoKICAgICAgICAgICAgICAgICR0b3RhbF9kaWZmZXJlbnQgPSAgJHRvdGFsX2Nhc2ggLSAoICRfUkVRVUVTVFsiaW5pdGlhbF9jYXNoIl0gKyAkdG90YWxfc2FsZXMpOwoKCgoKICAgIGVjaG8gIjwvdGFibGU+IjsKICAgIAogICAgCiAgICAKICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIAoKZWNobyAiPGhyIHN0eWxlPSdib3JkZXI6MHB4IHNvbGlkICMwMDA7Ym9yZGVyLXRvcDoycHggc29saWQgIzJDM0U1MDsnPiI7CgoKCgogICAgICAgICAgICBlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ndXNlcl9hY3Rpb24nIHZhbHVlPScnID4iOwoKCiAgICAgICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD05MCUgY2VsbHBhZGRpbmc9MTAgYm9yZGVyPTA+IjsKICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZCB3aWR0aD0xODAgdmFsaWduPXRvcCA+IjsKCiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5X3VuY2xvc2U9InNlbGVjdCAqIGZyb20gdF8iLiRrZXlfdGFibGVfcHJlZml4LiJfc2FsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHNhbF9zdGF0dXMgPSAnUEFJRCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpZm51bGwoc2FsX2Nsb3NpbmdfYmF0Y2gsJycpID0nJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjsKCiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdF91bmNsb3NlID0gbXlzcWxfcXVlcnkoJHF1ZXJ5X3VuY2xvc2UpIG9yIGRpZSgiRXJyb3IiKS5teXNxbF9lcnJvcigpOwoKICAgICAgICAgICAgICAgICAgICBpZihteXNxbF9udW1fcm93cygkcmVzdWx0X3VuY2xvc2UpPjApCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPSMyRUNDNzEgc2l6ZT0yPlRvdGFsIG9mICIubXlzcWxfbnVtX3Jvd3MoJHJlc3VsdF91bmNsb3NlKS4iIGJpbGwocykgZm9yIGNsb3NpbmcuPC9mb250Pjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgc2l6ZT0yPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnlfdW5jbG9zZV9ncm91cGluZyA9ICJzZWxlY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KHNhbF9pZCkgYXMgdG90YWxfYmlsbHMsIHNhbF9wYXltZW50X3RleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdF8iLiRrZXlfdGFibGVfcHJlZml4LiJfc2FsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHNhbF9zdGF0dXMgPSAnUEFJRCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpZm51bGwoc2FsX2Nsb3NpbmdfYmF0Y2gsJycpID0nJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgYnkgc2FsX3BheW1lbnRfdGV4dCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHRfdW5jbG9zZV9ncm91cGluZyA9IG15c3FsX3F1ZXJ5KCRxdWVyeV91bmNsb3NlX2dyb3VwaW5nKSBvciBkaWUoIkVycm9yIikubXlzcWxfZXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCRsaW5lX3VuY2xvc2VfZ3JvdXBpbmcgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0X3VuY2xvc2VfZ3JvdXBpbmcsTVlTUUxfQVNTT0MpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzcGFuIGNsYXNzPSdmYSBmYS1maWxlLXRleHQtbyBmYS0xeCc+PC9zcGFuPiAiLiRsaW5lX3VuY2xvc2VfZ3JvdXBpbmdbInNhbF9wYXltZW50X3RleHQiXS4iOiAiLiRsaW5lX3VuY2xvc2VfZ3JvdXBpbmdbInRvdGFsX2JpbGxzIl0uIjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2ZvbnQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTgwIHZhbGlnbj10b3AgPiI7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj0jMkVDQzcxIHNpemU9Mj5CaWxsKHMpIFRyYW5zYWN0ZWQgYnkgUGVyc29uLjwvZm9udD48YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBzaXplPTI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCR0b3RhbF9iaWxsc19ieV9wZXJzb24pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR0b3RhbF9iaWxsc19ieV9wZXJzb24gYXMgJHBlcnNvbl9uYW1lID0+ICRwZXJzb25fdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gY2xhc3M9J2ZhIGZhLW1hbGUgZmEtMXgnPjwvc3Bhbj4gIi4kcGVyc29uX25hbWUuIjogIi4kcGVyc29uX3ZhbHVlLiI8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2ZvbnQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PUNsb3Npbmcgd2l0aCBDb3VudGluZz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkIGFsaWduPWNlbnRlciA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBpZD0nZGl2X2Nsb3NpbmdfY29uZmlybWF0aW9uJyBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0O21hcmdpbi10b3A6LTIwMHB4O3otaW5kZXg6MjAwMDt2aXNpYmlsaXR5OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMCU7d2lkdGg6NDIwcHg7aGVpZ2h0OjIwMHB4O2JhY2tncm91bmQ6IzM0NDk1RTtwYWRkaW5nOjEwcHg7Ym9yZGVyLXJhZGl1czoxMHB4Oyc+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiQ29uZmlybSBDbG9zaW5nIHdpdGggQ291bnRpbmc/PGJyPiI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J2ZhLXN0YWNrIGZhLTJ4JyBzdHlsZT0nZmxvYXQ6cmlnaHQ7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuJG1vZGVfYnV0dG9uX2V2ZW50LiI9XCJkb2N1bWVudC5jbG9zaW5nZm9ybS51c2VyX2FjdGlvbi52YWx1ZT0nQ09ORklSTSc7bW9uX3N1Ym1pdF9mb3JtKCdjbG9zaW5nZm9ybScsJ3NjcmVlbi9mYXN0Y291bnRlci9jbG9zaW5nLnBocCcsJ3dpbmRvd19wb3BfY29udGFpbmVyJyk7bW9uX2hpZGVfb2JqZWN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aW5kb3dfcG9wJykpO1wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGkgY2xhc3M9ImZhIGZhLWNpcmNsZSBmYS1zdGFjay0yeCIgc3R5bGU9ImNvbG9yOiMyN0FFNjA7IiA+PC9pPjxpIGNsYXNzPSJmYSBmYS1jaGVjayBmYS1zdGFjay0xeCI+PC9pPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J2ZhLXN0YWNrIGZhLTJ4JyBzdHlsZT0nZmxvYXQ6cmlnaHQ7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuJG1vZGVfYnV0dG9uX2V2ZW50LiI9XCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2X2Nsb3NpbmdfY29uZmlybWF0aW9uJykuc3R5bGUudmlzaWJpbGl0eT0naGlkZGVuJzsgXCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8aSBjbGFzcz0iZmEgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IiBzdHlsZT0iY29sb3I6I0U3NEMzQzsiID48L2k+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIGZhLXN0YWNrLTF4Ij48L2k+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9kaXY+IjsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBjbGFzcz0nZmEtc3RhY2sgZmEtbGcnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4kbW9kZV9idXR0b25fZXZlbnQuIj1cImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfY2xvc2luZ19jb25maXJtYXRpb24nKS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJzsgXCIKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxpIGNsYXNzPSJmYSBmYS1jaXJjbGUgZmEtc3RhY2stMngiIHN0eWxlPSJjb2xvcjojMjdBRTYwOyIgPjwvaT48aSBjbGFzcz0iZmEgZmEtY2hlY2sgZmEtc3RhY2stMXgiPjwvaT4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9kaXY+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBzaXplPTI+Q2xvc2Ugd2l0aCBNb25leSBDb3VudGluZzwvZm9udD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PUNsb3Npbmcgd2l0aG91dCBDb3VudGluZz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZCBhbGlnbj1jZW50ZXIgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGlkPSdkaXZfY2xvc2luZ19jb25maXJtYXRpb25fbm9fY291bnQnIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLXRvcDotMjAwcHg7ei1pbmRleDoyMDAwO3Zpc2liaWxpdHk6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwJTt3aWR0aDo0MjBweDtoZWlnaHQ6MjAwcHg7YmFja2dyb3VuZDojMzQ0OTVFO3BhZGRpbmc6MTBweDtib3JkZXItcmFkaXVzOjEwcHg7Jz4iOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJDb25maXJtIENsb3NpbmcgYW5kIENvdW50IExhdGVyPzxicj4iOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSdmYS1zdGFjayBmYS0yeCcgc3R5bGU9J2Zsb2F0OnJpZ2h0OycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiRtb2RlX2J1dHRvbl9ldmVudC4iPVwiZG9jdW1lbnQuY2xvc2luZ2Zvcm0udXNlcl9hY3Rpb24udmFsdWU9J0NPTkZJUk1fTk9fQ09VTlQnO21vbl9zdWJtaXRfZm9ybSgnY2xvc2luZ2Zvcm0nLCdzY3JlZW4vZmFzdGNvdW50ZXIvY2xvc2luZy5waHAnLCd3aW5kb3dfcG9wX2NvbnRhaW5lcicpO21vbl9oaWRlX29iamVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2luZG93X3BvcCcpKTtcIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxpIGNsYXNzPSJmYSBmYS1jaXJjbGUgZmEtc3RhY2stMngiIHN0eWxlPSJjb2xvcjojRjM5QzEyOyIgPjwvaT48aSBjbGFzcz0iZmEgZmEtY2hlY2sgZmEtc3RhY2stMXgiPjwvaT4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSdmYS1zdGFjayBmYS0yeCcgc3R5bGU9J2Zsb2F0OnJpZ2h0OycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiRtb2RlX2J1dHRvbl9ldmVudC4iPVwiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpdl9jbG9zaW5nX2NvbmZpcm1hdGlvbl9ub19jb3VudCcpLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbic7IFwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGkgY2xhc3M9ImZhIGZhLWNpcmNsZSBmYS1zdGFjay0yeCIgc3R5bGU9ImNvbG9yOiNFNzRDM0M7IiA+PC9pPjxpIGNsYXNzPSJmYSBmYS10aW1lcyBmYS1zdGFjay0xeCI+PC9pPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J2ZhLXN0YWNrIGZhLWxnJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4kbW9kZV9idXR0b25fZXZlbnQuIj1cImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfY2xvc2luZ19jb25maXJtYXRpb25fbm9fY291bnQnKS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJzsgXCIKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxpIGNsYXNzPSJmYSBmYS1jaXJjbGUgZmEtc3RhY2stMngiIHN0eWxlPSJjb2xvcjojRjM5QzEyOyIgPjwvaT48aSBjbGFzcz0iZmEgZmEtY2hlY2sgZmEtc3RhY2stMXgiPjwvaT4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9kaXY+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IHNpemU9Mj5DbG9zZSBidXQgQ291bnQgTGF0ZXI8L2ZvbnQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlewoKCgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IHN0eWxlPSdiYWNrZ3JvdW5kOiNFNzRDM0M7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjBweDt3aWR0aDozMDBweDsnIGlkPSdwYXlfZXJyb3JfbWVzc2FnZSc+IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiTm8gVW5jbG9zZSBCaWxsKHMpIjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7CgoKICAgICAgICAgICAgICAgICAgICB9CgoKCgoKCgogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsKCiAgICAgICAgICAgIGVjaG8gIjwvdGFibGU+IjsKCgoKICAgICAgICAgICAvLyBlY2hvICI8aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9J0NvbmZpcm0gQ2xvc2luZycgY2xhc3M9YnV0dG9uX2JsdWUgb25jbGljaz1cImRvY3VtZW50LmNsb3Npbmdmb3JtLnVzZXJfYWN0aW9uLnZhbHVlPSdDT05GSVJNJzttb25faGlkZV9vYmplY3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpbmRvd19wb3AnKSk7bW9uX3N1Ym1pdF9mb3JtKCdjbG9zaW5nZm9ybScsJ3NjcmVlbi9mYXN0Y291bnRlci9jbG9zaW5nLnBocCcsJ3dpbmRvd19wb3BfY29udGFpbmVyJylcIiA+IjsKICAgICAgICAgICAvLyBlY2hvICIgPGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSdDbG9zZSBXaW5kb3cnIGNsYXNzPWJ1dHRvbl9yZWQgb25jbGljaz1cIm1vbl9zZW5kX2dldCgnc2NyZWVuL2Zhc3Rjb3VudGVyL21haW4ucGhwJywnZGl2X2NvbnRlbnQnKTttb25faGlkZV9vYmplY3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpbmRvd19wb3AnKSk7XCIgID4iOwogICAgZWNobyAiPC9mb3JtPiI7CgoKCgokYWRkb25fcGF0aD0iLi4vLi4vIjsKaW5jbHVkZSAkYWRkb25fcGF0aC4iaW5jbHVkZXMvZW5kX2FqYXgucGhwIjsKPz4="));  ?>

Function Calls

base64_decode 2

Variables

None

Stats

MD5 372bda5d72a15074d94db995f1cb1892
Eval Count 1
Decode Time 170 ms