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 $_F=__FILE__;$_C60465765='Pz48P2p3ag0KCWJIVUxDV08oIi4uLy4uL0xiaWVPZWJWL09IZ2JITy5qd2..

Decoded Output download

?><?php
	include("../../libreria/engine.php");
	$_SESSION["logError"] = array();

	$gasto = new af_gasto();
	$gasto->fecha = date("Y-m-d",time());
	$gasto->pago = 0; //Cuando se paga se pone el 1
	$gasto->fpago = '' ;  //Vacio cuando nuevo
	$gasto->stad = 1;
	
	if($_POST)
	{
		$gasto = new af_gasto();
		
		$gasto->cod = $_POST['txtNo'] ;
		
		if($gasto->cod > 0)
		{
			$gasto->cargar();
			if($gasto->pago > 0)
			{
				$usr = strtoupper($_SESSION['muniUser']['username']);
				echo mensajeDeError("<b>{$usr}</b>: Recuerde que no debe modificar un comprobante ya pago... Esta accion no se registrara, ya que puede producir un descuadre grave en el sistema, debido a que este comprobante esta registrado como pago. <br/>");
				echo "
					<script type='text/javascript'>
					actualizarPestana();
						alert('Acci&oacute;n cancelada!!');
					</script>
				";
				exit();
			}
		}
		$gasto = new af_gasto();
		
		$gasto->cod = $_POST['txtNo'] ;
		
		$gasto->nombre = $_POST['txtAl'] ;
		$gasto->fecha = $_POST['txtFechaComprote'] ;
		$gasto->detalle = $_POST['txtDetalle'] ;
		$gasto->stad = (isset($_POST["txtCoActivo"]))?1:0;
		$gasto->fdo = $_POST['txtFondo_la'];
		$gasto->oe = (isset($_POST["txtNoCheque"]))?1:0;
		$gasto->ck = (isset($_POST["txtNoCheque"]))?0:1;
		$gasto->doc = (isset($_POST["txtTipoRnc"]))?$_POST["txtTipoRnc"]:"";
		$gasto->numdoc = $_POST["txtCedRNCSuplidor"];
		$gasto->retencion = (isset($_POST["txtRetenido"]))?$_POST["txtRetenido"]:0;
		$gasto->itbis = $_POST["txtItbis"];
		$gasto->gdirectos = $_POST["txtOtros"];
		$gasto->bruto = $_POST["txtBruto"];
		$gasto->descuento = $_POST["txtDescuento"];
		$gasto->adelanto = $_POST["txtAdelanto"];
		$gasto->origen = $_POST["txtOrigen"];
		$gasto->stad = $_POST["txtStad"];
		$gasto->direccion = $_POST["txtDireccionSuplidor"];
		$gasto->condicion = $_POST["txtCondicion"];
		$gasto->numerocuenta = $_POST["txtNumerocuenta"];
		
		
		$codigosPresupuestarios = $_POST["dtxtCodigo"];
		$montossPresupuestarios = $_POST["dtxtMonto"];
	
		if(count($codigosPresupuestarios) > 0)
		{
			foreach($codigosPresupuestarios as $pos=>$pres)
			{
				$monto = $montossPresupuestarios[$pos];
				$gasto->agregarPresupuesto($pres, $monto);
			}
		}
		
		if(isset( $_POST["txtRetenCodigo"]))
		{
			$retencionPres = $_POST["txtRetenCodigo"];
			$retencionCodigo = $_POST["txtRetenCodigoRetencion"];
			$retencionReten = $_POST["txtRetenRetencionRetencion"];
			$retencionMontoBase = $_POST["txtRetenMonto"];
			
			$gasto->Rrnc = $_POST["txtRetenRNC"];
			$gasto->Rncf = $_POST["txtRetenNCF"];
			if(count($retencionPres) > 0);
			{
				foreach($retencionPres as $pos=>$pres)
				{
					$gasto->agregarRetencion($retencionCodigo[$pos],$retencionPres[$pos], $retencionReten[$pos],  $retencionMontoBase[$pos]);//
				}
			}
		}
		
		/*if($gasto->presTotal!=$gasto->neto){
			echo  mensajeDeError("Animal, el total de presupuesto debe de ser igual que el neto del comprobante, BESTIA!!");
		}
		//exit();*/
		$gasto->guardar();
		
		$txtDataCxP = $_POST["txtDataCxP"];
		if($txtDataCxP != "")
		{
			$gasto->registrarPagoCpX($txtDataCxP);
		}
		
		echo mensajeDeAlerta("Datos del Registro Guardados.");
		echo "
			<script language='javascript'>
			
				document.getElementById('txtNo').value = '$gasto->cod';
			
			</script>
		
		";
		exit();
	}
	else
	{
		if(isset($_GET['cod']) && strlen($_GET['cod']) > 5)
		{
			$gasto->cod = $_GET['cod'];
			$gasto->cargar();
		}else if(isset($_GET['asig']) && strlen($_GET['asig']) > 3){
			
			$asig = $_GET['asig'];
			/////////////////sql para sacar los datos de llenar el comprobante
			
			$dtAsig_c = new dataTable("SELECT  m.cod, s.nombre, m.fecha, b.titulo AS fondo, 
								m.fondo AS fondo_cod, c.concepto, s.rnc, s.direc,
								m.stad, m.origen, c.bruto, c.itbis, c.descuento, c.otros, (c.bruto+ c.itbis- c.descuento+ c.otros) AS total 
								FROM af_gasigna m LEFT JOIN af_exec d ON m.cod = d.ref AND d.tipo = 'A' 
								LEFT JOIN af_cxpagar c ON c.cod = m.referencia 
								LEFT JOIN am_sup s ON s.cod = c.suplidor 
								LEFT JOIN af_mbanco b ON b.fondo = m.fondo WHERE m.cod = '{$asig}'
								GROUP BY m.cod ORDER BY m.cod"); 
		}
		
	}
	
	function mostrarAsigna($CodCG)
	{
		
		$sql = "SELECT m.cod, m.fecha, CONCAT(m.origen,' ', m.referencia, ' de fecha ', m.freferencia) AS origen, b.titulo AS fondo, SUM(d.monto) AS monto
				FROM af_gasigna m, af_mbanco b, af_exec d
			 WHERE b.fondo = m.fondo AND m.comprogasto  = '$CodCG' AND d.ref = m.cod AND d.tipo = 'A' AND m.stad = 1
			 group by m.cod
		";
		echo $sql;
		$dt = new dataTable($sql);
		if($CodCG == 0){
			$dt->numRows = 0;
		}
		$total = 0;
		
		if ($dt->numRows > 0)
		{
		
			foreach($dt->data["origen"] as $pos=>&$valor)
			{
				$valor = ($valor);
				$dt->data["monto"][$pos] = "<div align='right'>". number_format($dt->data["monto"][$pos],2)."</div>";
				$total += $dt->data["monto"][$pos];
						
			}
			
		}
		
		$gridasigna = new dataGrid($dt);
		
		$gridasigna->cambiarLabel("cod" , "Asignacion #");
		$gridasigna->cambiarLabel("origen" , "Origen");
		$gridasigna->cambiarLabel("monto" , "Monto");
		
		if($gasto->cod==""){
			$gasto->stad=1;
		}else{
			$gasto->stad=$gasto->stad;
		}
		?>
		<style>
			#divBotonesM button
			{
				margin-left:50px;
			}
		
		</style>
		<table>
			<tr>
				<td>Se Muestran <?php echo $dt->numRows; ?> Registros por $ <?php echo number_format($total,2); ?>
					
				</td>
				<td>
				<div id='divBotonesM'>
				<button type='button' title = 'Imprimir Listado' onclick='imprimir();' style = 'height:35px; width:35px'><img src='images/printer.png' style = 'width:22px' /></button>
				</div>
				</td>
			</tr>
		</table>
		
		
		<?php
		$gridasigna->display();

	}

	function mostrarCheques($CodCG)
	{
		
		$sql = "SELECT cod, fecha, det, doc, stad, conc, oe, deb AS monto 
		FROM af_banco WHERE ref = '$CodCG'
		";
		
		$dt = new dataTable($sql);
		if($CodCG == 0){
			$dt->numRows = 0;
		}
		$total = 0;
		
		if ($dt->numRows > 0)
		{
		
			foreach($dt->data["det"] as $pos=>&$valor)
			{
				$valor = ($valor);
				$dt->data["monto"][$pos] = "<div align='right'>". number_format($dt->data["monto"][$pos],2)."</div>";
				$estado = ($dt->data["stad"][$pos] == 1)?"Activo":"Cancelado";
				$total += $dt->data["monto"][$pos];
				$conc = 'Por Conciliar';
				if ($dt->data["conc"][$pos] <> '0000-00')
				{
					$conc = 'Conciliado en '.$dt->data["conc"][$pos];
				
				}
				$operacion = ($dt->data["oe"][$pos] == 1)?"Pago Electronico":"";
				
		
			}
			
		}
		
		$grid = new dataGrid($dt);
		
		$grid->setRowAction("ondblclick", "cheque", array("cod"));
		$grid->cambiarLabel("cod" , "C&oacute;digo");
		$grid->cambiarLabel("det" , "A Nombre de...");
		$grid->cambiarLabel("doc" , "Doc.");
		$grid->cambiarLabel("docfis" , "Doc. Fisico");
		
		
		
		?>
		
		<style>
			#divBotonesM button
			{
				margin-left:50px;
			}
		
		</style>
		<table>
			<tr>
				<td>Se Muestran <?php echo $dt->numRows; ?> Registros por $ <?php echo number_format($total,2); ?>
					
				</td>
				<td>
				<div id='divBotonesM'>
				<button type='button' title = 'Imprimir Listado' onclick='imprimir();' style = 'height:35px; width:35px'><img src='images/printer.png' style = 'width:22px' /></button>
				</div>
				</td>
			</tr>
		</table>
		
		
		<?php
		$grid->display();

	}
	
	
	$sql = "SELECT fondo, titulo FROM af_mbanco";
	$txtFondo_la = new comboBox("txtFondo_la", new dataTable($sql));
	$txtFondo_la->accion = "onchange='cambioFondo(this);' title='Debe indicar la cuenta' title='Debe seleccionar el fondo ' ";
	$txtFondo_la->class = "requerido";
	$txtFondo_la->setValue($gasto->fdo);
	$per = $_SESSION["sistemVARS"]["per"];
		
	$sql = "SELECT t.prg, CONCAT(t.prg, '-',IF(p.detprg IS NULL,c.detprg,p.detprg)) AS det
	FROM af_tgasto t
	LEFT JOIN cat_mprog c ON t.prg = c.cod 
	LEFT JOIN af_proy p ON t.prg = p.proy AND p.per =t.per
	WHERE t.fdo = 1 AND t.per = $per
	GROUP BY t.prg
	ORDER BY t.prg";
	$dtxtPrograma = new comboBox("dtxtPrograma", new dataTable($sql));
	
	$dtxtPrograma->width = "180";
	if($gasto->cod==""){
		$gasto->stad=1;
		$gasto->condicion=1;
	}else{
		$gasto->stad = $gasto->stad;
		$gasto->condicion=2;
	}
	
	$gasto->neto = $gasto->bruto+$gasto->itbis- $gasto->descuento;
?>
<style>
	.comboClas
	{
		width:150px;
	}

	#divBotonesMcg button
	{
		margin-left:90px;
	}
	
	.bontonIMg
	{
		border:none;
		cursor:pointer;
		width:20px;
	}
</style>

<form method="post"  action="modulos/comprobante/comprobante.php"  id="frmComprobanteCompleto">
<input type="hidden" value=""  name="txtDataCxP" id="txtDataCxP" />
<input type="hidden" value="0" name="txtMontoCxPComprobante" id="txtMontoCxPComprobante" />
	<fieldset>
		<legend><b>Datos del Comprobante de Gasto</b></legend>
		<table>
			<tr>
				<td>
					CG No. <input value="<?php echo $gasto->cod; ?>" readonly="readonly" type="text" name="txtNo" id="txtNo" /> 
				</td>
				<td>
					Fondo: 
					<?php
						$txtFondo_la->display();
					?>
				</td>
				<td>
					Fecha: <input class="fechacompro" title="Debe indicar una fecha valida" value="<?php echo $gasto->fecha; ?>" type="text" name="txtFechaComprote" id="txtFechaComprote"/> 
					<input class="" title="Debe indicar una fecha valida" value="<?php echo $gasto->adelanto; ?>" type="hidden" name="txtAdelanto" id="txtAdelanto"/> 
				</td>
				<td>
					<label><input <?php echo ($gasto->oe > 0)?"checked='checked'":""; ?> name="txtNoCheque" value="1" type="checkbox" /> No Cheque</label>
				</td>
				<td>
					<button type="button" class="btnPrint" title="Solicitud de cheque" onclick="imprimirSolicitud();" ></button>
					
					
				</td>
				
			</tr>
		</table>
		
	 </fieldset>
	<table>
		<tr>
		<td><input type="hidden" value="<?php echo $gasto->origen; ?>" name="txtOrigen" id="txtOrigen">
		<td><input type="hidden" value="<?php echo $gasto->condicion; ?>" name="txtCondicion" id="txtCondicion">
						
		<td>
		<fieldset style='height:130px'>
			<legend><b>Datos del Suplidor</b></legend>
				<table>
					<tr>
						<td align="left">
							<button class="btnSearch" onclick="buscarSuplidorCompro();" type="button"></button> Al:
						</td>
						<td colspan="2">
							<input name="txtAl" type="text" class="requerido" id="txtAl" style="width:400px;" title="Debe inidicar el nombre del Suplidor" value="<?php echo $gasto->nombre; ?>" maxlength="45" />
						</td>
					</tr>
					<tr>
						<td align="right">
							Direcci&oacute;n:
						</td>
						<td colspan="2">
							<input style="width:400px;" name="txtDireccionSuplidor" id="txtDireccion"  type="text" value="<?php echo $gasto->direccion;?>"  />
						</td>
					</tr>
					<tr>
						<td valign="top">
							C&eacute;dula/RNC:
						</td>
						<td valign="top">
							<input type="hidden" value="<?php echo $gasto->stad; ?>" name="txtStad" id="txtStad">
		
							<input value="<?php echo $gasto->numdoc; ?>" name="txtCedRNCSuplidor" type="text" id="txtCedRNCSuplidor"/>
						</td>
						<td>
							<fieldset>
								<label><input <?php echo ($gasto->doc == "R")?"checked":""; ?> type="radio" name="txtTipoRnc" value="R"/>RNC</label>
								<label><input <?php echo ($gasto->doc == "C")?"checked":""; ?> type="radio" name="txtTipoRnc" value="C"/>C&eacute;dula</label>
								<label><input <?php echo ($gasto->doc == "P")?"checked":""; ?> type="radio" name="txtTipoRnc" value="P"/>Pasaporte</label>
							</fieldset>
						</td>
					</tr>
				</table>
			</fieldset>
		</td>
		
		<td style='vertical-align:top'>
			<fieldset style='height:130px'>
				<legend><b>Detalle del Comprobante</b></legend>
				<table>
					<tr>
						<td>
							<textarea onDblClick = "Detalle('<?php echo $gasto->cod; ?>')"; name="txtDetalle" class="requerido" id="txtDetallex" style="width:330px; height:105px;" title="Debe llenar el detalle del comprobante"><?php echo $gasto->detalle;  ?></textarea>
						</td>
					</tr>
				</table>
			</fieldset>
		</td>
	</tr>
	</table>
	<fieldset>
		<legend><b>Monto Bruto, Itbis, Descuentos  y Otros</b></legend>
		<table>
			<tr> 
				<td><input value="<?php echo $gasto->numerocuenta; ?>" class='' type="hidden" name="txtNumerocuenta" id="txtNumerocuenta" /> </td>
				<td>Bruto: <input onkeyup="vernetoComprobante();"  value="<?php echo $gasto->bruto; ?>" class='decimal requerido' type="text" name="txtBruto" id="txtBruto" /> </td>
				<td>Itbis: <input onkeyup="vernetoComprobante();"  value="<?php echo $gasto->itbis; ?>" class='decimal requerido' type="text" name="txtItbis" id="txtItbis" /> </td>
				<td>Descuento: <input onkeyup="vernetoComprobante();"  value="<?php echo $gasto->descuento; ?>" class='decimal requerido' type="text" name="txtDescuento" id="txtDescuento" /> </td>
				<td>Otros: <input onkeyup="vernetoComprobante();" value="<?php echo $gasto->gdirectos; ?>" class='decimal requerido' type="text" name="txtOtros" id="txtOtros" /> </td>
				<td><strong>Neto:</strong> <input  readonly value="<?php echo $gasto->neto; ?>" class='' type="text" name="txtTotalComprobanteNeto" id="txtTotalComprobanteNeto" /> </td>
			</tr>
		</table>
		
	</fieldset>
		
	<fieldset>
		<legend><b>Asignaci&oacute;n Presupuestaria, Retenciones y Cheques</b></legend>
		<div id="divDetalles_comprogasto369">
			<ul style="font-size:90%">
				<li><a href="#divPresupuestoCompro">Presupuesto</a></li>
				<li><a href="#divRetenciones">Retenciones</a></li>
				<li><a href="#divConsultaCheques">Cheques</a></li>
				
				
			</ul>
			<div id="divPresupuestoCompro">
			
				<table  width="100%" border="0" style="border:1px green solid; border-top:none">
					<thead>
					<tr>
						<td colspan="6" class="ui-corner-top ui-state-default ui-state-focus border:solid 1px blue" width="100%">
							<b>Total : </b><input readonly="readonly" class="requerido" value="<?php echo $gasto->presTotal; ?>" title="El total debe ser mayor de cero." id='txtTotalComprobante' name="txtTotalComprobante" type="text" />						</td>
					</tr>
					
					
					</thead>
					<tr>
						<td colspan='6'>
							<?php	
								#VERIFICA_DTASIG
								
								if(isset($dtAsig_c)){
									$filaAsig = $dtAsig_c->getRow(0);
									$pres = new dataTable("SELECT pres, monto FROM af_exec WHERE ref = '{$filaAsig['cod']}' AND tipo = 'A'");
									echo $sql;
									$total = array_sum($pres->data['monto']);
									$grid = new dataGrid($pres);
									$grid->display();
									echo "<script> $('#txtTotalComprobante').val('{$total}'); </script>";
								}
							?>
						</td>
					</tr>
					
					<tr style="background:#cccccc">
						<th>C&oacute;digo</th>
						<th>C&oacute;digo Presupuestario</th>
					
						<th>Monto</th>
						<td><button onclick="cargarDetalle();" type="button" class="btnAdd"></button></td>
					</tr>
					<tbody id="tblDetalleComprobante"><?php
							if(count($gasto->presupuestos) > 0)
							foreach($gasto->presupuestos as $pres)
							{
								
								echo "<tr><td><input type='text' name='dtxtCodigo[]' readonly value='$pres->pres' /></td><td><input readonly name='txtCodPres[]' value='$pres->nombre' style='width: 300px;' type='text'/><input readonly name='txtBal[]' type='hidden'/></td><td><input type='text' onkeyup='sumaTotalPresupuesto();' name='dtxtMonto[]' value='$pres->monto' /></td><td>
								<button class='btnDeleteSmall' onclick='eliminarDetalle1(this); sumaTotalPresupuesto()'></button>
								</td></tr>";
							}
						?></tbody>
				</table>
			</div>
			<div id="divRetenciones">
				<table width="100%" border="0" style="border:solid 1px #cccccc;">
					<thead style="border:1px solid #cccccc;">
					<tr>
						<td colspan="6">
						<table cellpadding="0" cellspacing="0" class="ui-corner-top ui-state-default ui-state-focus border:solid 1px blue" width="100%">
							<tr >
							<td >
							<b>Total Retenciones: </b><input readonly="readonly" class=" " title="El total de retenciones debe ser mayor que cero" id='txtTotalComprobanteRet' name="txtTotalComprobanteRet" type="text" value="<?php echo $gasto->retenTotal; ?>" />	
							</td>
							<td><b>RNC/C&eacute;dula: </b><input value="<?php echo $gasto->Rrnc; ?>" name="txtRetenRNC" type="text" class="" id="txtRetenRNC" title="Debe llenar el RNC o Cedula"></td>
							<td><b>NCF: </b><input value="<?php echo $gasto->Rncf; ?>" name="txtRetenNCF" type="text" id="txtRetenNCF"></td>
							<td>
								<button id="btnAplicarReten" type="button" onclick="aplicarRetenciones()" <?php echo ($gasto->retencion > 0)?"disabled":"" ?>>Aplicar Retenciones</button>	
								<input onfocus="this.blur;" value="1"  onclick="return false;" type="checkbox" name="txtRetenido" id="txtRetenido" readonly="readonly" <?php echo ($gasto->retencion > 0)?"checked":"" ?> />
							</td>
							</tr>
						</table>
						</td>
					</tr>
					<tr>
						<th>C&oacute;digo Presupuestario</th>
						<th>Monto</th>
						<th>Cod. Retenci&oacute;n</th>
						<th>Retenci&oacute;n</th>
						<td><button onclick="cargarRetencion();" class="btnAdd" type="button"></button></td>
					</tr>
					</thead>
					<tbody id="tblDetalleRetencion"><?php
							if(count($gasto->retenciones) > 0)
							foreach($gasto->retenciones as $ret)
							{
								echo "<tr><td><input type='text' value='{$ret->pres}' name='txtRetenCodigo[]'></td><td><input type='text' name='txtRetenMonto[]' value='{$ret->montoOriginal}'></td><td><input type='text' name='txtRetenCodigoRetencion[]' value='{$ret->codret}'></td><td><input type='text' onkeyup='sumaTotalRetenciones();' name='txtRetenRetencionRetencion[]' value='{$ret->monto}'></td><td><button class='btnDeleteSmall' onclick='eliminarDetalle1(this); sumaTotalRetenciones();'></button></td></tr>";
							}
							?></tbody>
				</table>
			</div>
			
			<div id="divConsultaCheques" >
				<div id = "divlista" style="overflow:auto; height:300px;">
				
				
					<?php mostrarCheques($gasto->cod);  ?>
				</div>
			</div>
		</div>
	</fieldset>
	
	<div id="divResultadoEnvioComprobante"></div>
</div>
<center>
<div id="divBotonesMcg">
		<button type="button" onclick="verificarDatos() " class="btnSave" title = "Salvar Comprobante" style = ''></button>
		
		<?php 
			if($_SESSION["sistemVARS"]["imprimirComprobantte"]==1){
				echo '<button type="button" class = "btnPrintdoc" title = "Imprimir Comprobantes" onclick="imprimirEsteComprobantePapel();" ></button>';
			}else{
				echo '<button type="button" class = "btnPrintdoc" title = "Imprimir Comprobantes" onclick="imprimirEsteComprobante();" ></button>';
			}
			
		?>
		<button type="button" class="btnClose" title = "Salir" onclick="comprobanteSalir();" ></button>
	
</div>
</center>
</form>
<script language="javascript">
	function vernetoComprobante(){
		
		
		bruto = $("#txtBruto").val();
		itbis = $("#txtItbis").val();
		otros = $("#txtOtros").val();
		descuento = $("#txtDescuento").val();
		neto = $("#txtTotalComprobanteNeto").val();
		
		neto = parseFloat(bruto)+parseFloat(itbis)+parseFloat(otros)-parseFloat(descuento);
		neto = (isNaN(neto))?0:neto;
		document.getElementById("txtTotalComprobanteNeto").value = neto;
		
	}
	
	var ckpres = '<?php echo $_SESSION["sistemVARS"]["ckpres"]; ?>';
	
	asgForm($("#frmComprobanteCompleto"),$("#divResultadoEnvioComprobante"));
	
	function imprimirSolicitud()
	{
		cod = document.getElementById("txtNo").value;
		if(cod != "")
		{
			
			ImprimirPDF("modulos/reporte/comprobantes/RSolicitudCheque.php?cod="+cod);
		
		}
		else
		{
			alert("Debe guardar antes de imprimir");
		}
	}
	
	function verificarDatos()
	{
		todoBien = true;
		total = parseFloat(document.getElementById("txtTotalComprobante").value);
		if(total != 0)
		{
			//Todo bien
		}
		else
		{
			alert(" Debe agregar al menos una asignacion presupuestaria. ");
			todoBien = false;
		}
		
		
		
		
		monto = parseFloat(document.getElementById("txtMontoCxPComprobante").value);
		
		/* esto se desabilito porque da un error
		if(monto > 0 && monto != total)
		{
			todoBien = false;
			alert("El monto no es igual a la suma de las facturas a pagar"+monto+"/  "+ total);
		}
		*/
		
		
		if(todoBien)
		{
			$("#frmComprobanteCompleto").submit();
		}
	
	}
	
	
	
	function verificarMonto(bal, obj)
	{
	
		if(!(obj.value > 0))
		{
			alert("Favor de colocar una cantidad valida");
			obj.setAttribute('class','error');
			
		}
		else
		{
			obj.setAttribute('class','');
		}
		if(ckpres == 1)
		{
			
			bal =parseFloat(bal);
			
			if(obj.value > bal)
			{
				alert("El monto de esta cuenta supera el balance disponible: " + bal);
				obj.setAttribute('class','error');
				obj.style.background = "pink";
            
                 verifica('SI');
			}
			else
			{
				obj.setAttribute('class','');
				obj.style.background = "";
                verifica('NO');
			}
		}
		total = 0;
		t = document.getElementsByName(obj.name);
	
		for(x=0; x<t.length ; x++)
		{
			v = parseFloat(t[x].value);
			if(v > 0)
			{
				total += v;
			}
		}
		
		document.getElementById("txtTotalComprobante").value = total;
	}
	
	function eliminarDetalle1(obj)
	{
		if(confirm("Desea eliminar este detalle?"))
		{
			obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
		}
	}

	
	function cargarDetalle()
	{
		fondo = document.getElementById("txtFondo_la").value;
		
		
		if(fondo > 0)
		{
			abrirOpcion("divCarcarDetallesClass","Asignaci&oacute;n de Cuentas Presupuestarias ", "modulos/comprobante/codigosPresupuestarios.php?fondo="+fondo,true);
		}
		else
		{
			alert("Debe seleccionar una Cuenta Bancaria");
		}
		
	}
	
	
	function crearLinea(cod, nombre, bal)
	{
	
		destino = document.getElementById("tblDetalleComprobante");
		num = destino.childNodes.length;
		tr = document.createElement('tr');
	
		text = document.createElement('input');
		text.type='text';
		text.name = 'dtxtCodigo[]';
		text.id = 'dtxtCodigo'+num;
		text.value = '<?php echo $per; ?>' + cod;
		td = document.createElement('td');
		td.appendChild(text);
		tr.appendChild(td);
		
		text = document.createElement('input');
		text.type='text';
		text.style.width='300px';
		text.name = 'txtCodPres[]';
		text.id = 'txtCodPres'+num;
		text.value = nombre;
		td = document.createElement('td');
		td.appendChild(text);
		text = document.createElement('input');
		text.type='hidden';
		text.name = 'txtBal[]';
		text.id = 'txtBal'+num;
		text.value = bal;
		td.appendChild(text);
		tr.appendChild(td);
		
		monto = document.createElement('input');
		monto.type='text';
		monto.name = 'dtxtMonto[]';
		monto.id = 'dtxtMonto'+num;
		monto.setAttribute('onkeyup','sumaTotalPresupuesto()');
		monto.value = 0;
		monto.setAttribute("onkeyup", "verificarMonto('"+bal+"', this);")
		td = document.createElement('td');
		td.appendChild(monto);
		tr.appendChild(td);
		
		text = document.createElement('button');
		text.setAttribute('class','btnDeleteSmall');
		text.setAttribute('onclick','eliminarDetalle1(this)');
		td = document.createElement('td');
		td.appendChild(text);		
		tr.appendChild(td);
		
		destino.appendChild(tr);
		monto.focus();
	
	
	}
	
	function seleccionarDetalle(cod, nombre, monto)
	{
		crearLinea(cod, nombre, monto);
		$("#divCarcarDetallesClass").dialog('close');
	}

	function cargarRetencion()
	{
		monto = document.getElementById("txtBruto").value;
		
		
		if(monto > 0)
		{
			abrirOpcion("divCargarRetenciones","Asignaci&oacute;n de Retenciones ", "modulos/comprobante/retencionCG.php?Monto="+monto,true, 350, 200);
		}
		else
		{
			alert("El monto del Comprobante debe ser mayor que 0 para asignar Retenciones");
		}
		
	}	
	
	function RetenSalirRetencion()
	{
		
		$("#divCargarRetenciones").dialog('close');
	}
	
	function Detalle(cod)
	{
	abrirOpcion("divEditDetalle","Edicion del Detalle del Comprobante ", "modulos/comprobante/detcg.php?cod="+cod,true, 400, 360);
		
	
	}
	 function verifica(dato){
        
            	cargarEn("divRefrescoMonto","modulos/comprobante/reciboInfo.php", "cod="+dato);
     
    }
	function DetalleSalir()
	{
		
		$("#divEditDetalle").dialog('close');
	}
	function comprobanteSalir()
	{
		
		$("#divComprobanteEditWindows").dialog('close');
	}
	//function generarCalculosParaRetencion(tipoRetencion, valorRetencion, codigoRetencion, itebisReten)
		function generarCalculosParaRetencion(tipoRetencion, valorRetencion, codigoRetencion, itebisReten)
	{
	
	
		try{
	
			if(tipoRetencion > 0)
			{
				comprobantes = document.getElementById("tblDetalleComprobante").childNodes;
				numC = comprobantes.length;
				destino = document.getElementById("tblDetalleRetencion");
				
				
				
			
				
				//Por cada uno de los comprobantes se va a agregar una fila.
				for(xCPR=0; xCPR<numC; xCPR++)
				{
					
					
					num = destino.childNodes.length;
					tr = document.createElement('tr');
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.name ='txtRetenCodigo[]';
					texto.value = (comprobantes[xCPR].childNodes[0].childNodes[0].value);
					td.appendChild(texto);
					tr.appendChild(td);
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.name ='txtRetenMonto[]';
					montoComprobante = comprobantes[xCPR].childNodes[2].childNodes[0].value;
					//Monto para el calculo   B3/1.16*0.5/100 del Itebis 16%
					//montoComprobanteC = a2dec((itebisReten >0)?(montoComprobante*0.86206897):montoComprobante);
					
					//Monto para el calculo   B3/1.18*0.5/100 del Itebis 18%
					montoComprobanteC = a2dec((itebisReten >0)?(montoComprobante*0.847457627):montoComprobante);
					
					

					
					texto.value = montoComprobante;
					td.appendChild(texto);
					tr.appendChild(td);
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.value = codigoRetencion;
					texto.name='txtRetenCodigoRetencion[]';
					td.appendChild(texto);
					tr.appendChild(td);
					
					
					td = document.createElement('td');
					texto = document.createElement("input");
					texto.type= 'text';
					texto.value = a2dec(montoComprobanteC * valorRetencion );
					texto.name='txtRetenRetencionRetencion[]';
					texto.setAttribute('onkeyup','sumaTotalRetenciones()');
					td.appendChild(texto);
					tr.appendChild(td);
					
					text = document.createElement('button');
					text.setAttribute('class','btnDeleteSmall');
					text.setAttribute('onclick','eliminarDetalle1(this); sumaTotalRetenciones();');
					td = document.createElement('td');
					td.appendChild(text);		
					tr.appendChild(td);
					
					
					
					destino.appendChild(tr);
					sumaTotalRetenciones();
					
				}
			}
			else
			{
				//Aqui van  los calculos de la retencion  fija!!!
			}
			
			RetenSalirRetencion();  //Para salir del cuadro de dialogo
		
		}
		catch(ex)
		{
			alert(ex);
		}
	}
	
	
	function sumaTotalRetenciones()
	{
		elems = document.getElementsByName("txtRetenRetencionRetencion[]");
		total = 0;
		for(x=0; x< elems.length; x++)
		{
			if(elems[x].value > 0)
			{
				total += parseFloat( elems[x].value);
			}
		}
		
		document.getElementById("txtTotalComprobanteRet").value = a2dec(total);
		
	}
	
	function sumaTotalPresupuesto()
	{
		elems = document.getElementsByName("dtxtMonto[]");
		total = 0;
		for(x=0; x< elems.length; x++)
		{
			if(elems[x].value > 0)
			{
				total += parseFloat( elems[x].value);
			}
		}
		
		elems = document.getElementsByName("txtRetenRetencionRetencion[]");
		
		for(x=0; x< elems.length; x++)
		{
			if(elems[x].value > 0)
			{
				total += parseFloat( elems[x].value);
			}
		}
		document.getElementById("txtTotalComprobante").value = total;
		
	}
	
	
	function aplicarRetenciones()
	{
		try
		{
			rs = confirm("Esta seguro que quiere aplicar las retenciones? ");
			if(rs)
			{
				retencionesTotal = document.getElementById("txtTotalComprobanteRet").value;
				if(retencionesTotal > 0)
				{
					comprobantes = document.getElementById("tblDetalleComprobante").childNodes;
					numC = comprobantes.length;
					retenciones = document.getElementById("tblDetalleRetencion").childNodes;
					numR = retenciones.length;
					
					for(xCAR = 0; xCAR < numR; xCAR++) //Recorrer las retenciones
					{
						rowRetencion = retenciones[xCAR];
						for(xCAC=0; xCAC< numC; xCAC++)       //Recorrer los comprobantes
						{
							rowComprobante = comprobantes[xCAC];
							if(rowComprobante.childNodes[0].childNodes[0].value == rowRetencion.childNodes[0].childNodes[0].value)
							{
						reten = rowRetencion.childNodes[3].childNodes[0].value;
								monto = rowComprobante.childNodes[2].childNodes[0].value;
								nmonto = monto - reten;
								
								rowComprobante.childNodes[2].childNodes[0].value = nmonto;
								rowRetencion.childNodes[1].childNodes[0].value = nmonto;
							
							
							}
							
						}
					} 
					
				    document.getElementById("btnAplicarReten").disabled = true;
					document.getElementById("btnAplicarReten").innerHTML = "Reten. Aplicada";
					document.getElementById("txtRetenido").checked=true;
					
					
					
				
				}
				else
				{
					alert("Debe agregrar al menos una retencion para poder aplicar.");
				}
			
			}
		}
		catch(ex)
		{
			alert(ex);
		}
	}

	$("#divDetalles_comprogasto369").tabs();

	function buscarSuplidorCompro()
	{
		abrirOpcion("divSuplidorCompro","Buscar Suplidor", "modulos/comprobante/cargarSuplidor.php",true);
		
		
	}
	
	
	function aceptarSuplidor(nombre,rnc,direc)
	{
		document.getElementById("txtAl").value = nombre;
		document.getElementById("txtCedRNCSuplidor").value = rnc;
		document.getElementById("txtDireccion").value = direc;
		$("#divSuplidorCompro").dialog('close');
	}
	
	function imprimirEsteComprobante()
	{
		ccompro = document.getElementById("txtNo").value;
		
		if(ccompro == "")
		{
			alert("Debe Guardar el comprobante antes de imprimir");
		}
		else
		{
		
			abrirOpcion("impresionDelComprobante","Impresion de Comprobante", "modulos/comprobante/imprimirComprobante.php?cods="+ccompro,true);
	
			
		}
		
	}
	function imprimirEsteComprobantePapel()
	{
		ccompro = document.getElementById("txtNo").value;
		
		if(ccompro == "")
		{
			alert("Debe Guardar el comprobante antes de imprimir");
		}
		else
		{
		
			ImprimirPDF('modulos/reporte/comprobantes/RCgPaper.php?cods='+ccompro);
			
		}
		
	}
	
</script>
<script language="javascript">
	try{
	datosComprobanteCP();
	}
	catch(ex)
	{
		//alert(ex);
	}
	$(".fechacompro").datepicker({ dateFormat: 'yy-mm-dd',changeYear: true, changeMonth: true, yearRange: '2008:2040'});

</script>
<?php 


	//Se declara esta variable si entra al #VERIFICA_DTASIG
	if(isset($filaAsig)){
			
		echo <<<MIDATA
		<script> 
			$("#txtAl").val("{$filaAsig['nombre']}"); 
			document.getElementById('txtAl').setAttribute('readonly','readonly');
		</script>
		<script>
			fondo = "{$filaAsig['fondo_cod']}";
			cmb_fondo = document.getElementById('txtFondo_la');
			for(x=0; x < cmb_fondo.options.length; x++){
				if(cmb_fondo.options[x].value == fondo){
					cmb_fondo.selectedIndex = x;
					console.log('Cambio a '+x);
					
				}
			} 
			
			la = document.getElementById('txtFondo_la');
			la.setAttribute('disabled','disabled');
			d = document.createElement('input');
			d.type='hidden';
			d.setAttribute('name','txtFondo_la');
			d.value = la.value;
			la.parentNode.insertBefore(d,la);
			
		</script>
		<script>
			$("#txtCedRNCSuplidor").val('{$filaAsig['rnc']}');
			$("#txtDireccion").val('{$filaAsig['direc']}');
			$("#txtDetallex").val('{$filaAsig['concepto']}');
			$("#txtItbis").val('{$filaAsig['itbis']}');
			$("#txtBruto").val('{$filaAsig['bruto']}');
			$("#txtDescuento").val('{$filaAsig['descuento']}');
			$("#txtOtros").val('{$filaAsig['otros']}');
			$("#txtTotalComprobante").val('{$filaAsig['total']}');
			$("#txtRetenRNC").val('{$filaAsig['rnc']}');
			mostrarErrores();
		</script>
MIDATA;
		$g = new dataGrid($dtAsig_c);
		///$g->display();
	}
?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C60465765='Pz48P2p3ag0KCWJIVUxDV08oIi4uLy4uL0xiaWVPZWJWL09IZ2JITy5qd2oiKTsNCgkkX0JTQkIzTkZbIkxtZ1NlZW1lIl0gPSBWZWVWNSgpOw0KDQoJJGdWcnhtID0gSE8wIFZxX2dWcnhtKCk7DQoJJGdWcnhtLT5xT1V3ViA9IFdWeE8oInYtUS1XIix4YlFPKCkpOw0KCSRnVnJ4bS0+alZnbSA9IDY7IC8vMUNWSFdtIHJPIGpWZ1Ygck8gam1ITyBPTCA4DQoJJGdWcnhtLT5xalZnbSA9ICcnIDsgIC8vR1ZVYm0gVUNWSFdtIEhDT0VtDQoJJGdWcnhtLT5yeFZXID0gODsNCgkNCglicSgkX3pOQmYpDQoJew0KCQkkZ1ZyeG0gPSBITzAgVnFfZ1ZyeG0oKTsNCgkJDQoJCSRnVnJ4bS0+VW1XID0gJF96TkJmWyd4WXhGbSddIDsNCgkJDQoJCWJxKCRnVnJ4bS0+VW1XID4gNikNCgkJew0KCQkJJGdWcnhtLT5VVmVnVmUoKTsNCgkJCWJxKCRnVnJ4bS0+alZnbSA+IDYpDQoJCQl7DQoJCQkJJENyZSA9IHJ4ZXhtQ2pqT2UoJF9CU0JCM05GWydRQ0hidHJPZSddWydDck9lSFZRTyddKTsNCgkJCQlPVXdtIFFPSHJWSk9jT1NlZW1lKCI8aT57JENyZX08L2k+OiBuT1VDT2VXTyB5Q08gSG0gV09pTyBRbVdicWJVVmUgQ0ggVW1RamVtaVZIeE8gNVYgalZnbS4uLiBTcnhWIFZVVWJtSCBIbSByTyBlT2dicnhlVmVWLCA1ViB5Q08gakNPV08gamVtV0NVYmUgQ0ggV09yVUNWV2VPIGdlVkVPIE9IIE9MIHJicnhPUVYsIFdPaWJXbSBWIHlDTyBPcnhPIFVtUWplbWlWSHhPIE9yeFYgZU9nYnJ4ZVZXbSBVbVFtIGpWZ20uIDxpZS8+Iik7DQoJCQkJT1V3bSAiDQoJCQkJCTxyVWVianggeDVqTz0neE9ZeC9KVkVWclVlYmp4Jz4NCgkJCQkJVlV4Q1ZMYktWZXpPcnhWSFYoKTsNCgkJCQkJCVZMT2V4KCdBVVViJm1WVUN4TztIIFVWSFVPTFZXViEhJyk7DQoJCQkJCTwvclVlYmp4Pg0KCQkJCSI7DQoJCQkJT1lieCgpOw0KCQkJfQ0KCQl9DQoJCSRnVnJ4bSA9IEhPMCBWcV9nVnJ4bSgpOw0KCQkNCgkJJGdWcnhtLT5VbVcgPSAkX3pOQmZbJ3hZeEZtJ10gOw0KCQkNCgkJJGdWcnhtLT5IbVFpZU8gPSAkX3pOQmZbJ3hZeEFMJ10gOw0KCQkkZ1ZyeG0tPnFPVXdWID0gJF96TkJmWyd4WXhST1V3VjFtUWplbXhPJ10gOw0KCQkkZ1ZyeG0tPldPeFZMTE8gPSAkX3pOQmZbJ3hZeGNPeFZMTE8nXSA7DQoJCSRnVnJ4bS0+cnhWVyA9IChicnJPeCgkX3pOQmZbInhZeDFtQVV4YkVtIl0pKT84OjY7DQoJCSRnVnJ4bS0+cVdtID0gJF96TkJmWyd4WXhSbUhXbV9MViddOw0KCQkkZ1ZyeG0tPm1PID0gKGJyck94KCRfek5CZlsieFl4Rm0xd095Q08iXSkpPzg6NjsNCgkJJGdWcnhtLT5VSSA9IChicnJPeCgkX3pOQmZbInhZeEZtMXdPeUNPIl0pKT82Ojg7DQoJCSRnVnJ4bS0+V21VID0gKGJyck94KCRfek5CZlsieFl4ZmJqbW5IVSJdKSk/JF96TkJmWyJ4WXhmYmptbkhVIl06IiI7DQoJCSRnVnJ4bS0+SENRV21VID0gJF96TkJmWyJ4WXgxT1duRjFCQ2pMYldtZSJdOw0KCQkkZ1ZyeG0tPmVPeE9IVWJtSCA9IChicnJPeCgkX3pOQmZbInhZeG5PeE9IYldtIl0pKT8kX3pOQmZbInhZeG5PeE9IYldtIl06NjsNCgkJJGdWcnhtLT5ieGliciA9ICRfek5CZlsieFl4M3hpYnIiXTsNCgkJJGdWcnhtLT5nV2JlT1V4bXIgPSAkX3pOQmZbInhZeE54ZW1yIl07DQoJCSRnVnJ4bS0+aWVDeG0gPSAkX3pOQmZbInhZeFBlQ3htIl07DQoJCSRnVnJ4bS0+V09yVUNPSHhtID0gJF96TkJmWyJ4WXhjT3JVQ09IeG0iXTsNCgkJJGdWcnhtLT5WV09MVkh4bSA9ICRfek5CZlsieFl4QVdPTFZIeG0iXTsNCgkJJGdWcnhtLT5tZWJnT0ggPSAkX3pOQmZbInhZeE5lYmdPSCJdOw0KCQkkZ1ZyeG0tPnJ4VlcgPSAkX3pOQmZbInhZeEJ4VlciXTsNCgkJJGdWcnhtLT5XYmVPVVVibUggPSAkX3pOQmZbInhZeGNiZU9VVWJtSEJDakxiV21lIl07DQoJCSRnVnJ4bS0+VW1IV2JVYm1IID0gJF96TkJmWyJ4WXgxbUhXYlVibUgiXTsNCgkJJGdWcnhtLT5IQ1FPZW1VQ09IeFYgPSAkX3pOQmZbInhZeEZDUU9lbVVDT0h4ViJdOw0KCQkNCgkJDQoJCSRVbVdiZ21yemVPckNqQ09yeFZlYm1yID0gJF96TkJmWyJXeFl4MW1XYmdtIl07DQoJCSRRbUh4bXJyemVPckNqQ09yeFZlYm1yID0gJF96TkJmWyJXeFl4b21IeG0iXTsNCgkNCgkJYnEoVW1DSHgoJFVtV2JnbXJ6ZU9yQ2pDT3J4VmVibXIpID4gNikNCgkJew0KCQkJcW1lT1ZVdygkVW1XYmdtcnplT3JDakNPcnhWZWJtciBWciAkam1yPT4kamVPcikNCgkJCXsNCgkJCQkkUW1IeG0gPSAkUW1IeG1ycnplT3JDakNPcnhWZWJtclskam1yXTsNCgkJCQkkZ1ZyeG0tPlZnZU9nVmV6ZU9yQ2pDT3J4bSgkamVPciwgJFFtSHhtKTsNCgkJCX0NCgkJfQ0KCQkNCgkJYnEoYnJyT3goICRfek5CZlsieFl4bk94T0gxbVdiZ20iXSkpDQoJCXsNCgkJCSRlT3hPSFVibUh6ZU9yID0gJF96TkJmWyJ4WXhuT3hPSDFtV2JnbSJdOw0KCQkJJGVPeE9IVWJtSDFtV2JnbSA9ICRfek5CZlsieFl4bk94T0gxbVdiZ21uT3hPSFVibUgiXTsNCgkJCSRlT3hPSFVibUhuT3hPSCA9ICRfek5CZlsieFl4bk94T0huT3hPSFVibUhuT3hPSFVibUgiXTsNCgkJCSRlT3hPSFVibUhvbUh4bVBWck8gPSAkX3pOQmZbInhZeG5PeE9Ib21IeG0iXTsNCgkJCQ0KCQkJJGdWcnhtLT5uZUhVID0gJF96TkJmWyJ4WXhuT3hPSG5GMSJdOw0KCQkJJGdWcnhtLT5uSFVxID0gJF96TkJmWyJ4WXhuT3hPSEYxUiJdOw0KCQkJYnEoVW1DSHgoJGVPeE9IVWJtSHplT3IpID4gNik7DQoJCQl7DQoJCQkJcW1lT1ZVdygkZU94T0hVYm1IemVPciBWciAkam1yPT4kamVPcikNCgkJCQl7DQoJCQkJCSRnVnJ4bS0+VmdlT2dWZW5PeE9IVWJtSCgkZU94T0hVYm1IMW1XYmdtWyRqbXJdLCRlT3hPSFVibUh6ZU9yWyRqbXJdLCAkZU94T0hVYm1Ibk94T0hbJGptcl0sICAkZU94T0hVYm1Ib21IeG1QVnJPWyRqbXJdKTsvLw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCgkJLypicSgkZ1ZyeG0tPmplT3JmbXhWTCE9JGdWcnhtLT5IT3htKXsNCgkJCU9Vd20gIFFPSHJWSk9jT1NlZW1lKCJBSGJRVkwsIE9MIHhteFZMIFdPIGplT3JDakNPcnhtIFdPaU8gV08gck9lIGJnQ1ZMIHlDTyBPTCBIT3htIFdPTCBVbVFqZW1pVkh4TywgUFNCZjNBISEiKTsNCgkJfQ0KCQkvL09ZYngoKTsqLw0KCQkkZ1ZyeG0tPmdDVmVXVmUoKTsNCgkJDQoJCSR4WXhjVnhWMVl6ID0gJF96TkJmWyJ4WXhjVnhWMVl6Il07DQoJCWJxKCR4WXhjVnhWMVl6ICE9ICIiKQ0KCQl7DQoJCQkkZ1ZyeG0tPmVPZ2JyeGVWZXpWZ20xanAoJHhZeGNWeFYxWXopOw0KCQl9DQoJCQ0KCQlPVXdtIFFPSHJWSk9jT0FMT2V4VigiY1Z4bXIgV09MIG5PZ2JyeGVtIDdDVmVXVldtci4iKTsNCgkJT1V3bSAiDQoJCQk8clVlYmp4IExWSGdDVmdPPSdKVkVWclVlYmp4Jz4NCgkJCQ0KCQkJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCd4WXhGbScpLkVWTENPID0gJyRnVnJ4bS0+VW1XJzsNCgkJCQ0KCQkJPC9yVWViang+DQoJCQ0KCQkiOw0KCQlPWWJ4KCk7DQoJfQ0KCU9Mck8NCgl7DQoJCWJxKGJyck94KCRfN1NmWydVbVcnXSkgJiYgcnhlTE9IKCRfN1NmWydVbVcnXSkgPiBzKQ0KCQl7DQoJCQkkZ1ZyeG0tPlVtVyA9ICRfN1NmWydVbVcnXTsNCgkJCSRnVnJ4bS0+VVZlZ1ZlKCk7DQoJCX1PTHJPIGJxKGJyck94KCRfN1NmWydWcmJnJ10pICYmIHJ4ZUxPSCgkXzdTZlsnVnJiZyddKSA+IFopew0KCQkJDQoJCQkkVnJiZyA9ICRfN1NmWydWcmJnJ107DQoJCQkvLy8vLy8vLy8vLy8vLy8vL3J5TCBqVmVWIHJWVVZlIExtciBXVnhtciBXTyBMTE9IVmUgT0wgVW1RamVtaVZIeE8NCgkJCQ0KCQkJJFd4QXJiZ19VID0gSE8wIFdWeFZmVmlMTygiQlM5UzFmICBRLlVtVywgci5IbVFpZU8sIFEucU9Vd1YsIGkueGJ4Q0xtIEFCIHFtSFdtLCANCgkJCQkJCQkJUS5xbUhXbSBBQiBxbUhXbV9VbVcsIFUuVW1IVU9qeG0sIHIuZUhVLCByLldiZU9VLA0KCQkJCQkJCQlRLnJ4VlcsIFEubWViZ09ILCBVLmllQ3htLCBVLmJ4aWJyLCBVLldPclVDT0h4bSwgVS5teGVtciwgKFUuaWVDeG0rIFUuYnhpYnItIFUuV09yVUNPSHhtKyBVLm14ZW1yKSBBQiB4bXhWTCANCgkJCQkJCQkJUm5ObyBWcV9nVnJiZ0hWIFEgOVNSZiBNTjNGIFZxX09ZT1UgVyBORiBRLlVtVyA9IFcuZU9xIEFGYyBXLnhiam0gPSAnQScgDQoJCQkJCQkJCTlTUmYgTU4zRiBWcV9VWWpWZ1ZlIFUgTkYgVS5VbVcgPSBRLmVPcU9lT0hVYlYgDQoJCQkJCQkJCTlTUmYgTU4zRiBWUV9yQ2ogciBORiByLlVtVyA9IFUuckNqTGJXbWUgDQoJCQkJCQkJCTlTUmYgTU4zRiBWcV9RaVZIVW0gaSBORiBpLnFtSFdtID0gUS5xbUhXbSA0YVNuUyBRLlVtVyA9ICd7JFZyYmd9Jw0KCQkJCQkJCQk3bk50eiBQdiBRLlVtVyBObmNTbiBQdiBRLlVtVyIpOyANCgkJfQ0KCQkNCgl9DQoJDQoJcUNIVXhibUggUW1yeGVWZUFyYmdIVigkMW1XMTcpDQoJew0KCQkNCgkJJHJ5TCA9ICJCUzlTMWYgUS5VbVcsIFEucU9Vd1YsIDFORjFBZihRLm1lYmdPSCwnICcsIFEuZU9xT2VPSFViViwgJyBXTyBxT1V3ViAnLCBRLnFlT3FPZU9IVWJWKSBBQiBtZWJnT0gsIGkueGJ4Q0xtIEFCIHFtSFdtLCBCdG8oVy5RbUh4bSkgQUIgUW1IeG0NCgkJCQlSbk5vIFZxX2dWcmJnSFYgUSwgVnFfUWlWSFVtIGksIFZxX09ZT1UgVw0KCQkJIDRhU25TIGkucW1IV20gPSBRLnFtSFdtIEFGYyBRLlVtUWplbWdWcnhtICA9ICckMW1XMTcnIEFGYyBXLmVPcSA9IFEuVW1XIEFGYyBXLnhiam0gPSAnQScgQUZjIFEucnhWVyA9IDgNCgkJCSBnZW1DaiBpNSBRLlVtVw0KCQkiOw0KCQlPVXdtICRyeUw7DQoJCSRXeCA9IEhPMCBXVnhWZlZpTE8oJHJ5TCk7DQoJCWJxKCQxbVcxNyA9PSA2KXsNCgkJCSRXeC0+SENRbm0wciA9IDY7DQoJCX0NCgkJJHhteFZMID0gNjsNCgkJDQoJCWJxICgkV3gtPkhDUW5tMHIgPiA2KQ0KCQl7DQoJCQ0KCQkJcW1lT1ZVdygkV3gtPldWeFZbIm1lYmdPSCJdIFZyICRqbXI9PiYkRVZMbWUpDQoJCQl7DQoJCQkJJEVWTG1lID0gKCRFVkxtZSk7DQoJCQkJJFd4LT5XVnhWWyJRbUh4bSJdWyRqbXJdID0gIjxXYkUgVkxiZ0g9J2ViZ3d4Jz4iLiBIQ1FpT2VfcW1lUVZ4KCRXeC0+V1Z4VlsiUW1IeG0iXVskam1yXSxUKS4iPC9XYkU+IjsNCgkJCQkkeG14VkwgKz0gJFd4LT5XVnhWWyJRbUh4bSJdWyRqbXJdOw0KCQkJCQkJDQoJCQl9DQoJCQkNCgkJfQ0KCQkNCgkJJGdlYldWcmJnSFYgPSBITzAgV1Z4VjdlYlcoJFd4KTsNCgkJDQoJCSRnZWJXVnJiZ0hWLT5VVlFpYlZlOVZpT0woIlVtVyIgLCAiQXJiZ0hWVWJtSCAjIik7DQoJCSRnZWJXVnJiZ0hWLT5VVlFpYlZlOVZpT0woIm1lYmdPSCIgLCAiTmViZ09IIik7DQoJCSRnZWJXVnJiZ0hWLT5VVlFpYlZlOVZpT0woIlFtSHhtIiAsICJvbUh4bSIpOw0KCQkNCgkJYnEoJGdWcnhtLT5VbVc9PSIiKXsNCgkJCSRnVnJ4bS0+cnhWVz04Ow0KCQl9T0xyT3sNCgkJCSRnVnJ4bS0+cnhWVz0kZ1ZyeG0tPnJ4Vlc7DQoJCX0NCgkJPz4NCgkJPHJ4NUxPPg0KCQkJI1diRVBteG1IT3JvIGlDeHhtSA0KCQkJew0KCQkJCVFWZWdiSC1MT3F4OnM2alk7DQoJCQl9DQoJCQ0KCQk8L3J4NUxPPg0KCQk8eFZpTE8+DQoJCQk8eGU+DQoJCQkJPHhXPkJPIG9DT3J4ZVZIIDw/andqIE9Vd20gJFd4LT5IQ1FubTByOyA/PiBuT2dicnhlbXIgam1lICQgPD9qd2ogT1V3bSBIQ1FpT2VfcW1lUVZ4KCR4bXhWTCxUKTsgPz4NCgkJCQkJDQoJCQkJPC94Vz4NCgkJCQk8eFc+DQoJCQkJPFdiRSBiVz0nV2JFUG14bUhPcm8nPg0KCQkJCTxpQ3h4bUggeDVqTz0naUN4eG1IJyB4YnhMTyA9ICczUWplYlFiZSA5YnJ4VldtJyBtSFVMYlVJPSdiUWplYlFiZSgpOycgcng1TE8gPSAnd09iZ3d4Olpzalk7IDBiV3h3OlpzalknPjxiUWcgcmVVPSdiUVZnT3IvamViSHhPZS5qSGcnIHJ4NUxPID0gJzBiV3h3OlRUalknIC8+PC9pQ3h4bUg+DQoJCQkJPC9XYkU+DQoJCQkJPC94Vz4NCgkJCTwveGU+DQoJCTwveFZpTE8+DQoJCQ0KCQkNCgkJPD9qd2oNCgkJJGdlYldWcmJnSFYtPldicmpMVjUoKTsNCg0KCX0NCg0KCXFDSFV4Ym1IIFFtcnhlVmUxd095Q09yKCQxbVcxNykNCgl7DQoJCQ0KCQkkcnlMID0gIkJTOVMxZiBVbVcsIHFPVXdWLCBXT3gsIFdtVSwgcnhWVywgVW1IVSwgbU8sIFdPaSBBQiBRbUh4bSANCgkJUm5ObyBWcV9pVkhVbSA0YVNuUyBlT3EgPSAnJDFtVzE3Jw0KCQkiOw0KCQkNCgkJJFd4ID0gSE8wIFdWeFZmVmlMTygkcnlMKTsNCgkJYnEoJDFtVzE3ID09IDYpew0KCQkJJFd4LT5IQ1FubTByID0gNjsNCgkJfQ0KCQkkeG14VkwgPSA2Ow0KCQkNCgkJYnEgKCRXeC0+SENRbm0wciA+IDYpDQoJCXsNCgkJDQoJCQlxbWVPVlV3KCRXeC0+V1Z4VlsiV094Il0gVnIgJGptcj0+JiRFVkxtZSkNCgkJCXsNCgkJCQkkRVZMbWUgPSAoJEVWTG1lKTsNCgkJCQkkV3gtPldWeFZbIlFtSHhtIl1bJGptcl0gPSAiPFdiRSBWTGJnSD0nZWJnd3gnPiIuIEhDUWlPZV9xbWVRVngoJFd4LT5XVnhWWyJRbUh4bSJdWyRqbXJdLFQpLiI8L1diRT4iOw0KCQkJCSRPcnhWV20gPSAoJFd4LT5XVnhWWyJyeFZXIl1bJGptcl0gPT0gOCk/IkFVeGJFbSI6IjFWSFVPTFZXbSI7DQoJCQkJJHhteFZMICs9ICRXeC0+V1Z4VlsiUW1IeG0iXVskam1yXTsNCgkJCQkkVW1IVSA9ICd6bWUgMW1IVWJMYlZlJzsNCgkJCQlicSAoJFd4LT5XVnhWWyJVbUhVIl1bJGptcl0gPD4gJzY2NjYtNjYnKQ0KCQkJCXsNCgkJCQkJJFVtSFUgPSAnMW1IVWJMYlZXbSBPSCAnLiRXeC0+V1Z4VlsiVW1IVSJdWyRqbXJdOw0KCQkJCQ0KCQkJCX0NCgkJCQkkbWpPZVZVYm1IID0gKCRXeC0+V1Z4VlsibU8iXVskam1yXSA9PSA4KT8ielZnbSBTTE9VeGVtSGJVbSI6IiI7DQoJCQkJDQoJCQ0KCQkJfQ0KCQkJDQoJCX0NCgkJDQoJCSRnZWJXID0gSE8wIFdWeFY3ZWJXKCRXeCk7DQoJCQ0KCQkkZ2ViVy0+ck94bm0wQVV4Ym1IKCJtSFdpTFVMYlVJIiwgIlV3T3lDTyIsIFZlZVY1KCJVbVciKSk7DQoJCSRnZWJXLT5VVlFpYlZlOVZpT0woIlVtVyIgLCAiMSZtVlVDeE87V2JnbSIpOw0KCQkkZ2ViVy0+VVZRaWJWZTlWaU9MKCJXT3giICwgIkEgRm1RaWVPIFdPLi4uIik7DQoJCSRnZWJXLT5VVlFpYlZlOVZpT0woIldtVSIgLCAiY21VLiIpOw0KCQkkZ2ViVy0+VVZRaWJWZTlWaU9MKCJXbVVxYnIiICwgImNtVS4gUmJyYlVtIik7DQoJCQ0KCQkNCgkJDQoJCT8+DQoJCQ0KCQk8cng1TE8+DQoJCQkjV2JFUG14bUhPcm8gaUN4eG1IDQoJCQl7DQoJCQkJUVZlZ2JILUxPcXg6czZqWTsNCgkJCX0NCgkJDQoJCTwvcng1TE8+DQoJCTx4VmlMTz4NCgkJCTx4ZT4NCgkJCQk8eFc+Qk8gb0NPcnhlVkggPD9qd2ogT1V3bSAkV3gtPkhDUW5tMHI7ID8+IG5PZ2JyeGVtciBqbWUgJCA8P2p3aiBPVXdtIEhDUWlPZV9xbWVRVngoJHhteFZMLFQpOyA/Pg0KCQkJCQkNCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQk8V2JFIGJXPSdXYkVQbXhtSE9ybyc+DQoJCQkJPGlDeHhtSCB4NWpPPSdpQ3h4bUgnIHhieExPID0gJzNRamViUWJlIDlicnhWV20nIG1IVUxiVUk9J2JRamViUWJlKCk7JyByeDVMTyA9ICd3T2Jnd3g6WnNqWTsgMGJXeHc6WnNqWSc+PGJRZyByZVU9J2JRVmdPci9qZWJIeE9lLmpIZycgcng1TE8gPSAnMGJXeHc6VFRqWScgLz48L2lDeHhtSD4NCgkJCQk8L1diRT4NCgkJCQk8L3hXPg0KCQkJPC94ZT4NCgkJPC94VmlMTz4NCgkJDQoJCQ0KCQk8P2p3ag0KCQkkZ2ViVy0+V2JyakxWNSgpOw0KDQoJfQ0KCQ0KCQ0KCSRyeUwgPSAiQlM5UzFmIHFtSFdtLCB4YnhDTG0gUm5ObyBWcV9RaVZIVW0iOw0KCSR4WXhSbUhXbV9MViA9IEhPMCBVbVFpbVBtWSgieFl4Um1IV21fTFYiLCBITzAgV1Z4VmZWaUxPKCRyeUwpKTsNCgkkeFl4Um1IV21fTFYtPlZVVWJtSCA9ICJtSFV3VkhnTz0nVVZRaWJtUm1IV20oeHdicik7JyB4YnhMTz0nY09pTyBiSFdiVVZlIExWIFVDT0h4VicgeGJ4TE89J2NPaU8gck9MT1VVYm1IVmUgT0wgcW1IV20gJyAiOw0KCSR4WXhSbUhXbV9MVi0+VUxWcnIgPSAiZU95Q09lYldtIjsNCgkkeFl4Um1IV21fTFYtPnJPeEdWTENPKCRnVnJ4bS0+cVdtKTsNCgkkak9lID0gJF9CU0JCM05GWyJyYnJ4T1FHQW5CIl1bImpPZSJdOw0KCQkNCgkkcnlMID0gIkJTOVMxZiB4LmplZywgMU5GMUFmKHguamVnLCAnLScsM1Ioai5XT3hqZWcgM0IgRnQ5OSxVLldPeGplZyxqLldPeGplZykpIEFCIFdPeA0KCVJuTm8gVnFfeGdWcnhtIHgNCgk5U1JmIE1OM0YgVVZ4X1FqZW1nIFUgTkYgeC5qZWcgPSBVLlVtVyANCgk5U1JmIE1OM0YgVnFfamVtNSBqIE5GIHguamVnID0gai5qZW01IEFGYyBqLmpPZSA9eC5qT2UNCgk0YVNuUyB4LnFXbSA9IDggQUZjIHguak9lID0gJGpPZQ0KCTduTnR6IFB2IHguamVnDQoJTm5jU24gUHYgeC5qZWciOw0KCSRXeFl4emVtZ2VWUVYgPSBITzAgVW1RaW1QbVkoIld4WXh6ZW1nZVZRViIsIEhPMCBXVnhWZlZpTE8oJHJ5TCkpOw0KCQ0KCSRXeFl4emVtZ2VWUVYtPjBiV3h3ID0gIjgyNiI7DQoJYnEoJGdWcnhtLT5VbVc9PSIiKXsNCgkJJGdWcnhtLT5yeFZXPTg7DQoJCSRnVnJ4bS0+VW1IV2JVYm1IPTg7DQoJfU9Mck97DQoJCSRnVnJ4bS0+cnhWVyA9ICRnVnJ4bS0+cnhWVzsNCgkJJGdWcnhtLT5VbUhXYlVibUg9VDsNCgl9DQoJDQoJJGdWcnhtLT5IT3htID0gJGdWcnhtLT5pZUN4bSskZ1ZyeG0tPmJ4aWJyLSAkZ1ZyeG0tPldPclVDT0h4bTsNCj8+DQo8cng1TE8+DQoJLlVtUWltMUxWcg0KCXsNCgkJMGJXeHc6OHM2alk7DQoJfQ0KDQoJI1diRVBteG1IT3JvVWcgaUN4eG1IDQoJew0KCQlRVmVnYkgtTE9xeDp1NmpZOw0KCX0NCgkNCgkuaW1IeG1IM29nDQoJew0KCQlpbWVXT2U6SG1ITzsNCgkJVUNlcm1lOmptYkh4T2U7DQoJCTBiV3h3OlQ2alk7DQoJfQ0KPC9yeDVMTz4NCg0KPHFtZVEgUU94d21XPSJqbXJ4IiAgVlV4Ym1IPSJRbVdDTG1yL1VtUWplbWlWSHhPL1VtUWplbWlWSHhPLmp3aiIgIGJXPSJxZVExbVFqZW1pVkh4TzFtUWpMT3htIj4NCjxiSGpDeCB4NWpPPSJ3YldXT0giIEVWTENPPSIiICBIVlFPPSJ4WXhjVnhWMVl6IiBiVz0ieFl4Y1Z4VjFZeiIgLz4NCjxiSGpDeCB4NWpPPSJ3YldXT0giIEVWTENPPSI2IiBIVlFPPSJ4WXhvbUh4bTFZejFtUWplbWlWSHhPIiBiVz0ieFl4b21IeG0xWXoxbVFqZW1pVkh4TyIgLz4NCgk8cWJPTFdyT3g+DQoJCTxMT2dPSFc+PGk+Y1Z4bXIgV09MIDFtUWplbWlWSHhPIFdPIDdWcnhtPC9pPjwvTE9nT0hXPg0KCQk8eFZpTE8+DQoJCQk8eGU+DQoJCQkJPHhXPg0KCQkJCQkxNyBGbS4gPGJIakN4IEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+VW1XOyA/PiIgZU9WV21ITDU9ImVPVldtSEw1IiB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhGbSIgYlc9InhZeEZtIiAvPiANCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQkJUm1IV206IA0KCQkJCQk8P2p3ag0KCQkJCQkJJHhZeFJtSFdtX0xWLT5XYnJqTFY1KCk7DQoJCQkJCT8+DQoJCQkJPC94Vz4NCgkJCQk8eFc+DQoJCQkJCVJPVXdWOiA8YkhqQ3ggVUxWcnI9InFPVXdWVW1RamVtIiB4YnhMTz0iY09pTyBiSFdiVVZlIENIViBxT1V3ViBFVkxiV1YiIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+cU9Vd1Y7ID8+IiB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhST1V3VjFtUWplbXhPIiBiVz0ieFl4Uk9Vd1YxbVFqZW14TyIvPiANCgkJCQkJPGJIakN4IFVMVnJyPSIiIHhieExPPSJjT2lPIGJIV2JVVmUgQ0hWIHFPVXdWIEVWTGJXViIgRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5WV09MVkh4bTsgPz4iIHg1ak89IndiV1dPSCIgSFZRTz0ieFl4QVdPTFZIeG0iIGJXPSJ4WXhBV09MVkh4bSIvPiANCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQkJPExWaU9MPjxiSGpDeCA8P2p3aiBPVXdtICgkZ1ZyeG0tPm1PID4gNik/IlV3T1VJT1c9J1V3T1VJT1cnIjoiIjsgPz4gSFZRTz0ieFl4Rm0xd095Q08iIEVWTENPPSI4IiB4NWpPPSJVd09VSWltWSIgLz4gRm0gMXdPeUNPPC9MVmlPTD4NCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQkJPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIFVMVnJyPSJpeEh6ZWJIeCIgeGJ4TE89IkJtTGJVYnhDVyBXTyBVd095Q08iIG1IVUxiVUk9ImJRamViUWJlQm1MYlVieENXKCk7IiA+PC9pQ3h4bUg+DQoJCQkJCQ0KCQkJCQkNCgkJCQk8L3hXPg0KCQkJCQ0KCQkJPC94ZT4NCgkJPC94VmlMTz4NCgkJDQoJIDwvcWJPTFdyT3g+DQoJPHhWaUxPPg0KCQk8eGU+DQoJCTx4Vz48YkhqQ3ggeDVqTz0id2JXV09IIiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPm1lYmdPSDsgPz4iIEhWUU89InhZeE5lYmdPSCIgYlc9InhZeE5lYmdPSCI+DQoJCTx4Vz48YkhqQ3ggeDVqTz0id2JXV09IIiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPlVtSFdiVWJtSDsgPz4iIEhWUU89InhZeDFtSFdiVWJtSCIgYlc9InhZeDFtSFdiVWJtSCI+DQoJCQkJCQkNCgkJPHhXPg0KCQk8cWJPTFdyT3ggcng1TE89J3dPYmd3eDo4WjZqWSc+DQoJCQk8TE9nT0hXPjxpPmNWeG1yIFdPTCBCQ2pMYldtZTwvaT48L0xPZ09IVz4NCgkJCQk8eFZpTE8+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4VyBWTGJnSD0iTE9xeCI+DQoJCQkJCQkJPGlDeHhtSCBVTFZycj0iaXhIQk9WZVV3IiBtSFVMYlVJPSJpQ3JVVmVCQ2pMYldtZTFtUWplbSgpOyIgeDVqTz0iaUN4eG1IIj48L2lDeHhtSD4gQUw6DQoJCQkJCQk8L3hXPg0KCQkJCQkJPHhXIFVtTHJqVkg9IlQiPg0KCQkJCQkJCTxiSGpDeCBIVlFPPSJ4WXhBTCIgeDVqTz0ieE9ZeCIgVUxWcnI9ImVPeUNPZWJXbSIgYlc9InhZeEFMIiByeDVMTz0iMGJXeHc6RDY2alk7IiB4YnhMTz0iY09pTyBiSGJXYlVWZSBPTCBIbVFpZU8gV09MIEJDakxiV21lIiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPkhtUWllTzsgPz4iIFFWWUxPSGd4dz0iRHMiIC8+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQk8eGU+DQoJCQkJCQk8eFcgVkxiZ0g9ImViZ3d4Ij4NCgkJCQkJCQljYmVPVVViJm1WVUN4TztIOg0KCQkJCQkJPC94Vz4NCgkJCQkJCTx4VyBVbUxyalZIPSJUIj4NCgkJCQkJCQk8YkhqQ3ggcng1TE89IjBiV3h3OkQ2NmpZOyIgSFZRTz0ieFl4Y2JlT1VVYm1IQkNqTGJXbWUiIGJXPSJ4WXhjYmVPVVVibUgiICB4NWpPPSJ4T1l4IiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPldiZU9VVWJtSDs/PiIgIC8+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQk8eGU+DQoJCQkJCQk8eFcgRVZMYmdIPSJ4bWoiPg0KCQkJCQkJCTEmT1ZVQ3hPO1dDTFYvbkYxOg0KCQkJCQkJPC94Vz4NCgkJCQkJCTx4VyBFVkxiZ0g9InhtaiI+DQoJCQkJCQkJPGJIakN4IHg1ak89IndiV1dPSCIgRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5yeFZXOyA/PiIgSFZRTz0ieFl4QnhWVyIgYlc9InhZeEJ4VlciPg0KCQkNCgkJCQkJCQk8YkhqQ3ggRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5IQ1FXbVU7ID8+IiBIVlFPPSJ4WXgxT1duRjFCQ2pMYldtZSIgeDVqTz0ieE9ZeCIgYlc9InhZeDFPV25GMUJDakxiV21lIi8+DQoJCQkJCQk8L3hXPg0KCQkJCQkJPHhXPg0KCQkJCQkJCTxxYk9MV3JPeD4NCgkJCQkJCQkJPExWaU9MPjxiSGpDeCA8P2p3aiBPVXdtICgkZ1ZyeG0tPldtVSA9PSAibiIpPyJVd09VSU9XIjoiIjsgPz4geDVqTz0iZVZXYm0iIEhWUU89InhZeGZiam1uSFUiIEVWTENPPSJuIi8+bkYxPC9MVmlPTD4NCgkJCQkJCQkJPExWaU9MPjxiSGpDeCA8P2p3aiBPVXdtICgkZ1ZyeG0tPldtVSA9PSAiMSIpPyJVd09VSU9XIjoiIjsgPz4geDVqTz0iZVZXYm0iIEhWUU89InhZeGZiam1uSFUiIEVWTENPPSIxIi8+MSZPVlVDeE87V0NMVjwvTFZpT0w+DQoJCQkJCQkJCTxMVmlPTD48YkhqQ3ggPD9qd2ogT1V3bSAoJGdWcnhtLT5XbVUgPT0gInoiKT8iVXdPVUlPVyI6IiI7ID8+IHg1ak89ImVWV2JtIiBIVlFPPSJ4WXhmYmptbkhVIiBFVkxDTz0ieiIvPnpWclZqbWV4TzwvTFZpT0w+DQoJCQkJCQkJPC9xYk9MV3JPeD4NCgkJCQkJCTwveFc+DQoJCQkJCTwveGU+DQoJCQkJPC94VmlMTz4NCgkJCTwvcWJPTFdyT3g+DQoJCTwveFc+DQoJCQ0KCQk8eFcgcng1TE89J0VPZXhiVVZMLVZMYmdIOnhtaic+DQoJCQk8cWJPTFdyT3ggcng1TE89J3dPYmd3eDo4WjZqWSc+DQoJCQkJPExPZ09IVz48aT5jT3hWTExPIFdPTCAxbVFqZW1pVkh4TzwvaT48L0xPZ09IVz4NCgkJCQk8eFZpTE8+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4Vz4NCgkJCQkJCQk8eE9ZeFZlT1YgbUhjaUwxTGJVSSA9ICJjT3hWTExPKCc8P2p3aiBPVXdtICRnVnJ4bS0+VW1XOyA/PicpIjsgSFZRTz0ieFl4Y094VkxMTyIgVUxWcnI9ImVPeUNPZWJXbSIgYlc9InhZeGNPeFZMTE9ZIiByeDVMTz0iMGJXeHc6Wlo2alk7IHdPYmd3eDo4NnNqWTsiIHhieExPPSJjT2lPIExMT0hWZSBPTCBXT3hWTExPIFdPTCBVbVFqZW1pVkh4TyI+PD9qd2ogT1V3bSAkZ1ZyeG0tPldPeFZMTE87ICA/PjwveE9ZeFZlT1Y+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCTwveFZpTE8+DQoJCQk8L3FiT0xXck94Pg0KCQk8L3hXPg0KCTwveGU+DQoJPC94VmlMTz4NCgk8cWJPTFdyT3g+DQoJCTxMT2dPSFc+PGk+b21IeG0gUGVDeG0sIDN4aWJyLCBjT3JVQ09IeG1yICA1IE54ZW1yPC9pPjwvTE9nT0hXPg0KCQk8eFZpTE8+DQoJCQk8eGU+IA0KCQkJCTx4Vz48YkhqQ3ggRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5IQ1FPZW1VQ09IeFY7ID8+IiBVTFZycj0nJyB4NWpPPSJ3YldXT0giIEhWUU89InhZeEZDUU9lbVVDT0h4ViIgYlc9InhZeEZDUU9lbVVDT0h4ViIgLz4gPC94Vz4NCgkJCQk8eFc+UGVDeG06IDxiSGpDeCBtSElPNUNqPSJFT2VIT3htMW1RamVtaVZIeE8oKTsiICBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPmllQ3htOyA/PiIgVUxWcnI9J1dPVWJRVkwgZU95Q09lYldtJyB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhQZUN4bSIgYlc9InhZeFBlQ3htIiAvPiA8L3hXPg0KCQkJCTx4Vz4zeGlicjogPGJIakN4IG1ISU81Q2o9IkVPZUhPeG0xbVFqZW1pVkh4TygpOyIgIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+YnhpYnI7ID8+IiBVTFZycj0nV09VYlFWTCBlT3lDT2ViV20nIHg1ak89InhPWXgiIEhWUU89InhZeDN4aWJyIiBiVz0ieFl4M3hpYnIiIC8+IDwveFc+DQoJCQkJPHhXPmNPclVDT0h4bTogPGJIakN4IG1ISU81Q2o9IkVPZUhPeG0xbVFqZW1pVkh4TygpOyIgIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+V09yVUNPSHhtOyA/PiIgVUxWcnI9J1dPVWJRVkwgZU95Q09lYldtJyB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhjT3JVQ09IeG0iIGJXPSJ4WXhjT3JVQ09IeG0iIC8+IDwveFc+DQoJCQkJPHhXPk54ZW1yOiA8YkhqQ3ggbUhJTzVDaj0iRU9lSE94bTFtUWplbWlWSHhPKCk7IiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPmdXYmVPVXhtcjsgPz4iIFVMVnJyPSdXT1ViUVZMIGVPeUNPZWJXbScgeDVqTz0ieE9ZeCIgSFZRTz0ieFl4TnhlbXIiIGJXPSJ4WXhOeGVtciIgLz4gPC94Vz4NCgkJCQk8eFc+PHJ4ZW1IZz5GT3htOjwvcnhlbUhnPiA8YkhqQ3ggIGVPVldtSEw1IEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+SE94bTsgPz4iIFVMVnJyPScnIHg1ak89InhPWXgiIEhWUU89InhZeGZteFZMMW1RamVtaVZIeE9GT3htIiBiVz0ieFl4Zm14VkwxbVFqZW1pVkh4T0ZPeG0iIC8+IDwveFc+DQoJCQk8L3hlPg0KCQk8L3hWaUxPPg0KCQkNCgk8L3FiT0xXck94Pg0KCQkNCgk8cWJPTFdyT3g+DQoJCTxMT2dPSFc+PGk+QXJiZ0hWVWImbVZVQ3hPO0ggemVPckNqQ09yeFZlYlYsIG5PeE9IVWJtSE9yIDUgMXdPeUNPcjwvaT48L0xPZ09IVz4NCgkJPFdiRSBiVz0iV2JFY094VkxMT3JfVW1RamVtZ1ZyeG1aZHUiPg0KCQkJPENMIHJ4NUxPPSJxbUh4LXJiS086dTYlIj4NCgkJCQk8TGI+PFYgd2VPcT0iI1diRXplT3JDakNPcnhtMW1RamVtIj56ZU9yQ2pDT3J4bTwvVj48L0xiPg0KCQkJCTxMYj48ViB3ZU9xPSIjV2JFbk94T0hVYm1IT3IiPm5PeE9IVWJtSE9yPC9WPjwvTGI+DQoJCQkJPExiPjxWIHdlT3E9IiNXYkUxbUhyQ0x4VjF3T3lDT3IiPjF3T3lDT3I8L1Y+PC9MYj4NCgkJCQkNCgkJCQkNCgkJCTwvQ0w+DQoJCQk8V2JFIGJXPSJXYkV6ZU9yQ2pDT3J4bTFtUWplbSI+DQoJCQkNCgkJCQk8eFZpTE8gIDBiV3h3PSI4NjYlIiBpbWVXT2U9IjYiIHJ4NUxPPSJpbWVXT2U6OGpZIGdlT09IIHJtTGJXOyBpbWVXT2UteG1qOkhtSE8iPg0KCQkJCQk8eHdPVlc+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4VyBVbUxyalZIPSJkIiBVTFZycj0iQ2ItVW1lSE9lLXhtaiBDYi1yeFZ4Ty1XT3FWQ0x4IENiLXJ4VnhPLXFtVUNyIGltZVdPZTpybUxiVyA4alkgaUxDTyIgMGJXeHc9Ijg2NiUiPg0KCQkJCQkJCTxpPmZteFZMIDogPC9pPjxiSGpDeCBlT1ZXbUhMNT0iZU9WV21ITDUiIFVMVnJyPSJlT3lDT2ViV20iIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+amVPcmZteFZMOyA/PiIgeGJ4TE89IlNMIHhteFZMIFdPaU8gck9lIFFWNW1lIFdPIFVPZW0uIiBiVz0neFl4Zm14VkwxbVFqZW1pVkh4TycgSFZRTz0ieFl4Zm14VkwxbVFqZW1pVkh4TyIgeDVqTz0ieE9ZeCIgLz4JCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQkNCgkJCQkJDQoJCQkJCTwveHdPVlc+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4VyBVbUxyalZIPSdkJz4NCgkJCQkJCQk8P2p3agkNCgkJCQkJCQkJI0dTbjNSMzFBX2NmQUIzNw0KCQkJCQkJCQkNCgkJCQkJCQkJYnEoYnJyT3goJFd4QXJiZ19VKSl7DQoJCQkJCQkJCQkkcWJMVkFyYmcgPSAkV3hBcmJnX1UtPmdPeG5tMCg2KTsNCgkJCQkJCQkJCSRqZU9yID0gSE8wIFdWeFZmVmlMTygiQlM5UzFmIGplT3IsIFFtSHhtIFJuTm8gVnFfT1lPVSA0YVNuUyBlT3EgPSAneyRxYkxWQXJiZ1snVW1XJ119JyBBRmMgeGJqbSA9ICdBJyIpOw0KCQkJCQkJCQkJT1V3bSAkcnlMOw0KCQkJCQkJCQkJJHhteFZMID0gVmVlVjVfckNRKCRqZU9yLT5XVnhWWydRbUh4bSddKTsNCgkJCQkJCQkJCSRnZWJXID0gSE8wIFdWeFY3ZWJXKCRqZU9yKTsNCgkJCQkJCQkJCSRnZWJXLT5XYnJqTFY1KCk7DQoJCQkJCQkJCQlPVXdtICI8clVlYmp4PiAkKCcjeFl4Zm14VkwxbVFqZW1pVkh4TycpLkVWTCgneyR4bXhWTH0nKTsgPC9yVWViang+IjsNCgkJCQkJCQkJfQ0KCQkJCQkJCT8+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQkNCgkJCQkJPHhlIHJ4NUxPPSJpVlVJZ2VtQ0hXOiNVVVVVVVUiPg0KCQkJCQkJPHh3PjEmbVZVQ3hPO1diZ208L3h3Pg0KCQkJCQkJPHh3PjEmbVZVQ3hPO1diZ20gemVPckNqQ09yeFZlYm08L3h3Pg0KCQkJCQkNCgkJCQkJCTx4dz5vbUh4bTwveHc+DQoJCQkJCQk8eFc+PGlDeHhtSCBtSFVMYlVJPSJVVmVnVmVjT3hWTExPKCk7IiB4NWpPPSJpQ3h4bUgiIFVMVnJyPSJpeEhBV1ciPjwvaUN4eG1IPjwveFc+DQoJCQkJCTwveGU+DQoJCQkJCTx4aW1XNSBiVz0ieGlMY094VkxMTzFtUWplbWlWSHhPIj48P2p3ag0KCQkJCQkJCWJxKFVtQ0h4KCRnVnJ4bS0+amVPckNqQ09yeG1yKSA+IDYpDQoJCQkJCQkJcW1lT1ZVdygkZ1ZyeG0tPmplT3JDakNPcnhtciBWciAkamVPcikNCgkJCQkJCQl7DQoJCQkJCQkJCQ0KCQkJCQkJCQlPVXdtICI8eGU+PHhXPjxiSGpDeCB4NWpPPSd4T1l4JyBIVlFPPSdXeFl4MW1XYmdtW10nIGVPVldtSEw1IEVWTENPPSckamVPci0+amVPcicgLz48L3hXPjx4Vz48YkhqQ3ggZU9WV21ITDUgSFZRTz0neFl4MW1XemVPcltdJyBFVkxDTz0nJGplT3ItPkhtUWllTycgcng1TE89JzBiV3h3OiBaNjZqWTsnIHg1ak89J3hPWXgnLz48YkhqQ3ggZU9WV21ITDUgSFZRTz0neFl4UFZMW10nIHg1ak89J3diV1dPSCcvPjwveFc+PHhXPjxiSGpDeCB4NWpPPSd4T1l4JyBtSElPNUNqPSdyQ1FWZm14Vkx6ZU9yQ2pDT3J4bSgpOycgSFZRTz0nV3hZeG9tSHhtW10nIEVWTENPPSckamVPci0+UW1IeG0nIC8+PC94Vz48eFc+DQoJCQkJCQkJCTxpQ3h4bUggVUxWcnI9J2l4SGNPTE94T0JRVkxMJyBtSFVMYlVJPSdPTGJRYkhWZWNPeFZMTE84KHh3YnIpOyByQ1FWZm14Vkx6ZU9yQ2pDT3J4bSgpJz48L2lDeHhtSD4NCgkJCQkJCQkJPC94Vz48L3hlPiI7DQoJCQkJCQkJfQ0KCQkJCQkJPz48L3hpbVc1Pg0KCQkJCTwveFZpTE8+DQoJCQk8L1diRT4NCgkJCTxXYkUgYlc9IldiRW5PeE9IVWJtSE9yIj4NCgkJCQk8eFZpTE8gMGJXeHc9Ijg2NiUiIGltZVdPZT0iNiIgcng1TE89ImltZVdPZTpybUxiVyA4alkgI1VVVVVVVTsiPg0KCQkJCQk8eHdPVlcgcng1TE89ImltZVdPZTo4alkgcm1MYlcgI1VVVVVVVTsiPg0KCQkJCQk8eGU+DQoJCQkJCQk8eFcgVW1McmpWSD0iZCI+DQoJCQkJCQk8eFZpTE8gVU9MTGpWV1diSGc9IjYiIFVPTExyalZVYkhnPSI2IiBVTFZycj0iQ2ItVW1lSE9lLXhtaiBDYi1yeFZ4Ty1XT3FWQ0x4IENiLXJ4VnhPLXFtVUNyIGltZVdPZTpybUxiVyA4alkgaUxDTyIgMGJXeHc9Ijg2NiUiPg0KCQkJCQkJCTx4ZSA+DQoJCQkJCQkJPHhXID4NCgkJCQkJCQk8aT5mbXhWTCBuT3hPSFVibUhPcjogPC9pPjxiSGpDeCBlT1ZXbUhMNT0iZU9WV21ITDUiIFVMVnJyPSIgIiB4YnhMTz0iU0wgeG14VkwgV08gZU94T0hVYm1IT3IgV09pTyByT2UgUVY1bWUgeUNPIFVPZW0iIGJXPSd4WXhmbXhWTDFtUWplbWlWSHhPbk94JyBIVlFPPSJ4WXhmbXhWTDFtUWplbWlWSHhPbk94IiB4NWpPPSJ4T1l4IiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPmVPeE9IZm14Vkw7ID8+IiAvPgkNCgkJCQkJCQk8L3hXPg0KCQkJCQkJCTx4Vz48aT5uRjEvMSZPVlVDeE87V0NMVjogPC9pPjxiSGpDeCBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPm5lSFU7ID8+IiBIVlFPPSJ4WXhuT3hPSG5GMSIgeDVqTz0ieE9ZeCIgVUxWcnI9IiIgYlc9InhZeG5PeE9IbkYxIiB4YnhMTz0iY09pTyBMTE9IVmUgT0wgbkYxIG0gMU9XQ0xWIj48L3hXPg0KCQkJCQkJCTx4Vz48aT5GMVI6IDwvaT48YkhqQ3ggRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5uSFVxOyA/PiIgSFZRTz0ieFl4bk94T0hGMVIiIHg1ak89InhPWXgiIGJXPSJ4WXhuT3hPSEYxUiI+PC94Vz4NCgkJCQkJCQk8eFc+DQoJCQkJCQkJCTxpQ3h4bUggYlc9Iml4SEFqTGJVVmVuT3hPSCIgeDVqTz0iaUN4eG1IIiBtSFVMYlVJPSJWakxiVVZlbk94T0hVYm1IT3IoKSIgPD9qd2ogT1V3bSAoJGdWcnhtLT5lT3hPSFVibUggPiA2KT8iV2JyVmlMT1ciOiIiID8+PkFqTGJVVmUgbk94T0hVYm1IT3I8L2lDeHhtSD4JDQoJCQkJCQkJCTxiSGpDeCBtSHFtVUNyPSJ4d2JyLmlMQ2U7IiBFVkxDTz0iOCIgIG1IVUxiVUk9ImVPeENlSCBxVkxyTzsiIHg1ak89IlV3T1VJaW1ZIiBIVlFPPSJ4WXhuT3hPSGJXbSIgYlc9InhZeG5PeE9IYldtIiBlT1ZXbUhMNT0iZU9WV21ITDUiIDw/andqIE9Vd20gKCRnVnJ4bS0+ZU94T0hVYm1IID4gNik/IlV3T1VJT1ciOiIiID8+IC8+DQoJCQkJCQkJPC94Vz4NCgkJCQkJCQk8L3hlPg0KCQkJCQkJPC94VmlMTz4NCgkJCQkJCTwveFc+DQoJCQkJCTwveGU+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4dz4xJm1WVUN4TztXYmdtIHplT3JDakNPcnhWZWJtPC94dz4NCgkJCQkJCTx4dz5vbUh4bTwveHc+DQoJCQkJCQk8eHc+MW1XLiBuT3hPSFViJm1WVUN4TztIPC94dz4NCgkJCQkJCTx4dz5uT3hPSFViJm1WVUN4TztIPC94dz4NCgkJCQkJCTx4Vz48aUN4eG1IIG1IVUxiVUk9IlVWZWdWZW5PeE9IVWJtSCgpOyIgVUxWcnI9Iml4SEFXVyIgeDVqTz0iaUN4eG1IIj48L2lDeHhtSD48L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQk8L3h3T1ZXPg0KCQkJCQk8eGltVzUgYlc9InhpTGNPeFZMTE9uT3hPSFVibUgiPjw/andqDQoJCQkJCQkJYnEoVW1DSHgoJGdWcnhtLT5lT3hPSFVibUhPcikgPiA2KQ0KCQkJCQkJCXFtZU9WVXcoJGdWcnhtLT5lT3hPSFVibUhPciBWciAkZU94KQ0KCQkJCQkJCXsNCgkJCQkJCQkJT1V3bSAiPHhlPjx4Vz48YkhqQ3ggeDVqTz0neE9ZeCcgRVZMQ089J3skZU94LT5qZU9yfScgSFZRTz0neFl4bk94T0gxbVdiZ21bXSc+PC94Vz48eFc+PGJIakN4IHg1ak89J3hPWXgnIEhWUU89J3hZeG5PeE9Ib21IeG1bXScgRVZMQ089J3skZU94LT5RbUh4bU5lYmdiSFZMfSc+PC94Vz48eFc+PGJIakN4IHg1ak89J3hPWXgnIEhWUU89J3hZeG5PeE9IMW1XYmdtbk94T0hVYm1IW10nIEVWTENPPSd7JGVPeC0+VW1XZU94fSc+PC94Vz48eFc+PGJIakN4IHg1ak89J3hPWXgnIG1ISU81Q2o9J3JDUVZmbXhWTG5PeE9IVWJtSE9yKCk7JyBIVlFPPSd4WXhuT3hPSG5PeE9IVWJtSG5PeE9IVWJtSFtdJyBFVkxDTz0neyRlT3gtPlFtSHhtfSc+PC94Vz48eFc+PGlDeHhtSCBVTFZycj0naXhIY09MT3hPQlFWTEwnIG1IVUxiVUk9J09MYlFiSFZlY094VkxMTzgoeHdicik7IHJDUVZmbXhWTG5PeE9IVWJtSE9yKCk7Jz48L2lDeHhtSD48L3hXPjwveGU+IjsNCgkJCQkJCQl9DQoJCQkJCQkJPz48L3hpbVc1Pg0KCQkJCTwveFZpTE8+DQoJCQk8L1diRT4NCgkJCQ0KCQkJPFdiRSBiVz0iV2JFMW1IckNMeFYxd095Q09yIiA+DQoJCQkJPFdiRSBiVyA9ICJXYkVMYnJ4ViIgcng1TE89Im1FT2VxTG0wOlZDeG07IHdPYmd3eDpaNjZqWTsiPg0KCQkJCQ0KCQkJCQ0KCQkJCQk8P2p3aiBRbXJ4ZVZlMXdPeUNPcigkZ1ZyeG0tPlVtVyk7ICA/Pg0KCQkJCTwvV2JFPg0KCQkJPC9XYkU+DQoJCTwvV2JFPg0KCTwvcWJPTFdyT3g+DQoJDQoJPFdiRSBiVz0iV2JFbk9yQ0x4VldtU0hFYm0xbVFqZW1pVkh4TyI+PC9XYkU+DQo8L1diRT4NCjxVT0h4T2U+DQo8V2JFIGJXPSJXYkVQbXhtSE9yb1VnIj4NCgkJPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIG1IVUxiVUk9IkVPZWJxYlVWZWNWeG1yKCkgIiBVTFZycj0iaXhIQlZFTyIgeGJ4TE8gPSAiQlZMRVZlIDFtUWplbWlWSHhPIiByeDVMTyA9ICcnPjwvaUN4eG1IPg0KCQkNCgkJPD9qd2ogDQoJCQlicSgkX0JTQkIzTkZbInJicnhPUUdBbkIiXVsiYlFqZWJRYmUxbVFqZW1pVkh4eE8iXT09OCl7DQoJCQkJT1V3bSAnPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIFVMVnJyID0gIml4SHplYkh4V21VIiB4YnhMTyA9ICIzUWplYlFiZSAxbVFqZW1pVkh4T3IiIG1IVUxiVUk9ImJRamViUWJlU3J4TzFtUWplbWlWSHhPelZqT0woKTsiID48L2lDeHhtSD4nOw0KCQkJfU9Mck97DQoJCQkJT1V3bSAnPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIFVMVnJyID0gIml4SHplYkh4V21VIiB4YnhMTyA9ICIzUWplYlFiZSAxbVFqZW1pVkh4T3IiIG1IVUxiVUk9ImJRamViUWJlU3J4TzFtUWplbWlWSHhPKCk7IiA+PC9pQ3h4bUg+JzsNCgkJCX0NCgkJCQ0KCQk/Pg0KCQk8aUN4eG1IIHg1ak89ImlDeHhtSCIgVUxWcnI9Iml4SDFMbXJPIiB4YnhMTyA9ICJCVkxiZSIgbUhVTGJVST0iVW1RamVtaVZIeE9CVkxiZSgpOyIgPjwvaUN4eG1IPg0KCQ0KPC9XYkU+DQo8L1VPSHhPZT4NCjwvcW1lUT4NCjxyVWVianggTFZIZ0NWZ089IkpWRVZyVWViangiPg0KCXFDSFV4Ym1IIEVPZUhPeG0xbVFqZW1pVkh4Tygpew0KCQkNCgkJDQoJCWllQ3htID0gJCgiI3hZeFBlQ3htIikuRVZMKCk7DQoJCWJ4aWJyID0gJCgiI3hZeDN4aWJyIikuRVZMKCk7DQoJCW14ZW1yID0gJCgiI3hZeE54ZW1yIikuRVZMKCk7DQoJCVdPclVDT0h4bSA9ICQoIiN4WXhjT3JVQ09IeG0iKS5FVkwoKTsNCgkJSE94bSA9ICQoIiN4WXhmbXhWTDFtUWplbWlWSHhPRk94bSIpLkVWTCgpOw0KCQkNCgkJSE94bSA9IGpWZXJPUkxtVngoaWVDeG0pK2pWZXJPUkxtVngoYnhpYnIpK2pWZXJPUkxtVngobXhlbXIpLWpWZXJPUkxtVngoV09yVUNPSHhtKTsNCgkJSE94bSA9IChickZWRihIT3htKSk/NjpIT3htOw0KCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Zm14VkwxbVFqZW1pVkh4T0ZPeG0iKS5FVkxDTyA9IEhPeG07DQoJCQ0KCX0NCgkNCglFVmUgVUlqZU9yID0gJzw/andqIE9Vd20gJF9CU0JCM05GWyJyYnJ4T1FHQW5CIl1bIlVJamVPciJdOyA/Pic7DQoJDQoJVnJnUm1lUSgkKCIjcWVRMW1RamVtaVZIeE8xbVFqTE94bSIpLCQoIiNXYkVuT3JDTHhWV21TSEVibTFtUWplbWlWSHhPIikpOw0KCQ0KCXFDSFV4Ym1IIGJRamViUWJlQm1MYlVieENXKCkNCgl7DQoJCVVtVyA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXhGbSIpLkVWTENPOw0KCQlicShVbVcgIT0gIiIpDQoJCXsNCgkJCQ0KCQkJM1FqZWJRYmV6Y1IoIlFtV0NMbXIvZU9qbWV4Ty9VbVFqZW1pVkh4T3IvbkJtTGJVYnhDVzF3T3lDTy5qd2o/VW1XPSIrVW1XKTsNCgkJDQoJCX0NCgkJT0xyTw0KCQl7DQoJCQlWTE9leCgiY09pTyBnQ1ZlV1ZlIFZIeE9yIFdPIGJRamViUWJlIik7DQoJCX0NCgl9DQoJDQoJcUNIVXhibUggRU9lYnFiVVZlY1Z4bXIoKQ0KCXsNCgkJeG1XbVBiT0ggPSB4ZUNPOw0KCQl4bXhWTCA9IGpWZXJPUkxtVngoV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeGZteFZMMW1RamVtaVZIeE8iKS5FVkxDTyk7DQoJCWJxKHhteFZMICE9IDYpDQoJCXsNCgkJCS8vZm1XbSBpYk9IDQoJCX0NCgkJT0xyTw0KCQl7DQoJCQlWTE9leCgiIGNPaU8gVmdlT2dWZSBWTCBRT0htciBDSFYgVnJiZ0hWVWJtSCBqZU9yQ2pDT3J4VmViVi4gIik7DQoJCQl4bVdtUGJPSCA9IHFWTHJPOw0KCQl9DQoJCQ0KCQkNCgkJDQoJCQ0KCQlRbUh4bSA9IGpWZXJPUkxtVngoV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeG9tSHhtMVl6MW1RamVtaVZIeE8iKS5FVkxDTyk7DQoJCQ0KCQkvKiBPcnhtIHJPIFdPclZpYkxieG0gam1leUNPIFdWIENIIE9lZW1lDQoJCWJxKFFtSHhtID4gNiAmJiBRbUh4bSAhPSB4bXhWTCkNCgkJew0KCQkJeG1XbVBiT0ggPSBxVkxyTzsNCgkJCVZMT2V4KCJTTCBRbUh4bSBIbSBPciBiZ0NWTCBWIExWIHJDUVYgV08gTFZyIHFWVXhDZVZyIFYgalZnVmUiK1FtSHhtKyIvICAiKyB4bXhWTCk7DQoJCX0NCgkJKi8NCgkJDQoJCQ0KCQlicSh4bVdtUGJPSCkNCgkJew0KCQkJJCgiI3FlUTFtUWplbWlWSHhPMW1RakxPeG0iKS5yQ2lRYngoKTsNCgkJfQ0KCQ0KCX0NCgkNCgkNCgkNCglxQ0hVeGJtSCBFT2VicWJVVmVvbUh4bShpVkwsIG1pSikNCgl7DQoJDQoJCWJxKCEobWlKLkVWTENPID4gNikpDQoJCXsNCgkJCVZMT2V4KCJSVkVtZSBXTyBVbUxtVVZlIENIViBVVkh4YldWVyBFVkxiV1YiKTsNCgkJCW1pSi5yT3hBeHhlYmlDeE8oJ1VMVnJyJywnT2VlbWUnKTsNCgkJCQ0KCQl9DQoJCU9Mck8NCgkJew0KCQkJbWlKLnJPeEF4eGViaUN4TygnVUxWcnInLCcnKTsNCgkJfQ0KCQlicShVSWplT3IgPT0gOCkNCgkJew0KCQkJDQoJCQlpVkwgPWpWZXJPUkxtVngoaVZMKTsNCgkJCQ0KCQkJYnEobWlKLkVWTENPID4gaVZMKQ0KCQkJew0KCQkJCVZMT2V4KCJTTCBRbUh4bSBXTyBPcnhWIFVDT0h4ViByQ2pPZVYgT0wgaVZMVkhVTyBXYnJqbUhiaUxPOiAiICsgaVZMKTsNCgkJCQltaUouck94QXh4ZWJpQ3hPKCdVTFZycicsJ09lZW1lJyk7DQoJCQkJbWlKLnJ4NUxPLmlWVUlnZW1DSFcgPSAiamJISSI7DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgRU9lYnFiVVYoJ0IzJyk7DQoJCQl9DQoJCQlPTHJPDQoJCQl7DQoJCQkJbWlKLnJPeEF4eGViaUN4TygnVUxWcnInLCcnKTsNCgkJCQltaUoucng1TE8uaVZVSWdlbUNIVyA9ICIiOw0KICAgICAgICAgICAgICAgIEVPZWJxYlVWKCdGTicpOw0KCQkJfQ0KCQl9DQoJCXhteFZMID0gNjsNCgkJeCA9IFdtVUNRT0h4LmdPeFNMT1FPSHhyUDVGVlFPKG1pSi5IVlFPKTsNCgkNCgkJcW1lKFk9NjsgWTx4LkxPSGd4dyA7IFkrKykNCgkJew0KCQkJRSA9IGpWZXJPUkxtVngoeFtZXS5FVkxDTyk7DQoJCQlicShFID4gNikNCgkJCXsNCgkJCQl4bXhWTCArPSBFOw0KCQkJfQ0KCQl9DQoJCQ0KCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Zm14VkwxbVFqZW1pVkh4TyIpLkVWTENPID0geG14Vkw7DQoJfQ0KCQ0KCXFDSFV4Ym1IIE9MYlFiSFZlY094VkxMTzgobWlKKQ0KCXsNCgkJYnEoVW1IcWJlUSgiY09yT1YgT0xiUWJIVmUgT3J4TyBXT3hWTExPPyIpKQ0KCQl7DQoJCQltaUoualZlT0h4Rm1XTy5qVmVPSHhGbVdPLmpWZU9IeEZtV08uZU9RbUVPMXdiTFcobWlKLmpWZU9IeEZtV08ualZlT0h4Rm1XTyk7DQoJCX0NCgl9DQoNCgkNCglxQ0hVeGJtSCBVVmVnVmVjT3hWTExPKCkNCgl7DQoJCXFtSFdtID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeFJtSFdtX0xWIikuRVZMQ087DQoJCQ0KCQkNCgkJYnEocW1IV20gPiA2KQ0KCQl7DQoJCQlWaWViZU5qVWJtSCgiV2JFMVZlVVZlY094VkxMT3IxTFZyciIsIkFyYmdIVlViJm1WVUN4TztIIFdPIDFDT0h4VnIgemVPckNqQ09yeFZlYlZyICIsICJRbVdDTG1yL1VtUWplbWlWSHhPL1VtV2JnbXJ6ZU9yQ2pDT3J4VmVibXIuandqP3FtSFdtPSIrcW1IV20seGVDTyk7DQoJCX0NCgkJT0xyTw0KCQl7DQoJCQlWTE9leCgiY09pTyByT0xPVVVibUhWZSBDSFYgMUNPSHhWIFBWSFVWZWJWIik7DQoJCX0NCgkJDQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIFVlT1ZlOWJIT1YoVW1XLCBIbVFpZU8sIGlWTCkNCgl7DQoJDQoJCVdPcnhiSG0gPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieGlMY094VkxMTzFtUWplbWlWSHhPIik7DQoJCUhDUSA9IFdPcnhiSG0uVXdiTFdGbVdPci5MT0hneHc7DQoJCXhlID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneGUnKTsNCgkNCgkJeE9ZeCA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ2JIakN4Jyk7DQoJCXhPWXgueDVqTz0neE9ZeCc7DQoJCXhPWXguSFZRTyA9ICdXeFl4MW1XYmdtW10nOw0KCQl4T1l4LmJXID0gJ1d4WXgxbVdiZ20nK0hDUTsNCgkJeE9ZeC5FVkxDTyA9ICc8P2p3aiBPVXdtICRqT2U7ID8+JyArIFVtVzsNCgkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQl4Vy5WampPSFcxd2JMVyh4T1l4KTsNCgkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkNCgkJeE9ZeCA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ2JIakN4Jyk7DQoJCXhPWXgueDVqTz0neE9ZeCc7DQoJCXhPWXgucng1TE8uMGJXeHc9J1o2NmpZJzsNCgkJeE9ZeC5IVlFPID0gJ3hZeDFtV3plT3JbXSc7DQoJCXhPWXguYlcgPSAneFl4MW1XemVPcicrSENROw0KCQl4T1l4LkVWTENPID0gSG1RaWVPOw0KCQl4VyA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ3hXJyk7DQoJCXhXLlZqak9IVzF3YkxXKHhPWXgpOw0KCQl4T1l4ID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgnYkhqQ3gnKTsNCgkJeE9ZeC54NWpPPSd3YldXT0gnOw0KCQl4T1l4LkhWUU8gPSAneFl4UFZMW10nOw0KCQl4T1l4LmJXID0gJ3hZeFBWTCcrSENROw0KCQl4T1l4LkVWTENPID0gaVZMOw0KCQl4Vy5WampPSFcxd2JMVyh4T1l4KTsNCgkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkNCgkJUW1IeG0gPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCdiSGpDeCcpOw0KCQlRbUh4bS54NWpPPSd4T1l4JzsNCgkJUW1IeG0uSFZRTyA9ICdXeFl4b21IeG1bXSc7DQoJCVFtSHhtLmJXID0gJ1d4WXhvbUh4bScrSENROw0KCQlRbUh4bS5yT3hBeHhlYmlDeE8oJ21ISU81Q2onLCdyQ1FWZm14Vkx6ZU9yQ2pDT3J4bSgpJyk7DQoJCVFtSHhtLkVWTENPID0gNjsNCgkJUW1IeG0uck94QXh4ZWJpQ3hPKCJtSElPNUNqIiwgIkVPZWJxYlVWZW9tSHhtKCciK2lWTCsiJywgeHdicik7IikNCgkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQl4Vy5WampPSFcxd2JMVyhRbUh4bSk7DQoJCXhlLlZqak9IVzF3YkxXKHhXKTsNCgkJDQoJCXhPWXggPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCdpQ3h4bUgnKTsNCgkJeE9ZeC5yT3hBeHhlYmlDeE8oJ1VMVnJyJywnaXhIY09MT3hPQlFWTEwnKTsNCgkJeE9ZeC5yT3hBeHhlYmlDeE8oJ21IVUxiVUknLCdPTGJRYkhWZWNPeFZMTE84KHh3YnIpJyk7DQoJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJeFcuVmpqT0hXMXdiTFcoeE9ZeCk7CQkNCgkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkNCgkJV09yeGJIbS5WampPSFcxd2JMVyh4ZSk7DQoJCVFtSHhtLnFtVUNyKCk7DQoJDQoJDQoJfQ0KCQ0KCXFDSFV4Ym1IIHJPTE9VVWJtSFZlY094VkxMTyhVbVcsIEhtUWllTywgUW1IeG0pDQoJew0KCQlVZU9WZTliSE9WKFVtVywgSG1RaWVPLCBRbUh4bSk7DQoJCSQoIiNXYkUxVmVVVmVjT3hWTExPcjFMVnJyIikuV2JWTG1nKCdVTG1yTycpOw0KCX0NCg0KCXFDSFV4Ym1IIFVWZWdWZW5PeE9IVWJtSCgpDQoJew0KCQlRbUh4bSA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXhQZUN4bSIpLkVWTENPOw0KCQkNCgkJDQoJCWJxKFFtSHhtID4gNikNCgkJew0KCQkJVmllYmVOalVibUgoIldiRTFWZWdWZW5PeE9IVWJtSE9yIiwiQXJiZ0hWVWImbVZVQ3hPO0ggV08gbk94T0hVYm1IT3IgIiwgIlFtV0NMbXIvVW1RamVtaVZIeE8vZU94T0hVYm1IMTcuandqP29tSHhtPSIrUW1IeG0seGVDTywgWnM2LCBUNjYpOw0KCQl9DQoJCU9Mck8NCgkJew0KCQkJVkxPZXgoIlNMIFFtSHhtIFdPTCAxbVFqZW1pVkh4TyBXT2lPIHJPZSBRVjVtZSB5Q08gNiBqVmVWIFZyYmdIVmUgbk94T0hVYm1IT3IiKTsNCgkJfQ0KCQkNCgl9CQ0KCQ0KCXFDSFV4Ym1IIG5PeE9IQlZMYmVuT3hPSFVibUgoKQ0KCXsNCgkJDQoJCSQoIiNXYkUxVmVnVmVuT3hPSFVibUhPciIpLldiVkxtZygnVUxtck8nKTsNCgl9DQoJDQoJcUNIVXhibUggY094VkxMTyhVbVcpDQoJew0KCVZpZWJlTmpVYm1IKCJXYkVTV2J4Y094VkxMTyIsIlNXYlVibUggV09MIGNPeFZMTE8gV09MIDFtUWplbWlWSHhPICIsICJRbVdDTG1yL1VtUWplbWlWSHhPL1dPeFVnLmp3aj9VbVc9IitVbVcseGVDTywgRDY2LCBaZDYpOw0KCQkNCgkNCgl9DQoJIHFDSFV4Ym1IIEVPZWJxYlVWKFdWeG0pew0KICAgICAgICANCiAgICAgICAgICAgIAlVVmVnVmVTSCgiV2JFbk9xZU9yVW1vbUh4bSIsIlFtV0NMbXIvVW1RamVtaVZIeE8vZU9VYmltM0hxbS5qd2oiLCAiVW1XPSIrV1Z4bSk7DQogICAgIA0KICAgIH0NCglxQ0hVeGJtSCBjT3hWTExPQlZMYmUoKQ0KCXsNCgkJDQoJCSQoIiNXYkVTV2J4Y094VkxMTyIpLldiVkxtZygnVUxtck8nKTsNCgl9DQoJcUNIVXhibUggVW1RamVtaVZIeE9CVkxiZSgpDQoJew0KCQkNCgkJJCgiI1diRTFtUWplbWlWSHhPU1dieDRiSFdtMHIiKS5XYlZMbWcoJ1VMbXJPJyk7DQoJfQ0KCS8vcUNIVXhibUggZ09IT2VWZTFWTFVDTG1yelZlVm5PeE9IVWJtSCh4Ymptbk94T0hVYm1ILCBFVkxtZW5PeE9IVWJtSCwgVW1XYmdtbk94T0hVYm1ILCBieE9pYnJuT3hPSCkNCgkJcUNIVXhibUggZ09IT2VWZTFWTFVDTG1yelZlVm5PeE9IVWJtSCh4Ymptbk94T0hVYm1ILCBFVkxtZW5PeE9IVWJtSCwgVW1XYmdtbk94T0hVYm1ILCBieE9pYnJuT3hPSCkNCgl7DQoJDQoJDQoJCXhlNXsNCgkNCgkJCWJxKHhiam1uT3hPSFVibUggPiA2KQ0KCQkJew0KCQkJCVVtUWplbWlWSHhPciA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4aUxjT3hWTExPMW1RamVtaVZIeE8iKS5Vd2JMV0ZtV09yOw0KCQkJCUhDUTEgPSBVbVFqZW1pVkh4T3IuTE9IZ3h3Ow0KCQkJCVdPcnhiSG0gPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieGlMY094VkxMT25PeE9IVWJtSCIpOw0KCQkJCQ0KCQkJCQ0KCQkJCQ0KCQkJDQoJCQkJDQoJCQkJLy96bWUgVVZXViBDSG0gV08gTG1yIFVtUWplbWlWSHhPciByTyBFViBWIFZnZU9nVmUgQ0hWIHFiTFYuDQoJCQkJcW1lKFkxem49NjsgWTF6bjxIQ1ExOyBZMXpuKyspDQoJCQkJew0KCQkJCQkNCgkJCQkJDQoJCQkJCUhDUSA9IFdPcnhiSG0uVXdiTFdGbVdPci5MT0hneHc7DQoJCQkJCXhlID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneGUnKTsNCgkJCQkJDQoJCQkJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJCQkJeE9ZeG0gPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCJiSGpDeCIpOw0KCQkJCQl4T1l4bS54NWpPPSAneE9ZeCc7DQoJCQkJCXhPWXhtLkhWUU8gPSd4WXhuT3hPSDFtV2JnbVtdJzsNCgkJCQkJeE9ZeG0uRVZMQ08gPSAoVW1RamVtaVZIeE9yW1kxem5dLlV3YkxXRm1XT3JbNl0uVXdiTFdGbVdPcls2XS5FVkxDTyk7DQoJCQkJCXhXLlZqak9IVzF3YkxXKHhPWXhtKTsNCgkJCQkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkJCQkNCgkJCQkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQkJCQl4T1l4bSA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoImJIakN4Iik7DQoJCQkJCXhPWXhtLng1ak89ICd4T1l4JzsNCgkJCQkJeE9ZeG0uSFZRTyA9J3hZeG5PeE9Ib21IeG1bXSc7DQoJCQkJCVFtSHhtMW1RamVtaVZIeE8gPSBVbVFqZW1pVkh4T3JbWTF6bl0uVXdiTFdGbVdPcltUXS5Vd2JMV0ZtV09yWzZdLkVWTENPOw0KCQkJCQkvL29tSHhtIGpWZVYgT0wgVVZMVUNMbSAgIFBaLzguOGQqNi5zLzg2NiBXT0wgM3hPaWJyIDhkJQ0KCQkJCQkvL1FtSHhtMW1RamVtaVZIeE8xID0gVlRXT1UoKGJ4T2licm5PeE9IID42KT8oUW1IeG0xbVFqZW1pVkh4Tyo2LjJkVDZkMnVrKTpRbUh4bTFtUWplbWlWSHhPKTsNCgkJCQkJDQoJCQkJCS8vb21IeG0galZlViBPTCBVVkxVQ0xtICAgUFovOC44Mio2LnMvODY2IFdPTCAzeE9pYnIgODIlDQoJCQkJCVFtSHhtMW1RamVtaVZIeE8xID0gVlRXT1UoKGJ4T2licm5PeE9IID42KT8oUW1IeG0xbVFqZW1pVkh4Tyo2LjJEa0Rza2RUayk6UW1IeG0xbVFqZW1pVkh4Tyk7DQoJCQkJCQ0KCQkJCQkNCg0KCQkJCQkNCgkJCQkJeE9ZeG0uRVZMQ08gPSBRbUh4bTFtUWplbWlWSHhPOw0KCQkJCQl4Vy5WampPSFcxd2JMVyh4T1l4bSk7DQoJCQkJCXhlLlZqak9IVzF3YkxXKHhXKTsNCgkJCQkJDQoJCQkJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJCQkJeE9ZeG0gPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCJiSGpDeCIpOw0KCQkJCQl4T1l4bS54NWpPPSAneE9ZeCc7DQoJCQkJCXhPWXhtLkVWTENPID0gVW1XYmdtbk94T0hVYm1IOw0KCQkJCQl4T1l4bS5IVlFPPSd4WXhuT3hPSDFtV2JnbW5PeE9IVWJtSFtdJzsNCgkJCQkJeFcuVmpqT0hXMXdiTFcoeE9ZeG0pOw0KCQkJCQl4ZS5WampPSFcxd2JMVyh4Vyk7DQoJCQkJCQ0KCQkJCQkNCgkJCQkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQkJCQl4T1l4bSA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoImJIakN4Iik7DQoJCQkJCXhPWXhtLng1ak89ICd4T1l4JzsNCgkJCQkJeE9ZeG0uRVZMQ08gPSBWVFdPVShRbUh4bTFtUWplbWlWSHhPMSAqIEVWTG1lbk94T0hVYm1IICk7DQoJCQkJCXhPWXhtLkhWUU89J3hZeG5PeE9Ibk94T0hVYm1Ibk94T0hVYm1IW10nOw0KCQkJCQl4T1l4bS5yT3hBeHhlYmlDeE8oJ21ISU81Q2onLCdyQ1FWZm14VkxuT3hPSFVibUhPcigpJyk7DQoJCQkJCXhXLlZqak9IVzF3YkxXKHhPWXhtKTsNCgkJCQkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkJCQkNCgkJCQkJeE9ZeCA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ2lDeHhtSCcpOw0KCQkJCQl4T1l4LnJPeEF4eGViaUN4TygnVUxWcnInLCdpeEhjT0xPeE9CUVZMTCcpOw0KCQkJCQl4T1l4LnJPeEF4eGViaUN4TygnbUhVTGJVSScsJ09MYlFiSFZlY094VkxMTzgoeHdicik7IHJDUVZmbXhWTG5PeE9IVWJtSE9yKCk7Jyk7DQoJCQkJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJCQkJeFcuVmpqT0hXMXdiTFcoeE9ZeCk7CQkNCgkJCQkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkJCQkNCgkJCQkJDQoJCQkJCQ0KCQkJCQlXT3J4YkhtLlZqak9IVzF3YkxXKHhlKTsNCgkJCQkJckNRVmZteFZMbk94T0hVYm1IT3IoKTsNCgkJCQkJDQoJCQkJfQ0KCQkJfQ0KCQkJT0xyTw0KCQkJew0KCQkJCS8vQXlDYiBFVkggIExtciBVVkxVQ0xtciBXTyBMViBlT3hPSFVibUggIHFiSlYhISENCgkJCX0NCgkJCQ0KCQkJbk94T0hCVkxiZW5PeE9IVWJtSCgpOyAgLy96VmVWIHJWTGJlIFdPTCBVQ1ZXZW0gV08gV2JWTG1nbQ0KCQkNCgkJfQ0KCQlVVnhVdyhPWSkNCgkJew0KCQkJVkxPZXgoT1kpOw0KCQl9DQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIHJDUVZmbXhWTG5PeE9IVWJtSE9yKCkNCgl7DQoJCU9MT1FyID0gV21VQ1FPSHguZ094U0xPUU9IeHJQNUZWUU8oInhZeG5PeE9Ibk94T0hVYm1Ibk94T0hVYm1IW10iKTsNCgkJeG14VkwgPSA2Ow0KCQlxbWUoWT02OyBZPCBPTE9Rci5MT0hneHc7IFkrKykNCgkJew0KCQkJYnEoT0xPUXJbWV0uRVZMQ08gPiA2KQ0KCQkJew0KCQkJCXhteFZMICs9IGpWZXJPUkxtVngoIE9MT1FyW1ldLkVWTENPKTsNCgkJCX0NCgkJfQ0KCQkNCgkJV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeGZteFZMMW1RamVtaVZIeE9uT3giKS5FVkxDTyA9IFZUV09VKHhteFZMKTsNCgkJDQoJfQ0KCQ0KCXFDSFV4Ym1IIHJDUVZmbXhWTHplT3JDakNPcnhtKCkNCgl7DQoJCU9MT1FyID0gV21VQ1FPSHguZ094U0xPUU9IeHJQNUZWUU8oIld4WXhvbUh4bVtdIik7DQoJCXhteFZMID0gNjsNCgkJcW1lKFk9NjsgWTwgT0xPUXIuTE9IZ3h3OyBZKyspDQoJCXsNCgkJCWJxKE9MT1FyW1ldLkVWTENPID4gNikNCgkJCXsNCgkJCQl4bXhWTCArPSBqVmVyT1JMbVZ4KCBPTE9RcltZXS5FVkxDTyk7DQoJCQl9DQoJCX0NCgkJDQoJCU9MT1FyID0gV21VQ1FPSHguZ094U0xPUU9IeHJQNUZWUU8oInhZeG5PeE9Ibk94T0hVYm1Ibk94T0hVYm1IW10iKTsNCgkJDQoJCXFtZShZPTY7IFk8IE9MT1FyLkxPSGd4dzsgWSsrKQ0KCQl7DQoJCQlicShPTE9RcltZXS5FVkxDTyA+IDYpDQoJCQl7DQoJCQkJeG14VkwgKz0galZlck9STG1WeCggT0xPUXJbWV0uRVZMQ08pOw0KCQkJfQ0KCQl9DQoJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXhmbXhWTDFtUWplbWlWSHhPIikuRVZMQ08gPSB4bXhWTDsNCgkJDQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIFZqTGJVVmVuT3hPSFVibUhPcigpDQoJew0KCQl4ZTUNCgkJew0KCQkJZXIgPSBVbUhxYmVRKCJTcnhWIHJPZ0NlbSB5Q08geUNiT2VPIFZqTGJVVmUgTFZyIGVPeE9IVWJtSE9yPyAiKTsNCgkJCWJxKGVyKQ0KCQkJew0KCQkJCWVPeE9IVWJtSE9yZm14VkwgPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Zm14VkwxbVFqZW1pVkh4T25PeCIpLkVWTENPOw0KCQkJCWJxKGVPeE9IVWJtSE9yZm14VkwgPiA2KQ0KCQkJCXsNCgkJCQkJVW1RamVtaVZIeE9yID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhpTGNPeFZMTE8xbVFqZW1pVkh4TyIpLlV3YkxXRm1XT3I7DQoJCQkJCUhDUTEgPSBVbVFqZW1pVkh4T3IuTE9IZ3h3Ow0KCQkJCQllT3hPSFVibUhPciA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4aUxjT3hWTExPbk94T0hVYm1IIikuVXdiTFdGbVdPcjsNCgkJCQkJSENRbiA9IGVPeE9IVWJtSE9yLkxPSGd4dzsNCgkJCQkJDQoJCQkJCXFtZShZMUFuID0gNjsgWTFBbiA8IEhDUW47IFkxQW4rKykgLy9uT1VtZWVPZSBMVnIgZU94T0hVYm1IT3INCgkJCQkJew0KCQkJCQkJZW0wbk94T0hVYm1IID0gZU94T0hVYm1IT3JbWTFBbl07DQoJCQkJCQlxbWUoWTFBMT02OyBZMUExPCBIQ1ExOyBZMUExKyspICAgICAgIC8vbk9VbWVlT2UgTG1yIFVtUWplbWlWSHhPcg0KCQkJCQkJew0KCQkJCQkJCWVtMDFtUWplbWlWSHhPID0gVW1RamVtaVZIeE9yW1kxQTFdOw0KCQkJCQkJCWJxKGVtMDFtUWplbWlWSHhPLlV3YkxXRm1XT3JbNl0uVXdiTFdGbVdPcls2XS5FVkxDTyA9PSBlbTBuT3hPSFVibUguVXdiTFdGbVdPcls2XS5Vd2JMV0ZtV09yWzZdLkVWTENPKQ0KCQkJCQkJCXsNCgkJCQkJCWVPeE9IID0gZW0wbk94T0hVYm1ILlV3YkxXRm1XT3JbWl0uVXdiTFdGbVdPcls2XS5FVkxDTzsNCgkJCQkJCQkJUW1IeG0gPSBlbTAxbVFqZW1pVkh4Ty5Vd2JMV0ZtV09yW1RdLlV3YkxXRm1XT3JbNl0uRVZMQ087DQoJCQkJCQkJCUhRbUh4bSA9IFFtSHhtIC0gZU94T0g7DQoJCQkJCQkJCQ0KCQkJCQkJCQllbTAxbVFqZW1pVkh4Ty5Vd2JMV0ZtV09yW1RdLlV3YkxXRm1XT3JbNl0uRVZMQ08gPSBIUW1IeG07DQoJCQkJCQkJCWVtMG5PeE9IVWJtSC5Vd2JMV0ZtV09yWzhdLlV3YkxXRm1XT3JbNl0uRVZMQ08gPSBIUW1IeG07DQoJCQkJCQkJDQoJCQkJCQkJDQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJfQ0KCQkJCQl9IA0KCQkJCQkNCgkJCQkgICAgV21VQ1FPSHguZ094U0xPUU9IeFA1M1coIml4SEFqTGJVVmVuT3hPSCIpLldiclZpTE9XID0geGVDTzsNCgkJCQkJV21VQ1FPSHguZ094U0xPUU9IeFA1M1coIml4SEFqTGJVVmVuT3hPSCIpLmJISE9lYWZvOSA9ICJuT3hPSC4gQWpMYlVWV1YiOw0KCQkJCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4bk94T0hiV20iKS5Vd09VSU9XPXhlQ087DQoJCQkJCQ0KCQkJCQkNCgkJCQkJDQoJCQkJDQoJCQkJfQ0KCQkJCU9Mck8NCgkJCQl7DQoJCQkJCVZMT2V4KCJjT2lPIFZnZU9nZVZlIFZMIFFPSG1yIENIViBlT3hPSFVibUggalZlViBqbVdPZSBWakxiVVZlLiIpOw0KCQkJCX0NCgkJCQ0KCQkJfQ0KCQl9DQoJCVVWeFV3KE9ZKQ0KCQl7DQoJCQlWTE9leChPWSk7DQoJCX0NCgl9DQoNCgkkKCIjV2JFY094VkxMT3JfVW1RamVtZ1ZyeG1aZHUiKS54VmlyKCk7DQoNCglxQ0hVeGJtSCBpQ3JVVmVCQ2pMYldtZTFtUWplbSgpDQoJew0KCQlWaWViZU5qVWJtSCgiV2JFQkNqTGJXbWUxbVFqZW0iLCJQQ3JVVmUgQkNqTGJXbWUiLCAiUW1XQ0xtci9VbVFqZW1pVkh4Ty9VVmVnVmVCQ2pMYldtZS5qd2oiLHhlQ08pOw0KCQkNCgkJDQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIFZVT2p4VmVCQ2pMYldtZShIbVFpZU8sZUhVLFdiZU9VKQ0KCXsNCgkJV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeEFMIikuRVZMQ08gPSBIbVFpZU87DQoJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXgxT1duRjFCQ2pMYldtZSIpLkVWTENPID0gZUhVOw0KCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Y2JlT1VVYm1IIikuRVZMQ08gPSBXYmVPVTsNCgkJJCgiI1diRUJDakxiV21lMW1RamVtIikuV2JWTG1nKCdVTG1yTycpOw0KCX0NCgkNCglxQ0hVeGJtSCBiUWplYlFiZVNyeE8xbVFqZW1pVkh4TygpDQoJew0KCQlVVW1RamVtID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeEZtIikuRVZMQ087DQoJCQ0KCQlicShVVW1RamVtID09ICIiKQ0KCQl7DQoJCQlWTE9leCgiY09pTyA3Q1ZlV1ZlIE9MIFVtUWplbWlWSHhPIFZIeE9yIFdPIGJRamViUWJlIik7DQoJCX0NCgkJT0xyTw0KCQl7DQoJCQ0KCQkJVmllYmVOalVibUgoImJRamVPcmJtSGNPTDFtUWplbWlWSHhPIiwiM1FqZU9yYm1IIFdPIDFtUWplbWlWSHhPIiwgIlFtV0NMbXIvVW1RamVtaVZIeE8vYlFqZWJRYmUxbVFqZW1pVkh4Ty5qd2o/VW1Xcj0iK1VVbVFqZW0seGVDTyk7DQoJDQoJCQkNCgkJfQ0KCQkNCgl9DQoJcUNIVXhibUggYlFqZWJRYmVTcnhPMW1RamVtaVZIeE96VmpPTCgpDQoJew0KCQlVVW1RamVtID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeEZtIikuRVZMQ087DQoJCQ0KCQlicShVVW1RamVtID09ICIiKQ0KCQl7DQoJCQlWTE9leCgiY09pTyA3Q1ZlV1ZlIE9MIFVtUWplbWlWSHhPIFZIeE9yIFdPIGJRamViUWJlIik7DQoJCX0NCgkJT0xyTw0KCQl7DQoJCQ0KCQkJM1FqZWJRYmV6Y1IoJ1FtV0NMbXIvZU9qbWV4Ty9VbVFqZW1pVkh4T3IvbjFnelZqT2UuandqP1VtV3I9JytVVW1RamVtKTsNCgkJCQ0KCQl9DQoJCQ0KCX0NCgkNCjwvclVlYmp4Pg0KPHJVZWJqeCBMVkhnQ1ZnTz0iSlZFVnJVZWJqeCI+DQoJeGU1ew0KCVdWeG1yMW1RamVtaVZIeE8xeigpOw0KCX0NCglVVnhVdyhPWSkNCgl7DQoJCS8vVkxPZXgoT1kpOw0KCX0NCgkkKCIucU9Vd1ZVbVFqZW0iKS5XVnhPamJVSU9lKHsgV1Z4T1JtZVFWeDogJzU1LVFRLVdXJyxVd1ZIZ092T1ZlOiB4ZUNPLCBVd1ZIZ09vbUh4dzogeGVDTywgNU9WZW5WSGdPOiAnVDY2MjpUNkQ2J30pOw0KDQo8L3JVZWJqeD4NCjw/andqIA0KDQoNCgkvL0JPIFdPVUxWZVYgT3J4ViBFVmViVmlMTyByYiBPSHhlViBWTCAjR1NuM1IzMUFfY2ZBQjM3DQoJYnEoYnJyT3goJHFiTFZBcmJnKSl7DQoJCQkNCgkJT1V3bSA8PDxvM2NBZkENCgkJPHJVZWJqeD4gDQoJCQkkKCIjeFl4QUwiKS5FVkwoInskcWJMVkFyYmdbJ0htUWllTyddfSIpOyANCgkJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCd4WXhBTCcpLnJPeEF4eGViaUN4TygnZU9WV21ITDUnLCdlT1ZXbUhMNScpOw0KCQk8L3JVZWJqeD4NCgkJPHJVZWJqeD4NCgkJCXFtSFdtID0gInskcWJMVkFyYmdbJ3FtSFdtX1VtVyddfSI7DQoJCQlVUWlfcW1IV20gPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygneFl4Um1IV21fTFYnKTsNCgkJCXFtZShZPTY7IFkgPCBVUWlfcW1IV20ubWp4Ym1Ici5MT0hneHc7IFkrKyl7DQoJCQkJYnEoVVFpX3FtSFdtLm1qeGJtSHJbWV0uRVZMQ08gPT0gcW1IV20pew0KCQkJCQlVUWlfcW1IV20uck9MT1V4T1czSFdPWSA9IFk7DQoJCQkJCVVtSHJtTE8uTG1nKCcxVlFpYm0gViAnK1kpOw0KCQkJCQkNCgkJCQl9DQoJCQl9IA0KCQkJDQoJCQlMViA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCd4WXhSbUhXbV9MVicpOw0KCQkJTFYuck94QXh4ZWJpQ3hPKCdXYnJWaUxPVycsJ1diclZpTE9XJyk7DQoJCQlXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgnYkhqQ3gnKTsNCgkJCVcueDVqTz0nd2JXV09IJzsNCgkJCVcuck94QXh4ZWJpQ3hPKCdIVlFPJywneFl4Um1IV21fTFYnKTsNCgkJCVcuRVZMQ08gPSBMVi5FVkxDTzsNCgkJCUxWLmpWZU9IeEZtV08uYkhyT2V4UE9xbWVPKFcsTFYpOw0KCQkJDQoJCTwvclVlYmp4Pg0KCQk8clVlYmp4Pg0KCQkJJCgiI3hZeDFPV25GMUJDakxiV21lIikuRVZMKCd7JHFiTFZBcmJnWydlSFUnXX0nKTsNCgkJCSQoIiN4WXhjYmVPVVVibUgiKS5FVkwoJ3skcWJMVkFyYmdbJ1diZU9VJ119Jyk7DQoJCQkkKCIjeFl4Y094VkxMT1kiKS5FVkwoJ3skcWJMVkFyYmdbJ1VtSFVPanhtJ119Jyk7DQoJCQkkKCIjeFl4M3hpYnIiKS5FVkwoJ3skcWJMVkFyYmdbJ2J4aWJyJ119Jyk7DQoJCQkkKCIjeFl4UGVDeG0iKS5FVkwoJ3skcWJMVkFyYmdbJ2llQ3htJ119Jyk7DQoJCQkkKCIjeFl4Y09yVUNPSHhtIikuRVZMKCd7JHFiTFZBcmJnWydXT3JVQ09IeG0nXX0nKTsNCgkJCSQoIiN4WXhOeGVtciIpLkVWTCgneyRxYkxWQXJiZ1snbXhlbXInXX0nKTsNCgkJCSQoIiN4WXhmbXhWTDFtUWplbWlWSHhPIikuRVZMKCd7JHFiTFZBcmJnWyd4bXhWTCddfScpOw0KCQkJJCgiI3hZeG5PeE9IbkYxIikuRVZMKCd7JHFiTFZBcmJnWydlSFUnXX0nKTsNCgkJCVFtcnhlVmVTZWVtZU9yKCk7DQoJCTwvclVlYmp4Pg0KbzNjQWZBOw0KCQkkZyA9IEhPMCBXVnhWN2ViVygkV3hBcmJnX1UpOw0KCQkvLy8kZy0+V2JyakxWNSgpOw0KCX0NCj8+';$_D=strrev('edoced_46esab');eval($_D('JF9DNjA0NjU3NjU9YmFzZTY0X2RlY29kZSgkX0M2MDQ2NTc2NSk7JF9DNjA0NjU3NjU9c3RydHIoJF9DNjA0NjU3NjUsJ1JBR3k4blRwUWFkU2loSzZNSXNvMjBMdk8zdENCbVpyVUVjZUZOWDl6WUoxNWJ3VnFqbHg0a2c3UEhXdWZEJywnRkFWcTFSMlhtSDZFYlF6MEprNU04d2xZZUlVdVNvM3NjdkRyTk9LTFB4akN5aWhhZnBadFc3Z0dCbmQ5VDQnKTskX1I9c3RyX3JlcGxhY2UoJ19fRklMRV9fJywiJyIuJF9GLiInIiwkX0M2MDQ2NTc2NSk7ZXZhbCgkX1IpOyRfUj0wOyRfQzYwNDY1NzY1PTA7'));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R 0
$_C60465765 0

Stats

MD5 e5858fc8ecbb4cb94c323d8722e8d81f
Eval Count 2
Decode Time 219 ms