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 /** * @multics panel v4.2 release 07-11-2020 * @oscam, multics, iptv 3in1 pan..
Decoded Output download
?>b'<?php
function KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM ( )
{
$KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM = trim( shell_exec( "free -m" ) );
if ( empty( $KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM ) )
{
return false;
}
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = explode( "\n", $KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM );
$KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM = array();
$vOfzyYZhOyEpKciacDdtoeLmGnMgnMJGMupXQvS = array();
foreach ( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt as $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = preg_replace( \'!\s+!\', \' \', str_replace( ":", "", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT ) );
if ( ! strstr( $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH, "Mem" ) and ! strstr( $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH, "Swap" ) )
{
continue;
}
$roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ = explode( " ", $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH );
if ( $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 0 ] == "Mem" )
{
$KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM[ \'total\' ] = $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 1 ];
$KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM[ \'used\' ] = $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 2 ];
$KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM[ \'free\' ] = $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 3 ];
$KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM[ \'percent\' ] = sprintf( "%0.2f", ($roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 2 ] / $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 1 ]) * 100 );
}
else
{
$vOfzyYZhOyEpKciacDdtoeLmGnMgnMJGMupXQvS[ \'total\' ] = $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 1 ];
$vOfzyYZhOyEpKciacDdtoeLmGnMgnMJGMupXQvS[ \'used\' ] = $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 2 ];
$vOfzyYZhOyEpKciacDdtoeLmGnMgnMJGMupXQvS[ \'free\' ] = $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 3 ];
$vOfzyYZhOyEpKciacDdtoeLmGnMgnMJGMupXQvS[ \'percent\' ] = sprintf( "%0.2f", ($roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 2 ] / $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ 1 ]) * 100 );
}
}
return array( $KsTIZmxbdsjkNOIivplNvQdodqupBtgiNPM, $vOfzyYZhOyEpKciacDdtoeLmGnMgnMJGMupXQvS );
}
function lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg ( )
{
$JqWYUJnYbJhGNDdwGsIkkSCfITQllw = @file_get_contents( "/proc/cpuinfo" );
if ( empty( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw ) )
{
return false;
}
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = explode( "\n", $JqWYUJnYbJhGNDdwGsIkkSCfITQllw );
$lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg = array();
foreach ( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt as $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT )
{
if ( ! stristr( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, ":" ) )
{
continue;
}
list ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc, $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM ) = @explode( ":", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT );
$lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg[ trim( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ) ] = trim( $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM );
}
$WOLFotjBAZsEBskFozKudCdQeMDRbUkAn = array();
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII <= $lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg[ \'processor\' ]; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
$WOLFotjBAZsEBskFozKudCdQeMDRbUkAn[ \'cores\' ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ][ \'cpu_name\' ] = $lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg[ \'model name\' ];
$WOLFotjBAZsEBskFozKudCdQeMDRbUkAn[ \'cores\' ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ][ \'speed\' ] = $lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg[ \'cpu MHz\' ];
}
$whPGNQualJRMwFnuGvaTFKVCgoCFtGLjodc = array_fill( 0, ++$lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg[ \'processor\' ], 0 );
$KJFOgFMEgFJloyBrVDVvSCejrlMtpTNMg = array_fill( 0, $lzgiEiUvHINQUNeYhuFZbrjXWpOSOsJbrfZCg[ \'processor\' ], 0 );
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < 3; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
$lTjUhqSZKTqRmuhlLOtblPDsbkxYMXzQYyhghs = @file_get_contents( "/proc/stat" );
if ( empty( $lTjUhqSZKTqRmuhlLOtblPDsbkxYMXzQYyhghs ) )
{
return false;
}
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = explode( "\n", $lTjUhqSZKTqRmuhlLOtblPDsbkxYMXzQYyhghs );
$tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ = 0;
$PdfgrDqHBINCZrMJOpJFqNzkLfg = 0;
foreach ( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt as $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT )
{
if ( ! preg_match( "/cpu[0-9]{1,}\s/", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT ) )
{
continue;
}
$pBsvFYxrUmzHtrshANkIrcAdLLnnspI = explode( " ", trim( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT ) );
array_shift( $pBsvFYxrUmzHtrshANkIrcAdLLnnspI );
$EeRgbpstVMOhLHXKjxEkFJLnrHdwJWZY = array_sum( $pBsvFYxrUmzHtrshANkIrcAdLLnnspI );
$xsiutynjuYMxMizmdBJDnBELkvMUNnXutvdS = $pBsvFYxrUmzHtrshANkIrcAdLLnnspI[ 3 ];
$molvWoieGOqNcnWnsrcGyovPapBHdcoBmxdTc = $xsiutynjuYMxMizmdBJDnBELkvMUNnXutvdS - $whPGNQualJRMwFnuGvaTFKVCgoCFtGLjodc[ $tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ ];
$JdIFtkkFRjLKowxMVzXivcLXFRyUJhFqzxU = $EeRgbpstVMOhLHXKjxEkFJLnrHdwJWZY - $KJFOgFMEgFJloyBrVDVvSCejrlMtpTNMg[ $tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ ];
$gqXiFVMWPnfrYUtQLbtgTQHvRBMrJeJsw = 100 * (($JdIFtkkFRjLKowxMVzXivcLXFRyUJhFqzxU - $molvWoieGOqNcnWnsrcGyovPapBHdcoBmxdTc) / $JdIFtkkFRjLKowxMVzXivcLXFRyUJhFqzxU);
$PdfgrDqHBINCZrMJOpJFqNzkLfg = $PdfgrDqHBINCZrMJOpJFqNzkLfg + $gqXiFVMWPnfrYUtQLbtgTQHvRBMrJeJsw;
$WOLFotjBAZsEBskFozKudCdQeMDRbUkAn[ \'cores\' ][ $tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ ][ \'cpu_usage\' ] = sprintf( "%0.2f", $gqXiFVMWPnfrYUtQLbtgTQHvRBMrJeJsw );
$whPGNQualJRMwFnuGvaTFKVCgoCFtGLjodc[ $tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ ] = $xsiutynjuYMxMizmdBJDnBELkvMUNnXutvdS;
$KJFOgFMEgFJloyBrVDVvSCejrlMtpTNMg[ $tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ ] = $EeRgbpstVMOhLHXKjxEkFJLnrHdwJWZY;
$tDNNqtDSXbkzWcIYbiXwUbmjBwfMjIGcXltpRQQ++;
}
$gKXlijeQtTsbKIzNJUAbvyDYykcRaeQBy = sprintf( "%0.2f", $PdfgrDqHBINCZrMJOpJFqNzkLfg / count( $WOLFotjBAZsEBskFozKudCdQeMDRbUkAn ) );
$WOLFotjBAZsEBskFozKudCdQeMDRbUkAn[ \'total_usage\' ] = $gKXlijeQtTsbKIzNJUAbvyDYykcRaeQBy;
usleep( 90000 );
}
return $WOLFotjBAZsEBskFozKudCdQeMDRbUkAn;
}
function wpTvRRCGWJpzfrrzreGrciRzvGdDsnBISPIuw ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `profiles` WHERE `master_server_id` = \'%d\' AND `profile_name` = \'%s\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return true;
}
return false;
}
function gRScCBBLbGqXtTeKDMrdavEiRpzrjY ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw )
{
global $mcDB;
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `lines` WHERE `server_id` IN(" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ") AND `username` = \'%s\'", $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return true;
}
return false;
}
function lBAqjuBlRrgFmVYaaHYfvnAwcpTysqqFojTz ( $kVyMLbovQRfhPTQpLnuEzkKIRtrcvySIggA )
{
$izNuffqEcAckPEVDqCgVYPylLYdoroWXQM = intval( trim( shell_exec( "ps ax | pgrep -f \'" . MULTICS_ROOT_PATH . "$kVyMLbovQRfhPTQpLnuEzkKIRtrcvySIggA\' | wc -l" ) ) );
return ($izNuffqEcAckPEVDqCgVYPylLYdoroWXQM > 0) ? true : false;
}
function wppJTGiTJPBxLibkeVQfVIRupepsqtgkAk ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $ALbZOIxHWtMBgpFpzoCUmvQJUoBUEWmLswrE = null, $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE = null )
{
global $mcDB;
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( ! is_null( $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `package_id` FROM `group_packages` WHERE `group_id` = \'%d\'", $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `lines_options` WHERE `server_id` IN(" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ")" );
return $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$hdAWGJiYhdWJcKfPoxjjtaRpbRoSBuHelhCC = mcLib::sLYQRInHqFhKEHlZrlkIQnxTDtZrYVNtKK( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) );
if ( is_null( $ALbZOIxHWtMBgpFpzoCUmvQJUoBUEWmLswrE ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `lines_options` WHERE id IN (" . implode( ",", $hdAWGJiYhdWJcKfPoxjjtaRpbRoSBuHelhCC ) . ") AND `server_id` IN(" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ")" );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `lines_options` WHERE id IN (" . implode( ",", $hdAWGJiYhdWJcKfPoxjjtaRpbRoSBuHelhCC ) . ") AND `server_id` IN(" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ") AND `option_type` = \'%d\'", $ALbZOIxHWtMBgpFpzoCUmvQJUoBUEWmLswrE );
}
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$qokgghIvvtdFTbcmRNpVfJyQvgMHvYjzI = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
return $qokgghIvvtdFTbcmRNpVfJyQvgMHvYjzI;
}
}
return array();
}
function paRLWvPlZBfaODfFYycJWdneZmvlGuRClnXU ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t2.`group_name`,t2.`group_color` FROM `users` t1,`member_groups` t2 WHERE t1.member_group_id = t2.id" );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl;
}
function rPTBCpcRnauDkRNPyDclFJmNhhKQKDdnFzLRA ( $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU )
{
global $mcMember;
$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM = ZUrSdeXnmuZXglBYlzpmZSNdazohydQtlQ( $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU );
if ( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'member_id\' ] != 0 and QfgmwmBvfYFOZAUveQPxsjeLiIZGpv( "users", "id", $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'member_id\' ] ) )
{
$TufInpZBGNPOOTyQYSTpJwrcPkpYlDxlUkhvFY = $mcMember->CMKHygROrmbNPyTkrefFrYYMJWXEZDDZZzNM( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'member_id\' ] );
$hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE = ($MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'blocked\' ] == 0) ? mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'EMAIL_MSG_MONITOR_WARN_SUB\' ] : mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'EMAIL_MSG_MONITOR_BAN_SUB\' ];
$SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ = ($MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'blocked\' ] == 0) ? mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'EMAIL_MSG_MONITOR_WARN\' ] : mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'EMAIL_MSG_MONITOR_BAN\' ];
$hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE = str_ireplace( array( "{SERVER_NAME}", "{MEMBER_NAME}", "{LINE_USERNAME}" ), array( mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SERVER_NAME\' ], $TufInpZBGNPOOTyQYSTpJwrcPkpYlDxlUkhvFY[ \'username\' ], $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'username\' ] ), $hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE );
$SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ = str_ireplace( array( "{SERVER_NAME}", "{MEMBER_NAME}", "{LINE_USERNAME}" ), array( mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SERVER_NAME\' ], $TufInpZBGNPOOTyQYSTpJwrcPkpYlDxlUkhvFY[ \'username\' ], $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'username\' ] ), $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ );
ddlmVvmzVjxXGrMcBspRssPvrDVoVVEQ( $TufInpZBGNPOOTyQYSTpJwrcPkpYlDxlUkhvFY[ \'email\' ], $hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE, $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ );
return true;
}
else
{
return false;
}
}
function RgTdRnnrdzSJxxBykFYWcPPilOBuvVKGYI ( $YrsTPgwSjJPsKEEoCpXhinwlNc, $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $oMQyWMTydaLunorZyNBschIyhwlaYmbffGCwW = 0 )
{
global $mcDB;
$YrsTPgwSjJPsKEEoCpXhinwlNc = mcLib::MVmafwfmjqufexpnGzEfOftlkVUTLXdJcqmVWWE( $YrsTPgwSjJPsKEEoCpXhinwlNc );
$oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY = mcLib::MVmafwfmjqufexpnGzEfOftlkVUTLXdJcqmVWWE( $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY );
if ( empty( $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY ) )
{
return false;
}
if ( $oMQyWMTydaLunorZyNBschIyhwlaYmbffGCwW == 0 )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `tickets_topics` (`member_id`,`topic_title`,`date`,`admin_read`,`user_read`) VALUES (\'%d\',\'%s\',\'%d\',0,1)", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $YrsTPgwSjJPsKEEoCpXhinwlNc, time( ) );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `tickets_topics` (`member_id`,`topic_title`,`date`,`admin_read`,`user_read`) VALUES (\'%d\',\'%s\',\'%d\',1,0)", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $YrsTPgwSjJPsKEEoCpXhinwlNc, time( ) );
}
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
$PGDOPflUfOQbLlmljrWUKUuSHNrYYdbBTmyY = $mcDB->lZqicXChQNuEPumhIutyOVXkAvvxQGrziptdRBQ( );
if ( $oMQyWMTydaLunorZyNBschIyhwlaYmbffGCwW == 0 )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `tickets_post` (`topic_id`,`post`,`admin_reply`,`date`) VALUES(\'%d\',\'%s\',0,\'%d\')", $PGDOPflUfOQbLlmljrWUKUuSHNrYYdbBTmyY, $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY, time( ) );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `tickets_post` (`topic_id`,`post`,`admin_reply`,`date`) VALUES(\'%d\',\'%s\',1,\'%d\')", $PGDOPflUfOQbLlmljrWUKUuSHNrYYdbBTmyY, $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY, time( ) );
}
return true;
}
return false;
}
function LgVUamksYPgQdsdTyQUcqiXsvwzUNUyyvQPMA ( $xAUHlifzsNLBexnMwNPckbQfaYXeQtKESDPKI, $UmhsmnqYIvOczzHGEafZkToVbijUroFzQU )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `settings` SET `setting_value` = \'%s\' WHERE `setting_key` = \'%s\'", $UmhsmnqYIvOczzHGEafZkToVbijUroFzQU, $xAUHlifzsNLBexnMwNPckbQfaYXeQtKESDPKI );
mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ $xAUHlifzsNLBexnMwNPckbQfaYXeQtKESDPKI ] = $UmhsmnqYIvOczzHGEafZkToVbijUroFzQU;
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
return true;
}
return false;
}
function soEsBhBxvGgcbFMrvPeDREGHbYGWvQfDiHrGCS ( $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk, $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY, $VCcZgzrsCRWsCnDdRMBUPRgvMzjcxeLD = 1 )
{
global $mcDB;
$oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY = mcLib::MVmafwfmjqufexpnGzEfOftlkVUTLXdJcqmVWWE( $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY );
if ( empty( $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY ) )
{
return false;
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `tickets_post` (`topic_id`,`post`,`admin_reply`,`date`) VALUES(\'%d\',\'%s\',\'%d\',\'%d\')", $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk, $oMHgEZUoRVZvnWRXGmIGrnGHnVJWLaQeQQgY, $VCcZgzrsCRWsCnDdRMBUPRgvMzjcxeLD, time( ) );
if ( $VCcZgzrsCRWsCnDdRMBUPRgvMzjcxeLD == 1 )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `tickets_topics` SET `user_read` = 0,`admin_read` = 1 WHERE `id` = \'%d\'", $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `tickets_topics` SET `user_read` = 1,`admin_read` = 0 WHERE `id` = \'%d\'", $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk );
}
return false;
}
function NRomAbAHrJdQfOJAogpMYCugQnXcHuSyhFEps ( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM )
{
global $_LANG;
$BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu = "";
if ( ! is_array( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM ) )
{
return $BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu;
}
if ( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'blocked\' ] == 1 )
{
$BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu = "<font color=\"red\">{$_LANG[\'BLOCKED\']}</font>";
}
elseif ( ! is_null( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'date_end\' ] ) and time( ) >= $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'date_end\' ] )
{
$BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu = "<font color=\"#0000FF\">{$_LANG[\'EXPIRED\']}</font>";
}
elseif ( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'enable\' ] == 0 )
{
$BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu = "<font color=\"orange\">{$_LANG[\'DISABLED\']}</font>";
}
else
{
$BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu = "<font color=\"green\">{$_LANG[\'RUNNING\']}</font>";
}
return $BFpXwGCohRpLDDAXolgFFoOBrbQrTlvNngu;
}
function bebEhDiwIVullMUPzhIbGlVTRRhNdFI ( $cKNQSxaoKuScNfUKXZCEkdDSzQVmIsrNapfw )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = "";
switch ( $cKNQSxaoKuScNfUKXZCEkdDSzQVmIsrNapfw )
{
case "PHP_BIN":
if ( defined( \'PHP_BINDIR\' ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = PHP_BINDIR . \'/php\';
}
elseif ( isset( $_SERVER[ \'PATH\' ] ) )
{
$DOUrCHCXBkoPAnuKlRBiaVbpUiIWhlFxbPwzLE = explode( ":", $_SERVER[ \'PATH\' ] );
$DOUrCHCXBkoPAnuKlRBiaVbpUiIWhlFxbPwzLE = array_map( "trim", $DOUrCHCXBkoPAnuKlRBiaVbpUiIWhlFxbPwzLE );
foreach ( $DOUrCHCXBkoPAnuKlRBiaVbpUiIWhlFxbPwzLE as $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck )
{
if ( file_exists( $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck . \'/php\' ) && is_file( $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck . \'/php\' ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck . \'/php\';
break;
}
}
}
elseif ( function_exists( \'shell_exec\' ) )
{
$wcAdgiCDmlHWQpBibubkzMXkHTWJSB = trim( shell_exec( "which php" ) );
if ( empty( $wcAdgiCDmlHWQpBibubkzMXkHTWJSB ) )
{
$LqrbaezjqzWripdyEZgxrOPyehvRLUdIIaM = trim( shell_exec( "whereis php" ) );
$eVAjOCTHuwfvGZotAPMvQIfqaZIsRBtVU = explode( " ", $LqrbaezjqzWripdyEZgxrOPyehvRLUdIIaM );
if ( count( $eVAjOCTHuwfvGZotAPMvQIfqaZIsRBtVU ) == 1 )
{
return false;
}
else
{
$wcAdgiCDmlHWQpBibubkzMXkHTWJSB = $eVAjOCTHuwfvGZotAPMvQIfqaZIsRBtVU[ 1 ];
}
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $wcAdgiCDmlHWQpBibubkzMXkHTWJSB;
}
break;
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function WaPbSGexTdikWMpoWabVuGeqKlfZxEXQDUQ ( $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY = false )
{
global $mcDB;
if ( $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY !== false )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `cronjobs` SET `enabled` = 0 WHERE `id` = \'%d\'", $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `cronjobs` SET `enabled` = 0;" );
}
RjmngzaIITYRBdPQdtXbclJEEhFhhnhLrSPVLo( );
}
function uCvtIAVzQwdGAMKLaaJFXVlObFPArkvbRRVYGfc ( $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY = false )
{
global $mcDB;
if ( $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY !== false )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `cronjobs` SET `enabled` = 1 WHERE `id` = \'%d\'", $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `cronjobs` SET `enabled` = 1;" );
}
RjmngzaIITYRBdPQdtXbclJEEhFhhnhLrSPVLo( );
}
function NgeYsQmHBsFBfFcZLbyFYhDrYTvmHsUuqyNnYE ( $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `enabled` FROM `cronjobs` WHERE `id` = \'%d\'", $ERKMLKZKDVJKcISHlTdPOFOGKlIgTarPqNYY );
return ($mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( ) == 1) ? true : false;
}
function MJiVHnXSQFjMDzIBokTuQcYueWGWUztLQzozEA ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `enabled` FROM `cronjobs` WHERE `id` = 1" );
$iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM = intval( $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( ) );
return ($iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM > 0) ? true : false;
}
function RjmngzaIITYRBdPQdtXbclJEEhFhhnhLrSPVLo ( )
{
global $mcDB;
if ( ! function_exists( \'shell_exec\' ) )
{
return false;
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `cronjobs` WHERE `enabled` = 1" );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
$BqpLREeOlzFBsxCEytaUDHkqGhjDxQOo = array();
$wcAdgiCDmlHWQpBibubkzMXkHTWJSB = bebEhDiwIVullMUPzhIbGlVTRRhNdFI( \'PHP_BIN\' );
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $ZttOQsMcNSiqFIOCfzEcbBejXFezo )
{
$fWFIoOeLRZHanGpgepvsybXrcrrzVsFzTelWc = MULTICS_ROOT_PATH . $ZttOQsMcNSiqFIOCfzEcbBejXFezo[ \'filename\' ];
$BqpLREeOlzFBsxCEytaUDHkqGhjDxQOo[ ] = "*/{$ZttOQsMcNSiqFIOCfzEcbBejXFezo[\'run_per_mins\']} * * * * $wcAdgiCDmlHWQpBibubkzMXkHTWJSB " . $fWFIoOeLRZHanGpgepvsybXrcrrzVsFzTelWc . " #{$ZttOQsMcNSiqFIOCfzEcbBejXFezo[\'description\']}";
}
$FSnruvLbBDsUqZjIPXseUDOVPIFbAmnJw = trim( shell_exec( "crontab -l" ) );
if ( ! empty( $FSnruvLbBDsUqZjIPXseUDOVPIFbAmnJw ) )
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = explode( "\n", $FSnruvLbBDsUqZjIPXseUDOVPIFbAmnJw );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array_map( "trim", $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp );
$ehLrMjIoeWPEDvcdYCknOWplgvrZHXTXA = count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp );
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < $ehLrMjIoeWPEDvcdYCknOWplgvrZHXTXA; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
if ( stripos( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], MULTICS_ROOT_PATH ) )
{
unset( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] );
}
}
foreach ( $BqpLREeOlzFBsxCEytaUDHkqGhjDxQOo as $sjkZogRAxvYotfOurMbRyIRnSeErnChtczRlao )
{
array_push( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp, $sjkZogRAxvYotfOurMbRyIRnSeErnChtczRlao );
}
}
else
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = $BqpLREeOlzFBsxCEytaUDHkqGhjDxQOo;
}
shell_exec( "crontab -r" );
$ckFfGAFzXrufrNptHmteDhXpZQLShzrQiPxoI = tempnam( "/tmp", "crontab" );
$WsQzTVieuZnBnrAghIQrLynUlOklfchDDMK = fopen( $ckFfGAFzXrufrNptHmteDhXpZQLShzrQiPxoI, "w" );
fwrite( $WsQzTVieuZnBnrAghIQrLynUlOklfchDDMK, implode( "\r\n", $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp ) . "\r\n" );
fclose( $WsQzTVieuZnBnrAghIQrLynUlOklfchDDMK );
shell_exec( "crontab $ckFfGAFzXrufrNptHmteDhXpZQLShzrQiPxoI" );
@unlink( $ckFfGAFzXrufrNptHmteDhXpZQLShzrQiPxoI );
}
function utmAajtHxuKyZECXytyxqbimsWrusFyGupcQxE ( $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM, $pXDrlwVXwuxAzlpShefsNcSIaDMBjP = false )
{
global $mcDB;
switch ( $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM )
{
case "user":
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `tickets_topics` WHERE `user_read` = 0 AND `member_id` = \'%d\'", $pXDrlwVXwuxAzlpShefsNcSIaDMBjP );
break;
case "admin":
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `tickets_topics` WHERE `admin_read` = 0" );
break;
default:
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `tickets_topics` WHERE `admin_read` = 0" );
}
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( );
return ($DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl);
}
function CuCSxyhINcUKGtFvQMjsYppplRNvSztRIVlc ( $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw, $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ )
{
global $mcDB;
if ( is_array( $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw ) )
{
$UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu = $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw;
$zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc = $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'id\' ];
}
else
{
$UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu = oYCxjcrMGXMRxqdxNWbnkfGvamJjzhEJTY( $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw );
}
$kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg = giVihcIAplDDhWVfapZXkdopkxjXNtULY( $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'domain\' ], $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'port\' ], $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'username\' ], $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'password\' ], \'editor\', 1, array( "textedit" => $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ ) );
if ( ! $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg )
{
return false;
}
return true;
}
function dNiVXsZBvJIeHBMhQFpdVlalmNBXCykyT ( $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck )
{
$QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU = scandir( $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck );
$OyfvsLWHuDCsVntfSXVItMlNmrnxeAzgyk = array();
$pxbbXVTVwjlZwLdQRyoYdEURdYPMZWhDbjkty = count( $QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU );
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < $pxbbXVTVwjlZwLdQRyoYdEURdYPMZWhDbjkty; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
if ( $QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] != "." && $QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] != ".." )
{
if ( is_dir( $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck . "/" . $QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ) )
{
$OyfvsLWHuDCsVntfSXVItMlNmrnxeAzgyk = array_merge( $OyfvsLWHuDCsVntfSXVItMlNmrnxeAzgyk, dNiVXsZBvJIeHBMhQFpdVlalmNBXCykyT( $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck . "/" . $QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ) );
}
else
{
$OyfvsLWHuDCsVntfSXVItMlNmrnxeAzgyk[ ] = $FPoVMLLRBDpjMFFQNfagMSzShTmjgwKaTMFck . "/" . $QDDOjZXIDVzUBtjRhGuPPIocXqtOAkbkuoU[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ];
}
}
}
return ($OyfvsLWHuDCsVntfSXVItMlNmrnxeAzgyk);
}
function jEVlapbqfglyCxlIjnfIRSPFsPixApedrKyo ( $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw )
{
if ( is_array( $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw ) )
{
$UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu = $XJrWwzCuHsMWbsdvQwtGNhHQNeCdzMDw;
$zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc = $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'id\' ];
}
else
{
$UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu = oYCxjcrMGXMRxqdxNWbnkfGvamJjzhEJTY( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
$pXrzOKQPXMpZznnhCQHkfoDzxDIJGeRs = array( "mgcamd" => "mgcamd?id=0&list=connected", "cccam" => "cccam?id=0&list=connected", "newcamd" => "newcamd?pid=0&list=connected" );
$PYpzOmGZidMeWUxlNTDVkLuYUKBQnTAhDujBBOk = array( "mgcamd" => "/<a href=\'\/mgcamdclient\?id=(.*?)\'>(.*?)<br>(.*?)<\/a>(.*?)<td>Total Zapping: (.*?)<\/td>(.*?)<span style=\'float:right;\'>/s", "cccam" => "/<a href=\'\/cccamclient\?id=(.*?)\'>(.*?)<br>(.*?)<\/a>(.*?)<td>Total Zapping: (.*?)<\/td>(.*?)<span style=\'float:right;\'>/s", "newcamd" => "/<td><a href=\'\/newcamdclient\?id=(.*?)\'>(.*?)<\/a><\/td>(.*?)<td>Total Zapping: (.*?)<\/td>(.*?)<span style=\'float:right;\'>/s" );
$RJWcEkKmZNNbFaNyufPOBBjwheorRXsMPXqIaQI = lFMhMMBGGtGPUdijJopIGdmRSuDYItqMJIHEU( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array();
foreach ( $RJWcEkKmZNNbFaNyufPOBBjwheorRXsMPXqIaQI as $tDwtLOHiEZRLJaZyFQFpxBryRwkDhYDVaLkqNobdg )
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $tDwtLOHiEZRLJaZyFQFpxBryRwkDhYDVaLkqNobdg[ \'username\' ] ] = $tDwtLOHiEZRLJaZyFQFpxBryRwkDhYDVaLkqNobdg;
}
$FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI = array();
$LumfUgZWFlJkfOfmddTbDKQLKhZepTbnCnUIus = array();
foreach ( $pXrzOKQPXMpZznnhCQHkfoDzxDIJGeRs as $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ => $JgwPyJgJRrQRPYDArewMejJusIwsiJjmwlAoaU )
{
$XcmjOcODJjoZfpZBFazCggIbeCHIhBcyiJX = giVihcIAplDDhWVfapZXkdopkxjXNtULY( $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'domain\' ], $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'port\' ], $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'username\' ], $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu[ \'password\' ], $JgwPyJgJRrQRPYDArewMejJusIwsiJjmwlAoaU );
$LumfUgZWFlJkfOfmddTbDKQLKhZepTbnCnUIus[ $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ ] = $XcmjOcODJjoZfpZBFazCggIbeCHIhBcyiJX;
}
if ( ! empty( $LumfUgZWFlJkfOfmddTbDKQLKhZepTbnCnUIus ) )
{
foreach ( $LumfUgZWFlJkfOfmddTbDKQLKhZepTbnCnUIus as $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ => $XcmjOcODJjoZfpZBFazCggIbeCHIhBcyiJX )
{
if ( preg_match_all( $PYpzOmGZidMeWUxlNTDVkLuYUKBQnTAhDujBBOk[ $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ ], $XcmjOcODJjoZfpZBFazCggIbeCHIhBcyiJX, $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM ) )
{
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < count( $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ] ); $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
if ( isset( $FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI[ $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 2 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ][ \'id\' ] ] ) and $FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI[ $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 2 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ][ \'id\' ] ][ \'online\' ] == 1 )
{
continue;
}
if ( $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ != "newcamd" )
{
$hTBNPbxbxEkWMpMVAoXYdCTGrpIWRivIzKk = trim( strip_tags( $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 6 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ) );
}
else
{
$hTBNPbxbxEkWMpMVAoXYdCTGrpIWRivIzKk = trim( strip_tags( $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 5 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ) );
}
$ejYnvQryAEOHJhKvleSiMKflZqBJKrsfuvyEU = trim( substr( $hTBNPbxbxEkWMpMVAoXYdCTGrpIWRivIzKk, - 2 ) );
if ( $ejYnvQryAEOHJhKvleSiMKflZqBJKrsfuvyEU == \'OK\' || $ejYnvQryAEOHJhKvleSiMKflZqBJKrsfuvyEU == \'ms\' || $ejYnvQryAEOHJhKvleSiMKflZqBJKrsfuvyEU == "" )
{
$hTBNPbxbxEkWMpMVAoXYdCTGrpIWRivIzKk = 2;
}
else
{
$hTBNPbxbxEkWMpMVAoXYdCTGrpIWRivIzKk = 1;
}
$FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI[ $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 2 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ][ \'id\' ] ] = array( "multics_id" => $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "line_info" => $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 2 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] ], "zaps" => ($zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ != "newcamd") ? $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 5 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] : $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 4 ][ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "emulator" => $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ, "online" => $hTBNPbxbxEkWMpMVAoXYdCTGrpIWRivIzKk );
}
}
}
}
return $FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI;
}
function eEMngkjalTsRMEOYDBXzxFONXuJcupcPyeQR ( $FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI, $WpFiAaWkxLTvasqjbarrImxEEzVtSTE, $oRjBmIifkcpHFRMENTgIzgNpwZKCQYU, $UxOZnuCRmRAazSKWEtMeyeToqgKqUVFOg )
{
if ( ! is_array( $FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI ) )
{
return 0;
}
foreach ( $FKaZVSHZRCxLdMAtbyFIufXVbxJDHZTVmUBUgI as $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM )
{
if ( $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM[ $WpFiAaWkxLTvasqjbarrImxEEzVtSTE ] === $oRjBmIifkcpHFRMENTgIzgNpwZKCQYU )
{
if ( is_array( $UxOZnuCRmRAazSKWEtMeyeToqgKqUVFOg ) )
{
$SbaQNErKfDxowdIuFcPPYwChdvzbeTLDahwVQto = array();
foreach ( $UxOZnuCRmRAazSKWEtMeyeToqgKqUVFOg as $XOlzDywpOciXAUSIjhBdVbPctEeXCCFOfEw )
{
if ( array_key_exists( $XOlzDywpOciXAUSIjhBdVbPctEeXCCFOfEw, $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM ) )
{
$SbaQNErKfDxowdIuFcPPYwChdvzbeTLDahwVQto[ ] = $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM[ $XOlzDywpOciXAUSIjhBdVbPctEeXCCFOfEw ];
}
}
return $SbaQNErKfDxowdIuFcPPYwChdvzbeTLDahwVQto;
}
else
{
return $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM[ $UxOZnuCRmRAazSKWEtMeyeToqgKqUVFOg ];
}
}
}
return 0;
}
function url_result($url, $user, $pass) {
$ch = curl_init();
$userAgent = \'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5\';
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(\'Content-Type: text/xml\'));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass);
$data = curl_exec($ch);
/*
if (curl_errno($ch)> 0){
die(\'There was a cURL error: \' . curl_error($ch));
} else {
curl_close($ch);
*/
return $data;
}
function get_between($content, $start, $end){
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return \'\';
}
function url_check($url, $user, $pass)
{
$ch = curl_init();
$userAgent = \'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5\';
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass);
$data = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (empty($info[\'http_code\'])) {
$data3="error";
} else {
// load the HTTP codes
$data3=$info[\'http_code\'];
}
//echo $data3;
return $data3;
}
function DLCuvOIdvDRxZjbRkmaOBeEtFvIpkuQGM ( $xVsdXLfYVLgEWyTlxJpGgTxKLQUFXBzRCU, $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
foreach ( $xVsdXLfYVLgEWyTlxJpGgTxKLQUFXBzRCU as $vsoUnWAxYIeyfhpklUzbRnsqTRUrzOnPpAcyU )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ ] = $vsoUnWAxYIeyfhpklUzbRnsqTRUrzOnPpAcyU[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ];
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function MXxaxAaUuizfJTWmZshaNBbIPCpxvo ( $rXJHTTCJoTzFkfzuEwkSbcctojVMocBTbsAc, $dXmQMpDJHJVTpkNPKawnXBZyJnmNDSDu = \'user\' )
{
global $mcDB, $mcMember;
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( ! is_array( $rXJHTTCJoTzFkfzuEwkSbcctojVMocBTbsAc ) )
{
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t2.`master_server_id` as `master_server_id`,t2.`domain_name` AS domain_name, t2.`description` AS description, t2.`port` AS port, t3.emulator_name AS emulator_name,t3.id as emulator_id FROM `lines` t1, `multics_servers` t2, `emulators` t3 WHERE t2.emulator_id = t3.id AND t1.server_id = t2.id AND t1.`id` IN (" . implode( ",", $rXJHTTCJoTzFkfzuEwkSbcctojVMocBTbsAc ) . ")" );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) == 0 )
{
return array();
}
$vEpqYuhSuEDLcndnSVnIkoDnZMNUjJlqfN = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
$CJmouEtuOMxIAGgLTpwUDGyzqMGaAEdjSxs = upzpUQDSvbmvIQrAiyHPgIUIZiGeJMzxY( );
if ( $dXmQMpDJHJVTpkNPKawnXBZyJnmNDSDu == \'user\' )
{
foreach ( $vEpqYuhSuEDLcndnSVnIkoDnZMNUjJlqfN as $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM )
{
if ( ! isset( $TTqmmAgABBMDPKSZOELErYCXBwxyMtFWGqtrk[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ] ] ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `config_value` FROM `multics_config_vars` WHERE `master_server_id` = \'%d\' AND `config_value_name` = \'%s\'", $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ], \'MGCAMD KEY\' );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$TTqmmAgABBMDPKSZOELErYCXBwxyMtFWGqtrk[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ] ] = $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
}
else
{
$TTqmmAgABBMDPKSZOELErYCXBwxyMtFWGqtrk[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ] ] = "01 02 03 04 05 06 07 08 09 10 11 12 13 14";
}
}
if ( ! isset( $RQqojXWAQaqYYrWUVoLExMCZk[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ] ] ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `config_value` FROM `multics_config_vars` WHERE `master_server_id` = \'%d\' AND `config_value_name` = \'%s\'", $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ], \'DEFAULT KEY\' );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$RQqojXWAQaqYYrWUVoLExMCZk[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ] ] = $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
}
else
{
$RQqojXWAQaqYYrWUVoLExMCZk[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'master_server_id\' ] ] = "01 02 03 04 05 06 07 08 09 10 11 12 13 14";
}
}
switch ( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'emulator_id\' ] )
{
case 1:
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'id\' ] ][ ] = "C: {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'domain_name\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'port\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'username\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'password\']}";
break;
case 2:
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'id\' ] ][ ] = "CWS = {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'domain_name\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'port\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'username\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'password\']} {$TTqmmAgABBMDPKSZOELErYCXBwxyMtFWGqtrk[$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'master_server_id\']]}";
break;
case 3:
$YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT = "N: {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'domain_name\']} [PROFILE_PORT] {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'username\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'password\']} {$RQqojXWAQaqYYrWUVoLExMCZk[$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'master_server_id\']]}";
$PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE = explode( ",", $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'profiles\' ] );
foreach ( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE as $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI )
{
$nNukxWKLpgIqtWHqZVwaysTTqRnpcXUbHxDrpE = str_replace( "[PROFILE_PORT]", $CJmouEtuOMxIAGgLTpwUDGyzqMGaAEdjSxs[ $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI ], $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'id\' ] ][ ] = $nNukxWKLpgIqtWHqZVwaysTTqRnpcXUbHxDrpE;
}
break;
}
}
}
else
{
foreach ( $vEpqYuhSuEDLcndnSVnIkoDnZMNUjJlqfN as $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM )
{
$ftIznUWGlGdmUWNSGAwhoEtPjjUAiUIs = @unserialize( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'line_options\' ] );
$dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc = "";
if ( ! empty( $ftIznUWGlGdmUWNSGAwhoEtPjjUAiUIs ) )
{
foreach ( $ftIznUWGlGdmUWNSGAwhoEtPjjUAiUIs as $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc => $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM )
{
$uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc = @str_replace( "=", "", $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc );
if ( substr( $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM, - 1 ) == \';\' )
$dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc .= $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc . \'=\' . $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM . \' \';
else
$dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc .= $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc . \'=\' . $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM . \'; \';
}
}
$dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc = trim( $dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc );
$AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg = "";
if ( strlen( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'profiles\' ] ) > 0 )
{
$PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE = explode( ",", $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'profiles\' ] );
foreach ( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE as $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI )
{
if ( array_key_exists( $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI, $CJmouEtuOMxIAGgLTpwUDGyzqMGaAEdjSxs ) )
$AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg .= $CJmouEtuOMxIAGgLTpwUDGyzqMGaAEdjSxs[ $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI ] . ",";
}
$AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg = substr( $AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg, 0, - 1 );
}
else
{
$AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg = 0;
}
$VoiZORHgiPwgcfNXLqBqnTsbJhhDQoPLjjk = $mcMember->enuLZXwCAGrbvPofcgEYEOgeRSIcNwSMgoze( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'member_id\' ] );
if ( $VoiZORHgiPwgcfNXLqBqnTsbJhhDQoPLjjk === false )
{
$uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw = "";
$VoiZORHgiPwgcfNXLqBqnTsbJhhDQoPLjjk = \'NONE\';
}
else
{
$uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw = "panel_memberid=" . $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'member_id\' ] . \';\';
}
$MDvdmsLcPfyAsVarysQqkKkVsZjIXsVCuyIlATuEQ = "";
if ( ! is_null( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'date_end\' ] ) )
{
$MDvdmsLcPfyAsVarysQqkKkVsZjIXsVCuyIlATuEQ = "panel_expdate=" . $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'date_end\' ] . \';\';
}
$nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM = "test_line=" . $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'test_line\' ] . \';\';
$ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq = "profile_ids=" . $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'profiles\' ] . \';\';
switch ( $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'emulator_id\' ] )
{
case 1:
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CCCAM PORT: \' . $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'port\' ] ][ ] = "F: {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'username\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'password\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'reshare\']} { $dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc name=$VoiZORHgiPwgcfNXLqBqnTsbJhhDQoPLjjk; $MDvdmsLcPfyAsVarysQqkKkVsZjIXsVCuyIlATuEQ $ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw profiles=$AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg; }";
break;
case 2:
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'MGCAMD PORT: \' . $MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[ \'port\' ] ][ ] = "MGUSER: {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'username\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'password\']} { $dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc name=$VoiZORHgiPwgcfNXLqBqnTsbJhhDQoPLjjk; $MDvdmsLcPfyAsVarysQqkKkVsZjIXsVCuyIlATuEQ $ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw profiles=$AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg; }";
break;
case 3:
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER\' ][ ] = "USER: {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'username\']} {$MVxFYLxJdIYdlSkGEvSOgWdgcXnEjIbgOM[\'password\']} { $AgMdqTDzCjMnOBIsowiyLEqtheHQOBSrPmhgg; $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM $MDvdmsLcPfyAsVarysQqkKkVsZjIXsVCuyIlATuEQ $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw $ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq $dnfNcRpTEmnCPWCTSEeDEGLvnRFFNVhNc }";
break;
}
}
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function BRdrDnvguWeUxAbhDRleQItyBwaHnbikRCtybVY ( $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE, $ueIkLaHVJOLanaTUgHUHWsXnzUjCFZHwtdAIr )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `package_id` FROM `group_packages` WHERE `group_id` = \'%d\'", $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$hdAWGJiYhdWJcKfPoxjjtaRpbRoSBuHelhCC = mcLib::sLYQRInHqFhKEHlZrlkIQnxTDtZrYVNtKK( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `lines_options` WHERE `option_type` = \'%d\' AND id IN(" . implode( ",", $hdAWGJiYhdWJcKfPoxjjtaRpbRoSBuHelhCC ) . ")", $ueIkLaHVJOLanaTUgHUHWsXnzUjCFZHwtdAIr );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
}
return $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl;
}
function oBucYiIdWXFpQOhjVOZGfzxgmCdvSaXawlJU ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU = qUlcDtRuZmaQHePVpmaDOoKhBgiQdsjEIc( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE = hmAwbwfvbCIDVTGrAUhxGfvwwtmcebShRGNuL( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `lines` WHERE (`date_end` > \'" . time( ) . "\' OR `date_end` IS NULL) AND `blocked` = 0 AND `enable` = 1 AND `server_id` IN(" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ")" );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$oJCZbqXRQAIzsjgkbFyqmMOMzynnr = mcLib::sLYQRInHqFhKEHlZrlkIQnxTDtZrYVNtKK( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = MXxaxAaUuizfJTWmZshaNBbIPCpxvo( $oJCZbqXRQAIzsjgkbFyqmMOMzynnr, \'config\' );
}
$vUEaDzbnTibYcfhCkKhfHpheWqBoYjhY = "#===============================================================#\r\n";
$vUEaDzbnTibYcfhCkKhfHpheWqBoYjhY .= "#===================== MultiCS Panel v2.1.6 ======================#\r\n";
$vUEaDzbnTibYcfhCkKhfHpheWqBoYjhY .= "#===============================================================#\r\n\r\n\r\n";
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ = "";
unset( $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ \'CCCAM PORT\' ] );
unset( $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ \'MGCAMD PORT\' ] );
foreach ( $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU as $rfNrOeeMCJzwLfffhbizDjyTQfpvtspGIXhk => $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM )
{
if ( is_array( $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM ) )
{
foreach ( $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM as $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= $rfNrOeeMCJzwLfffhbizDjyTQfpvtspGIXhk . ": " . $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM . "\r\n";
}
}
else
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= $rfNrOeeMCJzwLfffhbizDjyTQfpvtspGIXhk . ": " . $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM . "\r\n";
}
}
foreach ( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp as $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc => $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT )
{
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc != \'USER\' )
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc . " #SERVER FOR LINES\r\n";
foreach ( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT as $BIIdlAwzrVQHZsDfIApuSeSqhCyVsPFxjlWwfE )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= $BIIdlAwzrVQHZsDfIApuSeSqhCyVsPFxjlWwfE . "\r\n";
}
}
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= yRiFxtJZpetzFCGGJdwfeeBRRLELsSLIOXChLBGbnk( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE );
if ( empty( $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ ) )
{
return false;
}
return $vUEaDzbnTibYcfhCkKhfHpheWqBoYjhY . $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ;
}
function yRiFxtJZpetzFCGGJdwfeeBRRLELsSLIOXChLBGbnk ( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ = "";
foreach ( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE as $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= "[{$WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI[\'profile_name\']}]\r\n";
$jwZlRjPJJsEAqtWfknsiOPmYCwpEBnsYhXmAfs = unserialize( $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI[ \'profile_options\' ] );
foreach ( $jwZlRjPJJsEAqtWfknsiOPmYCwpEBnsYhXmAfs as $EcdxFeQuVoMFpKmSWHSkdDNJLgRbSdvwQ => $CnsMmdLsjZHWKUYOFjaTkPgteUxNwmOEcfNc )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= $EcdxFeQuVoMFpKmSWHSkdDNJLgRbSdvwQ . " : " . $CnsMmdLsjZHWKUYOFjaTkPgteUxNwmOEcfNc . "\r\n";
}
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= "\r\n\r\n##############################\r\n\r\n";
}
return $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ;
}
function upzpUQDSvbmvIQrAiyHPgIUIZiGeJMzxY ( $AGISLiuSCWwzoEHNczCSPbUpEfeGsfhXpQhZMJjE = false )
{
global $mcDB;
if ( $AGISLiuSCWwzoEHNczCSPbUpEfeGsfhXpQhZMJjE )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `profile_options` FROM `profiles` WHERE `id` = \'%d\'", $AGISLiuSCWwzoEHNczCSPbUpEfeGsfhXpQhZMJjE );
$UIxVjJkDpArqKYfbpLOcaehrVBCHgqvQY = unserialize( $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( ) );
return array( $AGISLiuSCWwzoEHNczCSPbUpEfeGsfhXpQhZMJjE => $UIxVjJkDpArqKYfbpLOcaehrVBCHgqvQY[ \'PORT\' ] );
}
else
{
$PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE = array();
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id`,`profile_options` FROM `profiles`" );
foreach ( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
$UIxVjJkDpArqKYfbpLOcaehrVBCHgqvQY = unserialize( $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'profile_options\' ] );
if ( array_key_exists( \'PORT\', $UIxVjJkDpArqKYfbpLOcaehrVBCHgqvQY ) and is_numeric( $UIxVjJkDpArqKYfbpLOcaehrVBCHgqvQY[ \'PORT\' ] ) )
{
$PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'id\' ] ] = $UIxVjJkDpArqKYfbpLOcaehrVBCHgqvQY[ \'PORT\' ];
}
}
return $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE;
}
}
function OyUAmKmRjMKmaUdTnqgLqdyFnqRoPrtEofsMP ( )
{
return TRUE;
}
function DgfgKeLTBlEfWDyjkTOzsQlcHqEnvKKJexY ( $dBQstFLRgwLkBVnxVeaGGzHKeHnLryPQto = false )
{
return $dBQstFLRgwLkBVnxVeaGGzHKeHnLryPQto ? FALSE : TRUE;
}
function XPkSZNlGXyxtRXrNNOuzejFMdHOabHzvtdc ( $DusLBJMhUCzywEODLgLmdsIDgALlrZDDLiKY, $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc = \'\' )
{
return NULL;
}
function pFpKJvtbBXELLMhkVafUkCsKePHMRDDNtRkuI ( $FkwpJNTPndxffUzDpuyCLnNWTCiywSUWBmmY )
{
return NULL;
}
function GTdEUMbLdTGkyqQVsPwATtvzRKsDRLgOzerQ ( )
{
tEJMxRHZYAcQGLnMttsPwXuLfbsubE( 0 );
return TRUE;
}
function tEJMxRHZYAcQGLnMttsPwXuLfbsubE ( $qpvldMTAVaiMrhLqJToqUWOsYiwmAxdWesagA )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `multics_licence` SET `show_message` = \'%d\' WHERE `id` = 1", $qpvldMTAVaiMrhLqJToqUWOsYiwmAxdWesagA );
}
function hhWsScCioFnqBpnRgLBAWFYbrZtQugsBDBYs ( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw, $upLEjvhCNokQZCysQMKMsHhSBYBTUDmTLfc )
{
if ( ! is_readable( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw ) )
die( \'File not found or inaccessible! Contact administrator\' );
$YLtkveuXRGksIkLmuEXqMVYlZlAEJZRVHVQ = filesize( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw );
$upLEjvhCNokQZCysQMKMsHhSBYBTUDmTLfc = rawurldecode( $upLEjvhCNokQZCysQMKMsHhSBYBTUDmTLfc );
@ob_end_clean( );
if ( ini_get( \'zlib.output_compression\' ) )
ini_set( \'zlib.output_compression\', \'Off\' );
header( \'Content-Type: text/plain\' );
header( \'Content-Disposition: attachment; filename="\' . $upLEjvhCNokQZCysQMKMsHhSBYBTUDmTLfc . \'"\' );
header( "Content-Transfer-Encoding: binary" );
header( \'Accept-Ranges: bytes\' );
header( "Cache-control: private" );
header( \'Pragma: private\' );
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
if ( isset( $_SERVER[ \'HTTP_RANGE\' ] ) )
{
list ( $QofNWSpOGrfDYwUHjbwOGlsYcbGnKKnmaG, $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI ) = explode( "=", $_SERVER[ \'HTTP_RANGE\' ], 2 );
list ( $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI ) = explode( ",", $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI, 2 );
list ( $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI, $WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA ) = explode( "-", $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI );
$lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI = intval( $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI );
if ( ! $WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA )
{
$WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA = $YLtkveuXRGksIkLmuEXqMVYlZlAEJZRVHVQ - 1;
}
else
{
$WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA = intval( $WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA );
}
$AuwYxNwdIoDTEYshMEWJDAcOSdnmCiCemU = $WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA - $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI + 1;
header( "HTTP/1.1 206 Partial Content" );
header( "Content-Length: $AuwYxNwdIoDTEYshMEWJDAcOSdnmCiCemU" );
header( "Content-Range: bytes $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI-$WvIrVDoNpxgucRchVTkRvUmKqTWNSgUhwduxQgA/$YLtkveuXRGksIkLmuEXqMVYlZlAEJZRVHVQ" );
}
else
{
$AuwYxNwdIoDTEYshMEWJDAcOSdnmCiCemU = $YLtkveuXRGksIkLmuEXqMVYlZlAEJZRVHVQ;
header( "Content-Length: " . $YLtkveuXRGksIkLmuEXqMVYlZlAEJZRVHVQ );
}
$PFFQtBNCWxfToWDEBneubfJcMOurmUHcCOM = 1 * (1024 * 1024);
$NSoxFeSdVZEHnvIicTzPJquiBVd = 0;
if ( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw = fopen( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw, \'r\' ) )
{
if ( isset( $_SERVER[ \'HTTP_RANGE\' ] ) )
fseek( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw, $lfHJSdoELKgWgpGrlKFQvrugoehPskAkyOUI );
while ( ! feof( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw ) && (! connection_aborted( )) && ($NSoxFeSdVZEHnvIicTzPJquiBVd < $AuwYxNwdIoDTEYshMEWJDAcOSdnmCiCemU) )
{
$zEYkkIVvkrLzMdToiKwOZNTKDidEHMQjFWVY = fread( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw, $PFFQtBNCWxfToWDEBneubfJcMOurmUHcCOM );
print ($zEYkkIVvkrLzMdToiKwOZNTKDidEHMQjFWVY) ;
flush( );
$NSoxFeSdVZEHnvIicTzPJquiBVd += strlen( $zEYkkIVvkrLzMdToiKwOZNTKDidEHMQjFWVY );
}
fclose( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw );
@unlink( $JqWYUJnYbJhGNDdwGsIkkSCfITQllw );
}
else
die( \'Error - can not open file.\' );
die( );
}
function AgnUUBeUpHEzNqbLspCaygaKysReDQiBf ( $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t2.emulator_name FROM `multics_servers` t1,`emulators` t2 WHERE t1.`emulator_id` = t2.`id` AND t1.`id` = \'%d\'", $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return false;
}
function XzPdZKDhyYJjLVGZimLnXIOzBrJjbmkRHI ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY )
{
global $mcDB;
WaPbSGexTdikWMpoWabVuGeqKlfZxEXQDUQ( 1 );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `multics_config_vars` WHERE `config_value_name` = \'HTTP USER\' AND `master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `multics_config_vars` WHERE `config_value_name` = \'HTTP PASS\' AND `master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `multics_config_vars` WHERE `config_value_name` = \'HTTP PORT\' AND `master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_config_vars` (`config_value_name`,`config_value`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", \'HTTP USER\', $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_config_vars` (`config_value_name`,`config_value`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", \'HTTP PORT\', $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_config_vars` (`config_value_name`,`config_value`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", \'HTTP PASS\', $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$xLvUXTzqjKsMJKplZOCQAphgTgqSRUiQzAQ = oBucYiIdWXFpQOhjVOZGfzxgmCdvSaXawlJU( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
CuCSxyhINcUKGtFvQMjsYppplRNvSztRIVlc( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $xLvUXTzqjKsMJKplZOCQAphgTgqSRUiQzAQ );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `multics_master_servers` SET `username` = \'%s\',`password` = \'%s\' WHERE `id` = \'%d\'", $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( ! is_null( $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `multics_master_servers` SET `domain` = \'%s\' WHERE `id` = \'%d\'", $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `multics_servers` SET `domain_name` = \'%s\' WHERE `master_server_id` = \'%d\'", $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
uCvtIAVzQwdGAMKLaaJFXVlObFPArkvbRRVYGfc( 1 );
}
function gzYLbuDxOAXvDpzJDcFiNVYxZxnoiRxzjUMrtck ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $JWMXOdQgIPYBstNNMfLQHTehuxMKRGKmsWhI )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `default_server_id` FROM `multics_server_emulators` WHERE `emulator_id` = \'%d\' AND `master_server_id` = \'%d\'", $JWMXOdQgIPYBstNNMfLQHTehuxMKRGKmsWhI, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA = intval( $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( ) );
$roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ = AgnUUBeUpHEzNqbLspCaygaKysReDQiBf( $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA );
if ( is_array( $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ ) )
{
if ( $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'port\' ] == 0 )
$roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'port\' ] = \'*\';
return $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ;
}
return false;
}
return false;
}
function QFMluUTpWBQcmkeXrYTXjEPujFcVLwSXRik ( $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA, $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu = array() )
{
global $mcDB;
if ( empty( $UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu ) )
{
$UhdkqnTQnEoyfBWewLEhdfWfwOVxxofwLJu = AgnUUBeUpHEzNqbLspCaygaKysReDQiBf( $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA );
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `multics_servers` WHERE `id` = \'%d\'", $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `multics_server_emulators` SET `default_server_id` = 0 WHERE `default_server_id` = \'%d\'", $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA );
}
function hQFiMCFNDMzqLhPxRSyGZALDYruATg ( $BmTpyYBArMKQPCRSLcVAzQpjGdCmhEZIDc, $VlltVwtLJMZirljrQVEZDgsXdFapHKQ )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `lines` SET `server_id` = \'%d\' WHERE `server_id` = \'%d\'", $VlltVwtLJMZirljrQVEZDgsXdFapHKQ, $BmTpyYBArMKQPCRSLcVAzQpjGdCmhEZIDc );
}
function LRRvJRBocmjnEzgAdfYcVBQNajQyraJvPfM ( $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT count(id) FROM `lines` WHERE `server_id` = \'%d\'", $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA );
return $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
}
function fHsiLcILgHErKJrsTfZEJsHCehNZAjwrQIqOE ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc = false )
{
global $mcDB;
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf = array();
if ( ! empty( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t2.emulator_name FROM `multics_servers` t1,`emulators` t2 WHERE t1.`emulator_id` = t2.`id` AND `master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t2.emulator_name FROM `multics_servers` t1,`emulators` t2 WHERE t1.`emulator_id` = t2.`id`" );
}
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
if ( ! is_array( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'master_server_id\' ] ] ) )
{
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'master_server_id\' ] ] = array();
}
if ( $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'port\' ] == 0 )
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'port\' ] = \'*\';
}
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'master_server_id\' ] ][ ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
}
}
return $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf;
}
function tMKOaCRnlddBinWvlkGmWMZHYFTWPS ( $olxQYtqCxlDHwTVzSsVZqigaedvcEoXVowkRg = null )
{
$uFLXefZOWIgZuJlXtDRSwjGCUVuSYHnzuU = array( 1 => "Administrator", 2 => "Normal User", 3 => "Banned" );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = "<select name=\"role\">";
if ( ! is_null( $olxQYtqCxlDHwTVzSsVZqigaedvcEoXVowkRg ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH .= "<option value=\"$olxQYtqCxlDHwTVzSsVZqigaedvcEoXVowkRg\" selected>{$uFLXefZOWIgZuJlXtDRSwjGCUVuSYHnzuU[$olxQYtqCxlDHwTVzSsVZqigaedvcEoXVowkRg]}</option>";
unset( $uFLXefZOWIgZuJlXtDRSwjGCUVuSYHnzuU[ $olxQYtqCxlDHwTVzSsVZqigaedvcEoXVowkRg ] );
}
foreach ( $uFLXefZOWIgZuJlXtDRSwjGCUVuSYHnzuU as $KqBOXxsTFtprZUAkaGFlfDZuCbmBlLhWA => $NzikgLkttqkxjdKiwoBulDRWjTPHDpQrE )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH .= "<option value=\"$KqBOXxsTFtprZUAkaGFlfDZuCbmBlLhWA\">$NzikgLkttqkxjdKiwoBulDRWjTPHDpQrE</option>";
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH .= "</select>";
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function nAxOvXXUOWhRJMcBHuHLkVzvwveLTFvrlf ( $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU, $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $CphMeSrTExlZCaZxjDLyhNifxgILplQebFJA )
{
$kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg = giVihcIAplDDhWVfapZXkdopkxjXNtULY( $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $rKtjjytgRkFCZvsYCbiuXywNLejYVPlhNM, $CphMeSrTExlZCaZxjDLyhNifxgILplQebFJA, \'editor\' );
if ( $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg )
{
if ( stristr( $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg, "Multi" ) )
{
if ( preg_match( "/<textarea cols=\"40\" wrap=\"off\" rows=\"9\" spellcheck=\"false\" name=\"textedit\">(.*?)<\/textarea>/s", $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg, $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM ) )
{
return \'OK\';
}
else
{
return \'NO_EDITOR\';
}
}
else
{
return \'NO_MULTICS\';
}
}
return \'AUTH_OR_NO_MULTICS\';
}
function DdLNcDLvarpaEcRrxmrSBQHffLxrBExvcjd ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_master_servers` WHERE `id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
$CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs = @str_ireplace( "http://", "", $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'domain\' ] );
$kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg = giVihcIAplDDhWVfapZXkdopkxjXNtULY( $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'domain\' ], $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'port\' ], $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'username\' ], $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'password\' ], "editor" );
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ = "";
if ( $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg )
{
preg_match( "/<textarea cols=\"40\" wrap=\"off\" rows=\"9\" spellcheck=\"false\" name=\"textedit\">(.*?)<\/textarea>/s", $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg, $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM );
if ( ! isset( $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ] ) )
{
return false;
}
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ];
preg_match_all( "/<option value=\"\/editor(.*?)\"/", $kmFAlcgmXFPRdUJfdCDogfzWChxUcTebylg, $kRpggdBdSSgoAlTbSGlXzENejrxlLEtU );
$kRpggdBdSSgoAlTbSGlXzENejrxlLEtU = $kRpggdBdSSgoAlTbSGlXzENejrxlLEtU[ 1 ];
array_shift( $kRpggdBdSSgoAlTbSGlXzENejrxlLEtU );
if ( count( $kRpggdBdSSgoAlTbSGlXzENejrxlLEtU ) > 0 )
{
foreach ( $kRpggdBdSSgoAlTbSGlXzENejrxlLEtU as $OainZYuuOBWFRLvLmCqRhCNMTvxIQHruKYeTME )
{
$ChVLTQlsxBAbAlUJuHgPFnReSzeihcXg = "editor" . $OainZYuuOBWFRLvLmCqRhCNMTvxIQHruKYeTME;
$URXUDdhtzLjUQjOeTTYNdhsqrqFJXKRgIA = giVihcIAplDDhWVfapZXkdopkxjXNtULY( $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'domain\' ], $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'port\' ], $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'username\' ], $roZfphrbRciTKEYMqDDHmudrSgbNGKIclfJ[ \'password\' ], $ChVLTQlsxBAbAlUJuHgPFnReSzeihcXg );
if ( preg_match( "/<textarea cols=\"40\" wrap=\"off\" rows=\"9\" spellcheck=\"false\" name=\"textedit\">(.*?)<\/textarea>/s", $URXUDdhtzLjUQjOeTTYNdhsqrqFJXKRgIA, $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM ) )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ .= "\n\n" . $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ];
}
}
}
}
return (! empty( $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ )) ? $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ : false;
}
function giVihcIAplDDhWVfapZXkdopkxjXNtULY ( $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $yuwswoauPFsFNpkQTyRHBekbAHibZsNeeOUyNeHM = \'\', $SezVgOxAZwzTHIKWlWuxhpSFCGJIdczeCds = 0, $ikeYZkmHdRAhFgHXneZxlTjnLTGYmvAczygfoIPnM = array() )
{
$ohPnetUvJCPtOjwymIltrcNUnhPUXzBU = "http://" . $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU . \':\' . $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp;
$DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD = curl_init( );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_URL, $ohPnetUvJCPtOjwymIltrcNUnhPUXzBU . \'/\' . $yuwswoauPFsFNpkQTyRHBekbAHibZsNeeOUyNeHM );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_PORT, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_HTTPAUTH, CURLAUTH_ANY );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_CONNECTTIMEOUT, 15 );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_TIMEOUT, 15 );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_FRESH_CONNECT, true );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_USERAGENT, \'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\' );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_USERPWD, "$DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw:$AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY" );
if ( $SezVgOxAZwzTHIKWlWuxhpSFCGJIdczeCds > 0 )
{
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_POST, true );
curl_setopt( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD, CURLOPT_POSTFIELDS, $ikeYZkmHdRAhFgHXneZxlTjnLTGYmvAczygfoIPnM );
}
$VRzKwlrKyMXaVjtKYiDLBfOjzaHhpTLGEGc = curl_exec( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD );
curl_close( $DTPILzlLBHLYhryvhPCIxqItMoLnsoStWRSLxHbD );
return $VRzKwlrKyMXaVjtKYiDLBfOjzaHhpTLGEGc;
}
function FixLine ( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ )
{
if ( stristr( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, \'#\' ) )
{
$EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ = strstr( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, \'#\', true );
}
$EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ = str_replace( "\x9", " ", $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ );
$EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ = @preg_replace( \'/[\x7f-\xff]/\', \'\', $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ );
$hlmEOkYtpvgDBbRXbIVfuzgSzjWYiYQZwEs = substr_count( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, "{" );
$bTFdlAEjGmDPlwngIlxybnJPLIBHDymouDgI = substr_count( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, "}" );
if ( $hlmEOkYtpvgDBbRXbIVfuzgSzjWYiYQZwEs > $bTFdlAEjGmDPlwngIlxybnJPLIBHDymouDgI )
{
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < $hlmEOkYtpvgDBbRXbIVfuzgSzjWYiYQZwEs - $bTFdlAEjGmDPlwngIlxybnJPLIBHDymouDgI; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
$EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ .= \'} \';
}
}
elseif ( $hlmEOkYtpvgDBbRXbIVfuzgSzjWYiYQZwEs < $bTFdlAEjGmDPlwngIlxybnJPLIBHDymouDgI )
{
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < $bTFdlAEjGmDPlwngIlxybnJPLIBHDymouDgI - $hlmEOkYtpvgDBbRXbIVfuzgSzjWYiYQZwEs; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
$EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ = preg_replace( \'/\{/\', \'\', $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, 1 );
}
}
return trim( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ );
}
function uUfmzmGZDpTQCAeUdwNYNzBoZEbAjgdXWNqkc ( $XcmjOcODJjoZfpZBFazCggIbeCHIhBcyiJX )
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = explode( "\n", $XcmjOcODJjoZfpZBFazCggIbeCHIhBcyiJX );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array_map( "trim", $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array_map( "FixLine", $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array_values( array_filter( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp ) );
$oPiOMRzmcJIZcTXsruSNTxXPhyPYHIfg = false;
for ( $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII = 0; $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII < count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp ); $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII++ )
{
$XaayCEGRRMOYiMtGrYddmMyuqjSiJrbYKM = substr( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], 0, 1 );
if ( $XaayCEGRRMOYiMtGrYddmMyuqjSiJrbYKM == \'/\' )
{
unset( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] );
continue;
}
if ( $oPiOMRzmcJIZcTXsruSNTxXPhyPYHIfg )
{
if ( substr_count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "}" ) == 1 or substr_count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "\\" ) == 0 )
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] . $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ];
unset( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] );
$oPiOMRzmcJIZcTXsruSNTxXPhyPYHIfg = false;
continue;
}
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] = str_replace( "\\", "", $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] );
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] . $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ];
unset( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] );
continue;
}
if ( substr_count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "\\" ) or (substr_count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "{" ) != substr_count( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ], "}" )) )
{
$oPiOMRzmcJIZcTXsruSNTxXPhyPYHIfg = true;
$uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc = $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII;
}
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] = str_replace( "\\", "", $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp[ $PkmhXPbPvCcSikBmDzjHuyljGIDgckcLrskII ] );
}
return array_values( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp );
}
function LSjpoNEBaRdouncZXoTcxZoLgZTtMXDzGNPmlU ( )
{
$cfXntTyaEpGNHNnqDKUwxHsaizzjhsJqvCc = array( \'KEY\', \'SERVER TIMEPERECM\', \'PORT\', \'ONID\', \'CAID\', \'PROVIDERS\', \'SID LIST\', \'ACCEPT NULL SID\', \'ACCEPT NULL CAID\', \'ACCEPT NULL PROVIDER\', \'DCW TIMEOUT\', \'DCW MAXFAILED\', \'DCW RETRY\', \'DCW CHECK\', \'DCW HALFNULLED\', \'DCW SWAP\', \'ECM CHECK\', \'ECM CHECK LENGTH\', \'SERVER TIMEOUT\', \'SERVER MAX\', \'SERVER INTERVAL\', \'SERVER VALIDECMTIME\', \'SERVER FIRST\', \'SERVER THRESHOLD\', \'RETRY NEWCAMD\', \'RETRY CCCAM\', \'RETRY MGCAMD\', \'CACHEEX VALIDECMTIME\', \'CACHEEX MAXHOP\', \'CACHE TIMEOUT\', \'CACHE SENDREQ\', \'CACHE SENDREP\', \'CACHE STATIC\', \'CACHE RESENDREQ\', \'ENABLE CCCAM\', \'ENABLE NEWCAMD\', \'ENABLE CACHE\', \'ENABLE CAMD35\', \'ENABLE CS378X\', \'ENABLE CACHEEX\', \'ENABLE MGCAMD\', \'SHARE CCCAM\', \'SHARE NEWCAMD\', \'SHARE MGCAMD\', \'DCW MINTIME\', \'RETRY CACHE\', \'DISABLE RADEGAST\', \'SID DENYLIST\', \'ACCEPT NULL ONID\', \'ECM LENGTH\', \'ENABLE ECMLOOPING\', \'ENABLE SKIPCWC\', \'ACCEPT NULL DCW\' );
return $cfXntTyaEpGNHNnqDKUwxHsaizzjhsJqvCc;
}
function HxIXLGgfzpdkCylbBMghnymwTsUhPCOcW ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
$LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ = DdLNcDLvarpaEcRrxmrSBQHffLxrBExvcjd( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( ! $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ )
{
return false;
}
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = uUfmzmGZDpTQCAeUdwNYNzBoZEbAjgdXWNqkc( $LfMfpOENHloEtVkOXPzMkQHbeTYnfmWVQ );
$cfXntTyaEpGNHNnqDKUwxHsaizzjhsJqvCc = LSjpoNEBaRdouncZXoTcxZoLgZTtMXDzGNPmlU( );
$QdYNJDRWhTpHBtDKeoSgrRNzyFTqtbDSI = array( "N", "C", "R" );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ] = array();
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'PROFILES\' ] = array();
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'SCONS\' ] = array();
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER_LINES\' ] = array();
$gFjvRlRVtosntpbqaJeXMPzpyuURcCoIDhKtTo = false;
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf = array();
foreach ( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp as $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT )
{
$XaayCEGRRMOYiMtGrYddmMyuqjSiJrbYKM = substr( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, 0, 1 );
$VIkJtdHGSVoxLmvHavoxOLswTDiTBySLSc = substr( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, 0, 2 );
$mwescgUoljtxbPzcGMMrUUMIhPdIgZEVg = trim( strtoupper( substr( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, 0, strpos( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, \':\' ) ) ) );
if ( $XaayCEGRRMOYiMtGrYddmMyuqjSiJrbYKM == \'#\' || empty( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT ) || $XaayCEGRRMOYiMtGrYddmMyuqjSiJrbYKM == \'/\' )
continue;
if ( $XaayCEGRRMOYiMtGrYddmMyuqjSiJrbYKM == \'[\' )
{
if ( preg_match( "/\[(.*?)\]/", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM ) )
{
$gFjvRlRVtosntpbqaJeXMPzpyuURcCoIDhKtTo = true;
$GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE = $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ];
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'PROFILES\' ][ $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE ] = array();
}
continue;
}
if ( $gFjvRlRVtosntpbqaJeXMPzpyuURcCoIDhKtTo )
{
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = @explode( ":", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT );
if ( is_array( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt ) )
{
$uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc = strtoupper( trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 0 ] ) );
$snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM = trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 1 ] );
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'PORT\' )
{
if ( $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM == \'+\' )
{
$snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM = $eWjwnRczYLAxbVhzKGnWvYpGAKZAojY + 1;
}
$eWjwnRczYLAxbVhzKGnWvYpGAKZAojY = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
}
if ( in_array( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc, $cfXntTyaEpGNHNnqDKUwxHsaizzjhsJqvCc ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'PROFILES\' ][ $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
continue;
}
elseif ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'USER\' )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER_LINES\' ][ \'NEWCAMD\' ][ 0 ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
continue;
}
else
{
$gFjvRlRVtosntpbqaJeXMPzpyuURcCoIDhKtTo = false;
}
}
}
if ( in_array( $mwescgUoljtxbPzcGMMrUUMIhPdIgZEVg, $QdYNJDRWhTpHBtDKeoSgrRNzyFTqtbDSI ) )
{
array_push( $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'SCONS\' ], $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT );
continue;
}
if ( strpos( $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, \':\' ) )
{
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = explode( ":", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT );
$uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc = trim( strtoupper( trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 0 ] ) ) );
unset( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 0 ] );
$snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM = trim( implode( "", $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt ) );
if ( in_array( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc, $cfXntTyaEpGNHNnqDKUwxHsaizzjhsJqvCc ) && ! empty( $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'PROFILES\' ][ $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
continue;
}
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'INCLUDE\' )
{
continue;
}
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'F\' )
{
if ( count( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'CCCAM\' ] ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER_LINES\' ][ \'CCCAM\' ][ end( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'CCCAM\' ] ) ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
}
continue;
}
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'MGUSER\' or $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'MG\' )
{
if ( count( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'MGCAMD\' ] ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER_LINES\' ][ \'MGCAMD\' ][ end( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'MGCAMD\' ] ) ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
}
continue;
}
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'USER\' )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER_LINES\' ][ \'NEWCAMD\' ][ 0 ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
continue;
}
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'MGCAMD PORT\' )
{
if ( ! @is_array( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'MGCAMD\' ] ) )
{
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'MGCAMD\' ] = array();
}
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'MGCAMD\' ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
continue;
}
if ( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc == \'CCCAM PORT\' )
{
if ( ! @is_array( $LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'CCCAM\' ] ) )
{
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'CCCAM\' ] = array();
}
$LTUlnIWqhHTNQqmsDvWfCHXcTlmyVtfhuuyDppf[ \'CCCAM\' ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
continue;
}
if ( isset( $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] ) )
{
$iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM = $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ];
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = array();
if ( is_array( $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = array_merge( $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ], $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM );
}
else
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ][ ] = $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM;
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ][ ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
}
else
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ][ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] = $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM;
}
}
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function SkYRsaYotMiHKkODkrENqqwibbpPATfHw ( $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $fiagytZbReLjflvIqiRcmBUJgenXxg, $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE, $SyyQeDsPSmGbmuVWoNheIwzzivFcYauzPLXI = "NULL", $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM = 1, $AUvfxSLEPebPxYQfuvsmfRkkjMUhBbXAspFc = 0, $ftIznUWGlGdmUWNSGAwhoEtPjjUAiUIs = array(), $PWhJmVaQgKfefyXoPeMSxJhXtNsxjUMmZNbo = 0, $KoZbUaopuCwqdobOZZxuXzWOQvjFIDaK = 1, $QtbcrkyMXGlqjdhQRjItTYAdsXuYxI = 0 )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `lines` (`member_id`,`username`,`password`,`server_id`,`date_start`,`date_end`,`profiles`,`test_line`,`blocked`,`enable`,`notes`,`user_paid`,`line_options`,`monitor_exclude`,`allow_ch_emu`,`reshare`) VALUES(\'%d\',\'%s\',\'%s\',\'%d\',\'%d\',$fiagytZbReLjflvIqiRcmBUJgenXxg,\'%s\',\'%d\',0,1,\'%s\',\'%f\',\'%s\',\'%d\',\'%d\',\'%d\')", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA, time( ), $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE, $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM, $SyyQeDsPSmGbmuVWoNheIwzzivFcYauzPLXI, $AUvfxSLEPebPxYQfuvsmfRkkjMUhBbXAspFc, serialize( $ftIznUWGlGdmUWNSGAwhoEtPjjUAiUIs ), $PWhJmVaQgKfefyXoPeMSxJhXtNsxjUMmZNbo, $KoZbUaopuCwqdobOZZxuXzWOQvjFIDaK, $QtbcrkyMXGlqjdhQRjItTYAdsXuYxI );
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
return true;
}
return false;
}
function VgqYebRrABaUsFBfKbqNMjyrxiWPEXIXKE ( $VXeyjTyrTfAJJyqeoxhuRwTnBjKEMgjWdk )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.* FROM `multics_master_servers` t1, `multics_servers` t2 WHERE t2.`id` = \'%d\' AND t1.`id` = t2.`master_server_id`", $VXeyjTyrTfAJJyqeoxhuRwTnBjKEMgjWdk );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return false;
}
function rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `multics_servers` WHERE `master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return mcLib::sLYQRInHqFhKEHlZrlkIQnxTDtZrYVNtKK( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) );
}
return false;
}
function nNysGMGRXJOKwEhuGWvmKMfRerkGQIxWkOoWPk ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.`domain` AS `domain` , t2.`profile_default` as `profile_default`,t2.`id` AS `profile_id` , t2.`profile_name` AS `profile_name` FROM `multics_master_servers` t1, `profiles` t2 WHERE t1.id = t2.`master_server_id` ORDER BY t2.`master_server_id` DESC" );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return false;
}
function oYCxjcrMGXMRxqdxNWbnkfGvamJjzhEJTY ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_master_servers` WHERE `id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return false;
}
function NhRVWmkCaiBhQfbmEgspWzCwJgoeXolRbA ( $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `member_groups` WHERE `id` = \'%d\'", $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return false;
}
function aUNCGCbXrGaWPGXUzAfbLtvzyhrKohXo ( $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT count(*) FROM `users` WHERE `member_group_id` = \'%d\'", $RqyBBjafAEbIRYcFtXdChWLXacwHEVIKSZycOE );
return $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
}
function hmAwbwfvbCIDVTGrAUhxGfvwwtmcebShRGNuL ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `profiles` WHERE `master_server_id` = \'%d\' ORDER by id DESC", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return false;
}
function JuDbwXIqbLMlTqYnjBOHJndgpNBCpGxP ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `multics_master_servers` ORDER BY id ASC" );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return mcLib::sLYQRInHqFhKEHlZrlkIQnxTDtZrYVNtKK( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) );
}
return false;
}
function qUlcDtRuZmaQHePVpmaDOoKhBgiQdsjEIc ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `config_value_name`,`config_value` from `multics_config_vars` WHERE `master_server_id` = \'%d\' ORDER by id ASC", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU = array();
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
if ( isset( $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ] ) )
{
$iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM = $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ];
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ] = array();
if ( is_array( $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM ) )
{
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ] = array_merge( $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ], $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM );
}
else
{
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ][ ] = $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM;
}
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ][ ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value\' ];
}
else
{
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value_name\' ] ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'config_value\' ];
}
}
return $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU;
}
function clean_config_vars ( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ )
{
$EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ = trim( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ );
if ( ! stristr( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, ":" ) )
{
return false;
}
$CcOGxlYWkOgPZRRyxkQWcaHKNMUVZrhVudVDM = array( "F", "MGUSER", "MG", "USER", "CCCAM PORT", "MGCAMD PORT" );
$OICBvFNLqwldbMISPnYEVIbeRlbzHiMYEpao = trim( strtoupper( substr( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, 0, strpos( $EmkIYGcWyslZJUQYtPrLhknzfZZShGKxWIQ, \':\' ) ) ) );
if ( in_array( $OICBvFNLqwldbMISPnYEVIbeRlbzHiMYEpao, $CcOGxlYWkOgPZRRyxkQWcaHKNMUVZrhVudVDM ) )
{
return false;
}
return true;
}
function is_valid_domain_name ( $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs )
{
return (preg_match( "/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs ) && preg_match( "/^.{1,253}$/", $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs ) && preg_match( "/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs ));
}
function valid_ip ( $gabATfkhJtnQcFPzMykJimEDhFvtdvyk )
{
$gabATfkhJtnQcFPzMykJimEDhFvtdvyk = trim( $gabATfkhJtnQcFPzMykJimEDhFvtdvyk );
return filter_var( $gabATfkhJtnQcFPzMykJimEDhFvtdvyk, FILTER_VALIDATE_IP );
}
function array_ev ( $epRLwCFXoqlDXiYlOLdrlEUUlpxIrVLbihPVE )
{
$epRLwCFXoqlDXiYlOLdrlEUUlpxIrVLbihPVE = @trim( $epRLwCFXoqlDXiYlOLdrlEUUlpxIrVLbihPVE );
if ( $epRLwCFXoqlDXiYlOLdrlEUUlpxIrVLbihPVE == "" || is_null( $epRLwCFXoqlDXiYlOLdrlEUUlpxIrVLbihPVE ) )
{
return false;
}
return true;
}
function NQFNlJgotlpsAACOJNEWfegpnUuHSFNBk ( $MModueQXIxnweTxcEUFBrOXDQdRZHcdE, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `lines_options` WHERE `id` = \'%d\'", $MModueQXIxnweTxcEUFBrOXDQdRZHcdE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
$uYEeYCTgNIceKNpACNpHaxgmmyLkYeYOd = bZWXkyKAYCPkgQLmXSIeBWVWOuYeLNcZdhbY( $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, 0 );
if ( $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'discount\' ] == 1 && mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'DISCOUNT_SYSTEM\' ] == 1 && $uYEeYCTgNIceKNpACNpHaxgmmyLkYeYOd >= mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'DISCOUNT_IN_X_LINES\' ] )
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'price\' ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'discount_price\' ];
}
else
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'price\' ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'normal_price\' ];
}
return $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
}
return false;
}
function beXqoxhCcbpRlDrpTKfbSIIUEcPSmdXpM ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $paHEiTyygupDsbEyuVoNVmVraYJqvXLjsk = true, $KdUJnZvMfbZTRzDqjVFjKuqfqbSTGOPVAho = true, $LLuvwfrtdeImslsaYxNESgAOPskEZRpTLO = true, $hLROFfQRnSDimlCdfwlcRtjMfjWRKpaDIwYWs = 1 )
{
global $mcDB;
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = HxIXLGgfzpdkCylbBMghnymwTsUhPCOcW( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( is_array( @$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH ) )
{
WaPbSGexTdikWMpoWabVuGeqKlfZxEXQDUQ( 1 );
$ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU = $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'CONFIG_VARS\' ];
$PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE = $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'PROFILES\' ];
$zQwTOglIGdvWPxZxdGVHTkaFfbYedjMOUx = $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'SCONS\' ];
$JHurzFuNvXZKpptMwRRmyetfKPuAoDlLrGxk = $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'USER_LINES\' ];
if ( @$LLuvwfrtdeImslsaYxNESgAOPskEZRpTLO )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `multics_config_vars` WHERE `master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "ALTER TABLE `multics_config_vars` AUTO_INCREMENT = 1" );
foreach ( $ucWWxhmkIYXDxHKsdUhRaeVHovdPIoDGU as $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc => $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM )
{
if ( is_array( $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM ) )
{
foreach ( $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM as $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_config_vars` (`config_value_name`,`config_value`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc, $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_config_vars` (`config_value_name`,`config_value`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc, $snmwuFrtGBXxOFNZAbDPBzKeqiHsBVM, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
}
foreach ( $zQwTOglIGdvWPxZxdGVHTkaFfbYedjMOUx as $tMfKtNKieoBXhJDJpNRUYXTziuGsFWSBaI )
{
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = explode( ":", $tMfKtNKieoBXhJDJpNRUYXTziuGsFWSBaI );
$SFVWZaLVwyTFJFlaUSENyYbGwfJRYgQ = trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 0 ] );
unset( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 0 ] );
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = implode( ":", $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_config_vars` (`config_value_name`,`config_value`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", $SFVWZaLVwyTFJFlaUSENyYbGwfJRYgQ, trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt ), $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
}
if ( @$paHEiTyygupDsbEyuVoNVmVraYJqvXLjsk )
{
$mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM = array();
foreach ( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE as $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE => $sbpYvcTeUVnDUSXUQDAMzkIxzAHQrjkpOWdQ )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `profiles` WHERE `master_server_id` = \'%d\' AND `profile_name` = \'%s\' LIMIT 1", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$kNEALyHBaWQCEVtrYfLdPTBtXRxfgJAuXbIY = $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
$mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM[ ] = $kNEALyHBaWQCEVtrYfLdPTBtXRxfgJAuXbIY;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `profiles` SET `profile_options` = \'%s\' WHERE `id` = \'%d\'", serialize( $sbpYvcTeUVnDUSXUQDAMzkIxzAHQrjkpOWdQ ), $kNEALyHBaWQCEVtrYfLdPTBtXRxfgJAuXbIY );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `profiles` (`profile_name`,`profile_options`,`master_server_id`) VALUES(\'%s\',\'%s\',\'%d\')", $GrjlOHSQNQdEoAovnFiOBKXWOJIewMlZigQE, serialize( $sbpYvcTeUVnDUSXUQDAMzkIxzAHQrjkpOWdQ ), $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM[ ] = $mcDB->lZqicXChQNuEPumhIutyOVXkAvvxQGrziptdRBQ( );
}
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `profiles` WHERE `master_server_id` = \'%d\' AND `id` NOT IN(" . implode( ",", $mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM ) . ")", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
if ( @$KdUJnZvMfbZTRzDqjVFjKuqfqbSTGOPVAho )
{
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( is_array( $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `lines` WHERE `server_id` IN(" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ")" );
}
$DCbBNajoIqloBeLmdmGWCWkBNsTgUSFFE = oYCxjcrMGXMRxqdxNWbnkfGvamJjzhEJTY( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( empty( $mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM ) )
{
$JwKxkiJIfCpvWbLJGQLuabYbTnBXpjarY = hmAwbwfvbCIDVTGrAUhxGfvwwtmcebShRGNuL( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM = array();
foreach ( $JwKxkiJIfCpvWbLJGQLuabYbTnBXpjarY as $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI )
{
$mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM[ ] = $WSVDZhEHvOJutoXJFuRlHglbEzTBWaGwZhjKI[ \'id\' ];
}
}
$ssyAoHeSjuaVqJNHUoyEMNBPhDQUldyooZIIL = array( \'NEWCAMD\' => 3, \'CCCAM\' => 1, \'MGCAMD\' => 2 );
$YZAUNnUIdWBDHUSPzNqlrkVXNRERvHqUchQU = array();
foreach ( $JHurzFuNvXZKpptMwRRmyetfKPuAoDlLrGxk as $JgjcnpKssiTdcwAFHpQnhBIoVTZzVNoDcUg => $bpLJmEeeqmPlRphXHmzbyCUKbYLYitQXIXTLJ )
{
$JWMXOdQgIPYBstNNMfLQHTehuxMKRGKmsWhI = $ssyAoHeSjuaVqJNHUoyEMNBPhDQUldyooZIIL[ $JgjcnpKssiTdcwAFHpQnhBIoVTZzVNoDcUg ];
$fRnpRjXqdYAhoMNKtUrPmGYNdIJexXsClQB = array();
foreach ( $bpLJmEeeqmPlRphXHmzbyCUKbYLYitQXIXTLJ as $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp => $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `multics_servers` WHERE `master_server_id` = \'%d\' AND `emulator_id` = \'%d\' AND `port` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $JWMXOdQgIPYBstNNMfLQHTehuxMKRGKmsWhI, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA = $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
$YZAUNnUIdWBDHUSPzNqlrkVXNRERvHqUchQU[ ] = $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA;
}
else
{
$EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA = YxjLGCKXzkJQdTsKJPjWBfKPzbGokZHTjEEOyyGE( $JWMXOdQgIPYBstNNMfLQHTehuxMKRGKmsWhI, $DCbBNajoIqloBeLmdmGWCWkBNsTgUSFFE[ \'domain\' ], $JgjcnpKssiTdcwAFHpQnhBIoVTZzVNoDcUg . \' Server\', $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, ($JWMXOdQgIPYBstNNMfLQHTehuxMKRGKmsWhI == 3) ? 0 : 1 );
$YZAUNnUIdWBDHUSPzNqlrkVXNRERvHqUchQU[ ] = $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA;
}
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array_values( array_filter( array_unique( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp ) ) );
foreach ( $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp as $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT )
{
$RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt = explode( " ", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT );
$DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw = trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 0 ] );
$AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY = trim( $RFUSQDBhzgNhMWwvjrksGInVwEFKGpyDQt[ 1 ] );
if ( in_array( $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $fRnpRjXqdYAhoMNKtUrPmGYNdIJexXsClQB ) )
{
continue;
}
else
{
array_push( $fRnpRjXqdYAhoMNKtUrPmGYNdIJexXsClQB, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw );
}
$ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc = array();
$nQznhInsIxzvjhlgDufkGfUdbVfcI = \'NULL\';
$uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw = 0;
if ( preg_match( "/{(.*?)}/", $YcocofCYXiTPRBJexeEGlCtGuXaFDxBDMT, $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM ) )
{
$GQziHxdKzRDjWnJBhNtSDmHWRqUhUfRs = trim( htmlentities( $QPpbAKhgFBxdhoKDUAboxdCQgouqVbQrFdDM[ 1 ] ) );
$FkwpJNTPndxffUzDpuyCLnNWTCiywSUWBmmY = str_replace( \';\', \'&\', $GQziHxdKzRDjWnJBhNtSDmHWRqUhUfRs );
parse_str( $FkwpJNTPndxffUzDpuyCLnNWTCiywSUWBmmY, $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc );
}
$ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc = array_map( "trim", $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc );
foreach ( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc as $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc => $iOGVwNFxUoxMQRIeXtsOxToXsZqqKeDXpPHs )
{
if ( is_null( $iOGVwNFxUoxMQRIeXtsOxToXsZqqKeDXpPHs ) || empty( $iOGVwNFxUoxMQRIeXtsOxToXsZqqKeDXpPHs ) )
{
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] );
}
}
$nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM = 0;
$ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq = implode( ",", $mITNOnkWqaFuokgEgeoUBjivpGpbrnpfGKMLrM );
if ( $hLROFfQRnSDimlCdfwlcRtjMfjWRKpaDIwYWs == 1 )
{
if ( array_key_exists( "profile_ids", $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc ) )
{
$ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq = $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'profile_ids\' ];
}
if ( array_key_exists( "panel_memberid", $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc ) )
{
$uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw = $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'panel_memberid\' ];
}
}
if ( array_key_exists( "test_line", $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc ) )
{
$nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM = $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'test_line\' ];
}
if ( array_key_exists( "panel_expdate", $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc ) )
{
$nQznhInsIxzvjhlgDufkGfUdbVfcI = $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'panel_expdate\' ];
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'panel_expdate\' ] );
}
elseif ( array_key_exists( "enddate", $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc ) )
{
$nQznhInsIxzvjhlgDufkGfUdbVfcI = strtotime( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'enddate\' ] );
}
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'test_line\' ] );
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'profile_ids\' ] );
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'profiles\' ] );
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'name\' ] );
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'panel_memberid\' ] );
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'panel_expdate\' ] );
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ \'enddate\' ] );
foreach ( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc as $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc => $iOGVwNFxUoxMQRIeXtsOxToXsZqqKeDXpPHs )
{
if ( stristr( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc, \',\' ) )
{
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] );
}
elseif ( is_numeric( $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ) )
{
unset( $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc[ $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc ] );
}
}
SkYRsaYotMiHKkODkrENqqwibbpPATfHw( $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $nQznhInsIxzvjhlgDufkGfUdbVfcI, $EuvToTRHFhXPtMYzmUwPOXYuOLIStLWA, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $ONJAznIuIASvylYAOSLLZWAdomXTJhMBdmq, "", $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM, 0, $ydNDDJTxOTAVlQxfuqhvDgqLSJwksAWsrc, 0 );
}
}
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `multics_servers` WHERE `master_server_id` = \'%d\' AND `id` NOT IN(" . implode( ",", $YZAUNnUIdWBDHUSPzNqlrkVXNRERvHqUchQU ) . ")", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_servers` WHERE `master_server_id` = \'%d\' AND `emulator_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, 3 );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) == 0 )
{
YxjLGCKXzkJQdTsKJPjWBfKPzbGokZHTjEEOyyGE( 3, $DCbBNajoIqloBeLmdmGWCWkBNsTgUSFFE[ \'domain\' ], \'NEWCAMD Server\', 0, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, 0 );
}
}
return true;
}
return false;
}
function ddlmVvmzVjxXGrMcBspRssPvrDVoVVEQ ( $gXswUfBNnmyBqsteiJUkJIAAnQRWrAImWHU, $hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE, $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ )
{
if ( mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SERVER_SMTP\' ] == 1 )
{
$gmfITkcVHTkmZtJCAyTcqGtKiZLBUoOAWOMBA = \'MIME-Version: 1.0\' . "\r\n";
$gmfITkcVHTkmZtJCAyTcqGtKiZLBUoOAWOMBA .= \'Content-type: text/html; charset=iso-8859-1\' . "\r\n";
$gmfITkcVHTkmZtJCAyTcqGtKiZLBUoOAWOMBA .= \'From: \' . mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SERVER_NAME\' ] . \' <\' . mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'EMAIL_FROM\' ] . \'>\' . "\r\n";
$gmfITkcVHTkmZtJCAyTcqGtKiZLBUoOAWOMBA .= \'X-Mailer: PHP/\' . phpversion( ) . "\r\n";
if ( @mail( $gXswUfBNnmyBqsteiJUkJIAAnQRWrAImWHU, $hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE, $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ, $gmfITkcVHTkmZtJCAyTcqGtKiZLBUoOAWOMBA ) )
{
return true;
}
return false;
}
else
{
require_once (MULTICS_CLASSES_PATH . "class.phpmailer.php");
$mail = new PHPMailer( );
$mail->IsSMTP( );
$mail->SMTPAuth = true;
$mail->SMTPSecure = mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_ENCRYPTION\' ];
$mail->Host = mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_HOST\' ];
$mail->Port = intval( mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_PORT\' ] );
$mail->Username = mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_USERNAME\' ];
$mail->Password = mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_PASSWORD\' ];
$mail->SetFrom( mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_USERNAME\' ], mcLib::$DCAniUabCJTZRZoqVOqPyWvFCsiwIw[ \'SMTP_FROM_NAME\' ] );
$mail->AddAddress( $gXswUfBNnmyBqsteiJUkJIAAnQRWrAImWHU );
$mail->Subject = $hBkeQgUgZYpYztnsCXcLbGrfTYARSfeHIqE;
$mail->Body = $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ;
$mail->SMTPDebug = 0;
$mail->WordWrap = 250;
$mail->IsHTML( true );
if ( $mail->Send( ) )
{
return true;
}
else
{
echo $mail->ErrorInfo;
exit( );
return false;
}
}
}
function bUIyMlnUdRajKMioCPDdVdUjuUTqrVupUNk ( $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU, $udXzEuxwhFnnSKdyDGzJIKfuOGEaHpyoYKtA, $MNUGSguizWfuEPCHuAOtBOPnarDJLeyaXWHdiDI = \'Months\', $AUvfxSLEPebPxYQfuvsmfRkkjMUhBbXAspFc = 0, $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE = null, $PWhJmVaQgKfefyXoPeMSxJhXtNsxjUMmZNbo = 0, $KoZbUaopuCwqdobOZZxuXzWOQvjFIDaK = 1 )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `date_end` FROM `lines` WHERE id = \'%d\'", $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU );
$fiagytZbReLjflvIqiRcmBUJgenXxg = $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
if ( time( ) > $fiagytZbReLjflvIqiRcmBUJgenXxg )
{
$fmImaZQETiwXOGyhGhxmbevklregSuKGVuYWE = strtotime( "+$udXzEuxwhFnnSKdyDGzJIKfuOGEaHpyoYKtA $MNUGSguizWfuEPCHuAOtBOPnarDJLeyaXWHdiDI" );
}
else
{
$fmImaZQETiwXOGyhGhxmbevklregSuKGVuYWE = strtotime( "+$udXzEuxwhFnnSKdyDGzJIKfuOGEaHpyoYKtA $MNUGSguizWfuEPCHuAOtBOPnarDJLeyaXWHdiDI", $fiagytZbReLjflvIqiRcmBUJgenXxg );
}
if ( is_null( $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `lines` SET `test_line` = 0,`monitor_exclude` = \'%d\',`allow_ch_emu` = \'%d\',`notified_expire` = 1,`date_end` = \'%d\',`user_paid` = \'%f\',`date_start` = \'%d\' WHERE `id` = \'%d\'", $PWhJmVaQgKfefyXoPeMSxJhXtNsxjUMmZNbo, $KoZbUaopuCwqdobOZZxuXzWOQvjFIDaK, $fmImaZQETiwXOGyhGhxmbevklregSuKGVuYWE, $AUvfxSLEPebPxYQfuvsmfRkkjMUhBbXAspFc, time( ), $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `lines` SET `test_line` = 0,`monitor_exclude` = \'%d\',`allow_ch_emu` = \'%d\',`profiles` = \'%s\',`notified_expire` = 1,`date_end` = \'%d\',`user_paid` = \'%f\',`date_start` = \'%d\' WHERE `id` = \'%d\'", $PWhJmVaQgKfefyXoPeMSxJhXtNsxjUMmZNbo, $KoZbUaopuCwqdobOZZxuXzWOQvjFIDaK, $PUWXehduSmEptZYeeotezsmpWnQXCRgpVRPsE, $fmImaZQETiwXOGyhGhxmbevklregSuKGVuYWE, $AUvfxSLEPebPxYQfuvsmfRkkjMUhBbXAspFc, time( ), $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU );
}
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
return true;
}
return false;
}
function LNbIOSZZzQCuMusoNwPflXLxRnIxDoDaRrY ( $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `payments` WHERE `member_id` = \'%d\' ORDER BY id DESC", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function BmBHWNGcmuALxurKoKneXDwPBtlnnYuo ( $CEdebxlGuWVbuIJaIiEPscpYzMPYYrk, $sRfDTNAutiSBMpVHlFEhKhvdngVuxmpos = false, $fDgUakHWdxeTvuoMfbbkOGsUvWGLgjcWGhw = 1 )
{
global $mcDB;
if ( ! @$sRfDTNAutiSBMpVHlFEhKhvdngVuxmpos )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `payments` WHERE `payment_method` = \'%s\' ORDER BY id DESC", $CEdebxlGuWVbuIJaIiEPscpYzMPYYrk );
}
elseif ( $fDgUakHWdxeTvuoMfbbkOGsUvWGLgjcWGhw == 1 )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `payments` WHERE `payment_method` = \'%s\' AND `accepted` = 1 ORDER BY id DESC", $CEdebxlGuWVbuIJaIiEPscpYzMPYYrk );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `payments` WHERE `payment_method` = \'%s\' AND `accepted` = 0 ORDER BY id DESC", $CEdebxlGuWVbuIJaIiEPscpYzMPYYrk );
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function ZJhhsyrGfeeEoYGsafqIlGNWCJsHgqyzPeUPVQD ( $kNEALyHBaWQCEVtrYfLdPTBtXRxfgJAuXbIY )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `payments` WHERE `id` = \'%d\'", $kNEALyHBaWQCEVtrYfLdPTBtXRxfgJAuXbIY );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return array();
}
function OKmQzWntaEKbtVBwGAbHyAADFjpAJeHo ( $qirIDiIhPCWJFavxEdEbtJqCdCszkaqI, $xXPTHriApADVkHSnXgmhXZZxbczvwcdqbaE = false, $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI = \'id DESC\', $kvEoFwJvTmDFRIUewQArIyflrkhSLRqdvIhOELs = false, $vnxmviEJKrppCTsIZiNwJnFADeTKnPwIQxkCEEFI = \'AND\' )
{
global $mcDB;
$CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU = "";
if ( $kvEoFwJvTmDFRIUewQArIyflrkhSLRqdvIhOELs )
{
$CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU = "WHERE ";
if ( $vnxmviEJKrppCTsIZiNwJnFADeTKnPwIQxkCEEFI == \'AND\' )
{
foreach ( $kvEoFwJvTmDFRIUewQArIyflrkhSLRqdvIhOELs as $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc => $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM )
{
$CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU .= "`" . $uLLgHBmPthKUFeERtjXtrvBKCOuDsRwXcfc . "` = \'" . $iWZBmdEJnXemgpuymvJsIBCAFqBQPnKgvsmM . "\' AND ";
}
$CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU = trim( $CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU );
$CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU = substr( $CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU, 0, - 3 );
}
else
{
$CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU .= "`" . key( $kvEoFwJvTmDFRIUewQArIyflrkhSLRqdvIhOELs ) . "` IN (" . $kvEoFwJvTmDFRIUewQArIyflrkhSLRqdvIhOELs[ key( $kvEoFwJvTmDFRIUewQArIyflrkhSLRqdvIhOELs ) ] . ")";
}
}
if ( $xXPTHriApADVkHSnXgmhXZZxbczvwcdqbaE )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `$qirIDiIhPCWJFavxEdEbtJqCdCszkaqI` $CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU ORDER BY $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI" );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `$qirIDiIhPCWJFavxEdEbtJqCdCszkaqI` $CaNCtxkyelRsMjuaTvOxSHMfQNLitjNkVU" );
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function dFeBflhmvTBAIkPqRNxWzSkLoCtlIqmcLIE ( $hxzEmpHzlJAnySVaZHGmlvuwtlvoAwbmPSvqQ )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t3.`domain_name` as `domain`,t2.`id` as `master_server_id` FROM `lines_options` t1,`multics_master_servers` t2, `multics_servers` t3 WHERE t1.`id` = \'%d\' AND t1.`server_id` = t3.`id` AND t3.`master_server_id` = t2.`id`", $hxzEmpHzlJAnySVaZHGmlvuwtlvoAwbmPSvqQ );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.`group_id`,t2.`group_name`,t2.`percent_discount` FROM `group_packages` t1,`member_groups` t2 WHERE t2.`id` = t1.`group_id` AND t1.`package_id` = \'%d\'", $hxzEmpHzlJAnySVaZHGmlvuwtlvoAwbmPSvqQ );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'groups\' ][ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'group_id\' ] ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
}
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function sMvllEgRBfdOcvIloWMAXSlEZGhLnWY ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `default_server_id` FROM `multics_server_emulators` WHERE `master_server_id` = \'%d\' AND `user_access` = 1 ORDER by `emulator_id` ASC", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
if ( in_array( $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'default_server_id\' ], $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) )
{
return $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'default_server_id\' ];
}
}
}
return false;
}
function KFZdtFwjjtJNXOLayulYRyUacBdBTixXiK ( $xyXJfeBdHTdVLmVfwCkCvuInJmWEEOjnJhfl )
{
global $_LANG;
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE = array();
switch ( $xyXJfeBdHTdVLmVfwCkCvuInJmWEEOjnJhfl )
{
case "h":
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'full\' ] = $_LANG[ \'LINE_PACKAGE_DUR_HOURS\' ];
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'php_time\' ] = "hours";
break;
case "d":
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'full\' ] = $_LANG[ \'LINE_PACKAGE_DUR_DAYS\' ];
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'php_time\' ] = "days";
break;
case "m":
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'full\' ] = $_LANG[ \'LINE_PACKAGE_DUR_MONTHS\' ];
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'php_time\' ] = "months";
break;
case "y":
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'full\' ] = $_LANG[ \'LINE_PACKAGE_DUR_YEARS\' ];
$iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE[ \'php_time\' ] = "years";
break;
}
return (! empty( $iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE )) ? $iStRIBnCMmcChbePwiBEQwOgKGfeHpNuQYCE : false;
}
function lFMhMMBGGtGPUdijJopIGdmRSuDYItqMJIHEU ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array();
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( is_array( $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1 . * , t2.`domain_name` AS domain_name, t2.`description` AS description, t2.`port` AS port, t3.emulator_name AS emulator_name, t3.id as emulator_id FROM `lines` t1, `multics_servers` t2, `emulators` t3 WHERE t2.emulator_id = t3.id AND t1.server_id = t2.id AND t1.`server_id` IN (" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ") ORDER BY t1.id DESC" );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
}
return $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp;
}
function FePqAJLfcwMQPwUVxMLbIqcmltiDbIRnbhJWo ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $iLpvQfvtAFLPlOcEhAqQtmsCjNiMKSTdTbTXI = false )
{
global $mcDB;
$SnzBrPOUwvPHHrYWryuQAXbXtGNEPVOsag = array();
$nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs = rgJYriKrXFPMkjrcdXPmGtITBbIEDMNUQI( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( is_array( $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) )
{
if ( ! $iLpvQfvtAFLPlOcEhAqQtmsCjNiMKSTdTbTXI )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `lines` WHERE `server_id` IN (" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ")" );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id` FROM `lines` WHERE `server_id` IN (" . implode( ",", $nqAKFozIcCWReIAlUiuMyHpiZenOuJtoFzGdlxs ) . ") AND (`date_end` > \'" . time( ) . "\' OR `date_end` IS NULL) AND `enable` = 1 AND `monitor_exclude` = 0" );
}
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$SnzBrPOUwvPHHrYWryuQAXbXtGNEPVOsag = mcLib::sLYQRInHqFhKEHlZrlkIQnxTDtZrYVNtKK( $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( ) );
}
}
return $SnzBrPOUwvPHHrYWryuQAXbXtGNEPVOsag;
}
function ZUrSdeXnmuZXglBYlzpmZSNdazohydQtlQ ( $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1 . * ,t2.`master_server_id` as `master_server_id`, t2.`domain_name` AS domain_name, t2.`description` AS description, t2.`port` AS port, t3.emulator_name AS emulator_name,t3.id as emulator_id FROM `lines` t1, `multics_servers` t2, `emulators` t3 WHERE t2.emulator_id = t3.id AND t1.server_id = t2.id AND t1.id = \'%d\'", $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function GgsnBTWeqYfGosMPUacZmvxZjaCAOo ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id`,`page_title` FROM `custom_pages` ORDER by `order` ASC, `id` ASC" );
$RQounhGtAGHAQMdIQWKiJQacUorTaqlFU = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$RQounhGtAGHAQMdIQWKiJQacUorTaqlFU = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $RQounhGtAGHAQMdIQWKiJQacUorTaqlFU;
}
function TyNdSIomtrrjHSRtEeXxNCzeeXSAjruc ( $fUQfHLJBLgYqAtVIcrMvwrqWwrdqDnuqXHDLA, $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ = "", $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI = 1 )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `custom_pages` (`page_title`,`page_content`,`order`) VALUES(\'%s\',\'%s\',\'%d\')", $fUQfHLJBLgYqAtVIcrMvwrqWwrdqDnuqXHDLA, $SdtVaDUjvAdylPNMaNLUMtvzujtTIfbPfVTQ, $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI );
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
return true;
}
return false;
}
function zEJVKWuhrsArORVKiBviCMxXedNptFpaTFH ( $LYksjzhvigXYdaRRRZXLGDlxcTYOrpc )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `server_news` WHERE `id` = \'%d\'", $LYksjzhvigXYdaRRRZXLGDlxcTYOrpc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) <= 0 )
{
return false;
}
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
function vvumBbZkuwKoweWViDmerbcNDcKtoQkBAnELJBQEo ( $QYAWPgntXfccnYPWCqMaZXMxHFSObOFGmEjRw )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `custom_pages` WHERE `id` = \'%d\'", $QYAWPgntXfccnYPWCqMaZXMxHFSObOFGmEjRw );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) <= 0 )
{
return false;
}
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
function YYyJfxVWXknOcieXNCeoUkvpsFthcfwxAMaU ( $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `tickets_topics` WHERE `id` = \'%d\'", $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) <= 0 )
{
return false;
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'INFO\' ] = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `id`,`post`,`date`,`admin_reply` FROM `tickets_post` WHERE `topic_id` = \'%d\' ORDER BY id ASC", $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ \'POSTS\' ] = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function ArBfQryZtgQsRqIMfjrVEKWldbZBvCAuFGrQmM ( $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `tickets_topics` WHERE `id` = \'%d\' AND `member_id` = \'%d\'", $HBzaPhJbeAgldftvWeOUsWoQurtVgXxugk, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return true;
}
return false;
}
function lVXgJGUiWgGhSRelMLqKaFCNlflAAKlxqCPDM ( $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `tickets_topics` WHERE `member_id` = \'%d\' ORDER BY id DESC", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) <= 0 )
{
return false;
}
return $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
function QfgmwmBvfYFOZAUveQPxsjeLiIZGpv ( $qirIDiIhPCWJFavxEdEbtJqCdCszkaqI, $WpFiAaWkxLTvasqjbarrImxEEzVtSTE, $oRjBmIifkcpHFRMENTgIzgNpwZKCQYU )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `$qirIDiIhPCWJFavxEdEbtJqCdCszkaqI` WHERE `$WpFiAaWkxLTvasqjbarrImxEEzVtSTE` = \'%s\'", $oRjBmIifkcpHFRMENTgIzgNpwZKCQYU );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return true;
}
return false;
}
function EJuTFwQpySqEgPxYjSuLxgWyeIUQPc ( $AGISLiuSCWwzoEHNczCSPbUpEfeGsfhXpQhZMJjE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `profiles` WHERE `id` = \'%d\'", $AGISLiuSCWwzoEHNczCSPbUpEfeGsfhXpQhZMJjE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return array();
}
function bjlXGTKapGXRmnlfUEnUtlQLEEZiaLIAknLDE ( $AubUkztAfuhlflCTaQyMeMBeGYcBqwJSNguNM )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `languages` WHERE `id` = \'%d\'", $AubUkztAfuhlflCTaQyMeMBeGYcBqwJSNguNM );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return array();
}
function GZNeNbWRPBMOymmXxSUlVjkhQIEEdWPoRxlw ( $pXDrlwVXwuxAzlpShefsNcSIaDMBjP )
{
global $mcDB;
if ( isset( $_SESSION[ \'language_member\' ] ) )
{
return $_SESSION[ \'language_member\' ][ \'file_name\' ];
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.* FROM `languages` t1, `users` t2 WHERE t2.`id` = \'%d\' AND t2.`lang_id` = t1.`id`", $pXDrlwVXwuxAzlpShefsNcSIaDMBjP );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
$_SESSION[ \'language_member\' ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
return $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'file_name\' ];
}
else
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs = bjlXGTKapGXRmnlfUEnUtlQLEEZiaLIAknLDE( 1 );
$_SESSION[ \'language_member\' ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
return $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'file_name\' ];
}
}
function zfoCdPUSmlqZYumZqPWIVdrOfJoeGiBEySPGY ( )
{
global $mcDB;
if ( isset( $_SESSION[ \'language_guest\' ] ) )
{
return $_SESSION[ \'language_guest\' ][ \'file_name\' ];
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `languages` WHERE `default_guests` = 1" );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
$_SESSION[ \'language_guest\' ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
return $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'file_name\' ];
}
else
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs = bjlXGTKapGXRmnlfUEnUtlQLEEZiaLIAknLDE( 1 );
$_SESSION[ \'language_guest\' ] = $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs;
return $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'file_name\' ];
}
}
function qpvldMTAVaiMrhLqJToqUWOsYiwmAxdWesagA ( $dXmQMpDJHJVTpkNPKawnXBZyJnmNDSDu = \'ok\', $LfAoTUZqIsglsdOgAXtMjkSLoxmtKQJgBg )
{
switch ( $dXmQMpDJHJVTpkNPKawnXBZyJnmNDSDu )
{
case "error":
$mJuWUCNNBKWDpIWmjZPbQzVFImUPPsDmsXrSoM = \'alert alert-danger\';
break;
case "warning":
$mJuWUCNNBKWDpIWmjZPbQzVFImUPPsDmsXrSoM = \'alert alert-warning\';
break;
case "ok":
$mJuWUCNNBKWDpIWmjZPbQzVFImUPPsDmsXrSoM = \'alert alert-success\';
break;
default:
$mJuWUCNNBKWDpIWmjZPbQzVFImUPPsDmsXrSoM = \'alert alert-info\';
}
if ( is_array( $LfAoTUZqIsglsdOgAXtMjkSLoxmtKQJgBg ) )
{
return \'<div class="\' . $mJuWUCNNBKWDpIWmjZPbQzVFImUPPsDmsXrSoM . \'">* \' . implode( "<br /><br />* ", $LfAoTUZqIsglsdOgAXtMjkSLoxmtKQJgBg ) . \'</div>\';
}
else
{
return \'<div class="\' . $mJuWUCNNBKWDpIWmjZPbQzVFImUPPsDmsXrSoM . \'">* \' . $LfAoTUZqIsglsdOgAXtMjkSLoxmtKQJgBg . \'</div>\';
}
}
function JlXTabDUpbtMYlAcWuOQVxuCeFjHPPA ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `emulators`" );
$ssyAoHeSjuaVqJNHUoyEMNBPhDQUldyooZIIL = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
$IKIysqsgJAPTHhdgwEpTDGTmlAVyfFUooIoaWlY = array();
foreach ( $ssyAoHeSjuaVqJNHUoyEMNBPhDQUldyooZIIL as $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ )
{
$IKIysqsgJAPTHhdgwEpTDGTmlAVyfFUooIoaWlY[ $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ[ \'id\' ] ] = $zWTaSlfAGQvEiDLlWliUczjQjFNEPOrKlQ;
}
return $IKIysqsgJAPTHhdgwEpTDGTmlAVyfFUooIoaWlY;
}
function DvBXfiUlPPNvMuEwjAzbpHoTDUWbrWZOwRzc ( )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_server_emulators` ORDER by id ASC,`master_server_id` ASC, emulator_id ASC" );
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
if ( ! is_array( $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'master_server_id\' ] ] ) )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'master_server_id\' ] ] = array();
}
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH[ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'master_server_id\' ] ][ $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'emulator_id\' ] ] = array( $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'user_access\' ], $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'default_server_id\' ] );
}
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function YxjLGCKXzkJQdTsKJPjWBfKPzbGokZHTjEEOyyGE ( $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE, $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs, $xJwxbCThVgzrWTDeojaBfUOtTZMegZpasfmAoVI, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $hlEUJGGeGWBUcsiCCJnRhPAJiQKVLXUdaaM )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_servers` (`emulator_id`,`domain_name`,`description`,`port`,`master_server_id`,`can_delete`) VALUES(\'%d\',\'%s\',\'%s\',\'%d\',\'%d\',\'%d\')", $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE, $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs, $xJwxbCThVgzrWTDeojaBfUOtTZMegZpasfmAoVI, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $hlEUJGGeGWBUcsiCCJnRhPAJiQKVLXUdaaM );
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
$TKtbchXjxUacXkSWeaSKLBMbYaNuQHsRQPbo = $mcDB->lZqicXChQNuEPumhIutyOVXkAvvxQGrziptdRBQ( );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_server_emulators` WHERE `emulator_id` = \'%d\' AND `master_server_id` = \'%d\'", $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs = $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
if ( ! QfgmwmBvfYFOZAUveQPxsjeLiIZGpv( "multics_servers", "id", $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'default_server_id\' ] ) )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "UPDATE `multics_server_emulators` SET `default_server_id` = \'%d\' WHERE `emulator_id` = \'%d\' AND `master_server_id` = \'%d\'", $TKtbchXjxUacXkSWeaSKLBMbYaNuQHsRQPbo, $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
}
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_server_emulators` (`emulator_id`,`master_server_id`,`user_access`,`default_server_id`) VALUES(\'%d\',\'%d\',1,\'%d\')", $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $TKtbchXjxUacXkSWeaSKLBMbYaNuQHsRQPbo );
}
return $TKtbchXjxUacXkSWeaSKLBMbYaNuQHsRQPbo;
}
return false;
}
function RdphwtvJyqsmeZZgaHpgeXrMAVAqiwJWLg ( $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $eexNRLslTIFNuWwOySlJhfyNQnakayRE )
{
global $mcDB;
$CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs = str_replace( array( "/", "\\", "http://" ), array(), $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs );
$eyBUqqtNecxWeWEUiNLnkVpPsplMAJvBxPw = gethostbyname( $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs );
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `domain` FROM `multics_master_servers` WHERE `port` = \'%d\' ORDER by id DESC", $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
foreach ( $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl as $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs )
{
if ( gethostbyname( $vhFTvdzxPpZQiQAJJtlRbuPQHrcAITvcNdrSEJs[ \'domain\' ] ) == $eyBUqqtNecxWeWEUiNLnkVpPsplMAJvBxPw )
{
return \'EXISTS\';
}
}
}
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "INSERT INTO `multics_master_servers` (`domain`,`username`,`password`,`port`,`status`,`monitor_enabled`) VALUES(\'%s\',\'%s\',\'%s\',\'%d\',1,\'%d\')", $CBwHtzramhAlJVUTnhdywEfgKUsoPpHQZAs, $DhgeTYztpZKYLMRRlOkmQbtyEwRLDkOPGBLGw, $AJdNJaAsADnVbTGUDPSmxBkPkFKNnljIvfVbY, $PyYnjlYDTiXgMhqpnJBWvdosggonHrWoDBpXiPp, $eexNRLslTIFNuWwOySlJhfyNQnakayRE );
if ( $mcDB->ULDNqqTHJzNmXeYeEHmcmoXgZdHkcfrjhQlY( ) > 0 )
{
return $mcDB->lZqicXChQNuEPumhIutyOVXkAvvxQGrziptdRBQ( );
}
return false;
}
function KRKjMaXJXZNxybVdtsyrOHWjWYqztkBxs ( )
{
global $mcDB;
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.*,t2.`username` FROM `users_sessions` t1, `users` t2 WHERE t1.member_id = t2.id ORDER BY t1.`expire_date` DESC" );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function wRepbFFWwMTwKjoeUHnKuVIKylyuUbjVcdjVg ( $ALrurzLXaCSJIYsadOnIhbRtRhMpJZKRkY = \'id\', $oRjBmIifkcpHFRMENTgIzgNpwZKCQYU )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "DELETE FROM `users_sessions` WHERE `$ALrurzLXaCSJIYsadOnIhbRtRhMpJZKRkY` = \'%d\'", $oRjBmIifkcpHFRMENTgIzgNpwZKCQYU );
return true;
}
function XnvMDtvVcDduVDtGXhWOVxynNHSsRCQwQfqHQbrg ( $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `emulators` WHERE `can_multiple` = 1 AND `id` = \'%d\'", $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return true;
}
return false;
}
function RfuEcUaBSqJYqjKqWYJmMwepnhIgWrDaarDc ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc )
{
global $mcDB;
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = array();
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1.`emulator_id` as `emulator_id`,t2.emulator_name as `emulator_name` FROM `multics_server_emulators` t1,`emulators` t2,`multics_servers` t3 WHERE t1.`default_server_id` = t3.`id` AND t3.`master_server_id` = t1.`master_server_id` AND t1.`user_access` = 1 AND t1.emulator_id = t2.id AND t1.`master_server_id` = \'%d\'", $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$sxrEMJLCtAHUsbhglwaKdFpNiPOyOH = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $sxrEMJLCtAHUsbhglwaKdFpNiPOyOH;
}
function TZIJRpLuzLsRTBQVPnxfnBuVKtkSZezvrXPHnA ( $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `emulators` WHERE `id` = \'%d\'", $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->OywkjiJsPsfQksGnfpNDuDtblCYOpOluCAWg( );
}
return false;
}
function WaanxBbnWFzlXSPgPiNQPHZCFNZUysZFIsDsbE ( $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc, $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT `default_server_id` FROM `multics_server_emulators` WHERE `emulator_id` = \'%d\' AND `master_server_id` = \'%d\' AND `user_access` = 1", $mFjmmTzCSEVaGVsjrvnAunlrqqPgGykE, $zfOHpbrRvMDuFXGWAmyEOzLchxOAEZonYsc );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$nekgavadTBfiKGxxpPWQMVQaFVUlCMFWcI = $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
if ( QfgmwmBvfYFOZAUveQPxsjeLiIZGpv( "multics_servers", "id", $nekgavadTBfiKGxxpPWQMVQaFVUlCMFWcI ) )
{
return $nekgavadTBfiKGxxpPWQMVQaFVUlCMFWcI;
}
}
return false;
}
function JQFnYELCVacRBNIXetzmrZoIeiuogqTxsg ( $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw = false, $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM = 1, $xXPTHriApADVkHSnXgmhXZZxbczvwcdqbaE = \'id\', $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI = \'DESC\' )
{
global $mcDB;
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array();
switch ( $nPgyEEBoaGeVyyMHquepgMzrSdogyTTpgKGM )
{
case 0:
$jFKpJValFivOnqdugHWfxZVEvtAdLKBwg = "AND t1.test_line = 0";
break;
case 1:
$jFKpJValFivOnqdugHWfxZVEvtAdLKBwg = "AND t1.test_line = 1";
break;
default:
$jFKpJValFivOnqdugHWfxZVEvtAdLKBwg = "";
}
if ( ! $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw )
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1 . * , t2.`domain_name` AS domain_name, t2.`description` AS description, t2.`port` AS port, t3.emulator_name AS emulator_name, t3.id as emulator_id FROM `lines` t1, `multics_servers` t2, `emulators` t3 WHERE t2.emulator_id = t3.id AND t1.server_id = t2.id $jFKpJValFivOnqdugHWfxZVEvtAdLKBwg ORDER BY $xXPTHriApADVkHSnXgmhXZZxbczvwcdqbaE $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI" );
}
else
{
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT t1 . * ,t2.`master_server_id` as `master_server_id`, t2.`domain_name` AS domain_name, t2.`description` AS description, t2.`port` AS port, t3.emulator_name AS emulator_name, t3.id as emulator_id FROM `lines` t1, `multics_servers` t2, `emulators` t3 WHERE t2.emulator_id = t3.id AND t1.server_id = t2.id AND t1.member_id = \'%d\' $jFKpJValFivOnqdugHWfxZVEvtAdLKBwg ORDER BY $xXPTHriApADVkHSnXgmhXZZxbczvwcdqbaE $SiXzwiIZmMdadSfrQUdDXgmLcNgojOCINeiI", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
}
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = array();
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
$YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
}
return $YCWzarlpjCjbSnAvzVqxuHSpdXhJNytYMjp;
}
function CUWhmVFfOxINoCFuuQDDuOOcLJuFpZKni ( $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw )
{
global $mcDB;
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * from `lines` WHERE id = \'%d\' AND `member_id` = \'%d\'", $dnPTGTeGDUZsSAqwTgGwVTBJvGOrWvKHTDeyU, $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return true;
}
return false;
}
function bZWXkyKAYCPkgQLmXSIeBWVWOuYeLNcZdhbY ( $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw, $fPXnpgIlOkjXnnpXtTULpjFMVysRQAXvQzLok = 0 )
{
global $mcDB;
switch ( $fPXnpgIlOkjXnnpXtTULpjFMVysRQAXvQzLok )
{
case 0:
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT count(*) FROM `lines` WHERE `member_id` = \'%d\' AND `test_line` = 0", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
break;
case 1:
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT count(*) FROM `lines` WHERE `member_id` = \'%d\' AND `test_line` = 1", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
break;
case 2:
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT count(*) FROM `lines` WHERE `member_id` = \'%d\'", $uABhuiqYFRfuCFouuKawvoKtmYAgDzCmDBnKyKGtw );
break;
}
if ( $mcDB->mSgFNAoJuzlttvDkYoMsAbRCiKUPbFVEFzU( ) > 0 )
{
return $mcDB->iycjdDvSoqgLkyJNknsfSqnsRpysAuGjvCAJk( );
}
return 0;
}
function oscams ( $type )
{
global $mcDB;
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = array();
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_master_servers` WHERE `server_type` = \'%d\'", $type );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
return $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl;
}
function mcs_servers ( $id )
{
global $mcDB;
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = array();
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `multics_servers` WHERE `master_server_id` = \'%d\'", $id );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
return $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl;
}
function oscam_lines ( $mcsid )
{
global $mcDB;
$date = time();
$enable = \'1\';
$block = \'0\';
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = array();
$mcDB->okIIAkTGwbUuDqjVZeDZLjPlJuLxPCAbQRg( "SELECT * FROM `lines` WHERE `server_id` = \'%d\' AND `date_end` > \'%d\' AND `enable` = \'%s\' AND `blocked` = \'%s\'", $mcsid, $date, $enable, $block );
$DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl = $mcDB->uRkfhIjOyHziEyCiTLMEUfuMfkXqDIgnaoo( );
return $DqxWVhFTLNAKTbhfsRUoDwEXckDTaziPWl;
}
?>'
Did this file decode correctly?
Original Code
<?php
/**
* @multics panel v4.2 release 07-11-2020
* @oscam, multics, iptv 3in1 panel
* @developer: Muhammad Ashan (Xtream-Masters.com)
*/
eval("?>".base64_decode("PD9waHAKCmZ1bmN0aW9uIEtzVElabXhiZHNqa05PSWl2cGxOdlFkb2RxdXBCdGdpTlBNICggKQp7CiAgJEtzVElabXhiZHNqa05PSWl2cGxOdlFkb2RxdXBCdGdpTlBNID0gdHJpbSggc2hlbGxfZXhlYyggImZyZWUgLW0iICkgKTsKICBpZiAoIGVtcHR5KCAkS3NUSVpteGJkc2prTk9JaXZwbE52UWRvZHF1cEJ0Z2lOUE0gKSApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCA9IGV4cGxvZGUoICJcbiIsICRLc1RJWm14YmRzamtOT0lpdnBsTnZRZG9kcXVwQnRnaU5QTSApOwogICRLc1RJWm14YmRzamtOT0lpdnBsTnZRZG9kcXVwQnRnaU5QTSA9IGFycmF5KCk7CiAgJHZPZnp5WVpoT3lFcEtjaWFjRGR0b2VMbUduTWduTUpHTXVwWFF2UyA9IGFycmF5KCk7CiAgZm9yZWFjaCAoICRSRlVTUURCaHpnTmhNV3d2anJrc0dJblZ3RUZLR3B5RFF0IGFzICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UICkKICB7CiAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gcHJlZ19yZXBsYWNlKCAnIVxzKyEnLCAnICcsIHN0cl9yZXBsYWNlKCAiOiIsICIiLCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCApICk7CiAgICBpZiAoICEgc3Ryc3RyKCAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9ILCAiTWVtIiApIGFuZCAhIHN0cnN0ciggJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCwgIlN3YXAiICkgKQogICAgewogICAgICBjb250aW51ZTsKICAgIH0KICAgICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSiA9IGV4cGxvZGUoICIgIiwgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCApOwogICAgaWYgKCAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbIDAgXSA9PSAiTWVtIiApCiAgICB7CiAgICAgICRLc1RJWm14YmRzamtOT0lpdnBsTnZRZG9kcXVwQnRnaU5QTVsgJ3RvdGFsJyBdID0gJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAxIF07CiAgICAgICRLc1RJWm14YmRzamtOT0lpdnBsTnZRZG9kcXVwQnRnaU5QTVsgJ3VzZWQnIF0gPSAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbIDIgXTsKICAgICAgJEtzVElabXhiZHNqa05PSWl2cGxOdlFkb2RxdXBCdGdpTlBNWyAnZnJlZScgXSA9ICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgMyBdOwogICAgICAkS3NUSVpteGJkc2prTk9JaXZwbE52UWRvZHF1cEJ0Z2lOUE1bICdwZXJjZW50JyBdID0gc3ByaW50ZiggIiUwLjJmIiwgKCRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgMiBdIC8gJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAxIF0pICogMTAwICk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICR2T2Z6eVlaaE95RXBLY2lhY0RkdG9lTG1Hbk1nbk1KR011cFhRdlNbICd0b3RhbCcgXSA9ICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgMSBdOwogICAgICAkdk9menlZWmhPeUVwS2NpYWNEZHRvZUxtR25NZ25NSkdNdXBYUXZTWyAndXNlZCcgXSA9ICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgMiBdOwogICAgICAkdk9menlZWmhPeUVwS2NpYWNEZHRvZUxtR25NZ25NSkdNdXBYUXZTWyAnZnJlZScgXSA9ICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgMyBdOwogICAgICAkdk9menlZWmhPeUVwS2NpYWNEZHRvZUxtR25NZ25NSkdNdXBYUXZTWyAncGVyY2VudCcgXSA9IHNwcmludGYoICIlMC4yZiIsICgkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbIDIgXSAvICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgMSBdKSAqIDEwMCApOwogICAgfQogIH0KICByZXR1cm4gYXJyYXkoICRLc1RJWm14YmRzamtOT0lpdnBsTnZRZG9kcXVwQnRnaU5QTSwgJHZPZnp5WVpoT3lFcEtjaWFjRGR0b2VMbUduTWduTUpHTXVwWFF2UyApOwp9CgpmdW5jdGlvbiBsemdpRWlVdkhJTlFVTmVZaHVGWmJyalhXcE9TT3NKYnJmWkNnICggKQp7CiAgJEpxV1lVSm5ZYkpoR05EZHdHc0lra1NDZklUUWxsdyA9IEBmaWxlX2dldF9jb250ZW50cyggIi9wcm9jL2NwdWluZm8iICk7CiAgaWYgKCBlbXB0eSggJEpxV1lVSm5ZYkpoR05EZHdHc0lra1NDZklUUWxsdyApICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogICRSRlVTUURCaHpnTmhNV3d2anJrc0dJblZ3RUZLR3B5RFF0ID0gZXhwbG9kZSggIlxuIiwgJEpxV1lVSm5ZYkpoR05EZHdHc0lra1NDZklUUWxsdyApOwogICRsemdpRWlVdkhJTlFVTmVZaHVGWmJyalhXcE9TT3NKYnJmWkNnID0gYXJyYXkoKTsKICBmb3JlYWNoICggJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXQgYXMgJFljb2NvZkNZWGlUUFJCSmV4ZUVHbEN0R3VYYUZEeEJETVQgKQogIHsKICAgIGlmICggISBzdHJpc3RyKCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCwgIjoiICkgKQogICAgewogICAgICBjb250aW51ZTsKICAgIH0KICAgIGxpc3QgKCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMsICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gKSA9IEBleHBsb2RlKCAiOiIsICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UICk7CiAgICAkbHpnaUVpVXZISU5RVU5lWWh1RlpicmpYV3BPU09zSmJyZlpDZ1sgdHJpbSggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjICkgXSA9IHRyaW0oICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gKTsKICB9CiAgJFdPTEZvdGpCQVpzRUJza0Zvekt1ZENkUWVNRFJiVWtBbiA9IGFycmF5KCk7CiAgZm9yICggJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgPSAwOyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSA8PSAkbHpnaUVpVXZISU5RVU5lWWh1RlpicmpYV3BPU09zSmJyZlpDZ1sgJ3Byb2Nlc3NvcicgXTsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkrKyApCiAgewogICAgJFdPTEZvdGpCQVpzRUJza0Zvekt1ZENkUWVNRFJiVWtBblsgJ2NvcmVzJyBdWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdWyAnY3B1X25hbWUnIF0gPSAkbHpnaUVpVXZISU5RVU5lWWh1RlpicmpYV3BPU09zSmJyZlpDZ1sgJ21vZGVsIG5hbWUnIF07CiAgICAkV09MRm90akJBWnNFQnNrRm96S3VkQ2RRZU1EUmJVa0FuWyAnY29yZXMnIF1bICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF1bICdzcGVlZCcgXSA9ICRsemdpRWlVdkhJTlFVTmVZaHVGWmJyalhXcE9TT3NKYnJmWkNnWyAnY3B1IE1IeicgXTsKICB9CiAgJHdoUEdOUXVhbEpSTXdGbnVHdmFURktWQ2dvQ0Z0R0xqb2RjID0gYXJyYXlfZmlsbCggMCwgKyskbHpnaUVpVXZISU5RVU5lWWh1RlpicmpYV3BPU09zSmJyZlpDZ1sgJ3Byb2Nlc3NvcicgXSwgMCApOwogICRLSkZPZ0ZNRWdGSmxveUJyVkRWdlNDZWpybE10cFROTWcgPSBhcnJheV9maWxsKCAwLCAkbHpnaUVpVXZISU5RVU5lWWh1RlpicmpYV3BPU09zSmJyZlpDZ1sgJ3Byb2Nlc3NvcicgXSwgMCApOwogIGZvciAoICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJID0gMDsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgPCAzOyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSsrICkKICB7CiAgICAkbFRqVWhxU1pLVHFSbXVobExPdGJsUERzYmt4WU1YelFZeWhnaHMgPSBAZmlsZV9nZXRfY29udGVudHMoICIvcHJvYy9zdGF0IiApOwogICAgaWYgKCBlbXB0eSggJGxUalVocVNaS1RxUm11aGxMT3RibFBEc2JreFlNWHpRWXloZ2hzICkgKQogICAgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCA9IGV4cGxvZGUoICJcbiIsICRsVGpVaHFTWktUcVJtdWhsTE90YmxQRHNia3hZTVh6UVl5aGdocyApOwogICAgJHRETk5xdERTWGJreldjSVliaVh3VWJtakJ3Zk1qSUdjWGx0cFJRUSA9IDA7CiAgICAkUGRmZ3JEcUhCSU5DWnJNSk9wSkZxTnprTGZnID0gMDsKICAgIGZvcmVhY2ggKCAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCBhcyAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCApCiAgICB7CiAgICAgIGlmICggISBwcmVnX21hdGNoKCAiL2NwdVswLTldezEsfVxzLyIsICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UICkgKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgJHBCc3ZGWXhyVW16SHRyc2hBTmtJcmNBZExMbm5zcEkgPSBleHBsb2RlKCAiICIsIHRyaW0oICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UICkgKTsKICAgICAgYXJyYXlfc2hpZnQoICRwQnN2Rll4clVtekh0cnNoQU5rSXJjQWRMTG5uc3BJICk7CiAgICAgICRFZVJnYnBzdFZNT2hMSFhLanhFa0ZKTG5ySGR3SldaWSA9IGFycmF5X3N1bSggJHBCc3ZGWXhyVW16SHRyc2hBTmtJcmNBZExMbm5zcEkgKTsKICAgICAgJHhzaXV0eW5qdVlNeE1pem1kQkpEbkJFTGt2TVVOblh1dHZkUyA9ICRwQnN2Rll4clVtekh0cnNoQU5rSXJjQWRMTG5uc3BJWyAzIF07CiAgICAgICRtb2x2V29pZUdPcU5jblduc3JjR3lvdlBhcEJIZGNvQm14ZFRjID0gJHhzaXV0eW5qdVlNeE1pem1kQkpEbkJFTGt2TVVOblh1dHZkUyAtICR3aFBHTlF1YWxKUk13Rm51R3ZhVEZLVkNnb0NGdEdMam9kY1sgJHRETk5xdERTWGJreldjSVliaVh3VWJtakJ3Zk1qSUdjWGx0cFJRUSBdOwogICAgICAkSmRJRnRra0ZSakxLb3d4TVZ6WGl2Y0xYRlJ5VUpoRnF6eFUgPSAkRWVSZ2Jwc3RWTU9oTEhYS2p4RWtGSkxuckhkd0pXWlkgLSAkS0pGT2dGTUVnRkpsb3lCclZEVnZTQ2VqcmxNdHBUTk1nWyAkdEROTnF0RFNYYmt6V2NJWWJpWHdVYm1qQndmTWpJR2NYbHRwUlFRIF07CiAgICAgICRncVhpRlZNV1BuZnJZVXRRTGJ0Z1RRSHZSQk1ySmVKc3cgPSAxMDAgKiAoKCRKZElGdGtrRlJqTEtvd3hNVnpYaXZjTFhGUnlVSmhGcXp4VSAtICRtb2x2V29pZUdPcU5jblduc3JjR3lvdlBhcEJIZGNvQm14ZFRjKSAvICRKZElGdGtrRlJqTEtvd3hNVnpYaXZjTFhGUnlVSmhGcXp4VSk7CiAgICAgICRQZGZnckRxSEJJTkNack1KT3BKRnFOemtMZmcgPSAkUGRmZ3JEcUhCSU5DWnJNSk9wSkZxTnprTGZnICsgJGdxWGlGVk1XUG5mcllVdFFMYnRnVFFIdlJCTXJKZUpzdzsKICAgICAgJFdPTEZvdGpCQVpzRUJza0Zvekt1ZENkUWVNRFJiVWtBblsgJ2NvcmVzJyBdWyAkdEROTnF0RFNYYmt6V2NJWWJpWHdVYm1qQndmTWpJR2NYbHRwUlFRIF1bICdjcHVfdXNhZ2UnIF0gPSBzcHJpbnRmKCAiJTAuMmYiLCAkZ3FYaUZWTVdQbmZyWVV0UUxidGdUUUh2UkJNckplSnN3ICk7CiAgICAgICR3aFBHTlF1YWxKUk13Rm51R3ZhVEZLVkNnb0NGdEdMam9kY1sgJHRETk5xdERTWGJreldjSVliaVh3VWJtakJ3Zk1qSUdjWGx0cFJRUSBdID0gJHhzaXV0eW5qdVlNeE1pem1kQkpEbkJFTGt2TVVOblh1dHZkUzsKICAgICAgJEtKRk9nRk1FZ0ZKbG95QnJWRFZ2U0NlanJsTXRwVE5NZ1sgJHRETk5xdERTWGJreldjSVliaVh3VWJtakJ3Zk1qSUdjWGx0cFJRUSBdID0gJEVlUmdicHN0Vk1PaExIWEtqeEVrRkpMbnJIZHdKV1pZOwogICAgICAkdEROTnF0RFNYYmt6V2NJWWJpWHdVYm1qQndmTWpJR2NYbHRwUlFRKys7CiAgICB9CiAgICAkZ0tYbGlqZVF0VHNiS0l6TkpVQWJ2eURZeWtjUmFlUUJ5ID0gc3ByaW50ZiggIiUwLjJmIiwgJFBkZmdyRHFIQklOQ1pyTUpPcEpGcU56a0xmZyAvIGNvdW50KCAkV09MRm90akJBWnNFQnNrRm96S3VkQ2RRZU1EUmJVa0FuICkgKTsKICAgICRXT0xGb3RqQkFac0VCc2tGb3pLdWRDZFFlTURSYlVrQW5bICd0b3RhbF91c2FnZScgXSA9ICRnS1hsaWplUXRUc2JLSXpOSlVBYnZ5RFl5a2NSYWVRQnk7CiAgICB1c2xlZXAoIDkwMDAwICk7CiAgfQogIHJldHVybiAkV09MRm90akJBWnNFQnNrRm96S3VkQ2RRZU1EUmJVa0FuOwp9CgpmdW5jdGlvbiB3cFR2UlJDR1dKcHpmcnJ6cmVHcmNpUnp2R2REc25CSVNQSXV3ICggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjLCAkR3JqbE9IU1FOUWRFb0Fvdm5GaU9CS1hXT0pJZXdNbFppZ1FFICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGlkYCBGUk9NIGBwcm9maWxlc2AgV0hFUkUgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyBBTkQgYHByb2ZpbGVfbmFtZWAgPSAnJXMnIiwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjLCAkR3JqbE9IU1FOUWRFb0Fvdm5GaU9CS1hXT0pJZXdNbFppZ1FFICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBnUlNjQ0JCTGJHcVh0VGVLRE1yZGF2RWlScHpyalkgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MsICREaGdlVFl6dHBaS1lMTVJSbE9rbVFidHlFd1JMRGtPUEdCTEd3ICkKewogIGdsb2JhbCAkbWNEQjsKICAkbnFBS0ZvekljQ1dSZUlBbFVpdU15SHBpWmVuT3VKdG9GekdkbHhzID0gcmdKWXJpS3JYRlBNa2pyY2RYUG1HdElUQmJJRURNTlVRSSggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBpZGAgRlJPTSBgbGluZXNgIFdIRVJFIGBzZXJ2ZXJfaWRgIElOKCIgLiBpbXBsb2RlKCAiLCIsICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSAuICIpIEFORCBgdXNlcm5hbWVgID0gJyVzJyIsICREaGdlVFl6dHBaS1lMTVJSbE9rbVFidHlFd1JMRGtPUEdCTEd3ICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBsQkFxanVCbFJyZ0ZtVllhYUhZZnZuQXdjcFR5c3FxRm9qVHogKCAka1Z5TUxib3ZRUmZoUFRRcExudUV6a0tJUnRyY3Z5U0lnZ0EgKQp7CiAgJGl6TnVmZnFFY0Fja1BFVkRxQ2dWWVB5bExZZG9yb1dYUU0gPSBpbnR2YWwoIHRyaW0oIHNoZWxsX2V4ZWMoICJwcyBheCB8IHBncmVwIC1mICciIC4gTVVMVElDU19ST09UX1BBVEggLiAiJGtWeU1MYm92UVJmaFBUUXBMbnVFemtLSVJ0cmN2eVNJZ2dBJyB8IHdjIC1sIiApICkgKTsKICByZXR1cm4gKCRpek51ZmZxRWNBY2tQRVZEcUNnVllQeWxMWWRvcm9XWFFNID4gMCkgPyB0cnVlIDogZmFsc2U7Cn0KCmZ1bmN0aW9uIHdwcEpUR2lUSlBCeExpYmtlVlFmVklSdXBlcHNxdGdrQWsgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MsICRBTGJaT0l4SFd0TUJncEZwem9DVW12UUpVb0JVRVdtTHN3ckUgPSBudWxsLCAkUnF5QkJqYWZBRWJJUlljRnRYZENoV0xYYWN3SEVWSUtTWnljT0UgPSBudWxsICkKewogIGdsb2JhbCAkbWNEQjsKICAkbnFBS0ZvekljQ1dSZUlBbFVpdU15SHBpWmVuT3VKdG9GekdkbHhzID0gcmdKWXJpS3JYRlBNa2pyY2RYUG1HdElUQmJJRURNTlVRSSggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgaWYgKCAhIGlzX251bGwoICRScXlCQmphZkFFYklSWWNGdFhkQ2hXTFhhY3dIRVZJS1NaeWNPRSApICkKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYHBhY2thZ2VfaWRgIEZST00gYGdyb3VwX3BhY2thZ2VzYCBXSEVSRSBgZ3JvdXBfaWRgID0gJyVkJyIsICRScXlCQmphZkFFYklSWWNGdFhkQ2hXTFhhY3dIRVZJS1NaeWNPRSApOwogIH0KICBlbHNlCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgbGluZXNfb3B0aW9uc2AgV0hFUkUgYHNlcnZlcl9pZGAgSU4oIiAuIGltcGxvZGUoICIsIiwgJG5xQUtGb3pJY0NXUmVJQWxVaXVNeUhwaVplbk91SnRvRnpHZGx4cyApIC4gIikiICk7CiAgICByZXR1cm4gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogIH0KICAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCA9IGFycmF5KCk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkaGRBV0dKaVloZFdKY0tmUG94amp0YVJwYlJvU0J1SGVsaENDID0gbWNMaWI6OnNMWVFSSW5IcUZoS0VIbFpybGtJUW54VER0WnJZVk50S0soICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKSApOwogICAgaWYgKCBpc19udWxsKCAkQUxiWk9JeEhXdE1CZ3BGcHpvQ1VtdlFKVW9CVUVXbUxzd3JFICkgKQogICAgewogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBsaW5lc19vcHRpb25zYCBXSEVSRSBpZCBJTiAoIiAuIGltcGxvZGUoICIsIiwgJGhkQVdHSmlZaGRXSmNLZlBveGpqdGFScGJSb1NCdUhlbGhDQyApIC4gIikgQU5EIGBzZXJ2ZXJfaWRgIElOKCIgLiBpbXBsb2RlKCAiLCIsICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSAuICIpIiApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBsaW5lc19vcHRpb25zYCBXSEVSRSBpZCBJTiAoIiAuIGltcGxvZGUoICIsIiwgJGhkQVdHSmlZaGRXSmNLZlBveGpqdGFScGJSb1NCdUhlbGhDQyApIC4gIikgQU5EIGBzZXJ2ZXJfaWRgIElOKCIgLiBpbXBsb2RlKCAiLCIsICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSAuICIpIEFORCBgb3B0aW9uX3R5cGVgID0gJyVkJyIsICRBTGJaT0l4SFd0TUJncEZwem9DVW12UUpVb0JVRVdtTHN3ckUgKTsKICAgIH0KICAgIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgICB7CiAgICAgICRxb2tnZ2hJdnZ0ZEZUYmNtUk5wVmZKeVF2Z01IdllqekkgPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgICAgIHJldHVybiAkcW9rZ2doSXZ2dGRGVGJjbVJOcFZmSnlRdmdNSHZZanpJOwogICAgfQogIH0KICByZXR1cm4gYXJyYXkoKTsKfQoKZnVuY3Rpb24gcGFSTFd2UGxaQmZhT0RmRll5Y0pXZG5lWm12bEd1UkNsblhVICggKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS4qLHQyLmBncm91cF9uYW1lYCx0Mi5gZ3JvdXBfY29sb3JgIEZST00gYHVzZXJzYCB0MSxgbWVtYmVyX2dyb3Vwc2AgdDIgV0hFUkUgdDEubWVtYmVyX2dyb3VwX2lkID0gdDIuaWQiICk7CiAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSBhcnJheSgpOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgfQogIHJldHVybiAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbDsKfQoKZnVuY3Rpb24gclBUQkNwY1JuYXVEa1JOUHlEY2xGSm1OaGhLUUtEZG5GekxSQSAoICRkblBUR1RlR0RVWnNTQXF3VGdHd1ZUQkp2R09yV3ZLSFREZXlVICkKewogIGdsb2JhbCAkbWNNZW1iZXI7CiAgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT00gPSBaVXJTZGVYbm11WlhnbEJZbHpwbVpTTmRhem9oeWRRdGxRKCAkZG5QVEdUZUdEVVpzU0Fxd1RnR3dWVEJKdkdPcld2S0hURGV5VSApOwogIGlmICggJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdtZW1iZXJfaWQnIF0gIT0gMCBhbmQgUWZnbXdtQnZmWUZPWkFVdmVRUHhzamVMaUlaR3B2KCAidXNlcnMiLCAiaWQiLCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ21lbWJlcl9pZCcgXSApICkKICB7CiAgICAkVHVmSW5wWkJHTlBPT1R5UVlTVHBKd3JjUGtwWWxEeGxVa2h2RlkgPSAkbWNNZW1iZXItPkNNS0h5Z1JPcm1iTlB5VGtyZWZGcllZTUpXWEVaRERaWnpOTSggJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdtZW1iZXJfaWQnIF0gKTsKICAgICRoQmtlUWdVZ1pZcFl6dG5zQ1hjTGJHcmZUWUFSU2ZlSElxRSA9ICgkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ2Jsb2NrZWQnIF0gPT0gMCkgPyBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ0VNQUlMX01TR19NT05JVE9SX1dBUk5fU1VCJyBdIDogbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdFTUFJTF9NU0dfTU9OSVRPUl9CQU5fU1VCJyBdOwogICAgJFNkdFZhRFVqdkFkeWxQTk1hTkxVTXR2enVqdFRJZmJQZlZUUSA9ICgkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ2Jsb2NrZWQnIF0gPT0gMCkgPyBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ0VNQUlMX01TR19NT05JVE9SX1dBUk4nIF0gOiBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ0VNQUlMX01TR19NT05JVE9SX0JBTicgXTsKICAgICRoQmtlUWdVZ1pZcFl6dG5zQ1hjTGJHcmZUWUFSU2ZlSElxRSA9IHN0cl9pcmVwbGFjZSggYXJyYXkoICJ7U0VSVkVSX05BTUV9IiwgIntNRU1CRVJfTkFNRX0iLCAie0xJTkVfVVNFUk5BTUV9IiApLCBhcnJheSggbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdTRVJWRVJfTkFNRScgXSwgJFR1ZklucFpCR05QT09UeVFZU1RwSndyY1BrcFlsRHhsVWtodkZZWyAndXNlcm5hbWUnIF0sICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAndXNlcm5hbWUnIF0gKSwgJGhCa2VRZ1VnWllwWXp0bnNDWGNMYkdyZlRZQVJTZmVISXFFICk7CiAgICAkU2R0VmFEVWp2QWR5bFBOTWFOTFVNdHZ6dWp0VElmYlBmVlRRID0gc3RyX2lyZXBsYWNlKCBhcnJheSggIntTRVJWRVJfTkFNRX0iLCAie01FTUJFUl9OQU1FfSIsICJ7TElORV9VU0VSTkFNRX0iICksIGFycmF5KCBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ1NFUlZFUl9OQU1FJyBdLCAkVHVmSW5wWkJHTlBPT1R5UVlTVHBKd3JjUGtwWWxEeGxVa2h2RllbICd1c2VybmFtZScgXSwgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICd1c2VybmFtZScgXSApLCAkU2R0VmFEVWp2QWR5bFBOTWFOTFVNdHZ6dWp0VElmYlBmVlRRICk7CiAgICBkZGxtVnZtelZqeFhHck1jQnNwUnNzUHZyRFZvVlZFUSggJFR1ZklucFpCR05QT09UeVFZU1RwSndyY1BrcFlsRHhsVWtodkZZWyAnZW1haWwnIF0sICRoQmtlUWdVZ1pZcFl6dG5zQ1hjTGJHcmZUWUFSU2ZlSElxRSwgJFNkdFZhRFVqdkFkeWxQTk1hTkxVTXR2enVqdFRJZmJQZlZUUSApOwogICAgcmV0dXJuIHRydWU7CiAgfQogIGVsc2UKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQp9CgpmdW5jdGlvbiBSZ1RkUm5ucmR6U0p4eEJ5a0ZZV2NQUGlsT0J1dlZLR1lJICggJFlyc1RQZ3dTakpQc0tFRW9DcFhoaW53bE5jLCAkb01IZ0VaVW9SVlp2bldSWEdtSUdybkdIblZKV0xhUWVRUWdZLCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcsICRvTVF5V01UeWRhTHVub3JaeU5Cc2NoSXlod2xhWW1iZmZHQ3dXID0gMCApCnsKICBnbG9iYWwgJG1jREI7CiAgJFlyc1RQZ3dTakpQc0tFRW9DcFhoaW53bE5jID0gbWNMaWI6Ok1WbWFmd2ZtanF1ZmV4cG5HekVmT2Z0bGtWVVRMWGRKY3FtVldXRSggJFlyc1RQZ3dTakpQc0tFRW9DcFhoaW53bE5jICk7CiAgJG9NSGdFWlVvUlZadm5XUlhHbUlHcm5HSG5WSldMYVFlUVFnWSA9IG1jTGliOjpNVm1hZndmbWpxdWZleHBuR3pFZk9mdGxrVlVUTFhkSmNxbVZXV0UoICRvTUhnRVpVb1JWWnZuV1JYR21JR3JuR0huVkpXTGFRZVFRZ1kgKTsKICBpZiAoIGVtcHR5KCAkb01IZ0VaVW9SVlp2bldSWEdtSUdybkdIblZKV0xhUWVRUWdZICkgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgaWYgKCAkb01ReVdNVHlkYUx1bm9yWnlOQnNjaEl5aHdsYVltYmZmR0N3VyA9PSAwICkKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJJTlNFUlQgSU5UTyBgdGlja2V0c190b3BpY3NgIChgbWVtYmVyX2lkYCxgdG9waWNfdGl0bGVgLGBkYXRlYCxgYWRtaW5fcmVhZGAsYHVzZXJfcmVhZGApIFZBTFVFUyAoJyVkJywnJXMnLCclZCcsMCwxKSIsICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dywgJFlyc1RQZ3dTakpQc0tFRW9DcFhoaW53bE5jLCB0aW1lKCApICk7CiAgfQogIGVsc2UKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJJTlNFUlQgSU5UTyBgdGlja2V0c190b3BpY3NgIChgbWVtYmVyX2lkYCxgdG9waWNfdGl0bGVgLGBkYXRlYCxgYWRtaW5fcmVhZGAsYHVzZXJfcmVhZGApIFZBTFVFUyAoJyVkJywnJXMnLCclZCcsMSwwKSIsICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dywgJFlyc1RQZ3dTakpQc0tFRW9DcFhoaW53bE5jLCB0aW1lKCApICk7CiAgfQogIGlmICggJG1jREItPlVMRE5xcVRISnpObVhlWWVFSG1jbW9YZ1pkSGtjZnJqaFFsWSggKSA+IDAgKQogIHsKICAgICRQR0RPUGZsVWZPUWJMbG1sanJXVUtVdVNITnJZWWRiQlRteVkgPSAkbWNEQi0+bFpxaWNYQ2hRTnVFUHVtaEl1dHlPVlhrQXZ2eFFHcnppcHRkUkJRKCApOwogICAgaWYgKCAkb01ReVdNVHlkYUx1bm9yWnlOQnNjaEl5aHdsYVltYmZmR0N3VyA9PSAwICkKICAgIHsKICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiSU5TRVJUIElOVE8gYHRpY2tldHNfcG9zdGAgKGB0b3BpY19pZGAsYHBvc3RgLGBhZG1pbl9yZXBseWAsYGRhdGVgKSBWQUxVRVMoJyVkJywnJXMnLDAsJyVkJykiLCAkUEdET1BmbFVmT1FiTGxtbGpyV1VLVXVTSE5yWVlkYkJUbXlZLCAkb01IZ0VaVW9SVlp2bldSWEdtSUdybkdIblZKV0xhUWVRUWdZLCB0aW1lKCApICk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIklOU0VSVCBJTlRPIGB0aWNrZXRzX3Bvc3RgIChgdG9waWNfaWRgLGBwb3N0YCxgYWRtaW5fcmVwbHlgLGBkYXRlYCkgVkFMVUVTKCclZCcsJyVzJywxLCclZCcpIiwgJFBHRE9QZmxVZk9RYkxsbWxqcldVS1V1U0hOcllZZGJCVG15WSwgJG9NSGdFWlVvUlZadm5XUlhHbUlHcm5HSG5WSldMYVFlUVFnWSwgdGltZSggKSApOwogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gTGdWVWFta3NZUGdRZHNkVHlRVWNxaVhzdnd6VU5VeXl2UVBNQSAoICR4QVVIbGlmenNOTEJleG5Nd05QY2tiUWZhWVhlUXRLRVNEUEtJLCAkVW1oc21ucVlJdk9jenpIR0VhZlprVG9WYmlqVXJvRnpRVSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBzZXR0aW5nc2AgU0VUIGBzZXR0aW5nX3ZhbHVlYCA9ICclcycgV0hFUkUgYHNldHRpbmdfa2V5YCA9ICclcyciLCAkVW1oc21ucVlJdk9jenpIR0VhZlprVG9WYmlqVXJvRnpRVSwgJHhBVUhsaWZ6c05MQmV4bk13TlBja2JRZmFZWGVRdEtFU0RQS0kgKTsKICBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJHhBVUhsaWZ6c05MQmV4bk13TlBja2JRZmFZWGVRdEtFU0RQS0kgXSA9ICRVbWhzbW5xWUl2T2N6ekhHRWFmWmtUb1ZiaWpVcm9GelFVOwogIGlmICggJG1jREItPlVMRE5xcVRISnpObVhlWWVFSG1jbW9YZ1pkSGtjZnJqaFFsWSggKSA+IDAgKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIHNvRXNCaEJ4dkdnY2JGTXJ2UGVEUkVHSGJZR1d2UWZEaUhyR0NTICggJEhCemFQaEpiZUFnbGRmdHZXZU9Vc1dvUXVydFZnWHh1Z2ssICRvTUhnRVpVb1JWWnZuV1JYR21JR3JuR0huVkpXTGFRZVFRZ1ksICRWQ2NaZ3pyc0NSV3NDbkRkUk1CVVBSZ3ZNempjeGVMRCA9IDEgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRvTUhnRVpVb1JWWnZuV1JYR21JR3JuR0huVkpXTGFRZVFRZ1kgPSBtY0xpYjo6TVZtYWZ3Zm1qcXVmZXhwbkd6RWZPZnRsa1ZVVExYZEpjcW1WV1dFKCAkb01IZ0VaVW9SVlp2bldSWEdtSUdybkdIblZKV0xhUWVRUWdZICk7CiAgaWYgKCBlbXB0eSggJG9NSGdFWlVvUlZadm5XUlhHbUlHcm5HSG5WSldMYVFlUVFnWSApICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIklOU0VSVCBJTlRPIGB0aWNrZXRzX3Bvc3RgIChgdG9waWNfaWRgLGBwb3N0YCxgYWRtaW5fcmVwbHlgLGBkYXRlYCkgVkFMVUVTKCclZCcsJyVzJywnJWQnLCclZCcpIiwgJEhCemFQaEpiZUFnbGRmdHZXZU9Vc1dvUXVydFZnWHh1Z2ssICRvTUhnRVpVb1JWWnZuV1JYR21JR3JuR0huVkpXTGFRZVFRZ1ksICRWQ2NaZ3pyc0NSV3NDbkRkUk1CVVBSZ3ZNempjeGVMRCwgdGltZSggKSApOwogIGlmICggJFZDY1pnenJzQ1JXc0NuRGRSTUJVUFJndk16amN4ZUxEID09IDEgKQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlVQREFURSBgdGlja2V0c190b3BpY3NgIFNFVCBgdXNlcl9yZWFkYCA9IDAsYGFkbWluX3JlYWRgID0gMSBXSEVSRSBgaWRgID0gJyVkJyIsICRIQnphUGhKYmVBZ2xkZnR2V2VPVXNXb1F1cnRWZ1h4dWdrICk7CiAgfQogIGVsc2UKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJVUERBVEUgYHRpY2tldHNfdG9waWNzYCBTRVQgYHVzZXJfcmVhZGAgPSAxLGBhZG1pbl9yZWFkYCA9IDAgV0hFUkUgYGlkYCA9ICclZCciLCAkSEJ6YVBoSmJlQWdsZGZ0dldlT1VzV29RdXJ0VmdYeHVnayApOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIE5Sb21BYkFIckpkUWZPSkFvZ3BNWUN1Z1FuWGNIdVN5aEZFcHMgKCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTSApCnsKICBnbG9iYWwgJF9MQU5HOwogICRCRnBYd0dDb2hScExEREFYb2xnRkZvT0JyYlFyVGx2Tm5ndSA9ICIiOwogIGlmICggISBpc19hcnJheSggJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT00gKSApCiAgewogICAgcmV0dXJuICRCRnBYd0dDb2hScExEREFYb2xnRkZvT0JyYlFyVGx2Tm5ndTsKICB9CiAgaWYgKCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ2Jsb2NrZWQnIF0gPT0gMSApCiAgewogICAgJEJGcFh3R0NvaFJwTEREQVhvbGdGRm9PQnJiUXJUbHZObmd1ID0gIjxmb250IGNvbG9yPVwicmVkXCI+eyRfTEFOR1snQkxPQ0tFRCddfTwvZm9udD4iOwogIH0KICBlbHNlaWYgKCAhIGlzX251bGwoICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnZGF0ZV9lbmQnIF0gKSBhbmQgdGltZSggKSA+PSAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ2RhdGVfZW5kJyBdICkKICB7CiAgICAkQkZwWHdHQ29oUnBMRERBWG9sZ0ZGb09CcmJRclRsdk5uZ3UgPSAiPGZvbnQgY29sb3I9XCIjMDAwMEZGXCI+eyRfTEFOR1snRVhQSVJFRCddfTwvZm9udD4iOwogIH0KICBlbHNlaWYgKCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ2VuYWJsZScgXSA9PSAwICkKICB7CiAgICAkQkZwWHdHQ29oUnBMRERBWG9sZ0ZGb09CcmJRclRsdk5uZ3UgPSAiPGZvbnQgY29sb3I9XCJvcmFuZ2VcIj57JF9MQU5HWydESVNBQkxFRCddfTwvZm9udD4iOwogIH0KICBlbHNlCiAgewogICAgJEJGcFh3R0NvaFJwTEREQVhvbGdGRm9PQnJiUXJUbHZObmd1ID0gIjxmb250IGNvbG9yPVwiZ3JlZW5cIj57JF9MQU5HWydSVU5OSU5HJ119PC9mb250PiI7CiAgfQogIHJldHVybiAkQkZwWHdHQ29oUnBMRERBWG9sZ0ZGb09CcmJRclRsdk5uZ3U7Cn0KCmZ1bmN0aW9uIGJlYkVoRGl3SVZ1bGxNVVB6aEliR2xWVFJSaE5kRkkgKCAkY0tOUVN4YW9LdVNjTmZVS1haQ0VrZERTelFWbUlzck5hcGZ3ICkKewogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSAiIjsKICBzd2l0Y2ggKCAkY0tOUVN4YW9LdVNjTmZVS1haQ0VrZERTelFWbUlzck5hcGZ3ICkKICB7CiAgICBjYXNlICJQSFBfQklOIjoKICAgICAgaWYgKCBkZWZpbmVkKCAnUEhQX0JJTkRJUicgKSApCiAgICAgIHsKICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gUEhQX0JJTkRJUiAuICcvcGhwJzsKICAgICAgfQogICAgICBlbHNlaWYgKCBpc3NldCggJF9TRVJWRVJbICdQQVRIJyBdICkgKQogICAgICB7CiAgICAgICAgJERPVXJDSENYQmtvUEFudUtsUkJpYVZicFVpSVdobEZ4YlB3ekxFID0gZXhwbG9kZSggIjoiLCAkX1NFUlZFUlsgJ1BBVEgnIF0gKTsKICAgICAgICAkRE9VckNIQ1hCa29QQW51S2xSQmlhVmJwVWlJV2hsRnhiUHd6TEUgPSBhcnJheV9tYXAoICJ0cmltIiwgJERPVXJDSENYQmtvUEFudUtsUkJpYVZicFVpSVdobEZ4YlB3ekxFICk7CiAgICAgICAgZm9yZWFjaCAoICRET1VyQ0hDWEJrb1BBbnVLbFJCaWFWYnBVaUlXaGxGeGJQd3pMRSBhcyAkRlBvVk1MTFJCRHBqTUZGUU5mYWdNU3pTaFRtamd3S2FUTUZjayApCiAgICAgICAgewogICAgICAgICAgaWYgKCBmaWxlX2V4aXN0cyggJEZQb1ZNTExSQkRwak1GRlFOZmFnTVN6U2hUbWpnd0thVE1GY2sgLiAnL3BocCcgKSAmJiBpc19maWxlKCAkRlBvVk1MTFJCRHBqTUZGUU5mYWdNU3pTaFRtamd3S2FUTUZjayAuICcvcGhwJyApICkKICAgICAgICAgIHsKICAgICAgICAgICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9ICRGUG9WTUxMUkJEcGpNRkZRTmZhZ01TelNoVG1qZ3dLYVRNRmNrIC4gJy9waHAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZWlmICggZnVuY3Rpb25fZXhpc3RzKCAnc2hlbGxfZXhlYycgKSApCiAgICAgIHsKICAgICAgICAkd2NBZGdpQ0RtbEhXUXBCaWJ1Ymt6TVhrSFRXSlNCID0gdHJpbSggc2hlbGxfZXhlYyggIndoaWNoIHBocCIgKSApOwogICAgICAgIGlmICggZW1wdHkoICR3Y0FkZ2lDRG1sSFdRcEJpYnVia3pNWGtIVFdKU0IgKSApCiAgICAgICAgewogICAgICAgICAgJExxcmJhZXpqcXpXcmlwZHlFWmd4ck9QeWVodlJMVWRJSWFNID0gdHJpbSggc2hlbGxfZXhlYyggIndoZXJlaXMgcGhwIiApICk7CiAgICAgICAgICAkZVZBak9DVEh1d2Z2R1pvdEFQTXZRSWZxYVpJc1JCdFZVID0gZXhwbG9kZSggIiAiLCAkTHFyYmFlempxeldyaXBkeUVaZ3hyT1B5ZWh2UkxVZElJYU0gKTsKICAgICAgICAgIGlmICggY291bnQoICRlVkFqT0NUSHV3ZnZHWm90QVBNdlFJZnFhWklzUkJ0VlUgKSA9PSAxICkKICAgICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICAkd2NBZGdpQ0RtbEhXUXBCaWJ1Ymt6TVhrSFRXSlNCID0gJGVWQWpPQ1RIdXdmdkdab3RBUE12UUlmcWFaSXNSQnRWVVsgMSBdOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gJHdjQWRnaUNEbWxIV1FwQmlidWJrek1Ya0hUV0pTQjsKICAgICAgfQogICAgICBicmVhazsKICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIFdhUGJTR2V4VGRpa1dNcG9XYWJWdUdlcUtsZlp4RVhRRFVRICggJEVSS01MS1pLRFZKS2NJU0hsVGRQT0ZPR0tsSWdUYXJQcU5ZWSA9IGZhbHNlICkKewogIGdsb2JhbCAkbWNEQjsKICBpZiAoICRFUktNTEtaS0RWSktjSVNIbFRkUE9GT0dLbElnVGFyUHFOWVkgIT09IGZhbHNlICkKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJVUERBVEUgYGNyb25qb2JzYCBTRVQgYGVuYWJsZWRgID0gMCBXSEVSRSBgaWRgID0gJyVkJyIsICRFUktNTEtaS0RWSktjSVNIbFRkUE9GT0dLbElnVGFyUHFOWVkgKTsKICB9CiAgZWxzZQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlVQREFURSBgY3JvbmpvYnNgIFNFVCBgZW5hYmxlZGAgPSAwOyIgKTsKICB9CiAgUmptbmd6YUlJVFlSQmRQUWR0WGJjbEpFRWhGaGhuaExyU1BWTG8oICk7Cn0KCmZ1bmN0aW9uIHVDdnRJQVZ6UXdkR0FNS0xhYUpGWFZsT2JGUEFya3ZiUlJWWUdmYyAoICRFUktNTEtaS0RWSktjSVNIbFRkUE9GT0dLbElnVGFyUHFOWVkgPSBmYWxzZSApCnsKICBnbG9iYWwgJG1jREI7CiAgaWYgKCAkRVJLTUxLWktEVkpLY0lTSGxUZFBPRk9HS2xJZ1RhclBxTllZICE9PSBmYWxzZSApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBjcm9uam9ic2AgU0VUIGBlbmFibGVkYCA9IDEgV0hFUkUgYGlkYCA9ICclZCciLCAkRVJLTUxLWktEVkpLY0lTSGxUZFBPRk9HS2xJZ1RhclBxTllZICk7CiAgfQogIGVsc2UKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJVUERBVEUgYGNyb25qb2JzYCBTRVQgYGVuYWJsZWRgID0gMTsiICk7CiAgfQogIFJqbW5nemFJSVRZUkJkUFFkdFhiY2xKRUVoRmhobmhMclNQVkxvKCApOwp9CgpmdW5jdGlvbiBOZ2VZc1FtSEJzRkJmRmNaTGJ5RlloRHJZVHZtSHNVdXF5Tm5ZRSAoICRFUktNTEtaS0RWSktjSVNIbFRkUE9GT0dLbElnVGFyUHFOWVkgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgZW5hYmxlZGAgRlJPTSBgY3JvbmpvYnNgIFdIRVJFIGBpZGAgPSAnJWQnIiwgJEVSS01MS1pLRFZKS2NJU0hsVGRQT0ZPR0tsSWdUYXJQcU5ZWSApOwogIHJldHVybiAoJG1jREItPml5Y2pkRHZTb3FnTGt5Sk5rbnNmU3Fuc1JweXNBdUdqdkNBSmsoICkgPT0gMSkgPyB0cnVlIDogZmFsc2U7Cn0KCmZ1bmN0aW9uIE1KaVZIblhTUUZqTUR6SUJva1R1UWNZdWVXR1dVenRMUXpvekVBICggKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgZW5hYmxlZGAgRlJPTSBgY3JvbmpvYnNgIFdIRVJFIGBpZGAgPSAxIiApOwogICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gPSBpbnR2YWwoICRtY0RCLT5peWNqZER2U29xZ0xreUpOa25zZlNxbnNScHlzQXVHanZDQUprKCApICk7CiAgcmV0dXJuICgkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NID4gMCkgPyB0cnVlIDogZmFsc2U7Cn0KCmZ1bmN0aW9uIFJqbW5nemFJSVRZUkJkUFFkdFhiY2xKRUVoRmhobmhMclNQVkxvICggKQp7CiAgZ2xvYmFsICRtY0RCOwogIGlmICggISBmdW5jdGlvbl9leGlzdHMoICdzaGVsbF9leGVjJyApICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYGNyb25qb2JzYCBXSEVSRSBgZW5hYmxlZGAgPSAxIiApOwogICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogICRCcXBMUkVlT2x6RkJzeENFeXRhVURIa3FHaGpEeFFPbyA9IGFycmF5KCk7CiAgJHdjQWRnaUNEbWxIV1FwQmlidWJrek1Ya0hUV0pTQiA9IGJlYkVoRGl3SVZ1bGxNVVB6aEliR2xWVFJSaE5kRkkoICdQSFBfQklOJyApOwogIGZvcmVhY2ggKCAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCBhcyAkWnR0T1FzTWNOU2lxRklPQ2Z6RWNiQmVqWEZlem8gKQogIHsKICAgICRmV0ZJb09lTFJaSGFuR3BnZXB2c3liWHJjcnJ6VnNGelRlbFdjID0gTVVMVElDU19ST09UX1BBVEggLiAkWnR0T1FzTWNOU2lxRklPQ2Z6RWNiQmVqWEZlem9bICdmaWxlbmFtZScgXTsKICAgICRCcXBMUkVlT2x6RkJzeENFeXRhVURIa3FHaGpEeFFPb1sgXSA9ICIqL3skWnR0T1FzTWNOU2lxRklPQ2Z6RWNiQmVqWEZlem9bJ3J1bl9wZXJfbWlucyddfSAqICogKiAqICR3Y0FkZ2lDRG1sSFdRcEJpYnVia3pNWGtIVFdKU0IgIiAuICRmV0ZJb09lTFJaSGFuR3BnZXB2c3liWHJjcnJ6VnNGelRlbFdjIC4gIiAjeyRadHRPUXNNY05TaXFGSU9DZnpFY2JCZWpYRmV6b1snZGVzY3JpcHRpb24nXX0iOwogIH0KICAkRlNucnV2TGJCRHNVcVpqSVBYc2VVRE9WUElGYkFtbkp3ID0gdHJpbSggc2hlbGxfZXhlYyggImNyb250YWIgLWwiICkgKTsKICBpZiAoICEgZW1wdHkoICRGU25ydXZMYkJEc1VxWmpJUFhzZVVET1ZQSUZiQW1uSncgKSApCiAgewogICAgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwID0gZXhwbG9kZSggIlxuIiwgJEZTbnJ1dkxiQkRzVXFaaklQWHNlVURPVlBJRmJBbW5KdyApOwogICAgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwID0gYXJyYXlfbWFwKCAidHJpbSIsICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCApOwogICAgJGVoTHJNaklvZVdQRUR2Y2RZQ2tuT1dwbGd2clpIWFRYQSA9IGNvdW50KCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgKTsKICAgIGZvciAoICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJID0gMDsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgPCAkZWhMck1qSW9lV1BFRHZjZFlDa25PV3BsZ3ZyWkhYVFhBOyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSsrICkKICAgIHsKICAgICAgaWYgKCBzdHJpcG9zKCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF0sIE1VTFRJQ1NfUk9PVF9QQVRIICkgKQogICAgICB7CiAgICAgICAgdW5zZXQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSApOwogICAgICB9CiAgICB9CiAgICBmb3JlYWNoICggJEJxcExSRWVPbHpGQnN4Q0V5dGFVREhrcUdoakR4UU9vIGFzICRzamtab2dSQXh2WW90Zk91ck1iUnlJUm5TZUVybkNodGN6UmxhbyApCiAgICB7CiAgICAgIGFycmF5X3B1c2goICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCwgJHNqa1pvZ1JBeHZZb3RmT3VyTWJSeUlSblNlRXJuQ2h0Y3pSbGFvICk7CiAgICB9CiAgfQogIGVsc2UKICB7CiAgICAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgPSAkQnFwTFJFZU9sekZCc3hDRXl0YVVESGtxR2hqRHhRT287CiAgfQogIHNoZWxsX2V4ZWMoICJjcm9udGFiIC1yIiApOwogICRja0ZmR0FGelhydWZyTnB0SG10ZURoWHBaUUxTaHpyUWlQeG9JID0gdGVtcG5hbSggIi90bXAiLCAiY3JvbnRhYiIgKTsKICAkV3NRelRWaWV1Wm5CbnJBZ2hJUXJMeW5VbE9rbGZjaERETUsgPSBmb3BlbiggJGNrRmZHQUZ6WHJ1ZnJOcHRIbXRlRGhYcFpRTFNoenJRaVB4b0ksICJ3IiApOwogIGZ3cml0ZSggJFdzUXpUVmlldVpuQm5yQWdoSVFyTHluVWxPa2xmY2hERE1LLCBpbXBsb2RlKCAiXHJcbiIsICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCApIC4gIlxyXG4iICk7CiAgZmNsb3NlKCAkV3NRelRWaWV1Wm5CbnJBZ2hJUXJMeW5VbE9rbGZjaERETUsgKTsKICBzaGVsbF9leGVjKCAiY3JvbnRhYiAkY2tGZkdBRnpYcnVmck5wdEhtdGVEaFhwWlFMU2h6clFpUHhvSSIgKTsKICBAdW5saW5rKCAkY2tGZkdBRnpYcnVmck5wdEhtdGVEaFhwWlFMU2h6clFpUHhvSSApOwp9CgpmdW5jdGlvbiB1dG1BYWp0SHh1S3laRUNYeXR5eHFiaW1zV3J1c0Z5R3VwY1F4RSAoICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NLCAkcFhEcmx3Vlh3dXhBemxwU2hlZnNOY1NJYURNQmpQID0gZmFsc2UgKQp7CiAgZ2xvYmFsICRtY0RCOwogIHN3aXRjaCAoICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NICkKICB7CiAgICBjYXNlICJ1c2VyIjoKICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBpZGAgRlJPTSBgdGlja2V0c190b3BpY3NgIFdIRVJFIGB1c2VyX3JlYWRgID0gMCBBTkQgYG1lbWJlcl9pZGAgPSAnJWQnIiwgJHBYRHJsd1ZYd3V4QXpscFNoZWZzTmNTSWFETUJqUCApOwogICAgICBicmVhazsKICAgIGNhc2UgImFkbWluIjoKICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBpZGAgRlJPTSBgdGlja2V0c190b3BpY3NgIFdIRVJFIGBhZG1pbl9yZWFkYCA9IDAiICk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBpZGAgRlJPTSBgdGlja2V0c190b3BpY3NgIFdIRVJFIGBhZG1pbl9yZWFkYCA9IDAiICk7CiAgfQogICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApOwogIHJldHVybiAoJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wpOwp9CgpmdW5jdGlvbiBDdUNTeHloSU5jVUtHdEZ2UU1qc1lwcHBsUk52U3p0UklWbGMgKCAkWEpyV3d6Q3VIc01XYnNkdlF3dEdOaEhRTmVDZHpNRHcsICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgKQp7CiAgZ2xvYmFsICRtY0RCOwogIGlmICggaXNfYXJyYXkoICRYSnJXd3pDdUhzTVdic2R2UXd0R05oSFFOZUNkek1EdyApICkKICB7CiAgICAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnUgPSAkWEpyV3d6Q3VIc01XYnNkdlF3dEdOaEhRTmVDZHpNRHc7CiAgICAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgPSAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnVbICdpZCcgXTsKICB9CiAgZWxzZQogIHsKICAgICRVaGRrcW5UUW5Fb3lmQldld0xFaGRmV2Z3T1Z4eG9md0xKdSA9IG9ZQ3hqY3JNR1hNUnhxZHhOV2Jua2ZHdmFtSmp6aEVKVFkoICRYSnJXd3pDdUhzTVdic2R2UXd0R05oSFFOZUNkek1EdyApOwogIH0KICAka21GQWxjZ21YRlBSZFVKZmRDRG9nZnpXQ2h4VWNUZWJ5bGcgPSBnaVZpaGNJQXBsRERoV1ZmYXBaWGtkb3BreGpYTnRVTFkoICRVaGRrcW5UUW5Fb3lmQldld0xFaGRmV2Z3T1Z4eG9md0xKdVsgJ2RvbWFpbicgXSwgJFVoZGtxblRRbkVveWZCV2V3TEVoZGZXZndPVnh4b2Z3TEp1WyAncG9ydCcgXSwgJFVoZGtxblRRbkVveWZCV2V3TEVoZGZXZndPVnh4b2Z3TEp1WyAndXNlcm5hbWUnIF0sICRVaGRrcW5UUW5Fb3lmQldld0xFaGRmV2Z3T1Z4eG9md0xKdVsgJ3Bhc3N3b3JkJyBdLCAnZWRpdG9yJywgMSwgYXJyYXkoICJ0ZXh0ZWRpdCIgPT4gJExmTWZwT0VOSGxvRXRWa09YUHpNa1FIYmVUWW5mbVdWUSApICk7CiAgaWYgKCAhICRrbUZBbGNnbVhGUFJkVUpmZENEb2dmeldDaHhVY1RlYnlsZyApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gZE5pVlhzWkJ2SkllSEJNaFFGcGRWbGFsbU5CWEN5a3lUICggJEZQb1ZNTExSQkRwak1GRlFOZmFnTVN6U2hUbWpnd0thVE1GY2sgKQp7CiAgJFFERE9qWlhJRFZ6VUJ0alJoR3VQUElvY1hxdE9Ba2JrdW9VID0gc2NhbmRpciggJEZQb1ZNTExSQkRwak1GRlFOZmFnTVN6U2hUbWpnd0thVE1GY2sgKTsKICAkT3lmdnNMV0h1RENzVm50ZlNYVkl0TWxObXJueGVBemd5ayA9IGFycmF5KCk7CiAgJHB4YmJYVlRWd2psWndMZFFSeW9ZZEVVUmRZUE1aV2hEYmprdHkgPSBjb3VudCggJFFERE9qWlhJRFZ6VUJ0alJoR3VQUElvY1hxdE9Ba2JrdW9VICk7CiAgZm9yICggJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgPSAwOyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSA8ICRweGJiWFZUVndqbFp3TGRRUnlvWWRFVVJkWVBNWldoRGJqa3R5OyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSsrICkKICB7CiAgICBpZiAoICRRRERPalpYSURWelVCdGpSaEd1UFBJb2NYcXRPQWtia3VvVVsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSAhPSAiLiIgJiYgJFFERE9qWlhJRFZ6VUJ0alJoR3VQUElvY1hxdE9Ba2JrdW9VWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdICE9ICIuLiIgKQogICAgewogICAgICBpZiAoIGlzX2RpciggJEZQb1ZNTExSQkRwak1GRlFOZmFnTVN6U2hUbWpnd0thVE1GY2sgLiAiLyIgLiAkUURET2paWElEVnpVQnRqUmhHdVBQSW9jWHF0T0FrYmt1b1VbICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF0gKSApCiAgICAgIHsKICAgICAgICAkT3lmdnNMV0h1RENzVm50ZlNYVkl0TWxObXJueGVBemd5ayA9IGFycmF5X21lcmdlKCAkT3lmdnNMV0h1RENzVm50ZlNYVkl0TWxObXJueGVBemd5aywgZE5pVlhzWkJ2SkllSEJNaFFGcGRWbGFsbU5CWEN5a3lUKCAkRlBvVk1MTFJCRHBqTUZGUU5mYWdNU3pTaFRtamd3S2FUTUZjayAuICIvIiAuICRRRERPalpYSURWelVCdGpSaEd1UFBJb2NYcXRPQWtia3VvVVsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSApICk7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJE95ZnZzTFdIdURDc1ZudGZTWFZJdE1sTm1ybnhlQXpneWtbIF0gPSAkRlBvVk1MTFJCRHBqTUZGUU5mYWdNU3pTaFRtamd3S2FUTUZjayAuICIvIiAuICRRRERPalpYSURWelVCdGpSaEd1UFBJb2NYcXRPQWtia3VvVVsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gKCRPeWZ2c0xXSHVEQ3NWbnRmU1hWSXRNbE5tcm54ZUF6Z3lrKTsKfQoKZnVuY3Rpb24gakVWbGFwYnFmZ2x5Q3hsSWpuZklSU1BGc1BpeEFwZWRyS3lvICggJFhKcld3ekN1SHNNV2JzZHZRd3RHTmhIUU5lQ2R6TUR3ICkKewogIGlmICggaXNfYXJyYXkoICRYSnJXd3pDdUhzTVdic2R2UXd0R05oSFFOZUNkek1EdyApICkKICB7CiAgICAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnUgPSAkWEpyV3d6Q3VIc01XYnNkdlF3dEdOaEhRTmVDZHpNRHc7CiAgICAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgPSAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnVbICdpZCcgXTsKICB9CiAgZWxzZQogIHsKICAgICRVaGRrcW5UUW5Fb3lmQldld0xFaGRmV2Z3T1Z4eG9md0xKdSA9IG9ZQ3hqY3JNR1hNUnhxZHhOV2Jua2ZHdmFtSmp6aEVKVFkoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogIH0KICAkcFhyek9LUVBYTXBaem5uaENRSGtmb0R6eERJSkdlUnMgPSBhcnJheSggIm1nY2FtZCIgPT4gIm1nY2FtZD9pZD0wJmxpc3Q9Y29ubmVjdGVkIiwgImNjY2FtIiA9PiAiY2NjYW0/aWQ9MCZsaXN0PWNvbm5lY3RlZCIsICJuZXdjYW1kIiA9PiAibmV3Y2FtZD9waWQ9MCZsaXN0PWNvbm5lY3RlZCIgKTsKICAkUFlwek9tR1ppZE1lV1V4bE5URFZrTHVZVUtCUW5UQWhEdWpCQk9rID0gYXJyYXkoICJtZ2NhbWQiID0+ICIvPGEgaHJlZj0nXC9tZ2NhbWRjbGllbnRcP2lkPSguKj8pJz4oLio/KTxicj4oLio/KTxcL2E+KC4qPyk8dGQ+VG90YWwgWmFwcGluZzogKC4qPyk8XC90ZD4oLio/KTxzcGFuIHN0eWxlPSdmbG9hdDpyaWdodDsnPi9zIiwgImNjY2FtIiA9PiAiLzxhIGhyZWY9J1wvY2NjYW1jbGllbnRcP2lkPSguKj8pJz4oLio/KTxicj4oLio/KTxcL2E+KC4qPyk8dGQ+VG90YWwgWmFwcGluZzogKC4qPyk8XC90ZD4oLio/KTxzcGFuIHN0eWxlPSdmbG9hdDpyaWdodDsnPi9zIiwgIm5ld2NhbWQiID0+ICIvPHRkPjxhIGhyZWY9J1wvbmV3Y2FtZGNsaWVudFw/aWQ9KC4qPyknPiguKj8pPFwvYT48XC90ZD4oLio/KTx0ZD5Ub3RhbCBaYXBwaW5nOiAoLio/KTxcL3RkPiguKj8pPHNwYW4gc3R5bGU9J2Zsb2F0OnJpZ2h0Oyc+L3MiICk7CiAgJFJKV2NFa0ttWk5OYkZhTnl1ZlBPQkJqd2hlb3JSWHNNUFhxSWFRSSA9IGxGTWhNTUJHR3RHUFVkaWpKb3BJR2RtUlN1RFlJdHFNSklIRVUoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5KCk7CiAgZm9yZWFjaCAoICRSSldjRWtLbVpOTmJGYU55dWZQT0JCandoZW9yUlhzTVBYcUlhUUkgYXMgJHREd3RMT0hpRVpSTEphWnlGUUZweEJyeVJ3a0RoWURWYUxrcU5vYmRnICkKICB7CiAgICAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICR0RHd0TE9IaUVaUkxKYVp5RlFGcHhCcnlSd2tEaFlEVmFMa3FOb2JkZ1sgJ3VzZXJuYW1lJyBdIF0gPSAkdER3dExPSGlFWlJMSmFaeUZRRnB4QnJ5UndrRGhZRFZhTGtxTm9iZGc7CiAgfQogICRGS2FaVlNIWlJDeExkTUF0YnlGSXVmWFZieEpESFpUVm1VQlVnSSA9IGFycmF5KCk7CiAgJEx1bWZVZ1pXRmxKa2ZPZm1kZFRiREtRTEtoWmVwVGJuQ25VSXVzID0gYXJyYXkoKTsKICBmb3JlYWNoICggJHBYcnpPS1FQWE1wWnpubmhDUUhrZm9EenhESUpHZVJzIGFzICR6V1RhU2xmQUdRdkVpRExsV2xpVWN6alFqRk5FUE9yS2xRID0+ICRKZ3dQeUpnSlJyUVJQWURBcmV3TWVqSnVzSXdzaUpqbXdsQW9hVSApCiAgewogICAgJFhjbWpPY09ESmpvWmZwWkJGYXpDZ2dJYmVDSEloQmN5aUpYID0gZ2lWaWhjSUFwbEREaFdWZmFwWlhrZG9wa3hqWE50VUxZKCAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnVbICdkb21haW4nIF0sICRVaGRrcW5UUW5Fb3lmQldld0xFaGRmV2Z3T1Z4eG9md0xKdVsgJ3BvcnQnIF0sICRVaGRrcW5UUW5Fb3lmQldld0xFaGRmV2Z3T1Z4eG9md0xKdVsgJ3VzZXJuYW1lJyBdLCAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnVbICdwYXNzd29yZCcgXSwgJEpnd1B5SmdKUnJRUlBZREFyZXdNZWpKdXNJd3NpSmptd2xBb2FVICk7CiAgICAkTHVtZlVnWldGbEprZk9mbWRkVGJES1FMS2haZXBUYm5DblVJdXNbICR6V1RhU2xmQUdRdkVpRExsV2xpVWN6alFqRk5FUE9yS2xRIF0gPSAkWGNtak9jT0RKam9aZnBaQkZhekNnZ0liZUNISWhCY3lpSlg7CiAgfQogIGlmICggISBlbXB0eSggJEx1bWZVZ1pXRmxKa2ZPZm1kZFRiREtRTEtoWmVwVGJuQ25VSXVzICkgKQogIHsKICAgIGZvcmVhY2ggKCAkTHVtZlVnWldGbEprZk9mbWRkVGJES1FMS2haZXBUYm5DblVJdXMgYXMgJHpXVGFTbGZBR1F2RWlETGxXbGlVY3pqUWpGTkVQT3JLbFEgPT4gJFhjbWpPY09ESmpvWmZwWkJGYXpDZ2dJYmVDSEloQmN5aUpYICkKICAgIHsKICAgICAgaWYgKCBwcmVnX21hdGNoX2FsbCggJFBZcHpPbUdaaWRNZVdVeGxOVERWa0x1WVVLQlFuVEFoRHVqQkJPa1sgJHpXVGFTbGZBR1F2RWlETGxXbGlVY3pqUWpGTkVQT3JLbFEgXSwgJFhjbWpPY09ESmpvWmZwWkJGYXpDZ2dJYmVDSEloQmN5aUpYLCAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNICkgKQogICAgICB7CiAgICAgICAgZm9yICggJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgPSAwOyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSA8IGNvdW50KCAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNWyAxIF0gKTsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkrKyApCiAgICAgICAgewogICAgICAgICAgaWYgKCBpc3NldCggJEZLYVpWU0haUkN4TGRNQXRieUZJdWZYVmJ4SkRIWlRWbVVCVWdJWyAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICRRUHBiQUtoZ0ZCeGRob0tEVUFib3hkQ1Fnb3VxVmJRckZkRE1bIDIgXVsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSBdWyAnaWQnIF0gXSApIGFuZCAkRkthWlZTSFpSQ3hMZE1BdGJ5Rkl1ZlhWYnhKREhaVFZtVUJVZ0lbICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMiBdWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdIF1bICdpZCcgXSBdWyAnb25saW5lJyBdID09IDEgKQogICAgICAgICAgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICggJHpXVGFTbGZBR1F2RWlETGxXbGlVY3pqUWpGTkVQT3JLbFEgIT0gIm5ld2NhbWQiICkKICAgICAgICAgIHsKICAgICAgICAgICAgJGhUQk5QYnhieEVrV01wTVZBb1hZZENUR3JwSVdSaXZJektrID0gdHJpbSggc3RyaXBfdGFncyggJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgNiBdWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdICkgKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgJGhUQk5QYnhieEVrV01wTVZBb1hZZENUR3JwSVdSaXZJektrID0gdHJpbSggc3RyaXBfdGFncyggJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgNSBdWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdICkgKTsKICAgICAgICAgIH0KICAgICAgICAgICRlalludlFyeUFFT0hKaEt2bGVTaU1LZmxacUJKS3JzZnV2eUVVID0gdHJpbSggc3Vic3RyKCAkaFRCTlBieGJ4RWtXTXBNVkFvWFlkQ1RHcnBJV1Jpdkl6S2ssIC0gMiApICk7CiAgICAgICAgICBpZiAoICRlalludlFyeUFFT0hKaEt2bGVTaU1LZmxacUJKS3JzZnV2eUVVID09ICdPSycgfHwgJGVqWW52UXJ5QUVPSEpoS3ZsZVNpTUtmbFpxQkpLcnNmdXZ5RVUgPT0gJ21zJyB8fCAkZWpZbnZRcnlBRU9ISmhLdmxlU2lNS2ZsWnFCSktyc2Z1dnlFVSA9PSAiIiApCiAgICAgICAgICB7CiAgICAgICAgICAgICRoVEJOUGJ4YnhFa1dNcE1WQW9YWWRDVEdycElXUml2SXpLayA9IDI7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICRoVEJOUGJ4YnhFa1dNcE1WQW9YWWRDVEdycElXUml2SXpLayA9IDE7CiAgICAgICAgICB9CiAgICAgICAgICAkRkthWlZTSFpSQ3hMZE1BdGJ5Rkl1ZlhWYnhKREhaVFZtVUJVZ0lbICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMiBdWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdIF1bICdpZCcgXSBdID0gYXJyYXkoICJtdWx0aWNzX2lkIiA9PiAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNWyAxIF1bICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF0sICJsaW5lX2luZm8iID0+ICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMiBdWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdIF0sICJ6YXBzIiA9PiAoJHpXVGFTbGZBR1F2RWlETGxXbGlVY3pqUWpGTkVQT3JLbFEgIT0gIm5ld2NhbWQiKSA/ICRRUHBiQUtoZ0ZCeGRob0tEVUFib3hkQ1Fnb3VxVmJRckZkRE1bIDUgXVsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSA6ICRRUHBiQUtoZ0ZCeGRob0tEVUFib3hkQ1Fnb3VxVmJRckZkRE1bIDQgXVsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSwgImVtdWxhdG9yIiA9PiAkeldUYVNsZkFHUXZFaURMbFdsaVVjempRakZORVBPcktsUSwgIm9ubGluZSIgPT4gJGhUQk5QYnhieEVrV01wTVZBb1hZZENUR3JwSVdSaXZJektrICk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJldHVybiAkRkthWlZTSFpSQ3hMZE1BdGJ5Rkl1ZlhWYnhKREhaVFZtVUJVZ0k7Cn0KCmZ1bmN0aW9uIGVFTW5na2phbFRzUk1FT1lEQlh6eEZPTlh1SmN1cGNQeWVRUiAoICRGS2FaVlNIWlJDeExkTUF0YnlGSXVmWFZieEpESFpUVm1VQlVnSSwgJFdwRmlBYVdreExUdmFzcWpiYXJySW14RUV6VnRTVEUsICRvUmpCbUlpZmtjcEhGUk1FTlRnSXpnTnB3WktDUVlVLCAkVXhPWm51Q1JtUkFhelNLV0V0TWV5ZVRvcWdLcVVWRk9nICkKewogIGlmICggISBpc19hcnJheSggJEZLYVpWU0haUkN4TGRNQXRieUZJdWZYVmJ4SkRIWlRWbVVCVWdJICkgKQogIHsKICAgIHJldHVybiAwOwogIH0KICBmb3JlYWNoICggJEZLYVpWU0haUkN4TGRNQXRieUZJdWZYVmJ4SkRIWlRWbVVCVWdJIGFzICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NICkKICB7CiAgICBpZiAoICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NWyAkV3BGaUFhV2t4TFR2YXNxamJhcnJJbXhFRXpWdFNURSBdID09PSAkb1JqQm1JaWZrY3BIRlJNRU5UZ0l6Z05wd1pLQ1FZVSApCiAgICB7CiAgICAgIGlmICggaXNfYXJyYXkoICRVeE9abnVDUm1SQWF6U0tXRXRNZXllVG9xZ0txVVZGT2cgKSApCiAgICAgIHsKICAgICAgICAkU2JhUU5FcktmRHhvd2RJdUZjUFBZd0NoZHZ6YmVUTERhaHdWUXRvID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICggJFV4T1pudUNSbVJBYXpTS1dFdE1leWVUb3FnS3FVVkZPZyBhcyAkWE9sekR5d3BPY2lYQVVTSWpoQmRWYlBjdEVlWENDRk9mRXcgKQogICAgICAgIHsKICAgICAgICAgIGlmICggYXJyYXlfa2V5X2V4aXN0cyggJFhPbHpEeXdwT2NpWEFVU0lqaEJkVmJQY3RFZVhDQ0ZPZkV3LCAkckt0amp5dGdSa0ZDWnZzWUNiaXVYeXdOTGVqWVZQbGhOTSApICkKICAgICAgICAgIHsKICAgICAgICAgICAgJFNiYVFORXJLZkR4b3dkSXVGY1BQWXdDaGR2emJlVExEYWh3VlF0b1sgXSA9ICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NWyAkWE9sekR5d3BPY2lYQVVTSWpoQmRWYlBjdEVlWENDRk9mRXcgXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRTYmFRTkVyS2ZEeG93ZEl1RmNQUFl3Q2hkdnpiZVRMRGFod1ZRdG87CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NWyAkVXhPWm51Q1JtUkFhelNLV0V0TWV5ZVRvcWdLcVVWRk9nIF07CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIDA7Cn0KCgoJZnVuY3Rpb24gdXJsX3Jlc3VsdCgkdXJsLCAkdXNlciwgJHBhc3MpIHsKICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgJHVzZXJBZ2VudCA9ICdNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMS4yKSBHZWNrby8yMDA5MDcyOSBGaXJlZm94LzMuNS4yIEdUQjUnOwoKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyQWdlbnQpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAzMCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQVVUT1JFRkVSRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDMwKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0FOWSk7CgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgICAgIGFycmF5KCdDb250ZW50LVR5cGU6IHRleHQveG1sJykpOyAKCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAkdXNlciAuICI6IiAuICRwYXNzKTsKCiAgICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOwoKCSAgIAoJCgkvKgoJCiAgICBpZiAoY3VybF9lcnJubygkY2gpPiAwKXsKICAgICAgICBkaWUoJ1RoZXJlIHdhcyBhIGNVUkwgZXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRjaCkpOwogICAgfSBlbHNlIHsKICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CiovCgoKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKCmZ1bmN0aW9uIGdldF9iZXR3ZWVuKCRjb250ZW50LCAkc3RhcnQsICRlbmQpewoJJHIgPSBleHBsb2RlKCRzdGFydCwgJGNvbnRlbnQpOwoJaWYgKGlzc2V0KCRyWzFdKSl7CgkJJHIgPSBleHBsb2RlKCRlbmQsICRyWzFdKTsKCQlyZXR1cm4gJHJbMF07Cgl9CglyZXR1cm4gJyc7Cn0KCgpmdW5jdGlvbiB1cmxfY2hlY2soJHVybCwgJHVzZXIsICRwYXNzKQp7CiAgICAJJGNoID0gY3VybF9pbml0KCk7CiAgICAJJHVzZXJBZ2VudCA9ICdNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMS4yKSBHZWNrby8yMDA5MDcyOSBGaXJlZm94LzMuNS4yIEdUQjUnOwoKICAgIAljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlckFnZW50KTsKICAgIAljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIAljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOwogICAgCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9BVVRPUkVGRVJFUiwgdHJ1ZSk7CiAgICAJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDMwKTsKICAgIAljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOwogICAgCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKICAgIAkvL2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDEpOwogICAgCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAkdXNlciAuICI6IiAuICRwYXNzKTsKCiAgICAJJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKCSRpbmZvID0gY3VybF9nZXRpbmZvKCRjaCk7CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwoKCWlmIChlbXB0eSgkaW5mb1snaHR0cF9jb2RlJ10pKSB7CiAgICAgICAgCSRkYXRhMz0iZXJyb3IiOwogICAgCX0gZWxzZSB7CiAgICAgICAgCS8vIGxvYWQgdGhlIEhUVFAgY29kZXMKICAgICAgICAJJGRhdGEzPSRpbmZvWydodHRwX2NvZGUnXTsKCX0KCS8vZWNobyAkZGF0YTM7CiAgICAJcmV0dXJuICRkYXRhMzsKfQoKCmZ1bmN0aW9uIERMQ3V2T0lkdkRSeFpqYlJrbWFPQmVFdEZ2SXBrdVFHTSAoICR4VnNkWExmWVZMZ0VXeVRseEpwR2dUeEtMUVVGWEJ6UkNVLCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgKQp7CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9IGFycmF5KCk7CiAgZm9yZWFjaCAoICR4VnNkWExmWVZMZ0VXeVRseEpwR2dUeEtMUVVGWEJ6UkNVIGFzICR2c29VbldBeFlJZXlmaHBrbFV6YlJuc3FUUlVyek9uUHBBY3lVICkKICB7CiAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyBdID0gJHZzb1VuV0F4WUlleWZocGtsVXpiUm5zcVRSVXJ6T25QcEFjeVVbICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyBdOwogIH0KICByZXR1cm4gJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSDsKfQoKZnVuY3Rpb24gTVh4YXhBYVV1aXpmSlRXbVpzaGFOQmJJUENweHZvICggJHJYSkhUVENKb1R6RmtmenVFd2tTYmNjdG9qVk1vY0JUYnNBYywgJGRYbVFNcERKSEpWVHBrTlBLYXduWEJaeUpubU5EU0R1ID0gJ3VzZXInICkKewogIGdsb2JhbCAkbWNEQiwgJG1jTWVtYmVyOwogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSBhcnJheSgpOwogIGlmICggISBpc19hcnJheSggJHJYSkhUVENKb1R6RmtmenVFd2tTYmNjdG9qVk1vY0JUYnNBYyApICkKICB7CiAgICByZXR1cm4gJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSDsKICB9CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIHQxLiosdDIuYG1hc3Rlcl9zZXJ2ZXJfaWRgIGFzIGBtYXN0ZXJfc2VydmVyX2lkYCx0Mi5gZG9tYWluX25hbWVgIEFTIGRvbWFpbl9uYW1lLCB0Mi5gZGVzY3JpcHRpb25gIEFTIGRlc2NyaXB0aW9uLCB0Mi5gcG9ydGAgQVMgcG9ydCwgdDMuZW11bGF0b3JfbmFtZSBBUyBlbXVsYXRvcl9uYW1lLHQzLmlkIGFzIGVtdWxhdG9yX2lkIEZST00gYGxpbmVzYCB0MSwgYG11bHRpY3Nfc2VydmVyc2AgdDIsIGBlbXVsYXRvcnNgIHQzIFdIRVJFIHQyLmVtdWxhdG9yX2lkID0gdDMuaWQgQU5EIHQxLnNlcnZlcl9pZCA9IHQyLmlkIEFORCB0MS5gaWRgIElOICgiIC4gaW1wbG9kZSggIiwiLCAkclhKSFRUQ0pvVHpGa2Z6dUV3a1NiY2N0b2pWTW9jQlRic0FjICkgLiAiKSIgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA9PSAwICkKICB7CiAgICByZXR1cm4gYXJyYXkoKTsKICB9CiAgJHZFcHFZdWhTdUVETGNuZG5TVm5Ja29EblpNTlVqSmxxZk4gPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgJENKbW91RXR1T014SUFHZ0xUcHdVREd5enFNR2FBRWRqU3hzID0gdXB6cFVRRFN2Ym12SVFyQWl5SFBnSVVJWmlHZUpNenhZKCApOwogIGlmICggJGRYbVFNcERKSEpWVHBrTlBLYXduWEJaeUpubU5EU0R1ID09ICd1c2VyJyApCiAgewogICAgZm9yZWFjaCAoICR2RXBxWXVoU3VFRExjbmRuU1ZuSWtvRG5aTU5VakpscWZOIGFzICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NICkKICAgIHsKICAgICAgaWYgKCAhIGlzc2V0KCAkVFRxbW1BZ0FCQk1EUEtTWk9FTEVyWUNYQnd4eU10RldHcXRya1sgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdtYXN0ZXJfc2VydmVyX2lkJyBdIF0gKSApCiAgICAgIHsKICAgICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGNvbmZpZ192YWx1ZWAgRlJPTSBgbXVsdGljc19jb25maWdfdmFyc2AgV0hFUkUgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyBBTkQgYGNvbmZpZ192YWx1ZV9uYW1lYCA9ICclcyciLCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ21hc3Rlcl9zZXJ2ZXJfaWQnIF0sICdNR0NBTUQgS0VZJyApOwogICAgICAgIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgICAgICAgewogICAgICAgICAgJFRUcW1tQWdBQkJNRFBLU1pPRUxFcllDWEJ3eHlNdEZXR3F0cmtbICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnbWFzdGVyX3NlcnZlcl9pZCcgXSBdID0gJG1jREItPml5Y2pkRHZTb3FnTGt5Sk5rbnNmU3Fuc1JweXNBdUdqdkNBSmsoICk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAkVFRxbW1BZ0FCQk1EUEtTWk9FTEVyWUNYQnd4eU10RldHcXRya1sgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdtYXN0ZXJfc2VydmVyX2lkJyBdIF0gPSAiMDEgMDIgMDMgMDQgMDUgMDYgMDcgMDggMDkgMTAgMTEgMTIgMTMgMTQiOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoICEgaXNzZXQoICRSUXFvalhXQVFhcVlZcldVVm9MRXhNQ1prWyAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ21hc3Rlcl9zZXJ2ZXJfaWQnIF0gXSApICkKICAgICAgewogICAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgY29uZmlnX3ZhbHVlYCBGUk9NIGBtdWx0aWNzX2NvbmZpZ192YXJzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIEFORCBgY29uZmlnX3ZhbHVlX25hbWVgID0gJyVzJyIsICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnbWFzdGVyX3NlcnZlcl9pZCcgXSwgJ0RFRkFVTFQgS0VZJyApOwogICAgICAgIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgICAgICAgewogICAgICAgICAgJFJRcW9qWFdBUWFxWVlyV1VWb0xFeE1DWmtbICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnbWFzdGVyX3NlcnZlcl9pZCcgXSBdID0gJG1jREItPml5Y2pkRHZTb3FnTGt5Sk5rbnNmU3Fuc1JweXNBdUdqdkNBSmsoICk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAkUlFxb2pYV0FRYXFZWXJXVVZvTEV4TUNaa1sgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdtYXN0ZXJfc2VydmVyX2lkJyBdIF0gPSAiMDEgMDIgMDMgMDQgMDUgMDYgMDcgMDggMDkgMTAgMTEgMTIgMTMgMTQiOwogICAgICAgIH0KICAgICAgfQogICAgICBzd2l0Y2ggKCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ2VtdWxhdG9yX2lkJyBdICkKICAgICAgewogICAgICAgIGNhc2UgMToKICAgICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnaWQnIF0gXVsgXSA9ICJDOiB7JE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ2RvbWFpbl9uYW1lJ119IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsncG9ydCddfSB7JE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ3VzZXJuYW1lJ119IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsncGFzc3dvcmQnXX0iOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdpZCcgXSBdWyBdID0gIkNXUyA9IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsnZG9tYWluX25hbWUnXX0geyRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWydwb3J0J119IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsndXNlcm5hbWUnXX0geyRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWydwYXNzd29yZCddfSB7JFRUcW1tQWdBQkJNRFBLU1pPRUxFcllDWEJ3eHlNdEZXR3F0cmtbJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ21hc3Rlcl9zZXJ2ZXJfaWQnXV19IjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMzoKICAgICAgICAgICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UID0gIk46IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsnZG9tYWluX25hbWUnXX0gW1BST0ZJTEVfUE9SVF0geyRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyd1c2VybmFtZSddfSB7JE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ3Bhc3N3b3JkJ119IHskUlFxb2pYV0FRYXFZWXJXVVZvTEV4TUNaa1skTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsnbWFzdGVyX3NlcnZlcl9pZCddXX0iOwogICAgICAgICAgJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UgPSBleHBsb2RlKCAiLCIsICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAncHJvZmlsZXMnIF0gKTsKICAgICAgICAgIGZvcmVhY2ggKCAkUFVXWGVoZHVTbUVwdFpZZWVvdGV6c21wV25RWENSZ3BWUlBzRSBhcyAkV1NWRFpoRUh2T0p1dG9YSkZ1UmxIZ2xiRXpUQldhR3daaGpLSSApCiAgICAgICAgICB7CiAgICAgICAgICAgICRuTnVreFdLTHBnSXF0V0hxWlZ3YXlzVFRxUm5wY1hVYkh4RHJwRSA9IHN0cl9yZXBsYWNlKCAiW1BST0ZJTEVfUE9SVF0iLCAkQ0ptb3VFdHVPTXhJQUdnTFRwd1VER3l6cU1HYUFFZGpTeHNbICRXU1ZEWmhFSHZPSnV0b1hKRnVSbEhnbGJFelRCV2FHd1poaktJIF0sICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UICk7CiAgICAgICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnaWQnIF0gXVsgXSA9ICRuTnVreFdLTHBnSXF0V0hxWlZ3YXlzVFRxUm5wY1hVYkh4RHJwRTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgfQogIGVsc2UKICB7CiAgICBmb3JlYWNoICggJHZFcHFZdWhTdUVETGNuZG5TVm5Ja29EblpNTlVqSmxxZk4gYXMgJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT00gKQogICAgewogICAgICAkZnRJem5VV0dsR2RtVVdOU0dBd2hvRXRQampVQWlVSXMgPSBAdW5zZXJpYWxpemUoICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnbGluZV9vcHRpb25zJyBdICk7CiAgICAgICRkbmZOY1JwVEVtbkNQV0NUU0VlREVHTHZuUkZGTlZoTmMgPSAiIjsKICAgICAgaWYgKCAhIGVtcHR5KCAkZnRJem5VV0dsR2RtVVdOU0dBd2hvRXRQampVQWlVSXMgKSApCiAgICAgIHsKICAgICAgICBmb3JlYWNoICggJGZ0SXpuVVdHbEdkbVVXTlNHQXdob0V0UGpqVUFpVUlzIGFzICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PiAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSApCiAgICAgICAgewogICAgICAgICAgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID0gQHN0cl9yZXBsYWNlKCAiPSIsICIiLCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgKTsKICAgICAgICAgIGlmICggc3Vic3RyKCAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSwgLSAxICkgPT0gJzsnICkKICAgICAgICAgICAgJGRuZk5jUnBURW1uQ1BXQ1RTRWVERUdMdm5SRkZOVmhOYyAuPSAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgLiAnPScgLiAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSAuICcgJzsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgJGRuZk5jUnBURW1uQ1BXQ1RTRWVERUdMdm5SRkZOVmhOYyAuPSAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgLiAnPScgLiAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSAuICc7ICc7CiAgICAgICAgfQogICAgICB9CiAgICAgICRkbmZOY1JwVEVtbkNQV0NUU0VlREVHTHZuUkZGTlZoTmMgPSB0cmltKCAkZG5mTmNScFRFbW5DUFdDVFNFZURFR0x2blJGRk5WaE5jICk7CiAgICAgICRBZ01kcVREekNqTW5PQklzb3dpeUxFcXRoZUhRT0JTclBtaGdnID0gIiI7CiAgICAgIGlmICggc3RybGVuKCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ3Byb2ZpbGVzJyBdICkgPiAwICkKICAgICAgewogICAgICAgICRQVVdYZWhkdVNtRXB0WlllZW90ZXpzbXBXblFYQ1JncFZSUHNFID0gZXhwbG9kZSggIiwiLCAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ3Byb2ZpbGVzJyBdICk7CiAgICAgICAgZm9yZWFjaCAoICRQVVdYZWhkdVNtRXB0WlllZW90ZXpzbXBXblFYQ1JncFZSUHNFIGFzICRXU1ZEWmhFSHZPSnV0b1hKRnVSbEhnbGJFelRCV2FHd1poaktJICkKICAgICAgICB7CiAgICAgICAgICBpZiAoIGFycmF5X2tleV9leGlzdHMoICRXU1ZEWmhFSHZPSnV0b1hKRnVSbEhnbGJFelRCV2FHd1poaktJLCAkQ0ptb3VFdHVPTXhJQUdnTFRwd1VER3l6cU1HYUFFZGpTeHMgKSApCiAgICAgICAgICAgICRBZ01kcVREekNqTW5PQklzb3dpeUxFcXRoZUhRT0JTclBtaGdnIC49ICRDSm1vdUV0dU9NeElBR2dMVHB3VURHeXpxTUdhQUVkalN4c1sgJFdTVkRaaEVIdk9KdXRvWEpGdVJsSGdsYkV6VEJXYUd3WmhqS0kgXSAuICIsIjsKICAgICAgICB9CiAgICAgICAgJEFnTWRxVER6Q2pNbk9CSXNvd2l5TEVxdGhlSFFPQlNyUG1oZ2cgPSBzdWJzdHIoICRBZ01kcVREekNqTW5PQklzb3dpeUxFcXRoZUhRT0JTclBtaGdnLCAwLCAtIDEgKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAkQWdNZHFURHpDak1uT0JJc293aXlMRXF0aGVIUU9CU3JQbWhnZyA9IDA7CiAgICAgIH0KICAgICAgJFZvaVpPUkhnaVB3Z2NmTlhMcUJxblRzYkpoaERRb1BMamprID0gJG1jTWVtYmVyLT5lbnVMWlh3Q0FHcmJ2UG9mY2dFWUVPZ2VSU0ljTndTTWdvemUoICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnbWVtYmVyX2lkJyBdICk7CiAgICAgIGlmICggJFZvaVpPUkhnaVB3Z2NmTlhMcUJxblRzYkpoaERRb1BMamprID09PSBmYWxzZSApCiAgICAgIHsKICAgICAgICAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgPSAiIjsKICAgICAgICAkVm9pWk9SSGdpUHdnY2ZOWExxQnFuVHNiSmhoRFFvUExqamsgPSAnTk9ORSc7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ID0gInBhbmVsX21lbWJlcmlkPSIgLiAkTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsgJ21lbWJlcl9pZCcgXSAuICc7JzsKICAgICAgfQogICAgICAkTUR2ZG1zTGNQZnlBc1ZhcnlzUXFrS2tWc1pqSVhzVkN1eUlsQVR1RVEgPSAiIjsKICAgICAgaWYgKCAhIGlzX251bGwoICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAnZGF0ZV9lbmQnIF0gKSApCiAgICAgIHsKICAgICAgICAkTUR2ZG1zTGNQZnlBc1ZhcnlzUXFrS2tWc1pqSVhzVkN1eUlsQVR1RVEgPSAicGFuZWxfZXhwZGF0ZT0iIC4gJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdkYXRlX2VuZCcgXSAuICc7JzsKICAgICAgfQogICAgICAkblBneUVFQm9hR2VWeXlNSHF1ZXBnTXpyU2RvZ3lUVHBnS0dNID0gInRlc3RfbGluZT0iIC4gJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICd0ZXN0X2xpbmUnIF0gLiAnOyc7CiAgICAgICRPTkpBem5JdUlBU3Z5bFlBT1NMTFpXQWRvbVhUSmhNQmRtcSA9ICJwcm9maWxlX2lkcz0iIC4gJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdwcm9maWxlcycgXSAuICc7JzsKICAgICAgc3dpdGNoICggJE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bICdlbXVsYXRvcl9pZCcgXSApCiAgICAgIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnQ0NDQU0gUE9SVDogJyAuICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAncG9ydCcgXSBdWyBdID0gIkY6IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsndXNlcm5hbWUnXX0geyRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWydwYXNzd29yZCddfSB7JE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ3Jlc2hhcmUnXX0geyAkZG5mTmNScFRFbW5DUFdDVFNFZURFR0x2blJGRk5WaE5jIG5hbWU9JFZvaVpPUkhnaVB3Z2NmTlhMcUJxblRzYkpoaERRb1BMamprOyAkTUR2ZG1zTGNQZnlBc1ZhcnlzUXFrS2tWc1pqSVhzVkN1eUlsQVR1RVEgJE9OSkF6bkl1SUFTdnlsWUFPU0xMWldBZG9tWFRKaE1CZG1xICRuUGd5RUVCb2FHZVZ5eU1IcXVlcGdNenJTZG9neVRUcGdLR00gJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3IHByb2ZpbGVzPSRBZ01kcVREekNqTW5PQklzb3dpeUxFcXRoZUhRT0JTclBtaGdnOyB9IjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdNR0NBTUQgUE9SVDogJyAuICRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyAncG9ydCcgXSBdWyBdID0gIk1HVVNFUjogeyRNVnhGWUx4SmRJWWRsU2tHRXZTT2dXZGdjWG5FakliZ09NWyd1c2VybmFtZSddfSB7JE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ3Bhc3N3b3JkJ119IHsgJGRuZk5jUnBURW1uQ1BXQ1RTRWVERUdMdm5SRkZOVmhOYyBuYW1lPSRWb2laT1JIZ2lQd2djZk5YTHFCcW5Uc2JKaGhEUW9QTGpqazsgJE1EdmRtc0xjUGZ5QXNWYXJ5c1Fxa0trVnNaaklYc1ZDdXlJbEFUdUVRICRPTkpBem5JdUlBU3Z5bFlBT1NMTFpXQWRvbVhUSmhNQmRtcSAkblBneUVFQm9hR2VWeXlNSHF1ZXBnTXpyU2RvZ3lUVHBnS0dNICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dyBwcm9maWxlcz0kQWdNZHFURHpDak1uT0JJc293aXlMRXF0aGVIUU9CU3JQbWhnZzsgfSI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6CiAgICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnVVNFUicgXVsgXSA9ICJVU0VSOiB7JE1WeEZZTHhKZElZZGxTa0dFdlNPZ1dkZ2NYbkVqSWJnT01bJ3VzZXJuYW1lJ119IHskTVZ4RllMeEpkSVlkbFNrR0V2U09nV2RnY1huRWpJYmdPTVsncGFzc3dvcmQnXX0geyAkQWdNZHFURHpDak1uT0JJc293aXlMRXF0aGVIUU9CU3JQbWhnZzsgJG5QZ3lFRUJvYUdlVnl5TUhxdWVwZ016clNkb2d5VFRwZ0tHTSAkTUR2ZG1zTGNQZnlBc1ZhcnlzUXFrS2tWc1pqSVhzVkN1eUlsQVR1RVEgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICRPTkpBem5JdUlBU3Z5bFlBT1NMTFpXQWRvbVhUSmhNQmRtcSAkZG5mTmNScFRFbW5DUFdDVFNFZURFR0x2blJGRk5WaE5jIH0iOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIEJSZHJEbnZndVdlVXhBYmhEUmxlUUl0eUJ3YUhuYmlrUkN0eWJWWSAoICRScXlCQmphZkFFYklSWWNGdFhkQ2hXTFhhY3dIRVZJS1NaeWNPRSwgJHVlSWtMYUhWSk9MYW5hVFVnSFVIV3NYbnpVakNGWkh3dGRBSXIgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgcGFja2FnZV9pZGAgRlJPTSBgZ3JvdXBfcGFja2FnZXNgIFdIRVJFIGBncm91cF9pZGAgPSAnJWQnIiwgJFJxeUJCamFmQUViSVJZY0Z0WGRDaFdMWGFjd0hFVklLU1p5Y09FICk7CiAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSBhcnJheSgpOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJGhkQVdHSmlZaGRXSmNLZlBveGpqdGFScGJSb1NCdUhlbGhDQyA9IG1jTGliOjpzTFlRUkluSHFGaEtFSGxacmxrSVFueFREdFpyWVZOdEtLKCAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICkgKTsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYGxpbmVzX29wdGlvbnNgIFdIRVJFIGBvcHRpb25fdHlwZWAgPSAnJWQnIEFORCBpZCBJTigiIC4gaW1wbG9kZSggIiwiLCAkaGRBV0dKaVloZFdKY0tmUG94amp0YVJwYlJvU0J1SGVsaENDICkgLiAiKSIsICR1ZUlrTGFIVkpPTGFuYVRVZ0hVSFdzWG56VWpDRlpId3RkQUlyICk7CiAgICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogICAgewogICAgICAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICAgIH0KICB9CiAgcmV0dXJuICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsOwp9CgpmdW5jdGlvbiBvQnVjWWlJZFdYRnBRT2hqVk9aR2Z6eGdtQ2R2U2FYYXdsSlUgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKQp7CiAgZ2xvYmFsICRtY0RCOwogICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1UgPSBxVWxjRHRSdVptYVFIZVBWcG1hRE9vS2hCZ2lRZHNqRUljKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAkUFVXWGVoZHVTbUVwdFpZZWVvdGV6c21wV25RWENSZ3BWUlBzRSA9IGhtQXdid2Z2YkNJRFZUR3JBVWh4R2Z2d3d0bWNlYlNoUkdOdUwoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgPSByZ0pZcmlLclhGUE1ranJjZFhQbUd0SVRCYklFRE1OVVFJKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGlkYCBGUk9NIGBsaW5lc2AgV0hFUkUgKGBkYXRlX2VuZGAgPiAnIiAuIHRpbWUoICkgLiAiJyBPUiBgZGF0ZV9lbmRgIElTIE5VTEwpIEFORCBgYmxvY2tlZGAgPSAwIEFORCBgZW5hYmxlYCA9IDEgQU5EIGBzZXJ2ZXJfaWRgIElOKCIgLiBpbXBsb2RlKCAiLCIsICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSAuICIpIiApOwogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5KCk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkb0pDWmJxWFJRQUl6c2pna2JGeXFtTU9NenlubnIgPSBtY0xpYjo6c0xZUVJJbkhxRmhLRUhsWnJsa0lRbnhURHRacllWTnRLSyggJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApICk7CiAgICAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgPSBNWHhheEFhVXVpemZKVFdtWnNoYU5CYklQQ3B4dm8oICRvSkNaYnFYUlFBSXpzamdrYkZ5cW1NT016eW5uciwgJ2NvbmZpZycgKTsKICB9CiAgICR2VUVhRHpiblRpYlljZmhDa0toZkhwaGVXcUJvWWpoWSA9ICAiIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSNcclxuIjsKICAgJHZVRWFEemJuVGliWWNmaENrS2hmSHBoZVdxQm9ZamhZIC49ICIjPT09PT09PT09PT09PT09PT09PT09IE11bHRpQ1MgUGFuZWwgdjIuMS42ID09PT09PT09PT09PT09PT09PT09PT0jXHJcbiI7CiAgICR2VUVhRHpiblRpYlljZmhDa0toZkhwaGVXcUJvWWpoWSAuPSAiIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSNcclxuXHJcblxyXG4iOwogICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgPSAiIjsKICB1bnNldCggJHVjV1d4aG1rSVlYRHhIS3NkVWhSYWVWSG92ZFBJb0RHVVsgJ0NDQ0FNIFBPUlQnIF0gKTsKICB1bnNldCggJHVjV1d4aG1rSVlYRHhIS3NkVWhSYWVWSG92ZFBJb0RHVVsgJ01HQ0FNRCBQT1JUJyBdICk7CiAgZm9yZWFjaCAoICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1UgYXMgJHJmTnJPZWVNQ0p6d0xmZmZoYml6RGp5VFFmcHZ0c3BHSVhoayA9PiAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSApCiAgewogICAgaWYgKCBpc19hcnJheSggJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk0gKSApCiAgICB7CiAgICAgIGZvcmVhY2ggKCAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSBhcyAkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NICkKICAgICAgewogICAgICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gJHJmTnJPZWVNQ0p6d0xmZmZoYml6RGp5VFFmcHZ0c3BHSVhoayAuICI6ICIgLiAkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NIC4gIlxyXG4iOwogICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gJHJmTnJPZWVNQ0p6d0xmZmZoYml6RGp5VFFmcHZ0c3BHSVhoayAuICI6ICIgLiAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSAuICJcclxuIjsKICAgIH0KICB9CiAgZm9yZWFjaCAoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCBhcyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgPT4gJFljb2NvZkNZWGlUUFJCSmV4ZUVHbEN0R3VYYUZEeEJETVQgKQogIHsKICAgIGlmICggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjICE9ICdVU0VSJyApCiAgICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIC4gIiAjU0VSVkVSIEZPUiBMSU5FU1xyXG4iOwogICAgZm9yZWFjaCAoICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1UIGFzICRCSUlkbEF3enJWUUhac0RmSUFwdVNlU3FoQ3lWc1BGeGpsV3dmRSApCiAgICB7CiAgICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gJEJJSWRsQXd6clZRSFpzRGZJQXB1U2VTcWhDeVZzUEZ4amxXd2ZFIC4gIlxyXG4iOwogICAgfQogIH0KICAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRIC49IHlSaUZ4dEpacGV0ekZDR0dKZHdmZWVCUlJMRUxzU0xJT1hDaExCR2JuayggJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UgKTsKICBpZiAoIGVtcHR5KCAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRICkgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuICR2VUVhRHpiblRpYlljZmhDa0toZkhwaGVXcUJvWWpoWSAuICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlE7Cn0KCmZ1bmN0aW9uIHlSaUZ4dEpacGV0ekZDR0dKZHdmZWVCUlJMRUxzU0xJT1hDaExCR2JuayAoICRQVVdYZWhkdVNtRXB0WlllZW90ZXpzbXBXblFYQ1JncFZSUHNFICkKewogICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgPSAiIjsKICBmb3JlYWNoICggJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UgYXMgJFdTVkRaaEVIdk9KdXRvWEpGdVJsSGdsYkV6VEJXYUd3WmhqS0kgKQogIHsKICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gIlt7JFdTVkRaaEVIdk9KdXRvWEpGdVJsSGdsYkV6VEJXYUd3WmhqS0lbJ3Byb2ZpbGVfbmFtZSddfV1cclxuIjsKICAgICRqd1psUmpQSkpzRUFxdFdma25zaU9QbVlDd3BFQm5zWWhYbUFmcyA9IHVuc2VyaWFsaXplKCAkV1NWRFpoRUh2T0p1dG9YSkZ1UmxIZ2xiRXpUQldhR3daaGpLSVsgJ3Byb2ZpbGVfb3B0aW9ucycgXSApOwogICAgZm9yZWFjaCAoICRqd1psUmpQSkpzRUFxdFdma25zaU9QbVlDd3BFQm5zWWhYbUFmcyBhcyAkRWNkeEZlUXVWb01GcEttU1dIU2tkRE5KTGdSYlNkdndRID0+ICRDbnNNbWRMc2paSFdLVVlPRmphVGtQZ3RlVXhOd21PRWNmTmMgKQogICAgewogICAgICAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRIC49ICRFY2R4RmVRdVZvTUZwS21TV0hTa2RETkpMZ1JiU2R2d1EgLiAiIDogIiAuICRDbnNNbWRMc2paSFdLVVlPRmphVGtQZ3RlVXhOd21PRWNmTmMgLiAiXHJcbiI7CiAgICB9CiAgICAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRIC49ICJcclxuXHJcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG5cclxuIjsKICB9CiAgcmV0dXJuICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlE7Cn0KCmZ1bmN0aW9uIHVwenBVUURTdmJtdklRckFpeUhQZ0lVSVppR2VKTXp4WSAoICRBR0lTTGl1U0NXd3pvRUhOY3pDU1BiVXBFZmVHc2ZoWHBRaFpNSmpFID0gZmFsc2UgKQp7CiAgZ2xvYmFsICRtY0RCOwogIGlmICggJEFHSVNMaXVTQ1d3em9FSE5jekNTUGJVcEVmZUdzZmhYcFFoWk1KakUgKQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgcHJvZmlsZV9vcHRpb25zYCBGUk9NIGBwcm9maWxlc2AgV0hFUkUgYGlkYCA9ICclZCciLCAkQUdJU0xpdVNDV3d6b0VITmN6Q1NQYlVwRWZlR3NmaFhwUWhaTUpqRSApOwogICAgJFVJeFZqSmtEcEFycUtZZmJwTE9jYWVoclZCQ0hncXZRWSA9IHVuc2VyaWFsaXplKCAkbWNEQi0+aXljamREdlNvcWdMa3lKTmtuc2ZTcW5zUnB5c0F1R2p2Q0FKayggKSApOwogICAgcmV0dXJuIGFycmF5KCAkQUdJU0xpdVNDV3d6b0VITmN6Q1NQYlVwRWZlR3NmaFhwUWhaTUpqRSA9PiAkVUl4VmpKa0RwQXJxS1lmYnBMT2NhZWhyVkJDSGdxdlFZWyAnUE9SVCcgXSApOwogIH0KICBlbHNlCiAgewogICAgJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UgPSBhcnJheSgpOwogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBpZGAsYHByb2ZpbGVfb3B0aW9uc2AgRlJPTSBgcHJvZmlsZXNgIiApOwogICAgZm9yZWFjaCAoICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKSBhcyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzICkKICAgIHsKICAgICAgJFVJeFZqSmtEcEFycUtZZmJwTE9jYWVoclZCQ0hncXZRWSA9IHVuc2VyaWFsaXplKCAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAncHJvZmlsZV9vcHRpb25zJyBdICk7CiAgICAgIGlmICggYXJyYXlfa2V5X2V4aXN0cyggJ1BPUlQnLCAkVUl4VmpKa0RwQXJxS1lmYnBMT2NhZWhyVkJDSGdxdlFZICkgYW5kIGlzX251bWVyaWMoICRVSXhWakprRHBBcnFLWWZicExPY2FlaHJWQkNIZ3F2UVlbICdQT1JUJyBdICkgKQogICAgICB7CiAgICAgICAgJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0VbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdpZCcgXSBdID0gJFVJeFZqSmtEcEFycUtZZmJwTE9jYWVoclZCQ0hncXZRWVsgJ1BPUlQnIF07CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAkUFVXWGVoZHVTbUVwdFpZZWVvdGV6c21wV25RWENSZ3BWUlBzRTsKICB9Cn0KCmZ1bmN0aW9uIE95VUFtS21Sak1LbWFVZFRucWdMcWR5Rm5xUm9QcnRFb2ZzTVAgKCApCnsKICByZXR1cm4gVFJVRTsKfQoKZnVuY3Rpb24gRGdmZ0tlTFRCbEVmV0R5amtUT3pzUWxjSHFFbnZLS0pleFkgKCAkZEJRc3RGTFJnd0xrQlZueFZlYUdHekhLZUhuTHJ5UFF0byA9IGZhbHNlICkKewogIHJldHVybiAkZEJRc3RGTFJnd0xrQlZueFZlYUdHekhLZUhuTHJ5UFF0byA/IEZBTFNFIDogVFJVRTsKfQoKZnVuY3Rpb24gWFBrU1pObEdYeXh0UlhyTk5PdXplakZNZEhPYWJIenZ0ZGMgKCAkRHVzTEJKTWhVQ3p5d0VPRExnTG1kc0lEZ0FMbHJaRERMaUtZLCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgPSAnJyApCnsKICByZXR1cm4gTlVMTDsKfQoKZnVuY3Rpb24gcEZwS0p2dGJCWEVMTE1oa1ZhZlVrQ3NLZVBITVJERE50Umt1SSAoICRGa3dwSk5UUG5keGZmVXpEcHV5Q0xuTldUQ2l5d1NVV0JtbVkgKQp7CiAgcmV0dXJuIE5VTEw7Cn0KCmZ1bmN0aW9uIEdUZEVVTWJMZFRHa3lxUVZzUHdBVHR2elJLc0RSTGdPemVyUSAoICkKewogIHRFSk14UkhaWUFjUUdMbk10dHNQd1h1TGZic3ViRSggMCApOwogIHJldHVybiBUUlVFOwp9CgpmdW5jdGlvbiB0RUpNeFJIWllBY1FHTG5NdHRzUHdYdUxmYnN1YkUgKCAkcXB2bGRNVEFWYWlNcmhMcUpUb3FVV09zWWl3bUF4ZFdlc2FnQSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBtdWx0aWNzX2xpY2VuY2VgIFNFVCBgc2hvd19tZXNzYWdlYCA9ICclZCcgV0hFUkUgYGlkYCA9IDEiLCAkcXB2bGRNVEFWYWlNcmhMcUpUb3FVV09zWWl3bUF4ZFdlc2FnQSApOwp9CgpmdW5jdGlvbiBoaFdzU2NDaW9GbnFCcG5SZ0xCQVdGWWJyWnRRdWdzQkRCWXMgKCAkSnFXWVVKblliSmhHTkRkd0dzSWtrU0NmSVRRbGx3LCAkdXBMRWp2aENOb2tRWkN5c1FNS01zSGhTQllCVFVEbVRMZmMgKQp7CiAgaWYgKCAhIGlzX3JlYWRhYmxlKCAkSnFXWVVKblliSmhHTkRkd0dzSWtrU0NmSVRRbGx3ICkgKQogICAgZGllKCAnRmlsZSBub3QgZm91bmQgb3IgaW5hY2Nlc3NpYmxlISBDb250YWN0IGFkbWluaXN0cmF0b3InICk7CiAgJFlMdGt2ZXVYUkdrc0lrTG11RVhxTVZZbFpsQUVKWlJWSFZRID0gZmlsZXNpemUoICRKcVdZVUpuWWJKaEdORGR3R3NJa2tTQ2ZJVFFsbHcgKTsKICAkdXBMRWp2aENOb2tRWkN5c1FNS01zSGhTQllCVFVEbVRMZmMgPSByYXd1cmxkZWNvZGUoICR1cExFanZoQ05va1FaQ3lzUU1LTXNIaFNCWUJUVURtVExmYyApOwogIEBvYl9lbmRfY2xlYW4oICk7CiAgaWYgKCBpbmlfZ2V0KCAnemxpYi5vdXRwdXRfY29tcHJlc3Npb24nICkgKQogICAgaW5pX3NldCggJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJywgJ09mZicgKTsKICBoZWFkZXIoICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW4nICk7CiAgaGVhZGVyKCAnQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicgLiAkdXBMRWp2aENOb2tRWkN5c1FNS01zSGhTQllCVFVEbVRMZmMgLiAnIicgKTsKICBoZWFkZXIoICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnkiICk7CiAgaGVhZGVyKCAnQWNjZXB0LVJhbmdlczogYnl0ZXMnICk7CiAgaGVhZGVyKCAiQ2FjaGUtY29udHJvbDogcHJpdmF0ZSIgKTsKICBoZWFkZXIoICdQcmFnbWE6IHByaXZhdGUnICk7CiAgaGVhZGVyKCAiRXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiICk7CiAgaWYgKCBpc3NldCggJF9TRVJWRVJbICdIVFRQX1JBTkdFJyBdICkgKQogIHsKICAgIGxpc3QgKCAkUW9mTldTcE9HcmZEWXdVSGpid09HbHNZY2JHbktLbm1hRywgJGxmSEpTZG9FTEtnV2dwR3JsS0ZRdnJ1Z29laFBza0FreU9VSSApID0gZXhwbG9kZSggIj0iLCAkX1NFUlZFUlsgJ0hUVFBfUkFOR0UnIF0sIDIgKTsKICAgIGxpc3QgKCAkbGZISlNkb0VMS2dXZ3BHcmxLRlF2cnVnb2VoUHNrQWt5T1VJICkgPSBleHBsb2RlKCAiLCIsICRsZkhKU2RvRUxLZ1dncEdybEtGUXZydWdvZWhQc2tBa3lPVUksIDIgKTsKICAgIGxpc3QgKCAkbGZISlNkb0VMS2dXZ3BHcmxLRlF2cnVnb2VoUHNrQWt5T1VJLCAkV3ZJclZEb05weGd1Y1JjaFZUa1J2VW1LcVRXTlNnVWh3ZHV4UWdBICkgPSBleHBsb2RlKCAiLSIsICRsZkhKU2RvRUxLZ1dncEdybEtGUXZydWdvZWhQc2tBa3lPVUkgKTsKICAgICRsZkhKU2RvRUxLZ1dncEdybEtGUXZydWdvZWhQc2tBa3lPVUkgPSBpbnR2YWwoICRsZkhKU2RvRUxLZ1dncEdybEtGUXZydWdvZWhQc2tBa3lPVUkgKTsKICAgIGlmICggISAkV3ZJclZEb05weGd1Y1JjaFZUa1J2VW1LcVRXTlNnVWh3ZHV4UWdBICkKICAgIHsKICAgICAgJFd2SXJWRG9OcHhndWNSY2hWVGtSdlVtS3FUV05TZ1Vod2R1eFFnQSA9ICRZTHRrdmV1WFJHa3NJa0xtdUVYcU1WWWxabEFFSlpSVkhWUSAtIDE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRXdklyVkRvTnB4Z3VjUmNoVlRrUnZVbUtxVFdOU2dVaHdkdXhRZ0EgPSBpbnR2YWwoICRXdklyVkRvTnB4Z3VjUmNoVlRrUnZVbUtxVFdOU2dVaHdkdXhRZ0EgKTsKICAgIH0KICAgICRBdXdZeE53ZElvRFRFWXNoTUVXSkRBY09TZG5tQ2lDZW1VID0gJFd2SXJWRG9OcHhndWNSY2hWVGtSdlVtS3FUV05TZ1Vod2R1eFFnQSAtICRsZkhKU2RvRUxLZ1dncEdybEtGUXZydWdvZWhQc2tBa3lPVUkgKyAxOwogICAgaGVhZGVyKCAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudCIgKTsKICAgIGhlYWRlciggIkNvbnRlbnQtTGVuZ3RoOiAkQXV3WXhOd2RJb0RURVlzaE1FV0pEQWNPU2RubUNpQ2VtVSIgKTsKICAgIGhlYWRlciggIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzICRsZkhKU2RvRUxLZ1dncEdybEtGUXZydWdvZWhQc2tBa3lPVUktJFd2SXJWRG9OcHhndWNSY2hWVGtSdlVtS3FUV05TZ1Vod2R1eFFnQS8kWUx0a3ZldVhSR2tzSWtMbXVFWHFNVllsWmxBRUpaUlZIVlEiICk7CiAgfQogIGVsc2UKICB7CiAgICAkQXV3WXhOd2RJb0RURVlzaE1FV0pEQWNPU2RubUNpQ2VtVSA9ICRZTHRrdmV1WFJHa3NJa0xtdUVYcU1WWWxabEFFSlpSVkhWUTsKICAgIGhlYWRlciggIkNvbnRlbnQtTGVuZ3RoOiAiIC4gJFlMdGt2ZXVYUkdrc0lrTG11RVhxTVZZbFpsQUVKWlJWSFZRICk7CiAgfQogICRQRkZRdEJOQ1d4ZlRvV0RFQm5ldWJmSmNNT3VybVVIY0NPTSA9IDEgKiAoMTAyNCAqIDEwMjQpOwogICROU294RmVTZFZaRUhudklpY1R6UEpxdWlCVmQgPSAwOwogIGlmICggJEpxV1lVSm5ZYkpoR05EZHdHc0lra1NDZklUUWxsdyA9IGZvcGVuKCAkSnFXWVVKblliSmhHTkRkd0dzSWtrU0NmSVRRbGx3LCAncicgKSApCiAgewogICAgaWYgKCBpc3NldCggJF9TRVJWRVJbICdIVFRQX1JBTkdFJyBdICkgKQogICAgICBmc2VlayggJEpxV1lVSm5ZYkpoR05EZHdHc0lra1NDZklUUWxsdywgJGxmSEpTZG9FTEtnV2dwR3JsS0ZRdnJ1Z29laFBza0FreU9VSSApOwogICAgd2hpbGUgKCAhIGZlb2YoICRKcVdZVUpuWWJKaEdORGR3R3NJa2tTQ2ZJVFFsbHcgKSAmJiAoISBjb25uZWN0aW9uX2Fib3J0ZWQoICkpICYmICgkTlNveEZlU2RWWkVIbnZJaWNUelBKcXVpQlZkIDwgJEF1d1l4TndkSW9EVEVZc2hNRVdKREFjT1Nkbm1DaUNlbVUpICkKICAgIHsKICAgICAgJHpFWWtrSVZ2a3JMek1kVG9pS3dPWk5US0RpZEVITVFqRldWWSA9IGZyZWFkKCAkSnFXWVVKblliSmhHTkRkd0dzSWtrU0NmSVRRbGx3LCAkUEZGUXRCTkNXeGZUb1dERUJuZXViZkpjTU91cm1VSGNDT00gKTsKICAgICAgcHJpbnQgKCR6RVlra0lWdmtyTHpNZFRvaUt3T1pOVEtEaWRFSE1RakZXVlkpIDsKICAgICAgZmx1c2goICk7CiAgICAgICROU294RmVTZFZaRUhudklpY1R6UEpxdWlCVmQgKz0gc3RybGVuKCAkekVZa2tJVnZrckx6TWRUb2lLd09aTlRLRGlkRUhNUWpGV1ZZICk7CiAgICB9CiAgICBmY2xvc2UoICRKcVdZVUpuWWJKaEdORGR3R3NJa2tTQ2ZJVFFsbHcgKTsKICAgIEB1bmxpbmsoICRKcVdZVUpuWWJKaEdORGR3R3NJa2tTQ2ZJVFFsbHcgKTsKICB9CiAgZWxzZQogICAgZGllKCAnRXJyb3IgLSBjYW4gbm90IG9wZW4gZmlsZS4nICk7CiAgZGllKCApOwp9CgpmdW5jdGlvbiBBZ25VVUJlVXBIRXpOcWJMc3BDYXlnYUt5c1JlRFFpQmYgKCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS4qLHQyLmVtdWxhdG9yX25hbWUgRlJPTSBgbXVsdGljc19zZXJ2ZXJzYCB0MSxgZW11bGF0b3JzYCB0MiBXSEVSRSB0MS5gZW11bGF0b3JfaWRgID0gdDIuYGlkYCBBTkQgdDEuYGlkYCA9ICclZCciLCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIFh6UGRaS0RoeVlKakxWR1ppbUxuWElPekJySmpibWtSSEkgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MsICRvaFBuZXRVdkpDUHRPand5bUlsdHJjTlVuaFBVWHpCVSwgJFB5WW5qbFlEVGlYZ01ocXBuSkJXdmRvc2dnb25IcldvREJwWGlQcCwgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZICkKewogIGdsb2JhbCAkbWNEQjsKICBXYVBiU0dleFRkaWtXTXBvV2FiVnVHZXFLbGZaeEVYUURVUSggMSApOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIkRFTEVURSBGUk9NIGBtdWx0aWNzX2NvbmZpZ192YXJzYCBXSEVSRSBgY29uZmlnX3ZhbHVlX25hbWVgID0gJ0hUVFAgVVNFUicgQU5EIGBtYXN0ZXJfc2VydmVyX2lkYCA9ICclZCciLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJERUxFVEUgRlJPTSBgbXVsdGljc19jb25maWdfdmFyc2AgV0hFUkUgYGNvbmZpZ192YWx1ZV9uYW1lYCA9ICdIVFRQIFBBU1MnIEFORCBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIiwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiREVMRVRFIEZST00gYG11bHRpY3NfY29uZmlnX3ZhcnNgIFdIRVJFIGBjb25maWdfdmFsdWVfbmFtZWAgPSAnSFRUUCBQT1JUJyBBTkQgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIklOU0VSVCBJTlRPIGBtdWx0aWNzX2NvbmZpZ192YXJzYCAoYGNvbmZpZ192YWx1ZV9uYW1lYCxgY29uZmlnX3ZhbHVlYCxgbWFzdGVyX3NlcnZlcl9pZGApIFZBTFVFUygnJXMnLCclcycsJyVkJykiLCAnSFRUUCBVU0VSJywgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIklOU0VSVCBJTlRPIGBtdWx0aWNzX2NvbmZpZ192YXJzYCAoYGNvbmZpZ192YWx1ZV9uYW1lYCxgY29uZmlnX3ZhbHVlYCxgbWFzdGVyX3NlcnZlcl9pZGApIFZBTFVFUygnJXMnLCclcycsJyVkJykiLCAnSFRUUCBQT1JUJywgJFB5WW5qbFlEVGlYZ01ocXBuSkJXdmRvc2dnb25IcldvREJwWGlQcCwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiSU5TRVJUIElOVE8gYG11bHRpY3NfY29uZmlnX3ZhcnNgIChgY29uZmlnX3ZhbHVlX25hbWVgLGBjb25maWdfdmFsdWVgLGBtYXN0ZXJfc2VydmVyX2lkYCkgVkFMVUVTKCclcycsJyVzJywnJWQnKSIsICdIVFRQIFBBU1MnLCAkQUpkTkphQXNBRG5WYlRHVURQU214QmtQa0ZLTm5sakl2ZlZiWSwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgJHhMdlVYVHpxaktzTUpLcGxaT0NRQXBoZ1RncVNSVWlRekFRID0gb0J1Y1lpSWRXWEZwUU9oalZPWkdmenhnbUNkdlNhWGF3bEpVKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICBDdUNTeHloSU5jVUtHdEZ2UU1qc1lwcHBsUk52U3p0UklWbGMoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJHhMdlVYVHpxaktzTUpLcGxaT0NRQXBoZ1RncVNSVWlRekFRICk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBtdWx0aWNzX21hc3Rlcl9zZXJ2ZXJzYCBTRVQgYHVzZXJuYW1lYCA9ICclcycsYHBhc3N3b3JkYCA9ICclcycgV0hFUkUgYGlkYCA9ICclZCciLCAkRGhnZVRZenRwWktZTE1SUmxPa21RYnR5RXdSTERrT1BHQkxHdywgJEFKZE5KYUFzQURuVmJUR1VEUFNteEJrUGtGS05ubGpJdmZWYlksICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogIGlmICggISBpc19udWxsKCAkb2hQbmV0VXZKQ1B0T2p3eW1JbHRyY05VbmhQVVh6QlUgKSApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBtdWx0aWNzX21hc3Rlcl9zZXJ2ZXJzYCBTRVQgYGRvbWFpbmAgPSAnJXMnIFdIRVJFIGBpZGAgPSAnJWQnIiwgJG9oUG5ldFV2SkNQdE9qd3ltSWx0cmNOVW5oUFVYekJVLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlVQREFURSBgbXVsdGljc19zZXJ2ZXJzYCBTRVQgYGRvbWFpbl9uYW1lYCA9ICclcycgV0hFUkUgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyIsICRvaFBuZXRVdkpDUHRPand5bUlsdHJjTlVuaFBVWHpCVSwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgfQogIHVDdnRJQVZ6UXdkR0FNS0xhYUpGWFZsT2JGUEFya3ZiUlJWWUdmYyggMSApOwp9CgpmdW5jdGlvbiBnellMYnVEeE9BWHZEcHpKRGNGaU5WWXhaeG5vaVJ4empVTXJ0Y2sgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MsICRKV01YT2RRZ0lQWUJzdE5OTWZMUUhUZWh1eE1LUkdLbXNXaEkgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgZGVmYXVsdF9zZXJ2ZXJfaWRgIEZST00gYG11bHRpY3Nfc2VydmVyX2VtdWxhdG9yc2AgV0hFUkUgYGVtdWxhdG9yX2lkYCA9ICclZCcgQU5EIGBtYXN0ZXJfc2VydmVyX2lkYCA9ICclZCciLCAkSldNWE9kUWdJUFlCc3ROTk1mTFFIVGVodXhNS1JHS21zV2hJLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgICRFdXZUb1RSSEZoWFB0TVl6bVV3UE9YWXVPTElTdExXQSA9IGludHZhbCggJG1jREItPml5Y2pkRHZTb3FnTGt5Sk5rbnNmU3Fuc1JweXNBdUdqdkNBSmsoICkgKTsKICAgICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSiA9IEFnblVVQmVVcEhFek5xYkxzcENheWdhS3lzUmVEUWlCZiggJEV1dlRvVFJIRmhYUHRNWXptVXdQT1hZdU9MSVN0TFdBICk7CiAgICBpZiAoIGlzX2FycmF5KCAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkogKSApCiAgICB7CiAgICAgIGlmICggJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAncG9ydCcgXSA9PSAwICkKICAgICAgICAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbICdwb3J0JyBdID0gJyonOwogICAgICByZXR1cm4gJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIFFGTWx1VVRwV0JRY21rZVhyWVRYakVQdWpGY1ZMd1NYUmlrICggJEV1dlRvVFJIRmhYUHRNWXptVXdQT1hZdU9MSVN0TFdBLCAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnUgPSBhcnJheSgpICkKewogIGdsb2JhbCAkbWNEQjsKICBpZiAoIGVtcHR5KCAkVWhka3FuVFFuRW95ZkJXZXdMRWhkZldmd09WeHhvZndMSnUgKSApCiAgewogICAgJFVoZGtxblRRbkVveWZCV2V3TEVoZGZXZndPVnh4b2Z3TEp1ID0gQWduVVVCZVVwSEV6TnFiTHNwQ2F5Z2FLeXNSZURRaUJmKCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EgKTsKICB9CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiREVMRVRFIEZST00gYG11bHRpY3Nfc2VydmVyc2AgV0hFUkUgYGlkYCA9ICclZCciLCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EgKTsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJVUERBVEUgYG11bHRpY3Nfc2VydmVyX2VtdWxhdG9yc2AgU0VUIGBkZWZhdWx0X3NlcnZlcl9pZGAgPSAwIFdIRVJFIGBkZWZhdWx0X3NlcnZlcl9pZGAgPSAnJWQnIiwgJEV1dlRvVFJIRmhYUHRNWXptVXdQT1hZdU9MSVN0TFdBICk7Cn0KCmZ1bmN0aW9uIGhRRmlNQ0ZORE16cUxoUHhSU3lHWkFMRFlydUFUZyAoICRCbVRweVlCQXJNS1FQQ1JTTGNWQXpRcGpHZENtaEVaSURjLCAkVmxsdFZ3dExKTVppcmxqclFWRVpEZ3NYZEZhcEhLUSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBsaW5lc2AgU0VUIGBzZXJ2ZXJfaWRgID0gJyVkJyBXSEVSRSBgc2VydmVyX2lkYCA9ICclZCciLCAkVmxsdFZ3dExKTVppcmxqclFWRVpEZ3NYZEZhcEhLUSwgJEJtVHB5WUJBck1LUVBDUlNMY1ZBelFwakdkQ21oRVpJRGMgKTsKfQoKZnVuY3Rpb24gTFJSdkpSQm9jbWpuRXpnQWRmWWNWQlFOYWpReXJhSnZQZk0gKCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBjb3VudChpZCkgRlJPTSBgbGluZXNgIFdIRVJFIGBzZXJ2ZXJfaWRgID0gJyVkJyIsICRFdXZUb1RSSEZoWFB0TVl6bVV3UE9YWXVPTElTdExXQSApOwogIHJldHVybiAkbWNEQi0+aXljamREdlNvcWdMa3lKTmtuc2ZTcW5zUnB5c0F1R2p2Q0FKayggKTsKfQoKZnVuY3Rpb24gZkhzaUxjSUxnSEVyS0pyc1RmWkVKc0hDZWhOWkFqd3JRSXFPRSAoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyA9IGZhbHNlICkKewogIGdsb2JhbCAkbWNEQjsKICAkTFRVbG5JV3FoSFROUXFtc0R2V2ZDSFhjVGxteVZ0Zmh1dXlEcHBmID0gYXJyYXkoKTsKICBpZiAoICEgZW1wdHkoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApICkKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgdDEuKix0Mi5lbXVsYXRvcl9uYW1lIEZST00gYG11bHRpY3Nfc2VydmVyc2AgdDEsYGVtdWxhdG9yc2AgdDIgV0hFUkUgdDEuYGVtdWxhdG9yX2lkYCA9IHQyLmBpZGAgQU5EIGBtYXN0ZXJfc2VydmVyX2lkYCA9ICclZCciLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICB9CiAgZWxzZQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS4qLHQyLmVtdWxhdG9yX25hbWUgRlJPTSBgbXVsdGljc19zZXJ2ZXJzYCB0MSxgZW11bGF0b3JzYCB0MiBXSEVSRSB0MS5gZW11bGF0b3JfaWRgID0gdDIuYGlkYCIgKTsKICB9CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICAgIGZvcmVhY2ggKCAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCBhcyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzICkKICAgIHsKICAgICAgaWYgKCAhIGlzX2FycmF5KCAkTFRVbG5JV3FoSFROUXFtc0R2V2ZDSFhjVGxteVZ0Zmh1dXlEcHBmWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnbWFzdGVyX3NlcnZlcl9pZCcgXSBdICkgKQogICAgICB7CiAgICAgICAgJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZlsgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ21hc3Rlcl9zZXJ2ZXJfaWQnIF0gXSA9IGFycmF5KCk7CiAgICAgIH0KICAgICAgaWYgKCAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAncG9ydCcgXSA9PSAwICkKICAgICAgewogICAgICAgICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdwb3J0JyBdID0gJyonOwogICAgICB9CiAgICAgICRMVFVsbklXcWhIVE5RcW1zRHZXZkNIWGNUbG15VnRmaHV1eURwcGZbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdtYXN0ZXJfc2VydmVyX2lkJyBdIF1bIF0gPSAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzOwogICAgfQogIH0KICByZXR1cm4gJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZjsKfQoKZnVuY3Rpb24gdE1LT2FDUm5sZGRCaW5XdmxrR21XTVpIWUZUV1BTICggJG9seFFZdHFDeGxESHdUVnpTc1ZacWlnYWVkdmNFb1hWb3drUmcgPSBudWxsICkKewogICR1RkxYZWZaT1dJZ1p1SmxYdERSU3dqR0NVVnVTWUhuenVVID0gYXJyYXkoIDEgPT4gIkFkbWluaXN0cmF0b3IiLCAyID0+ICJOb3JtYWwgVXNlciIsIDMgPT4gIkJhbm5lZCIgKTsKICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gIjxzZWxlY3QgbmFtZT1cInJvbGVcIj4iOwogIGlmICggISBpc19udWxsKCAkb2x4UVl0cUN4bERId1RWelNzVlpxaWdhZWR2Y0VvWFZvd2tSZyApICkKICB7CiAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IIC49ICI8b3B0aW9uIHZhbHVlPVwiJG9seFFZdHFDeGxESHdUVnpTc1ZacWlnYWVkdmNFb1hWb3drUmdcIiBzZWxlY3RlZD57JHVGTFhlZlpPV0lnWnVKbFh0RFJTd2pHQ1VWdVNZSG56dVVbJG9seFFZdHFDeGxESHdUVnpTc1ZacWlnYWVkdmNFb1hWb3drUmddfTwvb3B0aW9uPiI7CiAgICB1bnNldCggJHVGTFhlZlpPV0lnWnVKbFh0RFJTd2pHQ1VWdVNZSG56dVVbICRvbHhRWXRxQ3hsREh3VFZ6U3NWWnFpZ2FlZHZjRW9YVm93a1JnIF0gKTsKICB9CiAgZm9yZWFjaCAoICR1RkxYZWZaT1dJZ1p1SmxYdERSU3dqR0NVVnVTWUhuenVVIGFzICRLcUJPWHhzVEZ0cHJaVUFrYUdGbGZEWnVDYm1CbExoV0EgPT4gJE56aWtnTGt0dHFreGpkS2l3b0J1bERSV2pUUEhEcFFyRSApCiAgewogICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCAuPSAiPG9wdGlvbiB2YWx1ZT1cIiRLcUJPWHhzVEZ0cHJaVUFrYUdGbGZEWnVDYm1CbExoV0FcIj4kTnppa2dMa3R0cWt4amRLaXdvQnVsRFJXalRQSERwUXJFPC9vcHRpb24+IjsKICB9CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCAuPSAiPC9zZWxlY3Q+IjsKICByZXR1cm4gJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSDsKfQoKZnVuY3Rpb24gbkF4T3ZYWFVPV2hSSk1jQkh1SExrVnp2d3ZlTFRGdnJsZiAoICRvaFBuZXRVdkpDUHRPand5bUlsdHJjTlVuaFBVWHpCVSwgJHJLdGpqeXRnUmtGQ1p2c1lDYml1WHl3TkxlallWUGxoTk0sICRQeVluamxZRFRpWGdNaHFwbkpCV3Zkb3NnZ29uSHJXb0RCcFhpUHAsICRDcGhNZVNyVEV4bFpDYVp4akRMeWhOaWZ4Z0lMcGxRZWJGSkEgKQp7CiAgJGttRkFsY2dtWEZQUmRVSmZkQ0RvZ2Z6V0NoeFVjVGVieWxnID0gZ2lWaWhjSUFwbEREaFdWZmFwWlhrZG9wa3hqWE50VUxZKCAkb2hQbmV0VXZKQ1B0T2p3eW1JbHRyY05VbmhQVVh6QlUsICRQeVluamxZRFRpWGdNaHFwbkpCV3Zkb3NnZ29uSHJXb0RCcFhpUHAsICRyS3Rqanl0Z1JrRkNadnNZQ2JpdVh5d05MZWpZVlBsaE5NLCAkQ3BoTWVTclRFeGxaQ2FaeGpETHloTmlmeGdJTHBsUWViRkpBLCAnZWRpdG9yJyApOwogIGlmICggJGttRkFsY2dtWEZQUmRVSmZkQ0RvZ2Z6V0NoeFVjVGVieWxnICkKICB7CiAgICBpZiAoIHN0cmlzdHIoICRrbUZBbGNnbVhGUFJkVUpmZENEb2dmeldDaHhVY1RlYnlsZywgIk11bHRpIiApICkKICAgIHsKICAgICAgaWYgKCBwcmVnX21hdGNoKCAiLzx0ZXh0YXJlYSBjb2xzPVwiNDBcIiB3cmFwPVwib2ZmXCIgcm93cz1cIjlcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBuYW1lPVwidGV4dGVkaXRcIj4oLio/KTxcL3RleHRhcmVhPi9zIiwgJGttRkFsY2dtWEZQUmRVSmZkQ0RvZ2Z6V0NoeFVjVGVieWxnLCAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNICkgKQogICAgICB7CiAgICAgICAgcmV0dXJuICdPSyc7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuICdOT19FRElUT1InOwogICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIHJldHVybiAnTk9fTVVMVElDUyc7CiAgICB9CiAgfQogIHJldHVybiAnQVVUSF9PUl9OT19NVUxUSUNTJzsKfQoKZnVuY3Rpb24gRGRMTmNETHZhcnBhRWNScnhtclNCUUhmZkx4ckJFeHZjamQgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYG11bHRpY3NfbWFzdGVyX3NlcnZlcnNgIFdIRVJFIGBpZGAgPSAnJWQnIiwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKID0gJG1jREItPk95d2tqaUpzUHNmUWtzR25mcE5EdUR0YmxDWU9wT2x1Q0FXZyggKTsKICAkQ0J3SHR6cmFtaEFsSlZVVG5oZHl3RWZnS1Vzb1BwSFFaQXMgPSBAc3RyX2lyZXBsYWNlKCAiaHR0cDovLyIsICIiLCAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbICdkb21haW4nIF0gKTsKICAka21GQWxjZ21YRlBSZFVKZmRDRG9nZnpXQ2h4VWNUZWJ5bGcgPSBnaVZpaGNJQXBsRERoV1ZmYXBaWGtkb3BreGpYTnRVTFkoICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgJ2RvbWFpbicgXSwgJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAncG9ydCcgXSwgJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAndXNlcm5hbWUnIF0sICRyb1pmcGhyYlJjaVRLRVlNcURESG11ZHJTZ2JOR0tJY2xmSlsgJ3Bhc3N3b3JkJyBdLCAiZWRpdG9yIiApOwogICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgPSAiIjsKICBpZiAoICRrbUZBbGNnbVhGUFJkVUpmZENEb2dmeldDaHhVY1RlYnlsZyApCiAgewogICAgcHJlZ19tYXRjaCggIi88dGV4dGFyZWEgY29scz1cIjQwXCIgd3JhcD1cIm9mZlwiIHJvd3M9XCI5XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgbmFtZT1cInRleHRlZGl0XCI+KC4qPyk8XC90ZXh0YXJlYT4vcyIsICRrbUZBbGNnbVhGUFJkVUpmZENEb2dmeldDaHhVY1RlYnlsZywgJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETSApOwogICAgaWYgKCAhIGlzc2V0KCAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNWyAxIF0gKSApCiAgICB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMSBdOwogICAgcHJlZ19tYXRjaF9hbGwoICIvPG9wdGlvbiB2YWx1ZT1cIlwvZWRpdG9yKC4qPylcIi8iLCAka21GQWxjZ21YRlBSZFVKZmRDRG9nZnpXQ2h4VWNUZWJ5bGcsICRrUnBnZ2RCZFNTZ29BbFRiU0dsWHpFTmVqcnhsTEV0VSApOwogICAgJGtScGdnZEJkU1Nnb0FsVGJTR2xYekVOZWpyeGxMRXRVID0gJGtScGdnZEJkU1Nnb0FsVGJTR2xYekVOZWpyeGxMRXRVWyAxIF07CiAgICBhcnJheV9zaGlmdCggJGtScGdnZEJkU1Nnb0FsVGJTR2xYekVOZWpyeGxMRXRVICk7CiAgICBpZiAoIGNvdW50KCAka1JwZ2dkQmRTU2dvQWxUYlNHbFh6RU5lanJ4bExFdFUgKSA+IDAgKQogICAgewogICAgICBmb3JlYWNoICggJGtScGdnZEJkU1Nnb0FsVGJTR2xYekVOZWpyeGxMRXRVIGFzICRPYWluWll1dU9CV0ZSTHZMbUNxUmhDTk1UdnhJUUhydUtZZVRNRSApCiAgICAgIHsKICAgICAgICAkQ2hWTFRRbHN4QkFiQWxVSnVIZ1BGblJlU3plaWhjWGcgPSAiZWRpdG9yIiAuICRPYWluWll1dU9CV0ZSTHZMbUNxUmhDTk1UdnhJUUhydUtZZVRNRTsKICAgICAgICAkVVJYVURkaHR6TGpVUWpPZVRUWU5kaHNxcnFGSlhLUmdJQSA9IGdpVmloY0lBcGxERGhXVmZhcFpYa2RvcGt4alhOdFVMWSggJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAnZG9tYWluJyBdLCAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbICdwb3J0JyBdLCAkcm9aZnBocmJSY2lUS0VZTXFEREhtdWRyU2diTkdLSWNsZkpbICd1c2VybmFtZScgXSwgJHJvWmZwaHJiUmNpVEtFWU1xRERIbXVkclNnYk5HS0ljbGZKWyAncGFzc3dvcmQnIF0sICRDaFZMVFFsc3hCQWJBbFVKdUhnUEZuUmVTemVpaGNYZyApOwogICAgICAgIGlmICggcHJlZ19tYXRjaCggIi88dGV4dGFyZWEgY29scz1cIjQwXCIgd3JhcD1cIm9mZlwiIHJvd3M9XCI5XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgbmFtZT1cInRleHRlZGl0XCI+KC4qPyk8XC90ZXh0YXJlYT4vcyIsICRVUlhVRGRodHpMalVRak9lVFRZTmRoc3FycUZKWEtSZ0lBLCAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNICkgKQogICAgICAgIHsKICAgICAgICAgICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgLj0gIlxuXG4iIC4gJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMSBdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICByZXR1cm4gKCEgZW1wdHkoICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgKSkgPyAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRIDogZmFsc2U7Cn0KCmZ1bmN0aW9uIGdpVmloY0lBcGxERGhXVmZhcFpYa2RvcGt4alhOdFVMWSAoICRvaFBuZXRVdkpDUHRPand5bUlsdHJjTlVuaFBVWHpCVSwgJFB5WW5qbFlEVGlYZ01ocXBuSkJXdmRvc2dnb25IcldvREJwWGlQcCwgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZLCAkeXV3c3dvYXVQRnNGTnBrUVR5UkhCZWtiQUhpYlpzTmVlT1V5TmVITSA9ICcnLCAkU2V6VmdPeEFad3pUSElLV2xXdXhocFNGQ0dKSWRjemVDZHMgPSAwLCAkaWtlWVprbUhkUkFoRmdIWG5lWnhsVGpuTFRHWW12QWN6eWdmb0lQbk0gPSBhcnJheSgpICkKewogICRvaFBuZXRVdkpDUHRPand5bUlsdHJjTlVuaFBVWHpCVSA9ICJodHRwOi8vIiAuICRvaFBuZXRVdkpDUHRPand5bUlsdHJjTlVuaFBVWHpCVSAuICc6JyAuICRQeVluamxZRFRpWGdNaHFwbkpCV3Zkb3NnZ29uSHJXb0RCcFhpUHA7CiAgJERUUElMemxMQkhMWWhyeXZoUENJeHFJdE1vTG5zb1N0V1JTTHhIYkQgPSBjdXJsX2luaXQoICk7CiAgY3VybF9zZXRvcHQoICREVFBJTHpsTEJITFlocnl2aFBDSXhxSXRNb0xuc29TdFdSU0x4SGJELCBDVVJMT1BUX1VSTCwgJG9oUG5ldFV2SkNQdE9qd3ltSWx0cmNOVW5oUFVYekJVIC4gJy8nIC4gJHl1d3N3b2F1UEZzRk5wa1FUeVJIQmVrYkFIaWJac05lZU9VeU5lSE0gKTsKICBjdXJsX3NldG9wdCggJERUUElMemxMQkhMWWhyeXZoUENJeHFJdE1vTG5zb1N0V1JTTHhIYkQsIENVUkxPUFRfUE9SVCwgJFB5WW5qbFlEVGlYZ01ocXBuSkJXdmRvc2dnb25IcldvREJwWGlQcCApOwogIGN1cmxfc2V0b3B0KCAkRFRQSUx6bExCSExZaHJ5dmhQQ0l4cUl0TW9MbnNvU3RXUlNMeEhiRCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSApOwogIGN1cmxfc2V0b3B0KCAkRFRQSUx6bExCSExZaHJ5dmhQQ0l4cUl0TW9MbnNvU3RXUlNMeEhiRCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQU5ZICk7CiAgY3VybF9zZXRvcHQoICREVFBJTHpsTEJITFlocnl2aFBDSXhxSXRNb0xuc29TdFdSU0x4SGJELCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxNSApOwogIGN1cmxfc2V0b3B0KCAkRFRQSUx6bExCSExZaHJ5dmhQQ0l4cUl0TW9MbnNvU3RXUlNMeEhiRCwgQ1VSTE9QVF9USU1FT1VULCAxNSApOwogIGN1cmxfc2V0b3B0KCAkRFRQSUx6bExCSExZaHJ5dmhQQ0l4cUl0TW9MbnNvU3RXUlNMeEhiRCwgQ1VSTE9QVF9GUkVTSF9DT05ORUNULCB0cnVlICk7CiAgY3VybF9zZXRvcHQoICREVFBJTHpsTEJITFlocnl2aFBDSXhxSXRNb0xuc29TdFdSU0x4SGJELCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCB0cnVlICk7CiAgY3VybF9zZXRvcHQoICREVFBJTHpsTEJITFlocnl2aFBDSXhxSXRNb0xuc29TdFdSU0x4SGJELCBDVVJMT1BUX1VTRVJBR0VOVCwgJ01vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4xLjEzKSBHZWNrby8yMDA4MDMxMSBGaXJlZm94LzIuMC4wLjEzJyApOwogIGN1cmxfc2V0b3B0KCAkRFRQSUx6bExCSExZaHJ5dmhQQ0l4cUl0TW9MbnNvU3RXUlNMeEhiRCwgQ1VSTE9QVF9VU0VSUFdELCAiJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3c6JEFKZE5KYUFzQURuVmJUR1VEUFNteEJrUGtGS05ubGpJdmZWYlkiICk7CiAgaWYgKCAkU2V6VmdPeEFad3pUSElLV2xXdXhocFNGQ0dKSWRjemVDZHMgPiAwICkKICB7CiAgICBjdXJsX3NldG9wdCggJERUUElMemxMQkhMWWhyeXZoUENJeHFJdE1vTG5zb1N0V1JTTHhIYkQsIENVUkxPUFRfUE9TVCwgdHJ1ZSApOwogICAgY3VybF9zZXRvcHQoICREVFBJTHpsTEJITFlocnl2aFBDSXhxSXRNb0xuc29TdFdSU0x4SGJELCBDVVJMT1BUX1BPU1RGSUVMRFMsICRpa2VZWmttSGRSQWhGZ0hYbmVaeGxUam5MVEdZbXZBY3p5Z2ZvSVBuTSApOwogIH0KICAkVlJ6S3dsckt5TVhhVmp0S1lpRExCZk9qemFIaHBUTEdFR2MgPSBjdXJsX2V4ZWMoICREVFBJTHpsTEJITFlocnl2aFBDSXhxSXRNb0xuc29TdFdSU0x4SGJEICk7CiAgY3VybF9jbG9zZSggJERUUElMemxMQkhMWWhyeXZoUENJeHFJdE1vTG5zb1N0V1JTTHhIYkQgKTsKICByZXR1cm4gJFZSekt3bHJLeU1YYVZqdEtZaURMQmZPanphSGhwVExHRUdjOwp9CgpmdW5jdGlvbiBGaXhMaW5lICggJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRICkKewogIGlmICggc3RyaXN0ciggJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRLCAnIycgKSApCiAgewogICAgJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRID0gc3Ryc3RyKCAkRW1rSVlHY1d5c2xaSlVRWXRQckxoa256ZlpaU2hHS3hXSVEsICcjJywgdHJ1ZSApOwogIH0KICAkRW1rSVlHY1d5c2xaSlVRWXRQckxoa256ZlpaU2hHS3hXSVEgPSBzdHJfcmVwbGFjZSggIlx4OSIsICIgIiwgJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRICk7CiAgJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRID0gQHByZWdfcmVwbGFjZSggJy9bXHg3Zi1ceGZmXS8nLCAnJywgJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRICk7CiAgJGhsbUVPa1l0cHZnREJiUlhiSVZmdXpnU3pqV1lpWVFad0VzID0gc3Vic3RyX2NvdW50KCAkRW1rSVlHY1d5c2xaSlVRWXRQckxoa256ZlpaU2hHS3hXSVEsICJ7IiApOwogICRiVEZkbEFFakdtRFBsd25nSWx4eWJuSlBMSUJIRHltb3VEZ0kgPSBzdWJzdHJfY291bnQoICRFbWtJWUdjV3lzbFpKVVFZdFByTGhrbnpmWlpTaEdLeFdJUSwgIn0iICk7CiAgaWYgKCAkaGxtRU9rWXRwdmdEQmJSWGJJVmZ1emdTempXWWlZUVp3RXMgPiAkYlRGZGxBRWpHbURQbHduZ0lseHlibkpQTElCSER5bW91RGdJICkKICB7CiAgICBmb3IgKCAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSA9IDA7ICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIDwgJGhsbUVPa1l0cHZnREJiUlhiSVZmdXpnU3pqV1lpWVFad0VzIC0gJGJURmRsQUVqR21EUGx3bmdJbHh5Ym5KUExJQkhEeW1vdURnSTsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkrKyApCiAgICB7CiAgICAgICRFbWtJWUdjV3lzbFpKVVFZdFByTGhrbnpmWlpTaEdLeFdJUSAuPSAnfSAnOwogICAgfQogIH0KICBlbHNlaWYgKCAkaGxtRU9rWXRwdmdEQmJSWGJJVmZ1emdTempXWWlZUVp3RXMgPCAkYlRGZGxBRWpHbURQbHduZ0lseHlibkpQTElCSER5bW91RGdJICkKICB7CiAgICBmb3IgKCAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSA9IDA7ICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIDwgJGJURmRsQUVqR21EUGx3bmdJbHh5Ym5KUExJQkhEeW1vdURnSSAtICRobG1FT2tZdHB2Z0RCYlJYYklWZnV6Z1N6aldZaVlRWndFczsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkrKyApCiAgICB7CiAgICAgICRFbWtJWUdjV3lzbFpKVVFZdFByTGhrbnpmWlpTaEdLeFdJUSA9IHByZWdfcmVwbGFjZSggJy9cey8nLCAnJywgJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRLCAxICk7CiAgICB9CiAgfQogIHJldHVybiB0cmltKCAkRW1rSVlHY1d5c2xaSlVRWXRQckxoa256ZlpaU2hHS3hXSVEgKTsKfQoKZnVuY3Rpb24gdVVmbXptR1pEcFRRQ0FlVWR3TllOekJvWkViQWpnZFhXTnFrYyAoICRYY21qT2NPREpqb1pmcFpCRmF6Q2dnSWJlQ0hJaEJjeWlKWCApCnsKICAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgPSBleHBsb2RlKCAiXG4iLCAkWGNtak9jT0RKam9aZnBaQkZhekNnZ0liZUNISWhCY3lpSlggKTsKICAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgPSBhcnJheV9tYXAoICJ0cmltIiwgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwICk7CiAgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwID0gYXJyYXlfbWFwKCAiRml4TGluZSIsICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCApOwogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5X3ZhbHVlcyggYXJyYXlfZmlsdGVyKCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgKSApOwogICRvUGlPTVJ6bWNKSVpjVFhzcnVTTlR4WFBoeVBZSElmZyA9IGZhbHNlOwogIGZvciAoICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJID0gMDsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgPCBjb3VudCggJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwICk7ICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJKysgKQogIHsKICAgICRYYWF5Q0VHUlJNT1lpTXRHcllkZG1NeXVxalNpSnJiWUtNID0gc3Vic3RyKCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF0sIDAsIDEgKTsKICAgIGlmICggJFhhYXlDRUdSUk1PWWlNdEdyWWRkbU15dXFqU2lKcmJZS00gPT0gJy8nICkKICAgIHsKICAgICAgdW5zZXQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSApOwogICAgICBjb250aW51ZTsKICAgIH0KICAgIGlmICggJG9QaU9NUnptY0pJWmNUWHNydVNOVHhYUGh5UFlISWZnICkKICAgIHsKICAgICAgaWYgKCBzdWJzdHJfY291bnQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSwgIn0iICkgPT0gMSBvciBzdWJzdHJfY291bnQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSwgIlxcIiApID09IDAgKQogICAgICB7CiAgICAgICAgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXSA9ICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIF0gLiAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF07CiAgICAgICAgdW5zZXQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSApOwogICAgICAgICRvUGlPTVJ6bWNKSVpjVFhzcnVTTlR4WFBoeVBZSElmZyA9IGZhbHNlOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSA9IHN0cl9yZXBsYWNlKCAiXFwiLCAiIiwgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdICk7CiAgICAgICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIF0gPSAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyBdIC4gJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdOwogICAgICB1bnNldCggJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdICk7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgaWYgKCBzdWJzdHJfY291bnQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSwgIlxcIiApIG9yIChzdWJzdHJfY291bnQoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcFsgJFBrbWhYUGJQdkNjU2lrQm1EempIdXlsakdJRGdja2NMcnNrSUkgXSwgInsiICkgIT0gc3Vic3RyX2NvdW50KCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF0sICJ9IiApKSApCiAgICB7CiAgICAgICRvUGlPTVJ6bWNKSVpjVFhzcnVTTlR4WFBoeVBZSElmZyA9IHRydWU7CiAgICAgICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9ICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJOwogICAgfQogICAgJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwWyAkUGttaFhQYlB2Q2NTaWtCbUR6akh1eWxqR0lEZ2NrY0xyc2tJSSBdID0gc3RyX3JlcGxhY2UoICJcXCIsICIiLCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanBbICRQa21oWFBiUHZDY1Npa0JtRHpqSHV5bGpHSURnY2tjTHJza0lJIF0gKTsKICB9CiAgcmV0dXJuIGFycmF5X3ZhbHVlcyggJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwICk7Cn0KCmZ1bmN0aW9uIExTanBvTkVCYVJkb3VuY1pYb1RjeFpvTGdaVHRNWER6R05QbWxVICggKQp7CiAgJGNmWG50VHlhRXBHTkhObnFES1V3eEhzYWl6empoc0pxdkNjID0gYXJyYXkoICdLRVknLCAnU0VSVkVSIFRJTUVQRVJFQ00nLCAnUE9SVCcsICdPTklEJywgJ0NBSUQnLCAnUFJPVklERVJTJywgJ1NJRCBMSVNUJywgJ0FDQ0VQVCBOVUxMIFNJRCcsICdBQ0NFUFQgTlVMTCBDQUlEJywgJ0FDQ0VQVCBOVUxMIFBST1ZJREVSJywgJ0RDVyBUSU1FT1VUJywgJ0RDVyBNQVhGQUlMRUQnLCAnRENXIFJFVFJZJywgJ0RDVyBDSEVDSycsICdEQ1cgSEFMRk5VTExFRCcsICdEQ1cgU1dBUCcsICdFQ00gQ0hFQ0snLCAnRUNNIENIRUNLIExFTkdUSCcsICdTRVJWRVIgVElNRU9VVCcsICdTRVJWRVIgTUFYJywgJ1NFUlZFUiBJTlRFUlZBTCcsICdTRVJWRVIgVkFMSURFQ01USU1FJywgJ1NFUlZFUiBGSVJTVCcsICdTRVJWRVIgVEhSRVNIT0xEJywgJ1JFVFJZIE5FV0NBTUQnLCAnUkVUUlkgQ0NDQU0nLCAnUkVUUlkgTUdDQU1EJywgJ0NBQ0hFRVggVkFMSURFQ01USU1FJywgJ0NBQ0hFRVggTUFYSE9QJywgJ0NBQ0hFIFRJTUVPVVQnLCAnQ0FDSEUgU0VORFJFUScsICdDQUNIRSBTRU5EUkVQJywgJ0NBQ0hFIFNUQVRJQycsICdDQUNIRSBSRVNFTkRSRVEnLCAnRU5BQkxFIENDQ0FNJywgJ0VOQUJMRSBORVdDQU1EJywgJ0VOQUJMRSBDQUNIRScsICdFTkFCTEUgQ0FNRDM1JywgJ0VOQUJMRSBDUzM3OFgnLCAnRU5BQkxFIENBQ0hFRVgnLCAnRU5BQkxFIE1HQ0FNRCcsICdTSEFSRSBDQ0NBTScsICdTSEFSRSBORVdDQU1EJywgJ1NIQVJFIE1HQ0FNRCcsICdEQ1cgTUlOVElNRScsICdSRVRSWSBDQUNIRScsICdESVNBQkxFIFJBREVHQVNUJywgJ1NJRCBERU5ZTElTVCcsICdBQ0NFUFQgTlVMTCBPTklEJywgJ0VDTSBMRU5HVEgnLCAnRU5BQkxFIEVDTUxPT1BJTkcnLCAnRU5BQkxFIFNLSVBDV0MnLCAnQUNDRVBUIE5VTEwgRENXJyApOwogIHJldHVybiAkY2ZYbnRUeWFFcEdOSE5ucURLVXd4SHNhaXp6amhzSnF2Q2M7Cn0KCmZ1bmN0aW9uIEh4SVhMR2dmenBka0N5bGJCTWdobnltd1RzVWhQQ09jVyAoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApCnsKICAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRID0gRGRMTmNETHZhcnBhRWNScnhtclNCUUhmZkx4ckJFeHZjamQoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogIGlmICggISAkTGZNZnBPRU5IbG9FdFZrT1hQek1rUUhiZVRZbmZtV1ZRICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IHVVZm16bUdaRHBUUUNBZVVkd05ZTnpCb1pFYkFqZ2RYV05xa2MoICRMZk1mcE9FTkhsb0V0VmtPWFB6TWtRSGJlVFluZm1XVlEgKTsKICAkY2ZYbnRUeWFFcEdOSE5ucURLVXd4SHNhaXp6amhzSnF2Q2MgPSBMU2pwb05FQmFSZG91bmNaWG9UY3hab0xnWlR0TVhEekdOUG1sVSggKTsKICAkUWRZTkpEUldoVHBIQnRES2VvU2dyUk56eUZUcXRiRFNJID0gYXJyYXkoICJOIiwgIkMiLCAiUiIgKTsKICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gYXJyYXkoKTsKICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnQ09ORklHX1ZBUlMnIF0gPSBhcnJheSgpOwogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdQUk9GSUxFUycgXSA9IGFycmF5KCk7CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ1NDT05TJyBdID0gYXJyYXkoKTsKICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnVVNFUl9MSU5FUycgXSA9IGFycmF5KCk7CiAgJGdGanZSbFJWdG9zbnRwYnFhSmVYTVB6cHl1VVJjQ29JRGhLdFRvID0gZmFsc2U7CiAgJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZiA9IGFycmF5KCk7CiAgZm9yZWFjaCAoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCBhcyAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCApCiAgewogICAgJFhhYXlDRUdSUk1PWWlNdEdyWWRkbU15dXFqU2lKcmJZS00gPSBzdWJzdHIoICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1ULCAwLCAxICk7CiAgICAkVklrSnRkSEdTVm94TG12SGF2b3hPTHN3VERpVEJ5U0xTYyA9IHN1YnN0ciggJFljb2NvZkNZWGlUUFJCSmV4ZUVHbEN0R3VYYUZEeEJETVQsIDAsIDIgKTsKICAgICRtd2VzY2dVb2xqdHhiUHpjR01NclVVTUloUGRJZ1pFVmcgPSB0cmltKCBzdHJ0b3VwcGVyKCBzdWJzdHIoICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1ULCAwLCBzdHJwb3MoICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1ULCAnOicgKSApICkgKTsKICAgIGlmICggJFhhYXlDRUdSUk1PWWlNdEdyWWRkbU15dXFqU2lKcmJZS00gPT0gJyMnIHx8IGVtcHR5KCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCApIHx8ICRYYWF5Q0VHUlJNT1lpTXRHcllkZG1NeXVxalNpSnJiWUtNID09ICcvJyApCiAgICAgIGNvbnRpbnVlOwogICAgaWYgKCAkWGFheUNFR1JSTU9ZaU10R3JZZGRtTXl1cWpTaUpyYllLTSA9PSAnWycgKQogICAgewogICAgICBpZiAoIHByZWdfbWF0Y2goICIvXFsoLio/KVxdLyIsICRZY29jb2ZDWVhpVFBSQkpleGVFR2xDdEd1WGFGRHhCRE1ULCAkUVBwYkFLaGdGQnhkaG9LRFVBYm94ZENRZ291cVZiUXJGZERNICkgKQogICAgICB7CiAgICAgICAgJGdGanZSbFJWdG9zbnRwYnFhSmVYTVB6cHl1VVJjQ29JRGhLdFRvID0gdHJ1ZTsKICAgICAgICAkR3JqbE9IU1FOUWRFb0Fvdm5GaU9CS1hXT0pJZXdNbFppZ1FFID0gJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMSBdOwogICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdQUk9GSUxFUycgXVsgJEdyamxPSFNRTlFkRW9Bb3ZuRmlPQktYV09KSWV3TWxaaWdRRSBdID0gYXJyYXkoKTsKICAgICAgfQogICAgICBjb250aW51ZTsKICAgIH0KICAgIGlmICggJGdGanZSbFJWdG9zbnRwYnFhSmVYTVB6cHl1VVJjQ29JRGhLdFRvICkKICAgIHsKICAgICAgJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXQgPSBAZXhwbG9kZSggIjoiLCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCApOwogICAgICBpZiAoIGlzX2FycmF5KCAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCApICkKICAgICAgewogICAgICAgICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9IHN0cnRvdXBwZXIoIHRyaW0oICRSRlVTUURCaHpnTmhNV3d2anJrc0dJblZ3RUZLR3B5RFF0WyAwIF0gKSApOwogICAgICAgICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNID0gdHJpbSggJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXRbIDEgXSApOwogICAgICAgIGlmICggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID09ICdQT1JUJyApCiAgICAgICAgewogICAgICAgICAgaWYgKCAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSA9PSAnKycgKQogICAgICAgICAgewogICAgICAgICAgICAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTSA9ICRlV2p3blJjellMQXhiVmh6S0duV3ZZcEdBS1pBb2pZICsgMTsKICAgICAgICAgIH0KICAgICAgICAgICRlV2p3blJjellMQXhiVmh6S0duV3ZZcEdBS1pBb2pZID0gJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk07CiAgICAgICAgfQogICAgICAgIGlmICggaW5fYXJyYXkoICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYywgJGNmWG50VHlhRXBHTkhObnFES1V3eEhzYWl6empoc0pxdkNjICkgKQogICAgICAgIHsKICAgICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdQUk9GSUxFUycgXVsgJEdyamxPSFNRTlFkRW9Bb3ZuRmlPQktYV09KSWV3TWxaaWdRRSBdWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXSA9ICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PSAnVVNFUicgKQogICAgICAgIHsKICAgICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdVU0VSX0xJTkVTJyBdWyAnTkVXQ0FNRCcgXVsgMCBdWyBdID0gJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk07CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRnRmp2UmxSVnRvc250cGJxYUplWE1QenB5dVVSY0NvSURoS3RUbyA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgaWYgKCBpbl9hcnJheSggJG13ZXNjZ1VvbGp0eGJQemNHTU1yVVVNSWhQZElnWkVWZywgJFFkWU5KRFJXaFRwSEJ0REtlb1NnclJOenlGVHF0YkRTSSApICkKICAgIHsKICAgICAgYXJyYXlfcHVzaCggJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ1NDT05TJyBdLCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCApOwogICAgICBjb250aW51ZTsKICAgIH0KICAgIGlmICggc3RycG9zKCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCwgJzonICkgKQogICAgewogICAgICAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCA9IGV4cGxvZGUoICI6IiwgJFljb2NvZkNZWGlUUFJCSmV4ZUVHbEN0R3VYYUZEeEJETVQgKTsKICAgICAgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID0gdHJpbSggc3RydG91cHBlciggdHJpbSggJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXRbIDAgXSApICkgKTsKICAgICAgdW5zZXQoICRSRlVTUURCaHpnTmhNV3d2anJrc0dJblZ3RUZLR3B5RFF0WyAwIF0gKTsKICAgICAgJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk0gPSB0cmltKCBpbXBsb2RlKCAiIiwgJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXQgKSApOwogICAgICBpZiAoIGluX2FycmF5KCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMsICRjZlhudFR5YUVwR05ITm5xREtVd3hIc2FpenpqaHNKcXZDYyApICYmICEgZW1wdHkoICRHcmpsT0hTUU5RZEVvQW92bkZpT0JLWFdPSklld01sWmlnUUUgKSApCiAgICAgIHsKICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnUFJPRklMRVMnIF1bICRHcmpsT0hTUU5RZEVvQW92bkZpT0JLWFdPSklld01sWmlnUUUgXVsgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIF0gPSAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAoICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PSAnSU5DTFVERScgKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgPT0gJ0YnICkKICAgICAgewogICAgICAgIGlmICggY291bnQoICRMVFVsbklXcWhIVE5RcW1zRHZXZkNIWGNUbG15VnRmaHV1eURwcGZbICdDQ0NBTScgXSApID4gMCApCiAgICAgICAgewogICAgICAgICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ1VTRVJfTElORVMnIF1bICdDQ0NBTScgXVsgZW5kKCAkTFRVbG5JV3FoSFROUXFtc0R2V2ZDSFhjVGxteVZ0Zmh1dXlEcHBmWyAnQ0NDQU0nIF0gKSBdWyBdID0gJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk07CiAgICAgICAgfQogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID09ICdNR1VTRVInIG9yICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PSAnTUcnICkKICAgICAgewogICAgICAgIGlmICggY291bnQoICRMVFVsbklXcWhIVE5RcW1zRHZXZkNIWGNUbG15VnRmaHV1eURwcGZbICdNR0NBTUQnIF0gKSA+IDAgKQogICAgICAgIHsKICAgICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdVU0VSX0xJTkVTJyBdWyAnTUdDQU1EJyBdWyBlbmQoICRMVFVsbklXcWhIVE5RcW1zRHZXZkNIWGNUbG15VnRmaHV1eURwcGZbICdNR0NBTUQnIF0gKSBdWyBdID0gJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk07CiAgICAgICAgfQogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID09ICdVU0VSJyApCiAgICAgIHsKICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnVVNFUl9MSU5FUycgXVsgJ05FV0NBTUQnIF1bIDAgXVsgXSA9ICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID09ICdNR0NBTUQgUE9SVCcgKQogICAgICB7CiAgICAgICAgaWYgKCAhIEBpc19hcnJheSggJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZlsgJ01HQ0FNRCcgXSApICkKICAgICAgICB7CiAgICAgICAgICAkTFRVbG5JV3FoSFROUXFtc0R2V2ZDSFhjVGxteVZ0Zmh1dXlEcHBmWyAnTUdDQU1EJyBdID0gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZlsgJ01HQ0FNRCcgXVsgXSA9ICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjID09ICdDQ0NBTSBQT1JUJyApCiAgICAgIHsKICAgICAgICBpZiAoICEgQGlzX2FycmF5KCAkTFRVbG5JV3FoSFROUXFtc0R2V2ZDSFhjVGxteVZ0Zmh1dXlEcHBmWyAnQ0NDQU0nIF0gKSApCiAgICAgICAgewogICAgICAgICAgJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZlsgJ0NDQ0FNJyBdID0gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgJExUVWxuSVdxaEhUTlFxbXNEdldmQ0hYY1RsbXlWdGZodXV5RHBwZlsgJ0NDQ0FNJyBdWyBdID0gJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk07CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKCBpc3NldCggJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ0NPTkZJR19WQVJTJyBdWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXSApICkKICAgICAgewogICAgICAgICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gPSAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnQ09ORklHX1ZBUlMnIF1bICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyBdOwogICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdDT05GSUdfVkFSUycgXVsgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIF0gPSBhcnJheSgpOwogICAgICAgIGlmICggaXNfYXJyYXkoICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gKSApCiAgICAgICAgewogICAgICAgICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ0NPTkZJR19WQVJTJyBdWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXSA9IGFycmF5X21lcmdlKCAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnQ09ORklHX1ZBUlMnIF1bICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyBdLCAkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NICk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnQ09ORklHX1ZBUlMnIF1bICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyBdWyBdID0gJGlXWkJtZEVKblhlbWdwdXltdkpzSUJDQUZxQlFQbktndnNtTTsKICAgICAgICB9CiAgICAgICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ0NPTkZJR19WQVJTJyBdWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXVsgXSA9ICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdDT05GSUdfVkFSUycgXVsgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIF0gPSAkc25td3VGcnRHQlh4T0ZOWkFiRFBCektlcWlIc0JWTTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSDsKfQoKZnVuY3Rpb24gU2tZUnNhWW90TWlIS2tPRGtyRU5xcXdpYmJwUEFUZkh3ICggJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZLCAkZmlhZ3l0WmJSZUxqZmx2SXFpUmNtQlVKZ2VuWHhnLCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EsICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dywgJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UsICRTeXlRZURzUFNtR2JtdVZXb05oZUl3enppdkZjWWF1elBMWEkgPSAiTlVMTCIsICRuUGd5RUVCb2FHZVZ5eU1IcXVlcGdNenJTZG9neVRUcGdLR00gPSAxLCAkQVV2ZnhTTEVQZWJQeFlRZnV2c21mUmtrak1VaEJiWEFzcEZjID0gMCwgJGZ0SXpuVVdHbEdkbVVXTlNHQXdob0V0UGpqVUFpVUlzID0gYXJyYXkoKSwgJFBXaEptVmFRZ0tmZWZ5WG9QZU1TeEpoWHROc3hqVU1tWk5ibyA9IDAsICRLb1piVWFvcHVDd3Fkb2JPWlp4dVh6V09RdmpGSURhSyA9IDEsICRRdGJjcmt5TVhHbHFqZGhRUmpJdFRZQWRzWHVZeEkgPSAwICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJJTlNFUlQgSU5UTyBgbGluZXNgIChgbWVtYmVyX2lkYCxgdXNlcm5hbWVgLGBwYXNzd29yZGAsYHNlcnZlcl9pZGAsYGRhdGVfc3RhcnRgLGBkYXRlX2VuZGAsYHByb2ZpbGVzYCxgdGVzdF9saW5lYCxgYmxvY2tlZGAsYGVuYWJsZWAsYG5vdGVzYCxgdXNlcl9wYWlkYCxgbGluZV9vcHRpb25zYCxgbW9uaXRvcl9leGNsdWRlYCxgYWxsb3dfY2hfZW11YCxgcmVzaGFyZWApIFZBTFVFUygnJWQnLCclcycsJyVzJywnJWQnLCclZCcsJGZpYWd5dFpiUmVMamZsdklxaVJjbUJVSmdlblh4ZywnJXMnLCclZCcsMCwxLCclcycsJyVmJywnJXMnLCclZCcsJyVkJywnJWQnKSIsICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dywgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZLCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EsIHRpbWUoICksICRQVVdYZWhkdVNtRXB0WlllZW90ZXpzbXBXblFYQ1JncFZSUHNFLCAkblBneUVFQm9hR2VWeXlNSHF1ZXBnTXpyU2RvZ3lUVHBnS0dNLCAkU3l5UWVEc1BTbUdibXVWV29OaGVJd3p6aXZGY1lhdXpQTFhJLCAkQVV2ZnhTTEVQZWJQeFlRZnV2c21mUmtrak1VaEJiWEFzcEZjLCBzZXJpYWxpemUoICRmdEl6blVXR2xHZG1VV05TR0F3aG9FdFBqalVBaVVJcyApLCAkUFdoSm1WYVFnS2ZlZnlYb1BlTVN4SmhYdE5zeGpVTW1aTmJvLCAkS29aYlVhb3B1Q3dxZG9iT1paeHVYeldPUXZqRklEYUssICRRdGJjcmt5TVhHbHFqZGhRUmpJdFRZQWRzWHVZeEkgKTsKICBpZiAoICRtY0RCLT5VTEROcXFUSEp6Tm1YZVllRUhtY21vWGdaZEhrY2ZyamhRbFkoICkgPiAwICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBWZ3FZZWJSckFCYVVzRkJmS2JxTk1qeXJ4aVdQRVhJWEtFICggJFZYZXlqVHlyVGZBSkp5cWVveGh1UndUbkJqS0VNZ2pXZGsgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS4qIEZST00gYG11bHRpY3NfbWFzdGVyX3NlcnZlcnNgIHQxLCBgbXVsdGljc19zZXJ2ZXJzYCB0MiBXSEVSRSB0Mi5gaWRgID0gJyVkJyBBTkQgdDEuYGlkYCA9IHQyLmBtYXN0ZXJfc2VydmVyX2lkYCIsICRWWGV5alR5clRmQUpKeXFlb3hodVJ3VG5CaktFTWdqV2RrICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gJG1jREItPk95d2tqaUpzUHNmUWtzR25mcE5EdUR0YmxDWU9wT2x1Q0FXZyggKTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiByZ0pZcmlLclhGUE1ranJjZFhQbUd0SVRCYklFRE1OVVFJICggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGlkYCBGUk9NIGBtdWx0aWNzX3NlcnZlcnNgIFdIRVJFIGBtYXN0ZXJfc2VydmVyX2lkYCA9ICclZCciLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiBtY0xpYjo6c0xZUVJJbkhxRmhLRUhsWnJsa0lRbnhURHRacllWTnRLSyggJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApICk7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gbk55c0dNR1JYSk9Ld0VodUdXdm1LTWZSZXJrR1FJeFdrT29XUGsgKCApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIHQxLmBkb21haW5gIEFTIGBkb21haW5gICwgdDIuYHByb2ZpbGVfZGVmYXVsdGAgYXMgYHByb2ZpbGVfZGVmYXVsdGAsdDIuYGlkYCBBUyBgcHJvZmlsZV9pZGAgLCB0Mi5gcHJvZmlsZV9uYW1lYCBBUyBgcHJvZmlsZV9uYW1lYCBGUk9NIGBtdWx0aWNzX21hc3Rlcl9zZXJ2ZXJzYCB0MSwgYHByb2ZpbGVzYCB0MiBXSEVSRSB0MS5pZCA9IHQyLmBtYXN0ZXJfc2VydmVyX2lkYCBPUkRFUiBCWSB0Mi5gbWFzdGVyX3NlcnZlcl9pZGAgREVTQyIgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gb1lDeGpjck1HWE1SeHFkeE5XYm5rZkd2YW1KanpoRUpUWSAoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgbXVsdGljc19tYXN0ZXJfc2VydmVyc2AgV0hFUkUgYGlkYCA9ICclZCciLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIE5oUlZXbWtDYWlCaFFmYm1FZ3NwV3pDd0pnb2VYb2xSYkEgKCAkUnF5QkJqYWZBRWJJUlljRnRYZENoV0xYYWN3SEVWSUtTWnljT0UgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYG1lbWJlcl9ncm91cHNgIFdIRVJFIGBpZGAgPSAnJWQnIiwgJFJxeUJCamFmQUViSVJZY0Z0WGRDaFdMWGFjd0hFVklLU1p5Y09FICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gJG1jREItPk95d2tqaUpzUHNmUWtzR25mcE5EdUR0YmxDWU9wT2x1Q0FXZyggKTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBhVU5DR0NiWHJHYVdQR1hVekFmYkx0dnp5aHJLb2hYbyAoICRScXlCQmphZkFFYklSWWNGdFhkQ2hXTFhhY3dIRVZJS1NaeWNPRSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGNvdW50KCopIEZST00gYHVzZXJzYCBXSEVSRSBgbWVtYmVyX2dyb3VwX2lkYCA9ICclZCciLCAkUnF5QkJqYWZBRWJJUlljRnRYZENoV0xYYWN3SEVWSUtTWnljT0UgKTsKICByZXR1cm4gJG1jREItPml5Y2pkRHZTb3FnTGt5Sk5rbnNmU3Fuc1JweXNBdUdqdkNBSmsoICk7Cn0KCmZ1bmN0aW9uIGhtQXdid2Z2YkNJRFZUR3JBVWh4R2Z2d3d0bWNlYlNoUkdOdUwgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYHByb2ZpbGVzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIE9SREVSIGJ5IGlkIERFU0MiLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gSnVEYndYSXFiTE1sVHFZbmpCT0hKbmRncE5CQ3BHeFAgKCApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBpZGAgRlJPTSBgbXVsdGljc19tYXN0ZXJfc2VydmVyc2AgT1JERVIgQlkgaWQgQVNDIiApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgcmV0dXJuIG1jTGliOjpzTFlRUkluSHFGaEtFSGxacmxrSVFueFREdFpyWVZOdEtLKCAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICkgKTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBxVWxjRHRSdVptYVFIZVBWcG1hRE9vS2hCZ2lRZHNqRUljICggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGNvbmZpZ192YWx1ZV9uYW1lYCxgY29uZmlnX3ZhbHVlYCBmcm9tIGBtdWx0aWNzX2NvbmZpZ192YXJzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIE9SREVSIGJ5IGlkIEFTQyIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1UgPSBhcnJheSgpOwogIGZvcmVhY2ggKCAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCBhcyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzICkKICB7CiAgICBpZiAoIGlzc2V0KCAkdWNXV3hobWtJWVhEeEhLc2RVaFJhZVZIb3ZkUElvREdVWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnY29uZmlnX3ZhbHVlX25hbWUnIF0gXSApICkKICAgIHsKICAgICAgJGlXWkJtZEVKblhlbWdwdXltdkpzSUJDQUZxQlFQbktndnNtTSA9ICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1VbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdjb25maWdfdmFsdWVfbmFtZScgXSBdOwogICAgICAkdWNXV3hobWtJWVhEeEhLc2RVaFJhZVZIb3ZkUElvREdVWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnY29uZmlnX3ZhbHVlX25hbWUnIF0gXSA9IGFycmF5KCk7CiAgICAgIGlmICggaXNfYXJyYXkoICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gKSApCiAgICAgIHsKICAgICAgICAkdWNXV3hobWtJWVhEeEhLc2RVaFJhZVZIb3ZkUElvREdVWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnY29uZmlnX3ZhbHVlX25hbWUnIF0gXSA9IGFycmF5X21lcmdlKCAkdWNXV3hobWtJWVhEeEhLc2RVaFJhZVZIb3ZkUElvREdVWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnY29uZmlnX3ZhbHVlX25hbWUnIF0gXSwgJGlXWkJtZEVKblhlbWdwdXltdkpzSUJDQUZxQlFQbktndnNtTSApOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1VbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdjb25maWdfdmFsdWVfbmFtZScgXSBdWyBdID0gJGlXWkJtZEVKblhlbWdwdXltdkpzSUJDQUZxQlFQbktndnNtTTsKICAgICAgfQogICAgICAkdWNXV3hobWtJWVhEeEhLc2RVaFJhZVZIb3ZkUElvREdVWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnY29uZmlnX3ZhbHVlX25hbWUnIF0gXVsgXSA9ICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdjb25maWdfdmFsdWUnIF07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1VbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdjb25maWdfdmFsdWVfbmFtZScgXSBdID0gJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ2NvbmZpZ192YWx1ZScgXTsKICAgIH0KICB9CiAgcmV0dXJuICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1U7Cn0KCmZ1bmN0aW9uIGNsZWFuX2NvbmZpZ192YXJzICggJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRICkKewogICRFbWtJWUdjV3lzbFpKVVFZdFByTGhrbnpmWlpTaEdLeFdJUSA9IHRyaW0oICRFbWtJWUdjV3lzbFpKVVFZdFByTGhrbnpmWlpTaEdLeFdJUSApOwogIGlmICggISBzdHJpc3RyKCAkRW1rSVlHY1d5c2xaSlVRWXRQckxoa256ZlpaU2hHS3hXSVEsICI6IiApICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogICRDY09HeGxZV2tPZ1BaUlJ5eGtRV2NhSEtOTVVWWnJoVnVkVkRNID0gYXJyYXkoICJGIiwgIk1HVVNFUiIsICJNRyIsICJVU0VSIiwgIkNDQ0FNIFBPUlQiLCAiTUdDQU1EIFBPUlQiICk7CiAgJE9JQ0J2Rk5McXdsZGJNSVNQbllFVkliZVJsYnpIaU1ZRXBhbyA9IHRyaW0oIHN0cnRvdXBwZXIoIHN1YnN0ciggJEVta0lZR2NXeXNsWkpVUVl0UHJMaGtuemZaWlNoR0t4V0lRLCAwLCBzdHJwb3MoICRFbWtJWUdjV3lzbFpKVVFZdFByTGhrbnpmWlpTaEdLeFdJUSwgJzonICkgKSApICk7CiAgaWYgKCBpbl9hcnJheSggJE9JQ0J2Rk5McXdsZGJNSVNQbllFVkliZVJsYnpIaU1ZRXBhbywgJENjT0d4bFlXa09nUFpSUnl4a1FXY2FIS05NVVZacmhWdWRWRE0gKSApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gaXNfdmFsaWRfZG9tYWluX25hbWUgKCAkQ0J3SHR6cmFtaEFsSlZVVG5oZHl3RWZnS1Vzb1BwSFFaQXMgKQp7CiAgcmV0dXJuIChwcmVnX21hdGNoKCAiL14oW2EtelxkXSgtKlthLXpcZF0pKikoXC4oW2EtelxkXSgtKlthLXpcZF0pKikpKiQvaSIsICRDQndIdHpyYW1oQWxKVlVUbmhkeXdFZmdLVXNvUHBIUVpBcyApICYmIHByZWdfbWF0Y2goICIvXi57MSwyNTN9JC8iLCAkQ0J3SHR6cmFtaEFsSlZVVG5oZHl3RWZnS1Vzb1BwSFFaQXMgKSAmJiBwcmVnX21hdGNoKCAiL15bXlwuXXsxLDYzfShcLlteXC5dezEsNjN9KSokLyIsICRDQndIdHpyYW1oQWxKVlVUbmhkeXdFZmdLVXNvUHBIUVpBcyApKTsKfQoKZnVuY3Rpb24gdmFsaWRfaXAgKCAkZ2FiQVRma2hKdG5RY0ZQek15a0ppbUVEaEZ2dGR2eWsgKQp7CiAgJGdhYkFUZmtoSnRuUWNGUHpNeWtKaW1FRGhGdnRkdnlrID0gdHJpbSggJGdhYkFUZmtoSnRuUWNGUHpNeWtKaW1FRGhGdnRkdnlrICk7CiAgcmV0dXJuIGZpbHRlcl92YXIoICRnYWJBVGZraEp0blFjRlB6TXlrSmltRURoRnZ0ZHZ5aywgRklMVEVSX1ZBTElEQVRFX0lQICk7Cn0KCmZ1bmN0aW9uIGFycmF5X2V2ICggJGVwUkx3Q0ZYb3FsRFhpWWxPTGRybEVVVWxweElyVkxiaWhQVkUgKQp7CiAgJGVwUkx3Q0ZYb3FsRFhpWWxPTGRybEVVVWxweElyVkxiaWhQVkUgPSBAdHJpbSggJGVwUkx3Q0ZYb3FsRFhpWWxPTGRybEVVVWxweElyVkxiaWhQVkUgKTsKICBpZiAoICRlcFJMd0NGWG9xbERYaVlsT0xkcmxFVVVscHhJclZMYmloUFZFID09ICIiIHx8IGlzX251bGwoICRlcFJMd0NGWG9xbERYaVlsT0xkcmxFVVVscHhJclZMYmloUFZFICkgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIE5RRk5sSmdvdGxwc0FBQ09KTkVXZmVncG5VdUhTRk5CayAoICRNTW9kdWVRWEl4bndlVHhjRVVGQnJPWERRZFJaSGNkRSwgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBsaW5lc19vcHRpb25zYCBXSEVSRSBgaWRgID0gJyVkJyIsICRNTW9kdWVRWEl4bndlVHhjRVVGQnJPWERRZFJaSGNkRSApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKcyA9ICRtY0RCLT5PeXdramlKc1BzZlFrc0duZnBORHVEdGJsQ1lPcE9sdUNBV2coICk7CiAgICAkdVlFZVlDVGdOSWNlS05wQUNOcEhheGdtbXlMa1llWU9kID0gYlpXWGt5S0FZQ1BrZ1FMbVhTSWVCV1ZXT3VZZUxOY1pkaGJZKCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcsIDAgKTsKICAgIGlmICggJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ2Rpc2NvdW50JyBdID09IDEgJiYgbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdESVNDT1VOVF9TWVNURU0nIF0gPT0gMSAmJiAkdVlFZVlDVGdOSWNlS05wQUNOcEhheGdtbXlMa1llWU9kID49IG1jTGliOjokRENBbmlVYWJDSlRaUlpvcVZPcVB5V3ZGQ3Npd0l3WyAnRElTQ09VTlRfSU5fWF9MSU5FUycgXSApCiAgICB7CiAgICAgICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdwcmljZScgXSA9ICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdkaXNjb3VudF9wcmljZScgXTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ3ByaWNlJyBdID0gJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ25vcm1hbF9wcmljZScgXTsKICAgIH0KICAgIHJldHVybiAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGJlWHFveGhDY2JwUmxEcnBUS2ZiU0lJVUVjUFNtZFhwTSAoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJHBhSEVpVHl5Z3VwRHNiRXl1Vm9OVm1WcmFZSnF2WExqc2sgPSB0cnVlLCAkS2RVSm5adk1mYlpUUnpEcWpWRmpLdXFmcWJTVEdPUFZBaG8gPSB0cnVlLCAkTEx1dndmcnRkZUltc2xzYVl4TkVTZ0FPUHNrRVpScFRMTyA9IHRydWUsICRoTFJPRmZRUm5TRGltbENkZndsY1J0ak1maldSS3BhREl3WVdzID0gMSApCnsKICBnbG9iYWwgJG1jREI7CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9IEh4SVhMR2dmenBka0N5bGJCTWdobnltd1RzVWhQQ09jVyggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgaWYgKCBpc19hcnJheSggQCRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggKSApCiAgewogICAgV2FQYlNHZXhUZGlrV01wb1dhYlZ1R2VxS2xmWnhFWFFEVVEoIDEgKTsKICAgICR1Y1dXeGhta0lZWER4SEtzZFVoUmFlVkhvdmRQSW9ER1UgPSAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnQ09ORklHX1ZBUlMnIF07CiAgICAkUFVXWGVoZHVTbUVwdFpZZWVvdGV6c21wV25RWENSZ3BWUlBzRSA9ICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdQUk9GSUxFUycgXTsKICAgICR6UXdUT2dsSUdkdldQeFp4ZEdWSFRrYUZmYlllZGpNT1V4ID0gJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ1NDT05TJyBdOwogICAgJEpIdXJ6RnVOdlhaS3BwdE13UlJteWV0ZktQdUFvRGxMckd4ayA9ICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICdVU0VSX0xJTkVTJyBdOwogICAgaWYgKCBAJExMdXZ3ZnJ0ZGVJbXNsc2FZeE5FU2dBT1Bza0VaUnBUTE8gKQogICAgewogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJERUxFVEUgRlJPTSBgbXVsdGljc19jb25maWdfdmFyc2AgV0hFUkUgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJBTFRFUiBUQUJMRSBgbXVsdGljc19jb25maWdfdmFyc2AgQVVUT19JTkNSRU1FTlQgPSAxIiApOwogICAgICBmb3JlYWNoICggJHVjV1d4aG1rSVlYRHhIS3NkVWhSYWVWSG92ZFBJb0RHVSBhcyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgPT4gJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk0gKQogICAgICB7CiAgICAgICAgaWYgKCBpc19hcnJheSggJHNubXd1RnJ0R0JYeE9GTlpBYkRQQnpLZXFpSHNCVk0gKSApCiAgICAgICAgewogICAgICAgICAgZm9yZWFjaCAoICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNIGFzICRpV1pCbWRFSm5YZW1ncHV5bXZKc0lCQ0FGcUJRUG5LZ3ZzbU0gKQogICAgICAgICAgewogICAgICAgICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJJTlNFUlQgSU5UTyBgbXVsdGljc19jb25maWdfdmFyc2AgKGBjb25maWdfdmFsdWVfbmFtZWAsYGNvbmZpZ192YWx1ZWAsYG1hc3Rlcl9zZXJ2ZXJfaWRgKSBWQUxVRVMoJyVzJywnJXMnLCclZCcpIiwgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjLCAkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIklOU0VSVCBJTlRPIGBtdWx0aWNzX2NvbmZpZ192YXJzYCAoYGNvbmZpZ192YWx1ZV9uYW1lYCxgY29uZmlnX3ZhbHVlYCxgbWFzdGVyX3NlcnZlcl9pZGApIFZBTFVFUygnJXMnLCclcycsJyVkJykiLCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMsICRzbm13dUZydEdCWHhPRk5aQWJEUEJ6S2VxaUhzQlZNLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yZWFjaCAoICR6UXdUT2dsSUdkdldQeFp4ZEdWSFRrYUZmYlllZGpNT1V4IGFzICR0TWZLdE5LaWVvQlhoSkRKcE5SVVlYVHppdUdzRldTQmFJICkKICAgICAgewogICAgICAgICRSRlVTUURCaHpnTmhNV3d2anJrc0dJblZ3RUZLR3B5RFF0ID0gZXhwbG9kZSggIjoiLCAkdE1mS3ROS2llb0JYaEpESnBOUlVZWFR6aXVHc0ZXU0JhSSApOwogICAgICAgICRTRlZXWmFMVnd5VEZKRmxhVVNFTnlZYkd3ZkpSWWdRID0gdHJpbSggJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXRbIDAgXSApOwogICAgICAgIHVuc2V0KCAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdFsgMCBdICk7CiAgICAgICAgJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXQgPSBpbXBsb2RlKCAiOiIsICRSRlVTUURCaHpnTmhNV3d2anJrc0dJblZ3RUZLR3B5RFF0ICk7CiAgICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiSU5TRVJUIElOVE8gYG11bHRpY3NfY29uZmlnX3ZhcnNgIChgY29uZmlnX3ZhbHVlX25hbWVgLGBjb25maWdfdmFsdWVgLGBtYXN0ZXJfc2VydmVyX2lkYCkgVkFMVUVTKCclcycsJyVzJywnJWQnKSIsICRTRlZXWmFMVnd5VEZKRmxhVVNFTnlZYkd3ZkpSWWdRLCB0cmltKCAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCApLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICAgfQogICAgfQogICAgaWYgKCBAJHBhSEVpVHl5Z3VwRHNiRXl1Vm9OVm1WcmFZSnF2WExqc2sgKQogICAgewogICAgICAkbUlUTk9ua1dxYUZ1b2tnRWdlb1VCaml2cEdwYnJucGZHS01Mck0gPSBhcnJheSgpOwogICAgICBmb3JlYWNoICggJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UgYXMgJEdyamxPSFNRTlFkRW9Bb3ZuRmlPQktYV09KSWV3TWxaaWdRRSA9PiAkc2JwWXZjVGVVVm5EVVNYVVFEQU16a0l4ekFIUXJqa3BPV2RRICkKICAgICAgewogICAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgaWRgIEZST00gYHByb2ZpbGVzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIEFORCBgcHJvZmlsZV9uYW1lYCA9ICclcycgTElNSVQgMSIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJEdyamxPSFNRTlFkRW9Bb3ZuRmlPQktYV09KSWV3TWxaaWdRRSApOwogICAgICAgIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgICAgICAgewogICAgICAgICAgJGtORUFMeUhCYVdRQ0VWdHJZZkxkUFRCdFhSeGZnSkF1WGJJWSA9ICRtY0RCLT5peWNqZER2U29xZ0xreUpOa25zZlNxbnNScHlzQXVHanZDQUprKCApOwogICAgICAgICAgJG1JVE5PbmtXcWFGdW9rZ0VnZW9VQmppdnBHcGJybnBmR0tNTHJNWyBdID0gJGtORUFMeUhCYVdRQ0VWdHJZZkxkUFRCdFhSeGZnSkF1WGJJWTsKICAgICAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlVQREFURSBgcHJvZmlsZXNgIFNFVCBgcHJvZmlsZV9vcHRpb25zYCA9ICclcycgV0hFUkUgYGlkYCA9ICclZCciLCBzZXJpYWxpemUoICRzYnBZdmNUZVVWbkRVU1hVUURBTXprSXh6QUhRcmprcE9XZFEgKSwgJGtORUFMeUhCYVdRQ0VWdHJZZkxkUFRCdFhSeGZnSkF1WGJJWSApOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiSU5TRVJUIElOVE8gYHByb2ZpbGVzYCAoYHByb2ZpbGVfbmFtZWAsYHByb2ZpbGVfb3B0aW9uc2AsYG1hc3Rlcl9zZXJ2ZXJfaWRgKSBWQUxVRVMoJyVzJywnJXMnLCclZCcpIiwgJEdyamxPSFNRTlFkRW9Bb3ZuRmlPQktYV09KSWV3TWxaaWdRRSwgc2VyaWFsaXplKCAkc2JwWXZjVGVVVm5EVVNYVVFEQU16a0l4ekFIUXJqa3BPV2RRICksICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICAgICAgICAgJG1JVE5PbmtXcWFGdW9rZ0VnZW9VQmppdnBHcGJybnBmR0tNTHJNWyBdID0gJG1jREItPmxacWljWENoUU51RVB1bWhJdXR5T1ZYa0F2dnhRR3J6aXB0ZFJCUSggKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiREVMRVRFIEZST00gYHByb2ZpbGVzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIEFORCBgaWRgIE5PVCBJTigiIC4gaW1wbG9kZSggIiwiLCAkbUlUTk9ua1dxYUZ1b2tnRWdlb1VCaml2cEdwYnJucGZHS01Mck0gKSAuICIpIiwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgICB9CiAgICBpZiAoIEAkS2RVSm5adk1mYlpUUnpEcWpWRmpLdXFmcWJTVEdPUFZBaG8gKQogICAgewogICAgICAkbnFBS0ZvekljQ1dSZUlBbFVpdU15SHBpWmVuT3VKdG9GekdkbHhzID0gcmdKWXJpS3JYRlBNa2pyY2RYUG1HdElUQmJJRURNTlVRSSggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgICAgIGlmICggaXNfYXJyYXkoICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSApCiAgICAgIHsKICAgICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJERUxFVEUgRlJPTSBgbGluZXNgIFdIRVJFIGBzZXJ2ZXJfaWRgIElOKCIgLiBpbXBsb2RlKCAiLCIsICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSAuICIpIiApOwogICAgICB9CiAgICAgICREQ2JCTmFqb0lxbG9CZUxtZG1HV0NXa0JOc1RnVVNGRkUgPSBvWUN4amNyTUdYTVJ4cWR4TldibmtmR3ZhbUpqemhFSlRZKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICAgaWYgKCBlbXB0eSggJG1JVE5PbmtXcWFGdW9rZ0VnZW9VQmppdnBHcGJybnBmR0tNTHJNICkgKQogICAgICB7CiAgICAgICAgJEp3S3hraUpJZkNwdldiTEpHUUx1YWJZYlRuQlhwamFyWSA9IGhtQXdid2Z2YkNJRFZUR3JBVWh4R2Z2d3d0bWNlYlNoUkdOdUwoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICAgICAgICRtSVROT25rV3FhRnVva2dFZ2VvVUJqaXZwR3Bicm5wZkdLTUxyTSA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoICRKd0t4a2lKSWZDcHZXYkxKR1FMdWFiWWJUbkJYcGphclkgYXMgJFdTVkRaaEVIdk9KdXRvWEpGdVJsSGdsYkV6VEJXYUd3WmhqS0kgKQogICAgICAgIHsKICAgICAgICAgICRtSVROT25rV3FhRnVva2dFZ2VvVUJqaXZwR3Bicm5wZkdLTUxyTVsgXSA9ICRXU1ZEWmhFSHZPSnV0b1hKRnVSbEhnbGJFelRCV2FHd1poaktJWyAnaWQnIF07CiAgICAgICAgfQogICAgICB9CiAgICAgICRzc3lBb0hlU2p1YVZxSk5IVW95RU1OQlBoRFFVbGR5b29aSUlMID0gYXJyYXkoICdORVdDQU1EJyA9PiAzLCAnQ0NDQU0nID0+IDEsICdNR0NBTUQnID0+IDIgKTsKICAgICAgJFlaQVVOblVJZFdCREhVU1B6TnFscmtWWE5SRVJ2SHFVY2hRVSA9IGFycmF5KCk7CiAgICAgIGZvcmVhY2ggKCAkSkh1cnpGdU52WFpLcHB0TXdSUm15ZXRmS1B1QW9EbExyR3hrIGFzICRKZ2pjbnBLc3NpVGRjd0FGSHBRbmhCSW9WVFp6Vk5vRGNVZyA9PiAkYnBMSm1FZWVxbVBsUnBoWEhtemJ5Q1VLYllMWWl0UVhJWFRMSiApCiAgICAgIHsKICAgICAgICAkSldNWE9kUWdJUFlCc3ROTk1mTFFIVGVodXhNS1JHS21zV2hJID0gJHNzeUFvSGVTanVhVnFKTkhVb3lFTU5CUGhEUVVsZHlvb1pJSUxbICRKZ2pjbnBLc3NpVGRjd0FGSHBRbmhCSW9WVFp6Vk5vRGNVZyBdOwogICAgICAgICRmUm5wUmpYcWRZQWhvTU5LdFVyUG1HWU5kSUpleFhzQ2xRQiA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoICRicExKbUVlZXFtUGxScGhYSG16YnlDVUtiWUxZaXRRWElYVExKIGFzICRQeVluamxZRFRpWGdNaHFwbkpCV3Zkb3NnZ29uSHJXb0RCcFhpUHAgPT4gJFlDV3phcmxwakNqYlNuQXZ6VnF4dUhTcGRYaEpOeXRZTWpwICkKICAgICAgICB7CiAgICAgICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGlkYCBGUk9NIGBtdWx0aWNzX3NlcnZlcnNgIFdIRVJFIGBtYXN0ZXJfc2VydmVyX2lkYCA9ICclZCcgQU5EIGBlbXVsYXRvcl9pZGAgPSAnJWQnIEFORCBgcG9ydGAgPSAnJWQnIiwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjLCAkSldNWE9kUWdJUFlCc3ROTk1mTFFIVGVodXhNS1JHS21zV2hJLCAkUHlZbmpsWURUaVhnTWhxcG5KQld2ZG9zZ2dvbkhyV29EQnBYaVBwICk7CiAgICAgICAgICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogICAgICAgICAgewogICAgICAgICAgICAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EgPSAkbWNEQi0+aXljamREdlNvcWdMa3lKTmtuc2ZTcW5zUnB5c0F1R2p2Q0FKayggKTsKICAgICAgICAgICAgJFlaQVVOblVJZFdCREhVU1B6TnFscmtWWE5SRVJ2SHFVY2hRVVsgXSA9ICRFdXZUb1RSSEZoWFB0TVl6bVV3UE9YWXVPTElTdExXQTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgJEV1dlRvVFJIRmhYUHRNWXptVXdQT1hZdU9MSVN0TFdBID0gWXhqTEdDS1h6a0pRZFRzS0pQaldCZktQemJHb2taSFRqRUVPeXlHRSggJEpXTVhPZFFnSVBZQnN0Tk5NZkxRSFRlaHV4TUtSR0ttc1doSSwgJERDYkJOYWpvSXFsb0JlTG1kbUdXQ1drQk5zVGdVU0ZGRVsgJ2RvbWFpbicgXSwgJEpnamNucEtzc2lUZGN3QUZIcFFuaEJJb1ZUWnpWTm9EY1VnIC4gJyBTZXJ2ZXInLCAkUHlZbmpsWURUaVhnTWhxcG5KQld2ZG9zZ2dvbkhyV29EQnBYaVBwLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MsICgkSldNWE9kUWdJUFlCc3ROTk1mTFFIVGVodXhNS1JHS21zV2hJID09IDMpID8gMCA6IDEgKTsKICAgICAgICAgICAgJFlaQVVOblVJZFdCREhVU1B6TnFscmtWWE5SRVJ2SHFVY2hRVVsgXSA9ICRFdXZUb1RSSEZoWFB0TVl6bVV3UE9YWXVPTElTdExXQTsKICAgICAgICAgIH0KICAgICAgICAgICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5X3ZhbHVlcyggYXJyYXlfZmlsdGVyKCBhcnJheV91bmlxdWUoICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCApICkgKTsKICAgICAgICAgIGZvcmVhY2ggKCAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgYXMgJFljb2NvZkNZWGlUUFJCSmV4ZUVHbEN0R3VYYUZEeEJETVQgKQogICAgICAgICAgewogICAgICAgICAgICAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdCA9IGV4cGxvZGUoICIgIiwgJFljb2NvZkNZWGlUUFJCSmV4ZUVHbEN0R3VYYUZEeEJETVQgKTsKICAgICAgICAgICAgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3cgPSB0cmltKCAkUkZVU1FEQmh6Z05oTVd3dmpya3NHSW5Wd0VGS0dweURRdFsgMCBdICk7CiAgICAgICAgICAgICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZID0gdHJpbSggJFJGVVNRREJoemdOaE1Xd3ZqcmtzR0luVndFRktHcHlEUXRbIDEgXSApOwogICAgICAgICAgICBpZiAoIGluX2FycmF5KCAkRGhnZVRZenRwWktZTE1SUmxPa21RYnR5RXdSTERrT1BHQkxHdywgJGZSbnBSalhxZFlBaG9NTkt0VXJQbUdZTmRJSmV4WHNDbFFCICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgYXJyYXlfcHVzaCggJGZSbnBSalhxZFlBaG9NTkt0VXJQbUdZTmRJSmV4WHNDbFFCLCAkRGhnZVRZenRwWktZTE1SUmxPa21RYnR5RXdSTERrT1BHQkxHdyApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjID0gYXJyYXkoKTsKICAgICAgICAgICAgJG5Rem5oSW5zSXh6dmpobGdEdWZrR2ZVZGJWZmNJID0gJ05VTEwnOwogICAgICAgICAgICAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgPSAwOwogICAgICAgICAgICBpZiAoIHByZWdfbWF0Y2goICIveyguKj8pfS8iLCAkWWNvY29mQ1lYaVRQUkJKZXhlRUdsQ3RHdVhhRkR4QkRNVCwgJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETSApICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICRHUXppSHhkS3pSRGpXbkpCaE50U0RtSFdScVVoVWZScyA9IHRyaW0oIGh0bWxlbnRpdGllcyggJFFQcGJBS2hnRkJ4ZGhvS0RVQWJveGRDUWdvdXFWYlFyRmRETVsgMSBdICkgKTsKICAgICAgICAgICAgICAkRmt3cEpOVFBuZHhmZlV6RHB1eUNMbk5XVENpeXdTVVdCbW1ZID0gc3RyX3JlcGxhY2UoICc7JywgJyYnLCAkR1F6aUh4ZEt6UkRqV25KQmhOdFNEbUhXUnFVaFVmUnMgKTsKICAgICAgICAgICAgICBwYXJzZV9zdHIoICRGa3dwSk5UUG5keGZmVXpEcHV5Q0xuTldUQ2l5d1NVV0JtbVksICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmMgPSBhcnJheV9tYXAoICJ0cmltIiwgJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmMgKTsKICAgICAgICAgICAgZm9yZWFjaCAoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjIGFzICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PiAkaU9HVndORnhVb3hNUVJJZVh0c094VG9Yc1pxcUtlRFhwUEhzICkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICggaXNfbnVsbCggJGlPR1Z3TkZ4VW94TVFSSWVYdHNPeFRvWHNacXFLZURYcFBIcyApIHx8IGVtcHR5KCAkaU9HVndORnhVb3hNUVJJZVh0c094VG9Yc1pxcUtlRFhwUEhzICkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHVuc2V0KCAkeWRORERKVHhPVEFWbFF4ZnVxaHZEZ3FMU0p3a3NBV3NyY1sgJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjIF0gKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG5QZ3lFRUJvYUdlVnl5TUhxdWVwZ016clNkb2d5VFRwZ0tHTSA9IDA7CiAgICAgICAgICAgICRPTkpBem5JdUlBU3Z5bFlBT1NMTFpXQWRvbVhUSmhNQmRtcSA9IGltcGxvZGUoICIsIiwgJG1JVE5PbmtXcWFGdW9rZ0VnZW9VQmppdnBHcGJybnBmR0tNTHJNICk7CiAgICAgICAgICAgIGlmICggJGhMUk9GZlFSblNEaW1sQ2Rmd2xjUnRqTWZqV1JLcGFESXdZV3MgPT0gMSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoIGFycmF5X2tleV9leGlzdHMoICJwcm9maWxlX2lkcyIsICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjICkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRPTkpBem5JdUlBU3Z5bFlBT1NMTFpXQWRvbVhUSmhNQmRtcSA9ICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjWyAncHJvZmlsZV9pZHMnIF07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICggYXJyYXlfa2V5X2V4aXN0cyggInBhbmVsX21lbWJlcmlkIiwgJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmMgKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ID0gJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmNbICdwYW5lbF9tZW1iZXJpZCcgXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBhcnJheV9rZXlfZXhpc3RzKCAidGVzdF9saW5lIiwgJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmMgKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkblBneUVFQm9hR2VWeXlNSHF1ZXBnTXpyU2RvZ3lUVHBnS0dNID0gJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmNbICd0ZXN0X2xpbmUnIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBhcnJheV9rZXlfZXhpc3RzKCAicGFuZWxfZXhwZGF0ZSIsICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJG5Rem5oSW5zSXh6dmpobGdEdWZrR2ZVZGJWZmNJID0gJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmNbICdwYW5lbF9leHBkYXRlJyBdOwogICAgICAgICAgICAgIHVuc2V0KCAkeWRORERKVHhPVEFWbFF4ZnVxaHZEZ3FMU0p3a3NBV3NyY1sgJ3BhbmVsX2V4cGRhdGUnIF0gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlaWYgKCBhcnJheV9rZXlfZXhpc3RzKCAiZW5kZGF0ZSIsICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJG5Rem5oSW5zSXh6dmpobGdEdWZrR2ZVZGJWZmNJID0gc3RydG90aW1lKCAkeWRORERKVHhPVEFWbFF4ZnVxaHZEZ3FMU0p3a3NBV3NyY1sgJ2VuZGRhdGUnIF0gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bnNldCggJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmNbICd0ZXN0X2xpbmUnIF0gKTsKICAgICAgICAgICAgdW5zZXQoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjWyAncHJvZmlsZV9pZHMnIF0gKTsKICAgICAgICAgICAgdW5zZXQoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjWyAncHJvZmlsZXMnIF0gKTsKICAgICAgICAgICAgdW5zZXQoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjWyAnbmFtZScgXSApOwogICAgICAgICAgICB1bnNldCggJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmNbICdwYW5lbF9tZW1iZXJpZCcgXSApOwogICAgICAgICAgICB1bnNldCggJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmNbICdwYW5lbF9leHBkYXRlJyBdICk7CiAgICAgICAgICAgIHVuc2V0KCAkeWRORERKVHhPVEFWbFF4ZnVxaHZEZ3FMU0p3a3NBV3NyY1sgJ2VuZGRhdGUnIF0gKTsKICAgICAgICAgICAgZm9yZWFjaCAoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjIGFzICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PiAkaU9HVndORnhVb3hNUVJJZVh0c094VG9Yc1pxcUtlRFhwUEhzICkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICggc3RyaXN0ciggJHVMTGdIQm1QdGhLVUZlRVJ0alh0cnZCS0NPdURzUndYY2ZjLCAnLCcgKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdW5zZXQoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXSApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlaWYgKCBpc19udW1lcmljKCAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdW5zZXQoICR5ZE5EREpUeE9UQVZsUXhmdXFodkRncUxTSndrc0FXc3JjWyAkdUxMZ0hCbVB0aEtVRmVFUnRqWHRydkJLQ091RHNSd1hjZmMgXSApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBTa1lSc2FZb3RNaUhLa09Ea3JFTnFxd2liYnBQQVRmSHcoICREaGdlVFl6dHBaS1lMTVJSbE9rbVFidHlFd1JMRGtPUEdCTEd3LCAkQUpkTkphQXNBRG5WYlRHVURQU214QmtQa0ZLTm5sakl2ZlZiWSwgJG5Rem5oSW5zSXh6dmpobGdEdWZrR2ZVZGJWZmNJLCAkRXV2VG9UUkhGaFhQdE1Zem1Vd1BPWFl1T0xJU3RMV0EsICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dywgJE9OSkF6bkl1SUFTdnlsWUFPU0xMWldBZG9tWFRKaE1CZG1xLCAiIiwgJG5QZ3lFRUJvYUdlVnl5TUhxdWVwZ016clNkb2d5VFRwZ0tHTSwgMCwgJHlkTkRESlR4T1RBVmxReGZ1cWh2RGdxTFNKd2tzQVdzcmMsIDAgKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiREVMRVRFIEZST00gYG11bHRpY3Nfc2VydmVyc2AgV0hFUkUgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyBBTkQgYGlkYCBOT1QgSU4oIiAuIGltcGxvZGUoICIsIiwgJFlaQVVOblVJZFdCREhVU1B6TnFscmtWWE5SRVJ2SHFVY2hRVSApIC4gIikiLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgbXVsdGljc19zZXJ2ZXJzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIEFORCBgZW11bGF0b3JfaWRgID0gJyVkJyIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgMyApOwogICAgICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA9PSAwICkKICAgICAgewogICAgICAgIFl4akxHQ0tYemtKUWRUc0tKUGpXQmZLUHpiR29rWkhUakVFT3l5R0UoIDMsICREQ2JCTmFqb0lxbG9CZUxtZG1HV0NXa0JOc1RnVVNGRkVbICdkb21haW4nIF0sICdORVdDQU1EIFNlcnZlcicsIDAsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgMCApOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBkZGxtVnZtelZqeFhHck1jQnNwUnNzUHZyRFZvVlZFUSAoICRnWHN3VWZCTm5teUJxc3RlaUpVa0pJQUFuUVJXckFJbVdIVSwgJGhCa2VRZ1VnWllwWXp0bnNDWGNMYkdyZlRZQVJTZmVISXFFLCAkU2R0VmFEVWp2QWR5bFBOTWFOTFVNdHZ6dWp0VElmYlBmVlRRICkKewogIGlmICggbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdTRVJWRVJfU01UUCcgXSA9PSAxICkKICB7CiAgICAkZ21mSVRrY1ZIVGttWnRKQ0F5VGNxR3RLaVpMQlVvT0FXT01CQSA9ICdNSU1FLVZlcnNpb246IDEuMCcgLiAiXHJcbiI7CiAgICAkZ21mSVRrY1ZIVGttWnRKQ0F5VGNxR3RLaVpMQlVvT0FXT01CQSAuPSAnQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMScgLiAiXHJcbiI7CiAgICAkZ21mSVRrY1ZIVGttWnRKQ0F5VGNxR3RLaVpMQlVvT0FXT01CQSAuPSAnRnJvbTogJyAuIG1jTGliOjokRENBbmlVYWJDSlRaUlpvcVZPcVB5V3ZGQ3Npd0l3WyAnU0VSVkVSX05BTUUnIF0gLiAnIDwnIC4gbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdFTUFJTF9GUk9NJyBdIC4gJz4nIC4gIlxyXG4iOwogICAgJGdtZklUa2NWSFRrbVp0SkNBeVRjcUd0S2laTEJVb09BV09NQkEgLj0gJ1gtTWFpbGVyOiBQSFAvJyAuIHBocHZlcnNpb24oICkgLiAiXHJcbiI7CiAgICBpZiAoIEBtYWlsKCAkZ1hzd1VmQk5ubXlCcXN0ZWlKVWtKSUFBblFSV3JBSW1XSFUsICRoQmtlUWdVZ1pZcFl6dG5zQ1hjTGJHcmZUWUFSU2ZlSElxRSwgJFNkdFZhRFVqdkFkeWxQTk1hTkxVTXR2enVqdFRJZmJQZlZUUSwgJGdtZklUa2NWSFRrbVp0SkNBeVRjcUd0S2laTEJVb09BV09NQkEgKSApCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KICBlbHNlCiAgewogICAgcmVxdWlyZV9vbmNlIChNVUxUSUNTX0NMQVNTRVNfUEFUSCAuICJjbGFzcy5waHBtYWlsZXIucGhwIik7CiAgICAkbWFpbCA9IG5ldyBQSFBNYWlsZXIoICk7CiAgICAkbWFpbC0+SXNTTVRQKCApOwogICAgJG1haWwtPlNNVFBBdXRoID0gdHJ1ZTsKICAgICRtYWlsLT5TTVRQU2VjdXJlID0gbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdTTVRQX0VOQ1JZUFRJT04nIF07CiAgICAkbWFpbC0+SG9zdCA9IG1jTGliOjokRENBbmlVYWJDSlRaUlpvcVZPcVB5V3ZGQ3Npd0l3WyAnU01UUF9IT1NUJyBdOwogICAgJG1haWwtPlBvcnQgPSBpbnR2YWwoIG1jTGliOjokRENBbmlVYWJDSlRaUlpvcVZPcVB5V3ZGQ3Npd0l3WyAnU01UUF9QT1JUJyBdICk7CiAgICAkbWFpbC0+VXNlcm5hbWUgPSBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ1NNVFBfVVNFUk5BTUUnIF07CiAgICAkbWFpbC0+UGFzc3dvcmQgPSBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ1NNVFBfUEFTU1dPUkQnIF07CiAgICAkbWFpbC0+U2V0RnJvbSggbWNMaWI6OiREQ0FuaVVhYkNKVFpSWm9xVk9xUHlXdkZDc2l3SXdbICdTTVRQX1VTRVJOQU1FJyBdLCBtY0xpYjo6JERDQW5pVWFiQ0pUWlJab3FWT3FQeVd2RkNzaXdJd1sgJ1NNVFBfRlJPTV9OQU1FJyBdICk7CiAgICAkbWFpbC0+QWRkQWRkcmVzcyggJGdYc3dVZkJObm15QnFzdGVpSlVrSklBQW5RUldyQUltV0hVICk7CiAgICAkbWFpbC0+U3ViamVjdCA9ICRoQmtlUWdVZ1pZcFl6dG5zQ1hjTGJHcmZUWUFSU2ZlSElxRTsKICAgICRtYWlsLT5Cb2R5ID0gJFNkdFZhRFVqdkFkeWxQTk1hTkxVTXR2enVqdFRJZmJQZlZUUTsKICAgICRtYWlsLT5TTVRQRGVidWcgPSAwOwogICAgJG1haWwtPldvcmRXcmFwID0gMjUwOwogICAgJG1haWwtPklzSFRNTCggdHJ1ZSApOwogICAgaWYgKCAkbWFpbC0+U2VuZCggKSApCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgZWxzZQogICAgewogICAgICBlY2hvICRtYWlsLT5FcnJvckluZm87CiAgICAgIGV4aXQoICk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGJVSXlNbG5VZFJhaktNaW9DUERkVmRVanVVVHFyVnVwVU5rICggJGRuUFRHVGVHRFVac1NBcXdUZ0d3VlRCSnZHT3JXdktIVERleVUsICR1ZFh6RXV4d2hGbm5TS2R5REd6SklLZnVPR0VhSHB5b1lLdEEsICRNTlVHU2d1aXpXZnVFUENIdUFPdEJPUG5hckRKTGV5YVhXSGRpREkgPSAnTW9udGhzJywgJEFVdmZ4U0xFUGViUHhZUWZ1dnNtZlJra2pNVWhCYlhBc3BGYyA9IDAsICRQVVdYZWhkdVNtRXB0WlllZW90ZXpzbXBXblFYQ1JncFZSUHNFID0gbnVsbCwgJFBXaEptVmFRZ0tmZWZ5WG9QZU1TeEpoWHROc3hqVU1tWk5ibyA9IDAsICRLb1piVWFvcHVDd3Fkb2JPWlp4dVh6V09RdmpGSURhSyA9IDEgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgZGF0ZV9lbmRgIEZST00gYGxpbmVzYCBXSEVSRSBpZCA9ICclZCciLCAkZG5QVEdUZUdEVVpzU0Fxd1RnR3dWVEJKdkdPcld2S0hURGV5VSApOwogICRmaWFneXRaYlJlTGpmbHZJcWlSY21CVUpnZW5YeGcgPSAkbWNEQi0+aXljamREdlNvcWdMa3lKTmtuc2ZTcW5zUnB5c0F1R2p2Q0FKayggKTsKICBpZiAoIHRpbWUoICkgPiAkZmlhZ3l0WmJSZUxqZmx2SXFpUmNtQlVKZ2VuWHhnICkKICB7CiAgICAkZm1JbWFaUUVUaXdYT0d5aEdoeG1iZXZrbHJlZ1N1S0dWdVlXRSA9IHN0cnRvdGltZSggIiskdWRYekV1eHdoRm5uU0tkeURHekpJS2Z1T0dFYUhweW9ZS3RBICRNTlVHU2d1aXpXZnVFUENIdUFPdEJPUG5hckRKTGV5YVhXSGRpREkiICk7CiAgfQogIGVsc2UKICB7CiAgICAkZm1JbWFaUUVUaXdYT0d5aEdoeG1iZXZrbHJlZ1N1S0dWdVlXRSA9IHN0cnRvdGltZSggIiskdWRYekV1eHdoRm5uU0tkeURHekpJS2Z1T0dFYUhweW9ZS3RBICRNTlVHU2d1aXpXZnVFUENIdUFPdEJPUG5hckRKTGV5YVhXSGRpREkiLCAkZmlhZ3l0WmJSZUxqZmx2SXFpUmNtQlVKZ2VuWHhnICk7CiAgfQogIGlmICggaXNfbnVsbCggJFBVV1hlaGR1U21FcHRaWWVlb3RlenNtcFduUVhDUmdwVlJQc0UgKSApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiVVBEQVRFIGBsaW5lc2AgU0VUIGB0ZXN0X2xpbmVgID0gMCxgbW9uaXRvcl9leGNsdWRlYCA9ICclZCcsYGFsbG93X2NoX2VtdWAgPSAnJWQnLGBub3RpZmllZF9leHBpcmVgID0gMSxgZGF0ZV9lbmRgID0gJyVkJyxgdXNlcl9wYWlkYCA9ICclZicsYGRhdGVfc3RhcnRgID0gJyVkJyBXSEVSRSBgaWRgID0gJyVkJyIsICRQV2hKbVZhUWdLZmVmeVhvUGVNU3hKaFh0TnN4alVNbVpOYm8sICRLb1piVWFvcHVDd3Fkb2JPWlp4dVh6V09RdmpGSURhSywgJGZtSW1hWlFFVGl3WE9HeWhHaHhtYmV2a2xyZWdTdUtHVnVZV0UsICRBVXZmeFNMRVBlYlB4WVFmdXZzbWZSa2tqTVVoQmJYQXNwRmMsIHRpbWUoICksICRkblBUR1RlR0RVWnNTQXF3VGdHd1ZUQkp2R09yV3ZLSFREZXlVICk7CiAgfQogIGVsc2UKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJVUERBVEUgYGxpbmVzYCBTRVQgYHRlc3RfbGluZWAgPSAwLGBtb25pdG9yX2V4Y2x1ZGVgID0gJyVkJyxgYWxsb3dfY2hfZW11YCA9ICclZCcsYHByb2ZpbGVzYCA9ICclcycsYG5vdGlmaWVkX2V4cGlyZWAgPSAxLGBkYXRlX2VuZGAgPSAnJWQnLGB1c2VyX3BhaWRgID0gJyVmJyxgZGF0ZV9zdGFydGAgPSAnJWQnIFdIRVJFIGBpZGAgPSAnJWQnIiwgJFBXaEptVmFRZ0tmZWZ5WG9QZU1TeEpoWHROc3hqVU1tWk5ibywgJEtvWmJVYW9wdUN3cWRvYk9aWnh1WHpXT1F2akZJRGFLLCAkUFVXWGVoZHVTbUVwdFpZZWVvdGV6c21wV25RWENSZ3BWUlBzRSwgJGZtSW1hWlFFVGl3WE9HeWhHaHhtYmV2a2xyZWdTdUtHVnVZV0UsICRBVXZmeFNMRVBlYlB4WVFmdXZzbWZSa2tqTVVoQmJYQXNwRmMsIHRpbWUoICksICRkblBUR1RlR0RVWnNTQXF3VGdHd1ZUQkp2R09yV3ZLSFREZXlVICk7CiAgfQogIGlmICggJG1jREItPlVMRE5xcVRISnpObVhlWWVFSG1jbW9YZ1pkSGtjZnJqaFFsWSggKSA+IDAgKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIExOYklPU1paelFDdU11c29Od1BmbFhMeFJuSXhEb0RhUnJZICggJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBwYXltZW50c2AgV0hFUkUgYG1lbWJlcl9pZGAgPSAnJWQnIE9SREVSIEJZIGlkIERFU0MiLCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgKTsKICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gYXJyYXkoKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgfQogIHJldHVybiAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IOwp9CgpmdW5jdGlvbiBCbUJIV05HY211QUx4dXJLb0tuZVhEd1BCdGxubll1byAoICRDRWRlYnhsR3VXVmJ1SUphSWlFUHNjcFl6TVBZWXJrLCAkc1JmRFROQXV0aVNCTXBWSGxGRWhLaHZkbmdWdXhtcG9zID0gZmFsc2UsICRmRGdVYWtIV2R4ZVR2dW9NZmJia09Hc1V2V0dMZ2pjV0dodyA9IDEgKQp7CiAgZ2xvYmFsICRtY0RCOwogIGlmICggISBAJHNSZkRUTkF1dGlTQk1wVkhsRkVoS2h2ZG5nVnV4bXBvcyApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgcGF5bWVudHNgIFdIRVJFIGBwYXltZW50X21ldGhvZGAgPSAnJXMnIE9SREVSIEJZIGlkIERFU0MiLCAkQ0VkZWJ4bEd1V1ZidUlKYUlpRVBzY3BZek1QWVlyayApOwogIH0KICBlbHNlaWYgKCAkZkRnVWFrSFdkeGVUdnVvTWZiYmtPR3NVdldHTGdqY1dHaHcgPT0gMSApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgcGF5bWVudHNgIFdIRVJFIGBwYXltZW50X21ldGhvZGAgPSAnJXMnIEFORCBgYWNjZXB0ZWRgID0gMSBPUkRFUiBCWSBpZCBERVNDIiwgJENFZGVieGxHdVdWYnVJSmFJaUVQc2NwWXpNUFlZcmsgKTsKICB9CiAgZWxzZQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYHBheW1lbnRzYCBXSEVSRSBgcGF5bWVudF9tZXRob2RgID0gJyVzJyBBTkQgYGFjY2VwdGVkYCA9IDAgT1JERVIgQlkgaWQgREVTQyIsICRDRWRlYnhsR3VXVmJ1SUphSWlFUHNjcFl6TVBZWXJrICk7CiAgfQogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSBhcnJheSgpOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIFpKaGhzeXJHZmVlRW9ZR3NhZnFJbEdOV0NKc0hncXl6UGVVUFZRRCAoICRrTkVBTHlIQmFXUUNFVnRyWWZMZFBUQnRYUnhmZ0pBdVhiSVkgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYHBheW1lbnRzYCBXSEVSRSBgaWRgID0gJyVkJyIsICRrTkVBTHlIQmFXUUNFVnRyWWZMZFBUQnRYUnhmZ0pBdVhiSVkgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogIH0KICByZXR1cm4gYXJyYXkoKTsKfQoKZnVuY3Rpb24gT0ttUXpXbnRhRUtidFZCd0dBYkh5QUFERmpwQUplSG8gKCAkcWlySURpSWhQQ1dKRmF2eEVkRWJ0SnFDZENzemthcUksICR4WFBUSHJpQXBBRFZrSFNuWGdtaFhaWnhiY3p2d2NkcWJhRSA9IGZhbHNlLCAkU2lYendpSVptTWRhZFNmclFVZERYZ21MY05nb2pPQ0lOZWlJID0gJ2lkIERFU0MnLCAka3ZFb0Z3SnZUbURGUklVZXdRQXJJeWZscmtoU0xScWR2SWhPRUxzID0gZmFsc2UsICR2bnhtdmlFSktycHBDVHNJWmlOd0puRkFEZVRLblB3SVF4a0NFRUZJID0gJ0FORCcgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRDYU5DdHhreWVsUnNNanVhVHZPeFNITWZRTkxpdGpOa1ZVID0gIiI7CiAgaWYgKCAka3ZFb0Z3SnZUbURGUklVZXdRQXJJeWZscmtoU0xScWR2SWhPRUxzICkKICB7CiAgICAkQ2FOQ3R4a3llbFJzTWp1YVR2T3hTSE1mUU5MaXRqTmtWVSA9ICJXSEVSRSAiOwogICAgaWYgKCAkdm54bXZpRUpLcnBwQ1RzSVppTndKbkZBRGVUS25Qd0lReGtDRUVGSSA9PSAnQU5EJyApCiAgICB7CiAgICAgIGZvcmVhY2ggKCAka3ZFb0Z3SnZUbURGUklVZXdRQXJJeWZscmtoU0xScWR2SWhPRUxzIGFzICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyA9PiAkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NICkKICAgICAgewogICAgICAgICRDYU5DdHhreWVsUnNNanVhVHZPeFNITWZRTkxpdGpOa1ZVIC49ICJgIiAuICR1TExnSEJtUHRoS1VGZUVSdGpYdHJ2QktDT3VEc1J3WGNmYyAuICJgID0gJyIgLiAkaVdaQm1kRUpuWGVtZ3B1eW12SnNJQkNBRnFCUVBuS2d2c21NIC4gIicgQU5EICI7CiAgICAgIH0KICAgICAgJENhTkN0eGt5ZWxSc01qdWFUdk94U0hNZlFOTGl0ak5rVlUgPSB0cmltKCAkQ2FOQ3R4a3llbFJzTWp1YVR2T3hTSE1mUU5MaXRqTmtWVSApOwogICAgICAkQ2FOQ3R4a3llbFJzTWp1YVR2T3hTSE1mUU5MaXRqTmtWVSA9IHN1YnN0ciggJENhTkN0eGt5ZWxSc01qdWFUdk94U0hNZlFOTGl0ak5rVlUsIDAsIC0gMyApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkQ2FOQ3R4a3llbFJzTWp1YVR2T3hTSE1mUU5MaXRqTmtWVSAuPSAiYCIgLiBrZXkoICRrdkVvRndKdlRtREZSSVVld1FBckl5Zmxya2hTTFJxZHZJaE9FTHMgKSAuICJgIElOICgiIC4gJGt2RW9Gd0p2VG1ERlJJVWV3UUFySXlmbHJraFNMUnFkdkloT0VMc1sga2V5KCAka3ZFb0Z3SnZUbURGUklVZXdRQXJJeWZscmtoU0xScWR2SWhPRUxzICkgXSAuICIpIjsKICAgIH0KICB9CiAgaWYgKCAkeFhQVEhyaUFwQURWa0hTblhnbWhYWlp4YmN6dndjZHFiYUUgKQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYCRxaXJJRGlJaFBDV0pGYXZ4RWRFYnRKcUNkQ3N6a2FxSWAgJENhTkN0eGt5ZWxSc01qdWFUdk94U0hNZlFOTGl0ak5rVlUgT1JERVIgQlkgJFNpWHp3aUlabU1kYWRTZnJRVWREWGdtTGNOZ29qT0NJTmVpSSIgKTsKICB9CiAgZWxzZQogIHsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYCRxaXJJRGlJaFBDV0pGYXZ4RWRFYnRKcUNkQ3N6a2FxSWAgJENhTkN0eGt5ZWxSc01qdWFUdk94U0hNZlFOTGl0ak5rVlUiICk7CiAgfQogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSBhcnJheSgpOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIGRGZUJmbGhtdlRCQUlrUHFSTnhXelNrTG9DdGxJcW1jTElFICggJGh4ekVtcEh6bEpBbnlTVmFaSEdtbHZ1d3Rsdm9Bd2JtUFN2cVEgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS4qLHQzLmBkb21haW5fbmFtZWAgYXMgYGRvbWFpbmAsdDIuYGlkYCBhcyBgbWFzdGVyX3NlcnZlcl9pZGAgRlJPTSBgbGluZXNfb3B0aW9uc2AgdDEsYG11bHRpY3NfbWFzdGVyX3NlcnZlcnNgIHQyLCBgbXVsdGljc19zZXJ2ZXJzYCB0MyBXSEVSRSB0MS5gaWRgID0gJyVkJyBBTkQgdDEuYHNlcnZlcl9pZGAgPSB0My5gaWRgIEFORCB0My5gbWFzdGVyX3NlcnZlcl9pZGAgPSB0Mi5gaWRgIiwgJGh4ekVtcEh6bEpBbnlTVmFaSEdtbHZ1d3Rsdm9Bd2JtUFN2cVEgKTsKICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gYXJyYXkoKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIHQxLmBncm91cF9pZGAsdDIuYGdyb3VwX25hbWVgLHQyLmBwZXJjZW50X2Rpc2NvdW50YCBGUk9NIGBncm91cF9wYWNrYWdlc2AgdDEsYG1lbWJlcl9ncm91cHNgIHQyIFdIRVJFIHQyLmBpZGAgPSB0MS5gZ3JvdXBfaWRgIEFORCB0MS5gcGFja2FnZV9pZGAgPSAnJWQnIiwgJGh4ekVtcEh6bEpBbnlTVmFaSEdtbHZ1d3Rsdm9Bd2JtUFN2cVEgKTsKICAgICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogICAgZm9yZWFjaCAoICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsIGFzICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnMgKQogICAgewogICAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IWyAnZ3JvdXBzJyBdWyAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnZ3JvdXBfaWQnIF0gXSA9ICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnM7CiAgICB9CiAgfQogIHJldHVybiAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IOwp9CgpmdW5jdGlvbiBzTXZsbEVnUkJmZE9jdklsb1dNQVhTbEVaR2hMbldZICggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICkKewogIGdsb2JhbCAkbWNEQjsKICAkbnFBS0ZvekljQ1dSZUlBbFVpdU15SHBpWmVuT3VKdG9GekdkbHhzID0gcmdKWXJpS3JYRlBNa2pyY2RYUG1HdElUQmJJRURNTlVRSSggJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBkZWZhdWx0X3NlcnZlcl9pZGAgRlJPTSBgbXVsdGljc19zZXJ2ZXJfZW11bGF0b3JzYCBXSEVSRSBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIEFORCBgdXNlcl9hY2Nlc3NgID0gMSBPUkRFUiBieSBgZW11bGF0b3JfaWRgIEFTQyIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgICBmb3JlYWNoICggJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgYXMgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKcyApCiAgICB7CiAgICAgIGlmICggaW5fYXJyYXkoICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdkZWZhdWx0X3NlcnZlcl9pZCcgXSwgJG5xQUtGb3pJY0NXUmVJQWxVaXVNeUhwaVplbk91SnRvRnpHZGx4cyApICkKICAgICAgewogICAgICAgIHJldHVybiAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnZGVmYXVsdF9zZXJ2ZXJfaWQnIF07CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBLRlpkdEZ3amp0Sk5YT0xheXVsWVJ5VWFjQmRCVGl4WGlLICggJHh5WEpmZUJkSFRkVkxtVmZ3Q2tDdnVJbkptV0VFT2puSmhmbCApCnsKICBnbG9iYWwgJF9MQU5HOwogICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0UgPSBhcnJheSgpOwogIHN3aXRjaCAoICR4eVhKZmVCZEhUZFZMbVZmd0NrQ3Z1SW5KbVdFRU9qbkpoZmwgKQogIHsKICAgIGNhc2UgImgiOgogICAgICAkaVN0UklCbkNNbWNDaGJlUHdpQkVRd09nS0dmZUhwTnVRWUNFWyAnZnVsbCcgXSA9ICRfTEFOR1sgJ0xJTkVfUEFDS0FHRV9EVVJfSE9VUlMnIF07CiAgICAgICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0VbICdwaHBfdGltZScgXSA9ICJob3VycyI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAiZCI6CiAgICAgICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0VbICdmdWxsJyBdID0gJF9MQU5HWyAnTElORV9QQUNLQUdFX0RVUl9EQVlTJyBdOwogICAgICAkaVN0UklCbkNNbWNDaGJlUHdpQkVRd09nS0dmZUhwTnVRWUNFWyAncGhwX3RpbWUnIF0gPSAiZGF5cyI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAibSI6CiAgICAgICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0VbICdmdWxsJyBdID0gJF9MQU5HWyAnTElORV9QQUNLQUdFX0RVUl9NT05USFMnIF07CiAgICAgICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0VbICdwaHBfdGltZScgXSA9ICJtb250aHMiOwogICAgICBicmVhazsKICAgIGNhc2UgInkiOgogICAgICAkaVN0UklCbkNNbWNDaGJlUHdpQkVRd09nS0dmZUhwTnVRWUNFWyAnZnVsbCcgXSA9ICRfTEFOR1sgJ0xJTkVfUEFDS0FHRV9EVVJfWUVBUlMnIF07CiAgICAgICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0VbICdwaHBfdGltZScgXSA9ICJ5ZWFycyI7CiAgICAgIGJyZWFrOwogIH0KICByZXR1cm4gKCEgZW1wdHkoICRpU3RSSUJuQ01tY0NoYmVQd2lCRVF3T2dLR2ZlSHBOdVFZQ0UgKSkgPyAkaVN0UklCbkNNbWNDaGJlUHdpQkVRd09nS0dmZUhwTnVRWUNFIDogZmFsc2U7Cn0KCmZ1bmN0aW9uIGxGTWhNTUJHR3RHUFVkaWpKb3BJR2RtUlN1RFlJdHFNSklIRVUgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5KCk7CiAgJG5xQUtGb3pJY0NXUmVJQWxVaXVNeUhwaVplbk91SnRvRnpHZGx4cyA9IHJnSllyaUtyWEZQTWtqcmNkWFBtR3RJVEJiSUVETU5VUUkoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogIGlmICggaXNfYXJyYXkoICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgKSApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIHQxIC4gKiAsIHQyLmBkb21haW5fbmFtZWAgQVMgZG9tYWluX25hbWUsIHQyLmBkZXNjcmlwdGlvbmAgQVMgZGVzY3JpcHRpb24sIHQyLmBwb3J0YCBBUyBwb3J0LCB0My5lbXVsYXRvcl9uYW1lIEFTIGVtdWxhdG9yX25hbWUsIHQzLmlkIGFzIGVtdWxhdG9yX2lkIEZST00gYGxpbmVzYCB0MSwgYG11bHRpY3Nfc2VydmVyc2AgdDIsIGBlbXVsYXRvcnNgIHQzIFdIRVJFIHQyLmVtdWxhdG9yX2lkID0gdDMuaWQgQU5EIHQxLnNlcnZlcl9pZCA9IHQyLmlkIEFORCB0MS5gc2VydmVyX2lkYCBJTiAoIiAuIGltcGxvZGUoICIsIiwgJG5xQUtGb3pJY0NXUmVJQWxVaXVNeUhwaVplbk91SnRvRnpHZGx4cyApIC4gIikgT1JERVIgQlkgdDEuaWQgREVTQyIgKTsKICAgIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgICB7CiAgICAgICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICAgIH0KICB9CiAgcmV0dXJuICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcDsKfQoKZnVuY3Rpb24gRmVQcUFKTGZjd01RUHdVVnhNTGJJcWNtbHRpRGJJUm5iaEpXbyAoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJGlMcHZRZnZ0QUZMUGxPY0VoQXFRdG1zQ2pOaU1LU1RkVGJUWEkgPSBmYWxzZSApCnsKICBnbG9iYWwgJG1jREI7CiAgJFNuekJyUE9Vd3ZQSEhyWVdyeXVRQVhiWHRHTkVQVk9zYWcgPSBhcnJheSgpOwogICRucUFLRm96SWNDV1JlSUFsVWl1TXlIcGlaZW5PdUp0b0Z6R2RseHMgPSByZ0pZcmlLclhGUE1ranJjZFhQbUd0SVRCYklFRE1OVVFJKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICBpZiAoIGlzX2FycmF5KCAkbnFBS0ZvekljQ1dSZUlBbFVpdU15SHBpWmVuT3VKdG9GekdkbHhzICkgKQogIHsKICAgIGlmICggISAkaUxwdlFmdnRBRkxQbE9jRWhBcVF0bXNDak5pTUtTVGRUYlRYSSApCiAgICB7CiAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgaWRgIEZST00gYGxpbmVzYCBXSEVSRSBgc2VydmVyX2lkYCBJTiAoIiAuIGltcGxvZGUoICIsIiwgJG5xQUtGb3pJY0NXUmVJQWxVaXVNeUhwaVplbk91SnRvRnpHZGx4cyApIC4gIikiICk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgaWRgIEZST00gYGxpbmVzYCBXSEVSRSBgc2VydmVyX2lkYCBJTiAoIiAuIGltcGxvZGUoICIsIiwgJG5xQUtGb3pJY0NXUmVJQWxVaXVNeUhwaVplbk91SnRvRnpHZGx4cyApIC4gIikgQU5EIChgZGF0ZV9lbmRgID4gJyIgLiB0aW1lKCApIC4gIicgT1IgYGRhdGVfZW5kYCBJUyBOVUxMKSBBTkQgYGVuYWJsZWAgPSAxIEFORCBgbW9uaXRvcl9leGNsdWRlYCA9IDAiICk7CiAgICB9CiAgICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogICAgewogICAgICAkU256QnJQT1V3dlBISHJZV3J5dVFBWGJYdEdORVBWT3NhZyA9IG1jTGliOjpzTFlRUkluSHFGaEtFSGxacmxrSVFueFREdFpyWVZOdEtLKCAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICkgKTsKICAgIH0KICB9CiAgcmV0dXJuICRTbnpCclBPVXd2UEhIcllXcnl1UUFYYlh0R05FUFZPc2FnOwp9CgpmdW5jdGlvbiBaVXJTZGVYbm11WlhnbEJZbHpwbVpTTmRhem9oeWRRdGxRICggJGRuUFRHVGVHRFVac1NBcXdUZ0d3VlRCSnZHT3JXdktIVERleVUgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MSAuICogLHQyLmBtYXN0ZXJfc2VydmVyX2lkYCBhcyBgbWFzdGVyX3NlcnZlcl9pZGAsIHQyLmBkb21haW5fbmFtZWAgQVMgZG9tYWluX25hbWUsIHQyLmBkZXNjcmlwdGlvbmAgQVMgZGVzY3JpcHRpb24sIHQyLmBwb3J0YCBBUyBwb3J0LCB0My5lbXVsYXRvcl9uYW1lIEFTIGVtdWxhdG9yX25hbWUsdDMuaWQgYXMgZW11bGF0b3JfaWQgRlJPTSBgbGluZXNgIHQxLCBgbXVsdGljc19zZXJ2ZXJzYCB0MiwgYGVtdWxhdG9yc2AgdDMgV0hFUkUgdDIuZW11bGF0b3JfaWQgPSB0My5pZCBBTkQgdDEuc2VydmVyX2lkID0gdDIuaWQgQU5EIHQxLmlkID0gJyVkJyIsICRkblBUR1RlR0RVWnNTQXF3VGdHd1ZUQkp2R09yV3ZLSFREZXlVICk7CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9IGFycmF5KCk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IID0gJG1jREItPk95d2tqaUpzUHNmUWtzR25mcE5EdUR0YmxDWU9wT2x1Q0FXZyggKTsKICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIEdnc25CVFdlcVlmR29zTVBVYWNabXZ4WmphQ0FPbyAoICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGlkYCxgcGFnZV90aXRsZWAgRlJPTSBgY3VzdG9tX3BhZ2VzYCBPUkRFUiBieSBgb3JkZXJgIEFTQywgYGlkYCBBU0MiICk7CiAgJFJRb3VuaEd0QUdIQVFNZElRV0tpSlFhY1VvclRhcWxGVSA9IGFycmF5KCk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkUlFvdW5oR3RBR0hBUU1kSVFXS2lKUWFjVW9yVGFxbEZVID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogIH0KICByZXR1cm4gJFJRb3VuaEd0QUdIQVFNZElRV0tpSlFhY1VvclRhcWxGVTsKfQoKZnVuY3Rpb24gVHlOZFNJb210cnJqSFNSdEVlWHhOQ3plZVhTQWpydWMgKCAkZlVRZkhMSkJMZ1lxQXRWSWNyTXZ3cnFXd3JkcURudXFYSERMQSwgJFNkdFZhRFVqdkFkeWxQTk1hTkxVTXR2enVqdFRJZmJQZlZUUSA9ICIiLCAkU2lYendpSVptTWRhZFNmclFVZERYZ21MY05nb2pPQ0lOZWlJID0gMSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiSU5TRVJUIElOVE8gYGN1c3RvbV9wYWdlc2AgKGBwYWdlX3RpdGxlYCxgcGFnZV9jb250ZW50YCxgb3JkZXJgKSBWQUxVRVMoJyVzJywnJXMnLCclZCcpIiwgJGZVUWZITEpCTGdZcUF0Vkljck12d3JxV3dyZHFEbnVxWEhETEEsICRTZHRWYURVanZBZHlsUE5NYU5MVU10dnp1anRUSWZiUGZWVFEsICRTaVh6d2lJWm1NZGFkU2ZyUVVkRFhnbUxjTmdvak9DSU5laUkgKTsKICBpZiAoICRtY0RCLT5VTEROcXFUSEp6Tm1YZVllRUhtY21vWGdaZEhrY2ZyamhRbFkoICkgPiAwICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiB6RUpWS1d1aHJzQXJPUlZLaUJ2aUNNeFhlZE5wdEZwYVRGSCAoICRMWWtzanpodmlnWFlkYVJSUlpYTEdEbHhjVFlPcnBjICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBzZXJ2ZXJfbmV3c2AgV0hFUkUgYGlkYCA9ICclZCciLCAkTFlrc2p6aHZpZ1hZZGFSUlJaWExHRGx4Y1RZT3JwYyApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApIDw9IDAgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuICRtY0RCLT5PeXdramlKc1BzZlFrc0duZnBORHVEdGJsQ1lPcE9sdUNBV2coICk7Cn0KCmZ1bmN0aW9uIHZ2dW1CYlprdXdLb3dlV1ZpRG1lcmJjTkRjS3RvUWtCQW5FTEpCUUVvICggJFFZQVdQZ250WGZjY25ZUFdDcU1hWlhNeEhGU09iT0ZHbUVqUncgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYGN1c3RvbV9wYWdlc2AgV0hFUkUgYGlkYCA9ICclZCciLCAkUVlBV1BnbnRYZmNjbllQV0NxTWFaWE14SEZTT2JPRkdtRWpSdyApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApIDw9IDAgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuICRtY0RCLT5PeXdramlKc1BzZlFrc0duZnBORHVEdGJsQ1lPcE9sdUNBV2coICk7Cn0KCmZ1bmN0aW9uIFlZeUpmeFZXWGtuT2NpZVhOQ2VvVWt2cHNGdGhjZnd4QU1hVSAoICRIQnphUGhKYmVBZ2xkZnR2V2VPVXNXb1F1cnRWZ1h4dWdrICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGB0aWNrZXRzX3RvcGljc2AgV0hFUkUgYGlkYCA9ICclZCciLCAkSEJ6YVBoSmJlQWdsZGZ0dldlT1VzV29RdXJ0VmdYeHVnayApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApIDw9IDAgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ0lORk8nIF0gPSAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCBgaWRgLGBwb3N0YCxgZGF0ZWAsYGFkbWluX3JlcGx5YCBGUk9NIGB0aWNrZXRzX3Bvc3RgIFdIRVJFIGB0b3BpY19pZGAgPSAnJWQnIE9SREVSIEJZIGlkIEFTQyIsICRIQnphUGhKYmVBZ2xkZnR2V2VPVXNXb1F1cnRWZ1h4dWdrICk7CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJ1BPU1RTJyBdID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogIHJldHVybiAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IOwp9CgpmdW5jdGlvbiBBckJmUXJ5WnRnUXNScUlNZmpyVkVLV2xkYlpCdkNBdUZHclFtTSAoICRIQnphUGhKYmVBZ2xkZnR2V2VPVXNXb1F1cnRWZ1h4dWdrLCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYHRpY2tldHNfdG9waWNzYCBXSEVSRSBgaWRgID0gJyVkJyBBTkQgYG1lbWJlcl9pZGAgPSAnJWQnIiwgJEhCemFQaEpiZUFnbGRmdHZXZU9Vc1dvUXVydFZnWHh1Z2ssICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dyApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gbFZYZ0pHVWlXZ0doU1JlbE1McUthRkNObGZsQUFLbHhxQ1BETSAoICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dyApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgdGlja2V0c190b3BpY3NgIFdIRVJFIGBtZW1iZXJfaWRgID0gJyVkJyBPUkRFUiBCWSBpZCBERVNDIiwgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPD0gMCApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwp9CgpmdW5jdGlvbiBRZmdtd21CdmZZRk9aQVV2ZVFQeHNqZUxpSVpHcHYgKCAkcWlySURpSWhQQ1dKRmF2eEVkRWJ0SnFDZENzemthcUksICRXcEZpQWFXa3hMVHZhc3FqYmFycklteEVFelZ0U1RFLCAkb1JqQm1JaWZrY3BIRlJNRU5UZ0l6Z05wd1pLQ1FZVSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgJHFpcklEaUloUENXSkZhdnhFZEVidEpxQ2RDc3prYXFJYCBXSEVSRSBgJFdwRmlBYVdreExUdmFzcWpiYXJySW14RUV6VnRTVEVgID0gJyVzJyIsICRvUmpCbUlpZmtjcEhGUk1FTlRnSXpnTnB3WktDUVlVICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBFSnVURndRcHlTcUVnUHhZalN1THhnV3llSVVRUGMgKCAkQUdJU0xpdVNDV3d6b0VITmN6Q1NQYlVwRWZlR3NmaFhwUWhaTUpqRSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgcHJvZmlsZXNgIFdIRVJFIGBpZGAgPSAnJWQnIiwgJEFHSVNMaXVTQ1d3em9FSE5jekNTUGJVcEVmZUdzZmhYcFFoWk1KakUgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogIH0KICByZXR1cm4gYXJyYXkoKTsKfQoKZnVuY3Rpb24gYmpsWEdUS2FwR1hSbW5sZlVFblV0bFFMRUVaaWFMSUFrbkxERSAoICRBdWJVa3p0QWZ1aGxmbENUYVF5TWVNQmVHWWNCcXdKU05ndU5NICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBsYW5ndWFnZXNgIFdIRVJFIGBpZGAgPSAnJWQnIiwgJEF1YlVrenRBZnVobGZsQ1RhUXlNZU1CZUdZY0Jxd0pTTmd1Tk0gKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogIH0KICByZXR1cm4gYXJyYXkoKTsKfQoKZnVuY3Rpb24gR1pOZU5iV1JQQk1PeW1tWHhTVWxWamtoUUlFRWRXUG9SeGx3ICggJHBYRHJsd1ZYd3V4QXpscFNoZWZzTmNTSWFETUJqUCApCnsKICBnbG9iYWwgJG1jREI7CiAgaWYgKCBpc3NldCggJF9TRVNTSU9OWyAnbGFuZ3VhZ2VfbWVtYmVyJyBdICkgKQogIHsKICAgIHJldHVybiAkX1NFU1NJT05bICdsYW5ndWFnZV9tZW1iZXInIF1bICdmaWxlX25hbWUnIF07CiAgfQogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS4qIEZST00gYGxhbmd1YWdlc2AgdDEsIGB1c2Vyc2AgdDIgV0hFUkUgdDIuYGlkYCA9ICclZCcgQU5EIHQyLmBsYW5nX2lkYCA9IHQxLmBpZGAiLCAkcFhEcmx3Vlh3dXhBemxwU2hlZnNOY1NJYURNQmpQICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzID0gJG1jREItPk95d2tqaUpzUHNmUWtzR25mcE5EdUR0YmxDWU9wT2x1Q0FXZyggKTsKICAgICRfU0VTU0lPTlsgJ2xhbmd1YWdlX21lbWJlcicgXSA9ICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnM7CiAgICByZXR1cm4gJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ2ZpbGVfbmFtZScgXTsKICB9CiAgZWxzZQogIHsKICAgICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnMgPSBiamxYR1RLYXBHWFJtbmxmVUVuVXRsUUxFRVppYUxJQWtuTERFKCAxICk7CiAgICAkX1NFU1NJT05bICdsYW5ndWFnZV9tZW1iZXInIF0gPSAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzOwogICAgcmV0dXJuICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdmaWxlX25hbWUnIF07CiAgfQp9CgpmdW5jdGlvbiB6Zm9DZFBVU21scVpZdW1acVBXSVZkck9mSm9lR2lCRXlTUEdZICggKQp7CiAgZ2xvYmFsICRtY0RCOwogIGlmICggaXNzZXQoICRfU0VTU0lPTlsgJ2xhbmd1YWdlX2d1ZXN0JyBdICkgKQogIHsKICAgIHJldHVybiAkX1NFU1NJT05bICdsYW5ndWFnZV9ndWVzdCcgXVsgJ2ZpbGVfbmFtZScgXTsKICB9CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgbGFuZ3VhZ2VzYCBXSEVSRSBgZGVmYXVsdF9ndWVzdHNgID0gMSIgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnMgPSAkbWNEQi0+T3l3a2ppSnNQc2ZRa3NHbmZwTkR1RHRibENZT3BPbHVDQVdnKCApOwogICAgJF9TRVNTSU9OWyAnbGFuZ3VhZ2VfZ3Vlc3QnIF0gPSAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzOwogICAgcmV0dXJuICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdmaWxlX25hbWUnIF07CiAgfQogIGVsc2UKICB7CiAgICAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzID0gYmpsWEdUS2FwR1hSbW5sZlVFblV0bFFMRUVaaWFMSUFrbkxERSggMSApOwogICAgJF9TRVNTSU9OWyAnbGFuZ3VhZ2VfZ3Vlc3QnIF0gPSAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzOwogICAgcmV0dXJuICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdmaWxlX25hbWUnIF07CiAgfQp9CgpmdW5jdGlvbiBxcHZsZE1UQVZhaU1yaExxSlRvcVVXT3NZaXdtQXhkV2VzYWdBICggJGRYbVFNcERKSEpWVHBrTlBLYXduWEJaeUpubU5EU0R1ID0gJ29rJywgJExmQW9UVVpxSXNnbHNkT2dBWHRNamtTTG94bXRLUUpnQmcgKQp7CiAgc3dpdGNoICggJGRYbVFNcERKSEpWVHBrTlBLYXduWEJaeUpubU5EU0R1ICkKICB7CiAgICBjYXNlICJlcnJvciI6CiAgICAgICRtSnVXVUNOTkJLV0RwSVdtalpQYlF6VkZJbVVQUHNEbXNYclNvTSA9ICdhbGVydCBhbGVydC1kYW5nZXInOwogICAgICBicmVhazsKICAgIGNhc2UgIndhcm5pbmciOgogICAgICAkbUp1V1VDTk5CS1dEcElXbWpaUGJRelZGSW1VUFBzRG1zWHJTb00gPSAnYWxlcnQgYWxlcnQtd2FybmluZyc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAib2siOgogICAgICAkbUp1V1VDTk5CS1dEcElXbWpaUGJRelZGSW1VUFBzRG1zWHJTb00gPSAnYWxlcnQgYWxlcnQtc3VjY2Vzcyc7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgJG1KdVdVQ05OQktXRHBJV21qWlBiUXpWRkltVVBQc0Rtc1hyU29NID0gJ2FsZXJ0IGFsZXJ0LWluZm8nOwogIH0KICBpZiAoIGlzX2FycmF5KCAkTGZBb1RVWnFJc2dsc2RPZ0FYdE1qa1NMb3htdEtRSmdCZyApICkKICB7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9IicgLiAkbUp1V1VDTk5CS1dEcElXbWpaUGJRelZGSW1VUFBzRG1zWHJTb00gLiAnIj4qICcgLiBpbXBsb2RlKCAiPGJyIC8+PGJyIC8+KiAiLCAkTGZBb1RVWnFJc2dsc2RPZ0FYdE1qa1NMb3htdEtRSmdCZyApIC4gJzwvZGl2Pic7CiAgfQogIGVsc2UKICB7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9IicgLiAkbUp1V1VDTk5CS1dEcElXbWpaUGJRelZGSW1VUFBzRG1zWHJTb00gLiAnIj4qICcgLiAkTGZBb1RVWnFJc2dsc2RPZ0FYdE1qa1NMb3htdEtRSmdCZyAuICc8L2Rpdj4nOwogIH0KfQoKZnVuY3Rpb24gSmxYVGFiRFVwYnRNWWxBY1d1T1FWeHVDZUZqSFBQQSAoICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBlbXVsYXRvcnNgIiApOwogICRzc3lBb0hlU2p1YVZxSk5IVW95RU1OQlBoRFFVbGR5b29aSUlMID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogICRJS0l5c3FzZ0pBUFRIaGRnd0VwVERHVG1sQVZ5ZkZVb29Jb2FXbFkgPSBhcnJheSgpOwogIGZvcmVhY2ggKCAkc3N5QW9IZVNqdWFWcUpOSFVveUVNTkJQaERRVWxkeW9vWklJTCBhcyAkeldUYVNsZkFHUXZFaURMbFdsaVVjempRakZORVBPcktsUSApCiAgewogICAgJElLSXlzcXNnSkFQVEhoZGd3RXBUREdUbWxBVnlmRlVvb0lvYVdsWVsgJHpXVGFTbGZBR1F2RWlETGxXbGlVY3pqUWpGTkVQT3JLbFFbICdpZCcgXSBdID0gJHpXVGFTbGZBR1F2RWlETGxXbGlVY3pqUWpGTkVQT3JLbFE7CiAgfQogIHJldHVybiAkSUtJeXNxc2dKQVBUSGhkZ3dFcFRER1RtbEFWeWZGVW9vSW9hV2xZOwp9CgpmdW5jdGlvbiBEdkJYZmlVbFBQTnZNdUV3akF6YnBIb1REVVdicldaT3dSemMgKCApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgbXVsdGljc19zZXJ2ZXJfZW11bGF0b3JzYCBPUkRFUiBieSBpZCBBU0MsYG1hc3Rlcl9zZXJ2ZXJfaWRgIEFTQywgZW11bGF0b3JfaWQgQVNDIiApOwogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSBhcnJheSgpOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgICBmb3JlYWNoICggJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgYXMgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKcyApCiAgICB7CiAgICAgIGlmICggISBpc19hcnJheSggJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSFsgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ21hc3Rlcl9zZXJ2ZXJfaWQnIF0gXSApICkKICAgICAgewogICAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdtYXN0ZXJfc2VydmVyX2lkJyBdIF0gPSBhcnJheSgpOwogICAgICB9CiAgICAgICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0hbICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdtYXN0ZXJfc2VydmVyX2lkJyBdIF1bICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdlbXVsYXRvcl9pZCcgXSBdID0gYXJyYXkoICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICd1c2VyX2FjY2VzcycgXSwgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKc1sgJ2RlZmF1bHRfc2VydmVyX2lkJyBdICk7CiAgICB9CiAgfQogIHJldHVybiAkc3hyRU1KTEN0QUhVc2JoZ2x3YUtkRnBOaVBPeU9IOwp9CgpmdW5jdGlvbiBZeGpMR0NLWHprSlFkVHNLSlBqV0JmS1B6Ykdva1pIVGpFRU95eUdFICggJG1Gam1tVHpDU0VWYUdWc2pydm5BdW5scnFxUGdHeWtFLCAkQ0J3SHR6cmFtaEFsSlZVVG5oZHl3RWZnS1Vzb1BwSFFaQXMsICR4Snd4YkNUaFZnenJXVERlb2phQmZVT3RUWk1lZ1pwYXNmbUFvVkksICRQeVluamxZRFRpWGdNaHFwbkpCV3Zkb3NnZ29uSHJXb0RCcFhpUHAsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJGhsRVVKR0dlR1dCVWNzaUNDSm5SaFBBSmlRS1ZMWFVkYWFNICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJJTlNFUlQgSU5UTyBgbXVsdGljc19zZXJ2ZXJzYCAoYGVtdWxhdG9yX2lkYCxgZG9tYWluX25hbWVgLGBkZXNjcmlwdGlvbmAsYHBvcnRgLGBtYXN0ZXJfc2VydmVyX2lkYCxgY2FuX2RlbGV0ZWApIFZBTFVFUygnJWQnLCclcycsJyVzJywnJWQnLCclZCcsJyVkJykiLCAkbUZqbW1UekNTRVZhR1ZzanJ2bkF1bmxycXFQZ0d5a0UsICRDQndIdHpyYW1oQWxKVlVUbmhkeXdFZmdLVXNvUHBIUVpBcywgJHhKd3hiQ1RoVmd6cldURGVvamFCZlVPdFRaTWVnWnBhc2ZtQW9WSSwgJFB5WW5qbFlEVGlYZ01ocXBuSkJXdmRvc2dnb25IcldvREJwWGlQcCwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjLCAkaGxFVUpHR2VHV0JVY3NpQ0NKblJoUEFKaVFLVkxYVWRhYU0gKTsKICBpZiAoICRtY0RCLT5VTEROcXFUSEp6Tm1YZVllRUhtY21vWGdaZEhrY2ZyamhRbFkoICkgPiAwICkKICB7CiAgICAkVEt0YmNoWGp4VWFjWGtTV2VhU0tMQk1iWWFOdVFIc1JRUGJvID0gJG1jREItPmxacWljWENoUU51RVB1bWhJdXR5T1ZYa0F2dnhRR3J6aXB0ZFJCUSggKTsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYG11bHRpY3Nfc2VydmVyX2VtdWxhdG9yc2AgV0hFUkUgYGVtdWxhdG9yX2lkYCA9ICclZCcgQU5EIGBtYXN0ZXJfc2VydmVyX2lkYCA9ICclZCciLCAkbUZqbW1UekNTRVZhR1ZzanJ2bkF1bmxycXFQZ0d5a0UsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogICAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICAgIHsKICAgICAgJHZoRlR2ZHp4UHBaUWlRQUpKdGxSYnVQUUhyY0FJVHZjTmRyU0VKcyA9ICRtY0RCLT5PeXdramlKc1BzZlFrc0duZnBORHVEdGJsQ1lPcE9sdUNBV2coICk7CiAgICAgIGlmICggISBRZmdtd21CdmZZRk9aQVV2ZVFQeHNqZUxpSVpHcHYoICJtdWx0aWNzX3NlcnZlcnMiLCAiaWQiLCAkdmhGVHZkenhQcFpRaVFBSkp0bFJidVBRSHJjQUlUdmNOZHJTRUpzWyAnZGVmYXVsdF9zZXJ2ZXJfaWQnIF0gKSApCiAgICAgIHsKICAgICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJVUERBVEUgYG11bHRpY3Nfc2VydmVyX2VtdWxhdG9yc2AgU0VUIGBkZWZhdWx0X3NlcnZlcl9pZGAgPSAnJWQnIFdIRVJFIGBlbXVsYXRvcl9pZGAgPSAnJWQnIEFORCBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIiwgJFRLdGJjaFhqeFVhY1hrU1dlYVNLTEJNYllhTnVRSHNSUVBibywgJG1Gam1tVHpDU0VWYUdWc2pydm5BdW5scnFxUGdHeWtFLCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKTsKICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJJTlNFUlQgSU5UTyBgbXVsdGljc19zZXJ2ZXJfZW11bGF0b3JzYCAoYGVtdWxhdG9yX2lkYCxgbWFzdGVyX3NlcnZlcl9pZGAsYHVzZXJfYWNjZXNzYCxgZGVmYXVsdF9zZXJ2ZXJfaWRgKSBWQUxVRVMoJyVkJywnJWQnLDEsJyVkJykiLCAkbUZqbW1UekNTRVZhR1ZzanJ2bkF1bmxycXFQZ0d5a0UsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJFRLdGJjaFhqeFVhY1hrU1dlYVNLTEJNYllhTnVRSHNSUVBibyApOwogICAgfQogICAgcmV0dXJuICRUS3RiY2hYanhVYWNYa1NXZWFTS0xCTWJZYU51UUhzUlFQYm87CiAgfQogIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gUmRwaHd0dkp5cXNtZVpaZ2FIcGdlWHJNQVZBcWl3SldMZyAoICRDQndIdHpyYW1oQWxKVlVUbmhkeXdFZmdLVXNvUHBIUVpBcywgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZLCAkUHlZbmpsWURUaVhnTWhxcG5KQld2ZG9zZ2dvbkhyV29EQnBYaVBwLCAkZWV4TlJMc2xUSUZOdVd3T3lTbEpoZnlOUW5ha2F5UkUgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRDQndIdHpyYW1oQWxKVlVUbmhkeXdFZmdLVXNvUHBIUVpBcyA9IHN0cl9yZXBsYWNlKCBhcnJheSggIi8iLCAiXFwiLCAiaHR0cDovLyIgKSwgYXJyYXkoKSwgJENCd0h0enJhbWhBbEpWVVRuaGR5d0VmZ0tVc29QcEhRWkFzICk7CiAgJGV5QlVxcXROZWN4V2VXRVVpTkxua1ZwUHNwbE1BSnZCeFB3ID0gZ2V0aG9zdGJ5bmFtZSggJENCd0h0enJhbWhBbEpWVVRuaGR5d0VmZ0tVc29QcEhRWkFzICk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIGBkb21haW5gIEZST00gYG11bHRpY3NfbWFzdGVyX3NlcnZlcnNgIFdIRVJFIGBwb3J0YCA9ICclZCcgT1JERVIgYnkgaWQgREVTQyIsICRQeVluamxZRFRpWGdNaHFwbkpCV3Zkb3NnZ29uSHJXb0RCcFhpUHAgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gJG1jREItPnVSa2ZoSWpPeUh6aUV5Q2lUTE1FVWZ1TWZrWHFESWduYW9vKCApOwogICAgZm9yZWFjaCAoICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsIGFzICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnMgKQogICAgewogICAgICBpZiAoIGdldGhvc3RieW5hbWUoICR2aEZUdmR6eFBwWlFpUUFKSnRsUmJ1UFFIcmNBSVR2Y05kclNFSnNbICdkb21haW4nIF0gKSA9PSAkZXlCVXFxdE5lY3hXZVdFVWlOTG5rVnBQc3BsTUFKdkJ4UHcgKQogICAgICB7CiAgICAgICAgcmV0dXJuICdFWElTVFMnOwogICAgICB9CiAgICB9CiAgfQogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIklOU0VSVCBJTlRPIGBtdWx0aWNzX21hc3Rlcl9zZXJ2ZXJzYCAoYGRvbWFpbmAsYHVzZXJuYW1lYCxgcGFzc3dvcmRgLGBwb3J0YCxgc3RhdHVzYCxgbW9uaXRvcl9lbmFibGVkYCkgVkFMVUVTKCclcycsJyVzJywnJXMnLCclZCcsMSwnJWQnKSIsICRDQndIdHpyYW1oQWxKVlVUbmhkeXdFZmdLVXNvUHBIUVpBcywgJERoZ2VUWXp0cFpLWUxNUlJsT2ttUWJ0eUV3UkxEa09QR0JMR3csICRBSmROSmFBc0FEblZiVEdVRFBTbXhCa1BrRktObmxqSXZmVmJZLCAkUHlZbmpsWURUaVhnTWhxcG5KQld2ZG9zZ2dvbkhyV29EQnBYaVBwLCAkZWV4TlJMc2xUSUZOdVd3T3lTbEpoZnlOUW5ha2F5UkUgKTsKICBpZiAoICRtY0RCLT5VTEROcXFUSEp6Tm1YZVllRUhtY21vWGdaZEhrY2ZyamhRbFkoICkgPiAwICkKICB7CiAgICByZXR1cm4gJG1jREItPmxacWljWENoUU51RVB1bWhJdXR5T1ZYa0F2dnhRR3J6aXB0ZFJCUSggKTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBLUktqTWFYSlhaTnh5YlZkdHN5ck9IV2pXWXF6dGtCeHMgKCApCnsKICBnbG9iYWwgJG1jREI7CiAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9IGFycmF5KCk7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIHQxLiosdDIuYHVzZXJuYW1lYCBGUk9NIGB1c2Vyc19zZXNzaW9uc2AgdDEsIGB1c2Vyc2AgdDIgV0hFUkUgdDEubWVtYmVyX2lkID0gdDIuaWQgT1JERVIgQlkgdDEuYGV4cGlyZV9kYXRlYCBERVNDIiApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIHdSZXBiRkZXd01Ud0tqb2VVSG5LdVZJS3lseXVVYmpWY2RqVmcgKCAkQUxydXJ6TFhhQ1NKSVlzYWRPbkloYlJ0UmhNcEpaS1JrWSA9ICdpZCcsICRvUmpCbUlpZmtjcEhGUk1FTlRnSXpnTnB3WktDUVlVICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJERUxFVEUgRlJPTSBgdXNlcnNfc2Vzc2lvbnNgIFdIRVJFIGAkQUxydXJ6TFhhQ1NKSVlzYWRPbkloYlJ0UmhNcEpaS1JrWWAgPSAnJWQnIiwgJG9SakJtSWlma2NwSEZSTUVOVGdJemdOcHdaS0NRWVUgKTsKICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gWG52TUR0dlZjRGR1VkR0R1hoV09WeHluTkhTc1JDUXdRZnFIUWJyZyAoICRtRmptbVR6Q1NFVmFHVnNqcnZuQXVubHJxcVBnR3lrRSApCnsKICBnbG9iYWwgJG1jREI7CiAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgZW11bGF0b3JzYCBXSEVSRSBgY2FuX211bHRpcGxlYCA9IDEgQU5EIGBpZGAgPSAnJWQnIiwgJG1Gam1tVHpDU0VWYUdWc2pydm5BdW5scnFxUGdHeWtFICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBSZnVFY1VhQlNxSllxaktxV1lKbU13ZXBuaElnV3JEYWFyRGMgKCAkemZPSHBiclJ2TUR1RlhHV0FteUVPekxjaHhPQUVab25Zc2MgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0ggPSBhcnJheSgpOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCB0MS5gZW11bGF0b3JfaWRgIGFzIGBlbXVsYXRvcl9pZGAsdDIuZW11bGF0b3JfbmFtZSBhcyBgZW11bGF0b3JfbmFtZWAgRlJPTSBgbXVsdGljc19zZXJ2ZXJfZW11bGF0b3JzYCB0MSxgZW11bGF0b3JzYCB0MixgbXVsdGljc19zZXJ2ZXJzYCB0MyBXSEVSRSB0MS5gZGVmYXVsdF9zZXJ2ZXJfaWRgID0gdDMuYGlkYCBBTkQgdDMuYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gdDEuYG1hc3Rlcl9zZXJ2ZXJfaWRgIEFORCB0MS5gdXNlcl9hY2Nlc3NgID0gMSBBTkQgdDEuZW11bGF0b3JfaWQgPSB0Mi5pZCBBTkQgdDEuYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyIsICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYyApOwogIGlmICggJG1jREItPm1TZ0ZOQW9KdXpsdHR2RGtZb01zQWJSQ2lLVVBiRlZFRnpVKCApID4gMCApCiAgewogICAgJHN4ckVNSkxDdEFIVXNiaGdsd2FLZEZwTmlQT3lPSCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKICB9CiAgcmV0dXJuICRzeHJFTUpMQ3RBSFVzYmhnbHdhS2RGcE5pUE95T0g7Cn0KCmZ1bmN0aW9uIFRaSUpScEx1ekxzUlRCUVZQbnhmbkJ1Vkt0a1NaZXp2clhQSG5BICggJG1Gam1tVHpDU0VWYUdWc2pydm5BdW5scnFxUGdHeWtFICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgKiBGUk9NIGBlbXVsYXRvcnNgIFdIRVJFIGBpZGAgPSAnJWQnIiwgJG1Gam1tVHpDU0VWYUdWc2pydm5BdW5scnFxUGdHeWtFICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gJG1jREItPk95d2tqaUpzUHNmUWtzR25mcE5EdUR0YmxDWU9wT2x1Q0FXZyggKTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBXYWFueEJibldGemxYU1BnUGlOUVBIWkNGTlpVeXNaRklzRHNiRSAoICR6Zk9IcGJyUnZNRHVGWEdXQW15RU96TGNoeE9BRVpvbllzYywgJG1Gam1tVHpDU0VWYUdWc2pydm5BdW5scnFxUGdHeWtFICkKewogIGdsb2JhbCAkbWNEQjsKICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgYGRlZmF1bHRfc2VydmVyX2lkYCBGUk9NIGBtdWx0aWNzX3NlcnZlcl9lbXVsYXRvcnNgIFdIRVJFIGBlbXVsYXRvcl9pZGAgPSAnJWQnIEFORCBgbWFzdGVyX3NlcnZlcl9pZGAgPSAnJWQnIEFORCBgdXNlcl9hY2Nlc3NgID0gMSIsICRtRmptbVR6Q1NFVmFHVnNqcnZuQXVubHJxcVBnR3lrRSwgJHpmT0hwYnJSdk1EdUZYR1dBbXlFT3pMY2h4T0FFWm9uWXNjICk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkbmVrZ2F2YWRUQmZpS0d4eHBQV1FNVlFhRlZVbENNRldjSSA9ICRtY0RCLT5peWNqZER2U29xZ0xreUpOa25zZlNxbnNScHlzQXVHanZDQUprKCApOwogICAgaWYgKCBRZmdtd21CdmZZRk9aQVV2ZVFQeHNqZUxpSVpHcHYoICJtdWx0aWNzX3NlcnZlcnMiLCAiaWQiLCAkbmVrZ2F2YWRUQmZpS0d4eHBQV1FNVlFhRlZVbENNRldjSSApICkKICAgIHsKICAgICAgcmV0dXJuICRuZWtnYXZhZFRCZmlLR3h4cFBXUU1WUWFGVlVsQ01GV2NJOwogICAgfQogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIEpRRm5ZRUxDVmFjUkJOSVhldHptclpvSWVpdW9ncVR4c2cgKCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgPSBmYWxzZSwgJG5QZ3lFRUJvYUdlVnl5TUhxdWVwZ016clNkb2d5VFRwZ0tHTSA9IDEsICR4WFBUSHJpQXBBRFZrSFNuWGdtaFhaWnhiY3p2d2NkcWJhRSA9ICdpZCcsICRTaVh6d2lJWm1NZGFkU2ZyUVVkRFhnbUxjTmdvak9DSU5laUkgPSAnREVTQycgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5KCk7CiAgc3dpdGNoICggJG5QZ3lFRUJvYUdlVnl5TUhxdWVwZ016clNkb2d5VFRwZ0tHTSApCiAgewogICAgY2FzZSAwOgogICAgICAkakZLcEpWYWxGaXZPbnFkdWdIV2Z4WlZFdnRBZExLQndnID0gIkFORCB0MS50ZXN0X2xpbmUgPSAwIjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDE6CiAgICAgICRqRktwSlZhbEZpdk9ucWR1Z0hXZnhaVkV2dEFkTEtCd2cgPSAiQU5EIHQxLnRlc3RfbGluZSA9IDEiOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICRqRktwSlZhbEZpdk9ucWR1Z0hXZnhaVkV2dEFkTEtCd2cgPSAiIjsKICB9CiAgaWYgKCAhICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dyApCiAgewogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUIHQxIC4gKiAsIHQyLmBkb21haW5fbmFtZWAgQVMgZG9tYWluX25hbWUsIHQyLmBkZXNjcmlwdGlvbmAgQVMgZGVzY3JpcHRpb24sIHQyLmBwb3J0YCBBUyBwb3J0LCB0My5lbXVsYXRvcl9uYW1lIEFTIGVtdWxhdG9yX25hbWUsIHQzLmlkIGFzIGVtdWxhdG9yX2lkIEZST00gYGxpbmVzYCB0MSwgYG11bHRpY3Nfc2VydmVyc2AgdDIsIGBlbXVsYXRvcnNgIHQzIFdIRVJFIHQyLmVtdWxhdG9yX2lkID0gdDMuaWQgQU5EIHQxLnNlcnZlcl9pZCA9IHQyLmlkICRqRktwSlZhbEZpdk9ucWR1Z0hXZnhaVkV2dEFkTEtCd2cgT1JERVIgQlkgJHhYUFRIcmlBcEFEVmtIU25YZ21oWFpaeGJjenZ3Y2RxYmFFICRTaVh6d2lJWm1NZGFkU2ZyUVVkRFhnbUxjTmdvak9DSU5laUkiICk7CiAgfQogIGVsc2UKICB7CiAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgdDEgLiAqICx0Mi5gbWFzdGVyX3NlcnZlcl9pZGAgYXMgYG1hc3Rlcl9zZXJ2ZXJfaWRgLCB0Mi5gZG9tYWluX25hbWVgIEFTIGRvbWFpbl9uYW1lLCB0Mi5gZGVzY3JpcHRpb25gIEFTIGRlc2NyaXB0aW9uLCB0Mi5gcG9ydGAgQVMgcG9ydCwgdDMuZW11bGF0b3JfbmFtZSBBUyBlbXVsYXRvcl9uYW1lLCB0My5pZCBhcyBlbXVsYXRvcl9pZCBGUk9NIGBsaW5lc2AgdDEsIGBtdWx0aWNzX3NlcnZlcnNgIHQyLCBgZW11bGF0b3JzYCB0MyBXSEVSRSB0Mi5lbXVsYXRvcl9pZCA9IHQzLmlkIEFORCB0MS5zZXJ2ZXJfaWQgPSB0Mi5pZCBBTkQgdDEubWVtYmVyX2lkID0gJyVkJyAkakZLcEpWYWxGaXZPbnFkdWdIV2Z4WlZFdnRBZExLQndnIE9SREVSIEJZICR4WFBUSHJpQXBBRFZrSFNuWGdtaFhaWnhiY3p2d2NkcWJhRSAkU2lYendpSVptTWRhZFNmclFVZERYZ21MY05nb2pPQ0lOZWlJIiwgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICk7CiAgfQogICRZQ1d6YXJscGpDamJTbkF2elZxeHVIU3BkWGhKTnl0WU1qcCA9IGFycmF5KCk7CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanAgPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CiAgfQogIHJldHVybiAkWUNXemFybHBqQ2piU25BdnpWcXh1SFNwZFhoSk55dFlNanA7Cn0KCmZ1bmN0aW9uIENVV2htVkZmT3hJTm9DRnV1UUREdU9PY0xKdUZwWktuaSAoICRkblBUR1RlR0RVWnNTQXF3VGdHd1ZUQkp2R09yV3ZLSFREZXlVLCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIGZyb20gYGxpbmVzYCBXSEVSRSBpZCA9ICclZCcgQU5EIGBtZW1iZXJfaWRgID0gJyVkJyIsICRkblBUR1RlR0RVWnNTQXF3VGdHd1ZUQkp2R09yV3ZLSFREZXlVLCAkdUFCaHVpcVlGUmZ1Q0ZvdXVLYXd2b0t0bVlBZ0R6Q21EQm5LeUtHdHcgKTsKICBpZiAoICRtY0RCLT5tU2dGTkFvSnV6bHR0dkRrWW9Nc0FiUkNpS1VQYkZWRUZ6VSggKSA+IDAgKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGJaV1hreUtBWUNQa2dRTG1YU0llQldWV091WWVMTmNaZGhiWSAoICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dywgJGZQWG5wZ0lsT2tqWG5ucFh0VFVMcGpGTVZ5c1JRQVh2UXpMb2sgPSAwICkKewogIGdsb2JhbCAkbWNEQjsKICBzd2l0Y2ggKCAkZlBYbnBnSWxPa2pYbm5wWHRUVUxwakZNVnlzUlFBWHZRekxvayApCiAgewogICAgY2FzZSAwOgogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgY291bnQoKikgRlJPTSBgbGluZXNgIFdIRVJFIGBtZW1iZXJfaWRgID0gJyVkJyBBTkQgYHRlc3RfbGluZWAgPSAwIiwgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgY291bnQoKikgRlJPTSBgbGluZXNgIFdIRVJFIGBtZW1iZXJfaWRgID0gJyVkJyBBTkQgYHRlc3RfbGluZWAgPSAxIiwgJHVBQmh1aXFZRlJmdUNGb3V1S2F3dm9LdG1ZQWdEekNtREJuS3lLR3R3ICk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAkbWNEQi0+b2tJSUFrVEd3YlV1RHFqVlplRFpMalBsSnVMeFBDQWJRUmcoICJTRUxFQ1QgY291bnQoKikgRlJPTSBgbGluZXNgIFdIRVJFIGBtZW1iZXJfaWRgID0gJyVkJyIsICR1QUJodWlxWUZSZnVDRm91dUthd3ZvS3RtWUFnRHpDbURCbkt5S0d0dyApOwogICAgICBicmVhazsKICB9CiAgaWYgKCAkbWNEQi0+bVNnRk5Bb0p1emx0dHZEa1lvTXNBYlJDaUtVUGJGVkVGelUoICkgPiAwICkKICB7CiAgICByZXR1cm4gJG1jREItPml5Y2pkRHZTb3FnTGt5Sk5rbnNmU3Fuc1JweXNBdUdqdkNBSmsoICk7CiAgfQogIHJldHVybiAwOwp9CgpmdW5jdGlvbiBvc2NhbXMgKCAkdHlwZSApCnsKICBnbG9iYWwgJG1jREI7CiAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSBhcnJheSgpOwogICAgJG1jREItPm9rSUlBa1RHd2JVdURxalZaZURaTGpQbEp1THhQQ0FiUVJnKCAiU0VMRUNUICogRlJPTSBgbXVsdGljc19tYXN0ZXJfc2VydmVyc2AgV0hFUkUgYHNlcnZlcl90eXBlYCA9ICclZCciLCAkdHlwZSApOwogICAgICAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKCiAgcmV0dXJuICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsOwp9CgoKZnVuY3Rpb24gbWNzX3NlcnZlcnMgKCAkaWQgKQp7CiAgZ2xvYmFsICRtY0RCOwogICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gYXJyYXkoKTsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYG11bHRpY3Nfc2VydmVyc2AgV0hFUkUgYG1hc3Rlcl9zZXJ2ZXJfaWRgID0gJyVkJyIsICRpZCApOwogICAgICAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbCA9ICRtY0RCLT51UmtmaElqT3lIemlFeUNpVExNRVVmdU1ma1hxRElnbmFvbyggKTsKCiAgcmV0dXJuICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsOwp9CgoKZnVuY3Rpb24gb3NjYW1fbGluZXMgKCAkbWNzaWQgKQp7CiAgZ2xvYmFsICRtY0RCOwogICRkYXRlID0gdGltZSgpOwogICRlbmFibGUgPSAnMSc7CiAgJGJsb2NrID0gJzAnOwogICREcXhXVmhGVExOQUtUYmhmc1JVb0R3RVhja0RUYXppUFdsID0gYXJyYXkoKTsKICAgICRtY0RCLT5va0lJQWtUR3diVXVEcWpWWmVEWkxqUGxKdUx4UENBYlFSZyggIlNFTEVDVCAqIEZST00gYGxpbmVzYCBXSEVSRSBgc2VydmVyX2lkYCA9ICclZCcgQU5EIGBkYXRlX2VuZGAgPiAnJWQnIEFORCBgZW5hYmxlYCA9ICclcycgQU5EIGBibG9ja2VkYCA9ICclcyciLCAkbWNzaWQsICRkYXRlLCAkZW5hYmxlLCAkYmxvY2sgKTsKICAgICAgJERxeFdWaEZUTE5BS1RiaGZzUlVvRHdFWGNrRFRhemlQV2wgPSAkbWNEQi0+dVJrZmhJak95SHppRXlDaVRMTUVVZnVNZmtYcURJZ25hb28oICk7CgogIHJldHVybiAkRHF4V1ZoRlRMTkFLVGJoZnNSVW9Ed0VYY2tEVGF6aVBXbDsKfQoKPz4="));
//Xtreammasters\Cccam::iptv("Developer_Muhammad_Ashan_{+_best-cccam-&-iptv-software-solution_+}P0/6uKUmHeqrCEc5+JFq4tykJPM4XDp3fjwjAch4GtawmPx87qIWYE/melgNXFlEZX7hR6+4JQGGcvDLJ/QjSk/L+V39BsXPA9o7NjqN36z29vAtIfaMc6WzUCsmiOqLCNu5wniSL0AhaBW1XOHP0whL0Ybth1X4gWbxfUtxGqvoOAUp13rydoQF+b7+veMvaawE3P6aPqVVieRW+XFmQQ9R2C64PfwKUr9IgrmxeCSlsU8+5JhSzMNB1QK2zvbfAH/ojTWYwdLneRmL6y5TROq8tF+iqUgqQYH0p7dstD1ti2avXv05EJifvW5IVGMZVSw7wRVo8RFA0UovPFWx7Vw5VYyL8tNmo+p/46hmHb0p3VnjG2YuZ/i7HMvEzb9OBW1LQmLY7c3Xw5NsbzEAJ4WD3EFi1Hnq2+wfPDDQOh3CnKkuM/DqNjf/x39DULyXmLw02SoZDL6xOh57EkmjsIIWox7/GTcCzNYxrBOdJBEQXzr6Bpk/RdOBCx3v6eAzI4mbsLafQJVb1yNt4PQ4kltDyspXZ47Td8abzk4b9YUSuee6Z790/HU0x6i1a6FB19/6vFSB48zoyxhglyFhuiDk71KqEGkDDR6v26bDaVAHiK7G8BaADjWRzneaPg7oP0rZQVv4uwDeeeIkn/TMW67YpzqNQfe2/CxpYTSuXIy0jHmmeCuauRTUeGd1YAZxepN0EBLAahGGninikRYcJWT98FFZf6VPjVFXrTWvgOTw/GrFC0lFGo6RMNhGDzLDtjr5UILBlnyq/gWxOHgnttqAYp8YfqMTnoLZ8pIdMPIjpb7PfNv0jKgNh7iexPVfNMth8z41BJN/SiN6w6EjNMiKBL1TvXgJiSOaV+/zKMcObtw3W/QFebVHC7id7CJpBdDbZ/6eASA/RTC3Vtf+IMGoeeKrDZ4AUPvnx39W+qiYq3n4+1mfdFWj4HUp0SU+KnBhgPZyiAYu1LbS72lVJDKZc3A0CZxTgdQ5jq00hVN5fE+8QjYC78cVJ+Igk7+SVCkcN+nPzEX0saqQwK44Kk0e7JdhB65uXDUCX+CnwpsyvZ50ukF78XiQwQWPalJWT5MX4i0YVYMsore9ziTlsUhlpwwgNPxgNkbORiTS8LEswFADbD/Ap+KjlKxnouoIEwR4M9gBZTRM7ce1Lu48dBA54IJ9bMigNgp8am5aZGlrsJEKQluXWMo3y1RcT8amKdIUBxOgFNkYD+B1IbJW5scLp9OvGhahFUKZEdPNDmT8F6CFI3dEpNqvn/FgS2ByO9DWa3f6QLMk983Sgj7p2i8QSVJPCIm2eOEYwSg1in7+GOLsimZ9D8jU9mA2iNCRCLVENPn5NMdFuxJVM3w+jYc1/4pKvFXINfz/EMj+D31gYcLrhFi/7o76rZn2Li9h9n3yl5k5GDPqSRa8JMg42LZgWsr4Xxktk+e4OLksXDS3ibZwGbT/rdeFr79eZiRUbrzOse9cvccxJrTYaBF3h27YmD7H4cUIW6axgPmxd7vCAGH+EAcTv55GVjkO2PMxI0gu3GnBy0qyMfVoRJqNp7DoWtlqtPIJIjw3En4/IZzUb2xERyO+5trKo+OACadj0+6sFuLvjCAwm3w8BbO/M/cCDUWpWqrukXEqkS9C05mqixVIMadVAu0H3FfaozFs3EzjP7TMJ1w9LCH/xf0UuW2BFAVthe03eHrIo2j2OEKXZbTeUtkf4Yw3tNVWYybokodz8gMmumHsFGUD8CyztOccBztwd+RBq4tVg3ujM2DEJSmT1E7lkPGCYjVZmz2f9/SmesT8dQwWpcNR48YiYZNnrTAfgzPApF1J6hzoC+ZPdaJKjNL/AbZMukpbtB1rjAfGNf7aCK3rWHNnKZYwsqwfRmbuGd786ENlY1pSK21U9eCO357qBO/LJ0ZDwaeSX6rj2KPG3T55G1/LTIMeKIW5HNA8+iSJgBDvYIjQWeWHqogMG1/S5V9GkodsQDqPhXtQvsCTcI7VhzVS6aNtELb/v1O2CaBcC4losZzv2LRIAO8xUzUMPM+4PxXmlnITNDhYFnBXhxAmOHOAdohKWaB96wCFLVD5DBJS+16lPYuA07RUSo8IE6qYsmEr/HPU2Ane96/kJ72FJYpzBpFkDtZ3/SCwxEhaXnRxZFaqTFKnM3KjBkRR5gfjUvSv0jM8abVDVfYmFdCQnaANeyKx+KHe1/Qcx9p9Pr/FuHzVMolISZhHI5hiHBBZXXGvEuN4zxBk0QDLb+Wema2oonMR7MdgU4w/FS+273Fx6by1UWe3GBQskPBRfyggxEeQeeJeNJwOmcr8JO6anyWuws2yQFsyzsulQ7s70GFNuEgSchcUIwBEA5W6g/J7fmQ59ZarzH44GiuuYB1fTkVRvWXwdOs4YwPQcI0gVYS4L6zLqVtVVVRlooVUAoJBvDdXD2FJi0dzlOYUQf//FwK61JifcSwZFbR8KdW0uNcxB8yDTUmJlThmeueImCckFPONuZ0hwQBDt9+tjoEg+HDNdCUeYL4pWAC47T3ShogLbzVwKaRXAi2zSYoAtXRJjJVaRwvW59abytpJNFfW/Y6v2LWfrc6sHBj4FzyVi6HMy2mAuRHCYfY22Nr5gLdkGPjQm5XHLEduPv51mrJyqt9JOe5lvZoJ0Uxw5FY6bwfmlZK+xMgU4lfx0e8j+u4791KadBSfv6VOFadJeKu6b8ppdOp9/p4znENHIjZQsHH1tB4+HuO2piV2O9P1eIhnmwFnjxggw9ud9GYdVL8sIw6ILpVwszwE7f7PnVP0iTZo8g6PtrWGe1ydsMSSys0McF0Qtgq1+SX2vm4J6nGzCPVFxM4mF0zjTrVh8i6uXNg43ZCO9iLmjAAXfTl1q7XPxNuz3zr5ZMC11QbSt0UdEUaY2tEJf2/A2L6OJI8NoL0sW35zlIkfHCOoOQQmWWIM0u0kbvs3AEWa08A69U3mIWNr09IgC/HYSl4jLkPKyGTVwRqSLIm2mVpDrl42D2SzNLN6M/dBOUOlpWv9T5B3mv5G3/ay3Mesz33BHT1xQggJqiKjaf4uSvvZmzfkGL8pgW814f6ZtAxxI/UXUph0k5pxV5OxwpiZ08oKfq2nqnC1N5WqX8NBa0KidsRgkGZjFPDDJUgqYWuVxdlvVzgj0QzwWDN6WsdnuXhNv8Z7d5SivkH3KQQMCQt02uyXX7LEP7zjeojOIXB44ZKjM9WFsaeQFRKOrw460bE2XJ8CGfEnKLMwAaAaCT8O/TOmIOF6TH2qWqwv9UKhGcxhwe/WMyvV4FWw1jP5BDgeqnTYtWbEN8PPlgXSC0mwPXEucPV261BpnC8trOJvdB8cVjfaW/UPgbmPoTP4xwms5G6/SdjG/yVKKmODpyyuXN78K0giiPyjdewSix9b8lxoVheY+pNfiAxOgjYfGj7OIwImBbGanW5a60FG5nqCBh6i7Kns/GC8ZaWgRfrX0bUti8zI9Gf+9O6Ui6vUWVr2t/oj83yfAJXXFRebAk/9mGChgyro+9Q0DNiMbCq7PWG5CpkDfvsQiuosJ3IFGErZepUXstGDMAKxOKaHnC3ekBOEF0f7c1rHEtc4Mhk/GCTyFYWeBkwXnUhf4AI/VKz7XC8eg6KioKH0Km3cLTVzk2OIzOwoWY3DmjL/T0DWapsmOYaA4kb9rCC5qjN3HOwecfSWIDay/84T2r/J/u+dIk8GEp4t3Tcv/LM0a6vnQBurXkLbZz2phAmjhmkUvI+7dgxHnhhNrZaBGOnB3BM2lFlzcKZr7z8vct18OKiEnPxHNMDtBz8cECBDX9+OlT7C4d3nO5ETaYP3KTz+UWmXlCrS2xsu41C7Lb4xwSyPgvjLlvsswxkmN+mzciX4UiZOMxM4A7UrUcye9zstR42hz+iA8orVTdDQyLznROf+Owmca6qrQ7zVIlqmFlqqJAuCUqyKjQ1sEFgc8nj+RE0vw8XPoG637+T6gRxo3cZmGyDn5KGv26YP3wHO4ZC9uNGFJIUQDT6gmy6kFSj/ZKwXrftWZEgZmRQ837d4m46mdGkNeH8HbXAU2FqtOnhxwvBXPp8rYI9WhtYRUrAyy0957i7A1GeoQNAeiiU62kJIa+BUnGgUbk5NKFQRLXceTcFnOlaH8H/WOdvKyXLaXKYly34wFfCFsTaJxKLpgH+IotquTvK3UluHyCAVTT06p2UB3UWPSLTBoBTxR6zaqppek5P0xHKdNaVRWM6Iy2jsXhIBcu5ZcK8O7de4BsthbbZuN/Xvzzh1B1EGw9UNKp/eGVnT/GYEpIneX6+XnWDjeo08pASqnqHJwoTrdOMoyhq93C0LL8R2azU1v6qSf38kuZiEXK4Yx8K0uUuQhAbkiQRBotwC0FQQ0yPYz8Jc/z9RFOENsCjAZVCCP5etJOgik6gMqzJwaAFe54vqOmWVO3edzfawVXM6qTgCD5EEhqj7yKPm2dnw6tcdnQ7Zf8ODp1JGdYqkDg9ufZVpRcjpyZcLyIeXlKsCN7u6xwFeKmyCYvEebPQMo0CD4UmdgRoeILWqH9LPy5WJSc2JjlcqZBidm6pZvjBGRcEjLI+cQ8IR+3vutnRyDIXux8go5cm0rjgZbOEJSLBMSr3wCIdzDOUpBuXPqhb2EZpqx9yzMfyJWpz2kRH27H9Axs1aM5ojiWcQQZoRbknizHVeHrnn2C0nttVcIaNOzSk29hoyJcO1ckGsB8C3WYQQ5pDc3aHCoj1cyuptAzOOj1GrZonUcHGM/GUhthmNjE1erokn7MoEIcACpd9suqVJX4O01WvnZnZqnNKRyaOQ1wHQZgGrXdxCu7VEcjZuLiK8hpS3bAXYAFCmVUWPiKMub7lZS6lYSx4s9F51yIxLtRVWnKghgxNidS0reKlIY+x9huAaJwXNZZPutFXR5qJWzxtAHLZAtW2MadWeoch9uNVNR7bJBieJalbLVTWzyjCDsC64i5rMZAz4Xm3gnohR3YS+JwcXo0umXoh0zdTVDQrlhDHc539T5W+lgn2/WQzbGoPmLZCPNBmhW6QZJhXSM4pXypqUwbxKJGsFj9Vex+o4IYrKd3RLPkQlpc1a4F0gn2DkoLp/T439ZGsBrsIVeA+NY+Nn6QpcSaL+QX1TknTASUEhMGD79aL3QTSItnwbI2aNJAs4JAFz7dm45Ietv6jTW0/50NQJH2Bz0Uau0oGblRn8zRaXJivnT7jCceBX2bLrcwXnBq2sHiN1dUaszl0x1w7Ep8CGO6DgGDPIhaoLoh/G3OvkNhh8LwZY44NGwEHBl6ILi/XVN++VUJOzgRXYaeHZWzsDoEBVupkg5EajseteX+k0rzF95Vtl6KjJAFdFqIgM7/wmGH9tRbwjWArzjd9i5uqsgexA9QmlPdm/KsicRzT+POWCC68Ak6XXOc+3SHo6CU18hunANARA9fq6w3H4thrltm3DeT0IVIFHTw5vBrC+PNx+NCpewSqQPfStauKH4BtZARbuwVf7OnRX/yrJTetwcIzYDQ3zT5m0zp2QSCeNZdCChOYh9EBzWxzXnqbxGHu878Yg9tmhVkLh/lDJ4D6q0g745VgE00FjhDtJnkmykSffJJ+aJEGrjQOsOWGVJfsJFiEVug3j2uywEVkuMb1RIF5NKoX6RmJhvt2EvIFM4A7rj9jhbgHJaTEEaA47sWGcmMRPLj+U959KNMfoceMpi+fXqElbdDN6u7C6OaCyOo6l79ZQUihpj/gQIFTnGJCsbKY9BLnYxZCHLeEBDreT/FOt8SNLNAsbyjw4vXEFkKn0q9w/iHUaBZXF2uEtEjEjhMTxx7soU0Z4Fhwaf0vX44bsKjF9HdeVXyTrneSDDBAb6XYdVl8Vvpu+yACOgbP6pDA09qAoXjZlSTCkYZKZYmOQMW4qhCzfobBKAX9yVqThumqHrN4CpEeBVjc5QglYcebPtpvKCu8RFfCXFrsxnsuT6mGxVbAyM5Cs8p0sCtkOm0Fb1YV3aRF4hEY0Du91DfWrVJYlrnVM0HuMjcNx4NwAgGC/meoZFGEcsu5lEjCVhcjXNmZHjCOFNymci3xK+Qo9JJR4VnGS/2mpm7mXPqeji+uX2Gv/DeUVLVCpOrIvgzFDz+T6KIt86Y57eFvyVU+XIYnfrEXIEiZ7zfKRa1YW0PDG9kRu1BgBAFdMytgY2wJmXRVnqwxA9VIrTysbW5kOK0M5vS8lWCSS9I1kMDYYOzKHUBYRF1QwRIgdY+22XLjwF9MAWPOJPs8lpPif3gEOuaprxOjtv6iSypQYQNPd1e4u0vFF0zciwarNOmZsnFH1vXfDkI5RKX0MTRmaRr6fW9KTgJa/PxoXtKD5gXv7A1HkSiF+uiN5JxJkhWTQZNBK+1Yn+MrMZECg4PKzOOXmEuJa/D/dU+iXJTplSXiw4AQDAtbFvI2Np+rmxSYYVtUpzVwwuxtk98sRe4P/vPViuCsHvQAHt5drDbkKNQTmMbTu5Rgn6CZHL6+h9401wTqtGjvqAhVsdiJhlba80lOGZCO/SwIbf5t+HvB/VA3eAZuSw6brsRggBtDfVALRXwYX/Ltdot/Bc088vWrl2lLHZIyovyq8p3j8jDWK790r3NVNTceSDQptG7jEnAtwYx6EB5RBkAjZlmOCQhXNmdzQ5g3s+Vwc1TUNk0lPOJ/NCW7vxOMrDf80tyIHhSDp6DXO77FIFffpGqEBdA3PPEbCZ27eVsoE3RqwcHvjkwv0rMH35uwofBLskC8K9/4hKmkA5SqDX+FQvJQTORdOj+XUuMXloIZVlFILbFAz7+Fpmz/5Z8xBsWgDzI7k8AUqVDE0HT1g6ynI2ev/wy4+aaEen+45nm5wyZU3iB15LPUCjG5Lr+5+ue8K1T1fbFTIHNmSRyHrltiMrCEBFhWTo9ME8if3pJSIH+2U9KQvCe99T35eT1awLEf6Z9IX3X5WB8UaOLdp6N9L4OEy2l7cWLCbmx2XmznD8s52DbEHvkah4Kmhihg07BhFpWJ5R3vG69gz5p2+O9JTl9EZsesN3pqym186Ngb1YvmCkek7lhRDQniEI/aMC3b7DU4zjaDDutA8PfZoBrAXfUIP2NaQaP+1Hxdfq0iwIF5l3pI6wXsuBTHyESrCAK9REGFO2UDYIxABf/9GwZkL7XBqaVATRikoUJ8VMqTNYbzWC83a55GUGSMmsHwP3lMrohL2Ux/E7l4AnNN8SvHBloiX+YyK3E7Ll3Z8FJWREmk/I77EbtbHFz41cREVyGql7ZG+A8tb7If3ovoPpL//ls6Z+Kx5PDre1CbCk4sRsDEwkNP+eT1F9iBCjiwoiPx2jCtlqDzuAI3Lv94Id8QmHjsztlvvcuKFrJ/6LpusSl4UiU3DgoM+IMi06ndkEXnzopHfInlOSGco5S3+FWDEPkxEsB1i3aoQ/ITM6qpl89jRqgwvnBrvqVFfoYDHBV4phpcpyOe0Rty6SlKorc+kdsus+2lbiiDNfbu5LzcRwPelCReBY/PxaT7LQ7Qn7ERxHU6JfMem6K/sEyllxMI5ucSeILEFAUdf6OwQL7k1kL2NqVsFOk+LpNxf2KS4zK/uv1XYYeBnR2AtHB9titGkj/T+EBWhjyxkQCCKzV4yYhC6D5eKdLBrNk70XBxJzBmNZuoVsmu69KdCD2TziJrI7iWpFNLVHVVAk7tRHs43a6CQ09bMoe+SLn4bZog5ygmkv3Km+XfF9xEBhTr+YFbcuIV5pTsuSgDjuxGiryJt0cs+Ig8ghdHZOoyIObUsloDzmQkXq2HqzzAgpAIZqh1vt8BjwDkqpFN0PonSkXEcNSWBpP4xghfOK5EsAuV8ctc183vcXTGA9/bTZctaGgZorzxE9gMw2kEDsZB+MJ1mHzNegPc0R8CVPLK4G4Zx3Y4CZQsukgPS9Z02/wncEw17Tnh6AG1Z/pgxY60pwz6gVNhCI6Lhb+BINoscx6s54O80a7+YWwahZjYbhCkx6eoXT4ndunc3HIFvtmbrkEj8o3aqv/Xbv07iR2zf9QHS5zHZ+GXgpOmegGzdZM6kRPZ/dmQcgWZ6KvafU3R2O9z3b3nzEYWnFnEY8yxjR6ocii7FK55kKiKpmaMiKHbZHI20hx2/Q0Ur83ldwk8FvLR89quI8WuvL3ugMgYHBvFQVdqLxyV0X1kiG1VV6zevx9Y3wQOOyg0AgAhHFxywaL9UnYUGNKxplbv2rDOud0cfT2TnPkljXXOhiq789VBDgLdqw1aiQwMjAD39A7IkAc+FajWVuUYZXBZu7l+zYud4k5UgaWsXYPY09cM9eQ9KCdpH0l9/ODE350QT562P0TESTIRXJOGcx84OuVJl+pQDjNutaMsytw6I51Sk+CZKZt2SXOBOGyEn+PIB2Y3Wd37GstWMjhs2BdLzqeEJS0L1Xl+qkaaUH9EdReD991/2IXdPd3z2GPjUni2Tnz8fpA4Eo8N8pXpu21eQWBzXUwHlZGZa6Z84gpwwlYVQPVPSh9Oi6z+Ob083PtVAOIV99fEY+xV0zFM7xJSJsHT69zOz4wDf0HVhow/qXFAsq4YZ0OL18zmstnJnNAyWHkdIHGIvpBaUHERPppL9kT5bsZXa4KFQ4RmAn7955srapcEYzG08pyln806qXiTCZ8ienh+vwEcFhAEOgeGitEHbX1FtxCaiCiAmgAwxmJgOz8x1deDu6CcQJnlmgW0+/uCgVuR570MK82zcXg+Vg5z38Nob6DglFKKYNyWtKZlEhkBiAysTz2u1oh3DASWeNsvKfAon68sKhmpuouDxOyRWWG7Wx/f8NcD7MCwn62lJh78C9V0Qlci5JHx9zey/2MQMRoeXrV8M65nDfnUZvtj43Bkto6duLJ2YpGu1qpK4yB55fOkmAaV/NRtboUd+7j5mWU95qtfYRZqGO/Vb+TdRzY4iRCFwzYYE4tIV5ka7SF5aUOxdvjvn/l0vwJzksMggIIvsQuHcxlTMLkaAXoQ+1GHTF9LS9rlpi91X5GawAgwcjr003C+emR+IQRVb3v/mjOJ0ogDILEj71sUbiCLEMfpAZAZBCtKMRK4xecfNfr6RlqVvwPZTvODasMKfL/5+WasNwgirsULLvtObEgeOm/6VLldoj8BXvo0U30NfRoYFHWPdlyqX4nPbES8lns17Bq3mIgnyzgAOIol46cGZqJtcxfLVkJOqAAkeHyLDBuEwrX/qh9Wg7cB4rEDbWpWbqoFM7FDLK1Ec8QCuuhnWDuZc8RY9kgoEaeX4xRhxVZza1MHtUipE8ueE7FLeSfiAIDcdvM/cWuKWaaHuj9CVZdDuJdi3fzjdBmn/ISFZYdADqFqDguVOhS2QzOxmCGaYSJs6udZP/JTsgmcWLd2ndfqA45lOz8uduvEJSWmr+0o2W5gDXltRXqXCfEBfmNVF7csL3XgpiJUmTkFy187c4znenuvWKLykBGkqVXmVmiSTAMfNp9/PnC4u3CwLcefkNl1xGfcXfYzrYtKJ/69k9I4MVBY5hwNUJTkAJflHZ7kyBFe/vB+ul8dBGoWxZEy572MTR+enXCpjNmCXvbnWSqU96ykf9K2DKfClGn+xVLtZChnl6jUdd4yxdNXMOs/PKlOZCnJZyXXzueyiHo1vNUx8ZmxIC4WN9VKZJKR1J6qeGAO/m5qanC5ctU0Xjsu2hREnnCQE9sHpUImtGVlOf3Y2KSLFe5Wr7sgpzTfadbuSQ2i7qtpY+2Hfpbdyb9MCECqP+QkCH8OhVNmSH47Qj77FqKDXFmDPpZe1S+rK2Fk3VKPBb1502YoVf6XV3BP9LxtJJozUbov23IS8YZynFtd8OgrxCK9zOU2mSSFb4Nzv8M9+943ymgS+cxWVHRnqElUaOdjbnX4uI7vzA5oNcq40FweFju8eybRRv9bEC46k39Nz1zm6XcacXfAWs33fwY3fr1ziATWo6W9Mcb1qIegbAPY42RNj6zs/yf5ClIRu3sz/7BzVTiJGUV6yw1mjdeN5j5gvREWKNxzGbr5z+u9FHgus2ptl8QhTm9ken2AVLHy7Xa0df0QkLMeUATbzCsMjTqk0XI2b43IkALMoWs+nQch7PTky0fJF4D1mQXZvk/XCDCybpSAesVYu9HsBqymC3zpcyHwfptKUvz0mfJtHCjJ4Npy/BQUNiJdP7v86cDzTWbQRdGArNs8DPuDXyZlvmDx0LrB3lPcQbhDScWdubx7uedCx97CGRJM5N4tfdZivS7FsEvwqAt4awdi8wR7g842kfKI0UI2GCqeoUMXS4HUs1bFckMv6tnxf3c+Btk1PigwfNg3eUba4PcjtfKVMh/9U0br0lAwmVW4VU3GTRE0o3McDHLMibHBITH5mpDUsGJNhpkxjVpr7055FrDwVkUeLLW3SPfKZV8TPxYBV6XRKngp/wpMCibpPi/Q5kPoHt/QlpzEzTrDn55FI4yxGfdRHnRmjP+jHAZu67GVgtnslLCY46N36a3LFZ7dTskXfxd+3V2E3GB7qFOksoD3BbzIDJ7YFxuGDtLuTr+XbJ776K+pnJ5npa+zqE1rjWPp39/0Fv/xfJbRSqGhWRpfArOBFwAG11JDvnzebJ7tFlF4qn8YMSjnPSaFzx9zQ+VPFL2nPf1NKXvb644NmX17SEWWxOjmQgLyMyiRPYuHt1RoiwL9WXsEg4/d/f64bCTy5q8uKhq4yqSNGYEHHB3EryNi1BIbXPQM2a+m54Reyy8fV9H9IL2UpVB1cnG64xNKXNbPWksph3W60muNEnhDdxuGvWTpjqYKv92UvtJ+sEEIOz85EFzIZhvLHJNze8SM242oQQkOYMo1wfyMxQOQWDUjLyHZNrtMwIHOBLEavRjPFkD1nQz8euqYjOhlXkWhcHqXZ27vm1n8joaDLv3NnZ1fk6BU4m+/bOeCPpBx3qh1SytShTVCJAXk/CgOFNdw4j7oWqNlPtMnIJlvxrlsjs7Axblq4M3p4GRUP0SL5zlC/LMg4y2yM+xxKfDwKsyR5w/ow7PC/EUjxECk2LPWMJtEFV2iFp+EPOfKZMDBG53jvKz8AT3tuDxkIGz37infsIU7sAaBgHF/KQGFJgmM/nE1vfiNv92PNzUWH2BzpoKi065Zuc8x5HIR1x4UZbs6jUQqN//PbRaeebjm1GRletAvqFocWBjm1SpakudB3b03R/NltOqplIZL1hFyD7q4eGRdz9d3STOLzHomsTWzTVxUSGf6zX4sHf2O9DXvU4Olw3xLJkxVMu/sNGlnezs6uACzmcX/PuDFX9CsPpBb/xm1KylTDeqR1ytt47hONIphKOrqt22cxqPzIW/yLeIJEe4nMGgFd3VGi1UDtxkTAdqREH7/PgvWMAyeZRvz8LyTl+MN8F3AHSMCWoGp1TvezpHMW5Mdz+EWRq/CbHL4fmyBVMxVvlVcIWKuxifXduHuRYIB1ZQtPtmYGnMPA2Cjxv6UBowI3n/GSqdYd1cJrAxlBKVZlrpfBYEeuLedSGIRDDi6nnAsAMH0wqHkgCk1yZBmAeF6hv1DPYCXQYjrBcykj5a+XIi3NeCBcwhceuHxZ4jButdM1+6uUEaxiY2POH1vIi9gmSEVJMcombdBFiiHXqXgyp8cD6TDOxNDu1WLSzMpus9MJpNe9FuA2mqqlMqtip0wZpWiD8c2sc/u8MiJxBhkbo/h4eV97Oru1zyFBDY8AL188xnq9Tb6Lgt9gs9xolZJsxJwOTNdVG4k8Lvwz4Bemwl+pQ5STdTW9PNaOjZEuIZLIUR8e0GxnGOMF9lxM8znUmFddIaOU9PXR/Om0II/TQyluXHi9UHUP6u7/khSVw6B6l51CZwBa4TskvwWpFMI8k10YilHnwOEBvBHKPD1r445T/AIBYB5iL7eRbWjntSILv5YjjLwIJt7ys200J71gmg9W8mneQ8FWq0fyAPU86J3e3tcDeRb/dCdp9eUnqMiFv3dXGv6HPN/B8Kj8HTL4Of52ZNlpF4TOOBgLQKhgdjMGQQ3wKG53fUYckZsvjjPz79fjrTwL+U16981QfM7pFSbh2ShBEUY6PeWzv3O9nWCPCusq/I2QR2U6+6FApr7q/WlIpbTi6Bvk2rMUtVNdAVehVZCK8ZV41T9QHa/qrimQZKFD4FwYDfUrWyLBAjUYWKtyUe6IBtCOotBJI2sGedD+Q94Iocm8Te+SoFCjtxe+Sfn3husPBnCP1WoMejPxlb3sRWcIXVrmavLnxbJf8YHey4OYYO2Xdb11R1wUqyGBrbwQ5p+oQ0immPGpd676+L0fUzgfMRlVjTRkCsCf8hl6ueR14i9ArrgNA+hS2KNWEBu0eNiY7w3QLKNEAwU1TJb4FOJu3Goa3+v3gRMn4kkKVaJROgdp1qDv4TAkyAk1xODKu5XiCgQIRly3tFVLQgaSFQFuivFSLAsPjCkfm1gWZEzY7C8CakYrWt7itwdk04Pm8SvcuAyXvLGe9HENiNyiooWOPOR1a8+NZ5tZJKgIQmq+hQGyDbX+oUeUrCtIEh3jFjAom77G7rwlvWEg47CK1MFwJ+jafZIPAy2RdAdsEySJvg8Hbjptc3YrCvPCr2rn/dRBxcbDFNofG4t8UPEs+GisKDfHqnNU4oyAz2N6TPqo+6KHFKhdsgSigaTpwHsc944t/dX2PM1e/7hsRmRaqPiF+dCULIDrlz17Gl+VfihqgrgSjRvvJ/amOrc/VIGuJsO027h5KECbvWpUj5Qi2CuBrvl7yXyJ5wq8ORwbHKcJJNoKpfTlvVg8460hRCA/eFITGORBx79ddc4eeUPnBrboC/n9YpQfU/3RJRsAjgHUXFzVwVNCclb0hYvZ/GksTj4fJ3vvx5N7+QkEqoyVPKf1qJKzA0Bzg2MJ/5ANrXZfDkoh5/uZMPYYlDoyTkN8/RRWJypQDzhe5hZ4Xbhh40J3GfwEiyv5hWWQgX2YD6gKb0ugHMuaD344A9iyrvz1sAXNeS2t0zmxxPut/nCoQ7U/bmMfdR887yJJ4H+2KAZ6jTzuNIsgSL6O0szaM0ix1dKq/RoCMf7NvbBp4pfUSZiNaL2ftxc4rdoUY7a6tpZeUf06LqZgFA53b0VwWsyEBjh1P7DUS45yt7NM/oXuDUxH8vNRTkI+zohUXtTScywUZYyOpEONweO9Y2+bPzxkkhaWY3W47zpJgr74vmcJrvZcqzgaPHJgLfV2sdQOPbCptvANxovaLuIAmvkIhs/X5hTfxMtl7PmsEOhXdYhfdXavO2npsvVIveaxOouTNFQlfdYiTgbV2hfsNvGUSOF0AGVkJ0nVmBTyT65TLbZlUQbR17QAknLPZ6LfAL+AUJKU5ghBzouHX6o8IrXWsB04b/Amwo+JnX0QmrvJ6lDGp9tlGuvMdERtGpLosAv8/JkYrnHLus6K4J1snSA+Pn8kMtbbxFvdgKj04WKKaIcLSULrMWG0oF4CBAcaloAPUHSqPJzHatP01tTBskPbBXYLG8AcGhv2S5m42MTlisD0Fb5AxHeQjbQXgrbZMvAv/VXUDwCafAvLqeLeNU9/W8BzTvI5RT2vys24kHNsIyiJ8WbdfZn2l1Eh1QoHXem69ZUArMmTshFC7+SVHiV+H47jrDaMeSdw6xBT28sflp46hHrk0UMiYBqMUPAwiBozqtLR9U5PJ9WMUybrvdZ4SHc2Zc3hy4tUwLt3wEdYeipoOELaCDA87Bl/xEZofQSX7SetJ9QIvX9SDPGBHa7npv+uFZ3hna2mcE0mlshjAmylqFBU9fjg5XYBCub0Q3ZLJ5lrPckAMSIl8PMhW/A9NmS6A9veFfkLeav4oy0iiFJ528XQE509MiF2j+2S0JOxSmOTnPiTLxXiwRP98q+cQvZin+7YSK2VxzpdElv7wttr0/zpdomValwUVEtZGwK+K6llnni8AY2m+zUeJa3foGv60rX7bNbMgZfTYuV6dXqb/etr8Ee4okS7GViC4JriLvggl9nSMqlxOVwFrWkIUgvaTPAexwZRwawcXRI/cEkLQiwgVA8JFph3XEFk6Ef/vcrEcQLoK+z9SJbYMvz+9ARp1/6yHflQULiX6UvlL3NhV5E6kYgay+4odyO+CXFRLIRwa4O6rixRBWC1JUpP4Q0wd7aTiJiEsHUG1roiizgQGdOXlN8787wxLQr6hMEcm7LsmuLH+rzC1mmYBVBTpE/PAdDUj6konLsIv4Ma29TPLH8+2OKknTPE0m3RQD2I4nhMlxmf2iabTDoCpx0r5ebU0L4zt71afMqTNQdW8t3S7Ti+FlboNj+vbdoPyl3Aa25rm2ZJxIX29BDdLIZqpz8qbcejyqxZbQg9N/0iBJxgNecT3nvt97xF+Z/agCVW4xyvMS0NMEe0ZM7Z+r7gRU6s/Mp48yDaXzcdjkCdpjIMZ1pw7YmE2cOLWXQQLwL2Vr/jN4aJWEocJzywVLQCV7ZFwqz6GpHAKpZ/HQjU32uF2kAV/6Xr8YrRYDgd74vXQY02bhy/9jjGvNNBlKBGsW4db5DVGcvo99h9yNcRAT83oorZ+dhNqkKIiybRh+hubXWJ6/j47DByMQRuaKQ7o1W0sDzatVIEC8I/j945G0bDdzIH7va4xAfOE0Xpr3OKZdaR2UDnBXYhGjlAyiOII0zvjgWQCT40+n33oAyH/6Qfo/yV5kEb0NFYDTrrzLC23rkGI6N4jhns8BR1ebnqHCxHQq7cMnxjE5px9qPyYLtzhuB04QhD3lR8lxGv9cNhWkaF/lE5lwz8SAwxDQ1ftVyR5IX4vMPtmDxccqpXYkgFmJ8R5kjYh9kovfBPPRi9pIYp6sXzmELfedzjhdYXq/sW3cLTHKkmWpFPpbYgZdoPzrN+8ktSgsagNDd/njBSwWAxDt8UOzk5uxIuCye+jU1YC/MfIgQLcxrB0c92MnxtkOYsAkjGhuvVQOEIM1qPtESz/uxAfNYyY1YaTthyy520HBTjQj9mGsx/pfq7Ta/hgX8hzI7nk6F/6SLVUtTSlwKFGu20pmTtVpO/o+ph8VPDvqPg08G96hGbiglCOkOPc3BDEZgy+SrqzFpB6F5NddvltK8AjYx49ipDCEqxRkrOJbGF5PaJaKxlNRaayCi+sqQyPnn8l/S/hBwMZCZ33vYEqAYEqGVEnK3zle5byBHxA/iyEGlAu9HZlS/ERkQbkVz8+9tnoWpXXaeqn/Ug9z/UD+BB7mWnQI8/5O9ZtVsOY0Zcr1AFP833e1S1wKmHSGq/QKASh5jDDpwsjv1+vPiT11pHOAZAV+JQFe4K5x7zldJdmPETVKI3pb1FTSuWsw91hAeUwnX6W983BRvVvDsyWEnGR77tcHSCdr5uwaHN3ONFUZEmXIcssCcyfkBKrHgQk1+zvwExbUPAA62SXm+ZxPQvFDFrRtANR0jkvaJtTzVoseOgpoudfgt2g7parnFyyHiNxVAR5lLrIuXQ4qZuTCPzz44jlUs3XOJJdjzv5JOE3cGxChXf/w8mgdyXMA7+KuPEcq36LoFkBXxL8AO8WWP8uG4mZN/4iAF8enm4wuJ42vBO/oztbOf8BHhq0NHSZZ72ClQuV14kYgjTSoIzaIyKH5eJrOBwlVJYZWa14dxEE2AmpS+oOUAwufkMWcx3wYziM/VE3Gf5hf5WDKuQ48xf8lCkkEbBJUo3/w60XdxD4KBO7c8m8ajjXbzXHlAI54KyQ+ti6ITpP6jG72hYlB9gt5CxG6xXdBYS3E2ijkKRJPgBz51cTYKioxCMjPNgFxP/0khRqFrI0Plc4in0itsMIz+ueBJKA1SRmSfgmhldvsUiU2Mf7ECeOcqmvoFb34vIsvJ4TlYhbWIU/kxrsbCiEE8jaKSfcMF1TQovp91O97XJlW88zwMUabs6AhBP968I4UDefPXWexLU/yUaTNVr1wzBNih1NXgHYHDIsIVQnTdaCyXyK5x/ndVlBAlOpQQ5EFTlWJcjO7XWj5FZdBrZsORXQv+eDm+NS4xeVOwxmB1KkkBUvgKYVzkfQEFw6sC55NFanK5HsXM6LZjbilj/4WbL7WDS3D6FRgIvdzH2JOvHd6ZJDiw3Y3vlOJkma6JHJrIXly3Isi3IWXTpEKUApEJDJsnepusUBJBzpKb4y9/nNV8oH+MjpBcusc91ibaxSdhfJhzuZbUiGw791NUbh2sHAYeiJaV6jFE5Pe33UOKcejBqb4WG/V1ptDJ85aRhS38/0aOCUACHvQdw3rYnNR0aEktXfHoYGpVDFmKLX/pX1I5TGqKPlL8DSlmN+xM1YsoeO+PIj5EJFcW6tRmToaSwa5R4rxbVNKJYk+ebOduB3wLtYTXUHt3gZYpkX3P08ADXiQXaBP2KPb8I6L38ZQvV2OKoa/gf0FZ3hCSCyJPD028LezpGxY//mi75FnWp7NXeg/iUEAwNtD2FMpDgezHkd8WjzdzUzDbQcurMKXV36W3nr0Ze2YY2Z9SrY07M8/fMeb4icGEEfaYGjmIidjHJgatphgOGfRdU1qC2O6S5YwcGEquRFNUc01BTpt/+G2JJ2N8LkxunXJFBY9acqYo95YjPGgKHA6ijMRKFINsGkHVvcGceQQQXTpbyRUoI4Pnbc4R3I2yAlP8uWDoThwo8+PBrXsk/Fr8JLkhTVhw3nARPEq+2ibAquOYQnVrC11bCw4xgDQ21WhEyCV1XKr7qbAo4QeDcwPHRRkl354bB3DrTQS79GXAZZbfVdj92axbc8dEdEhSCXXu9A/ZLMLL/rPww9S7azMmpQTV3Hu7E2y404OgPql/B0394YQDWsXvF5nu0IgoizW0AQaTmUbUpOtcP3DOZrN6sAxeN/ydQ+aupUeIUOgz8B8wtPpqCopIMgckIU3qWHbvbS33TSNUYb1T2P1TY2a8+00MD03SKbCMZGJKT4fhy77sxs2sBhn1NeESOS0L1UE9mN6mHO1M/bp3iHeiSk6L5WyRoZKPzp44U28Ce1vncCyiYvIyQ/zOa8vkjiEMQp00ai9A1AgTAKEFGraolYS+wiwkSManGwJsSj6HdiWkkmPtArVglHMbxDMGSwvCM2R6GRKRpHd+mOdBaQRP8AICJ20rp1KrPiXiJvaaxSCegRljQwfDvITP0FjBaN7M2x1DeiQscFHqvXrnYhXDZNVctRB6+ti2cFTk5kHHzvCyZhL2Q8eJbuA4fTb6sfav2Q3wZaLgzv+EDNDwKy/AgY8r1tUPXxXSLamAqHvw6E1JarLyi+6QtAGgHIlCoaUeRfWfsuQjO3dyrnaB+4v1S5kPCyfQ4VMKQ+PLSHMhp3BZg+ReT7jIgJFRn5Qg8rkenZwPxpvq1S+1EgUW10R8oGutgxHoAcb1IhfMA8Xv5GVVBPqq7VoAYZZP/ppcQHgQnT2vdcprjVRNouEFDDgiZjoU3ufzIDlf4os7mGwb909LLwoo6Mwt4NsKDKgwWoMZE5muGvIKcWiJo3O46SLl0G/L0KvBbDc6CUz9PaVzfCW4/eUaP7D8RNdoz+HY8dG8lxKWxYbWedMKwYNIA66p71SYMNIL1XbcFClM7uZfeTKxbskUhtDLBgDN6KF7dxmR4/8EGsfIjYoYkGktuY6yoJL142/Fq2ZAdExKPR63iUPRiT9VJnZL4h626kUd6HaOzIT+sS4acs+b2WK4+lMK6zM8GXs/H64zwkg5m5CAaHgrezQFVq1N9CNNzYX+MiycHPnu18VMRSGoCx3v8GuKCw7FSde6TDmz94tFZZLFWqlfd604ExGdeLnSosvVqgdDOw24bCXbjPq2LPndQKJVmtfNSy9Ewvl9ye37MoSh7Jx9LP17przW4MfIuzyG/OB/TeMovYbdTocJ05xP+Vm7DchBeECyzMgWCUAS8gs0h9YG86ogUI3elPjRBzcdoS+iAhG2+s5Pglx7izraNPCO7JQ8snbewMVkEsAug7CB6bPhMFH0L54CHelUKYeRKn1XwICEm2kjxYPgpPZsw+99aVpccCdp0kOKTWzRkjQ+VXo67ULqTnPZ4KgIZ9VuXe4IXLG19JfKvnWCQq+FB/raTLeMgMealnWTi+Oa/upZVlz7tLd0FgrrlHP258De7nTDrc0pzCvMffvO8sgvOXHUKYubB6RPkjy4jx/XGG/dsjWd2q5M0jDAT1w/LxStiBXdV8aCckMFa2F20F8M7QsQQtjHWYQdhHWIpnEP8Dzfg/BSvQI6/jo9GZQfYOzh2u2OdkoWdKEugonCSZtF+DKPQvMq1pdt4FvLKhIM0dxic5KVahfB9vM1rBVfvfDbrWNmcOY4hCqeE9fPklTLHwD4RKoPP1M6hbVRZIdAf6d3T8qX1E8iI3KRCtCCyvesXHwrqqhGnyofFAcDoqcWjSXJSoioyvII9CsUa++Nv8vG32UOy/yxFxyU2k9V7FzUcWF+lzKA63+FFhloQmDkIH0czzgz9b77THtPx9Rto7LxpLG3cHVo9wa43QFfTbeTdI4BhfTC/160mSoXLmBT2KlgsrEY17y16IOaEuaTODqv9qCN6VXY+kZutjbuRjh0ff4pgvLqsGIbBU3QVmv/Z72Rs6I89rDOzkKVmY1wmlgxVH81n+JeAUuebO57i3niLKTbi1w8FirKbxxMThxJCkRqoQ+7boWFTq4tUD2QJz5qHMBUxYJRnd0TXx4IGpZdf8YHlE/9TgS9CNKkaXu51CBzUOopuAAIs7Gv9O3rZSLtB4AuMNQ8Cb+sgksT1Rk0Exs8rGeyum+NsbNfk+5AAFN74UukKq10b1zMPAQdXuzDquFiBTgW5lL1+LCH20NsJkhpiIfpIrFXuZMVB6zwr88BOea6AKrp7HW3vcbFw2lUmo0M/GRGfcf2ElgiYpsYdE1Pmhfe2jsNUok3rPGyYeDsZZwl0WBiHxNg7giW3yAI2dRhfWtggz2phnZi+H5vbrfZH8NvcM2kTpVF6ISn2eO3qIYd1dy0axsHyHpJpF62Vk5Mz952dP8Tf77lTb24PgaA2KT4T0x+3caZwKX0Tl08F2Po+T2YSN2gAm4MABlf7BbxacsgnOIhRx4kkZ3UVfDLFjCVV9afy5yzfoioxe7jsdfgli+CP5BpwErggD12NhD4iAS+A+CT9OnW+GG/T0fo+zbMVjc8RXOwChfocjC1KX9dPMZglILtI4B7QbBGHfmYRUm97oUs9ME/rEcA2fQlPmbAQ6cA0qI0hjBKQyY4axTJ6Nab8h9J5I8pqqXI+dz2VbabypJ57OnagQVY23QEj6ISKDWv6GHXOTYfxOIrv5wwkc9LupkgvVqv/Q3JQvGTceR0T0IcEe3qj2HCTRuH4KvrZgzImcCPxCuKUq8LTcfZ1JWNoZQ8czspFciMMzHwwGymghvvdBZnPcYq26s+DdmNad5xRlPgwP0yf/8aoUKO+Ot8wrdZ9X0rw5cVGhwEXft6HZfVAR6Ca1UDqNWbIuWzxkqHsKLA9/dskf10or9xnO2tDs6A2jt6wmiojHdrqJmGoIgu8xiqQxI77SJmestZck34KKWT941Ld1IboooczdWqvTrn+Zei8QAk9ncVkITm/R8kXED33HfZOYjkRZ07dJ9P9uBK8FjXPTSRhZRTLq73EtDv237v05INdY0kg0BOadX6Cc3RqtetJVPu87VICWRbFFBZYr/mW/5WnM4/EQPGFXWKOmb7nBGvM1EDnZp3yvQLu0xawoCSaM05kIg9yTjIm8UifAsj+cNAjPLX/g4KE0PQt9zhhx5FXI5/ZTcCz9ADYwNyPTRDtmswL20CJRGaraPIOG2iYyJ/VJ9cdEJeWiegAPcBYQtqaclWemlpmFlz00x4hvIe+RdML5tnYV++jQ5QnACQNOPtKK8Izky9MTi5K+pQIEjEs3OmZLZAUbjZNgeO6zMfIP/E7ACvaaj5hdtN3PYwGckyUh9dWkl3hep+DW//u3GIHX7oQlfPdG7KO4t1lIIXlEKC+dngPL7ZSehjichtSTgHkJa3aCAxUuE+G2FQS7QzxeKkTlgQSepfYHlOvq+Zu5YK0j1syQ1yzb7Hf40Kt7JzYLSpS6m+XFY0gbnnSN7ifB8cV00aO7oodvovXGkoaGaFnNTZ+j3T/dchCD1Qv4TQd3jyAkbTOnyicIQd18Rd7JWlF5Z51m8Y0VrMwVtIXTVCeTiryGz6lkP6Ipxhe8Uv8RqGJGdYve73XoPeSEh6bNYPlxTrzbsiksVdPyceYZ/sDKtokRHXdAoZlMOgyRCwib+RqmgcI4VZxKbldu8d6ccl+1CcxKvLH0AK+6CQtBgGnhpJ35VTr6NJ6cZfmxdvWwQ3zCbehaqq5Ith7V7RZjbncBVYJkHoPdJzycepu8ONEIO3HLCxynU+MenJu6aorpFzaTxoqYLJvxa4X++KxPhUQa0P33cnC5C8Drj4GPFYegZSbKVQbw380pdeHMEJXMPjE7W+BMhgb6z8uS8QUCA29wekV92hMlHNkXLzosm43MBwu8qPeEVVFMx5q4k1wjPUP0b2MA/BOoYz19EZ5LHFZkxE4oRFmNN0fHgQJ3G17bLqy1FUDmlP2l/oSAFVHXUbPWycB+meo1m7KMs/RAwuJCEp/V7eXv7DNTsrxHpzw1qjTZ5fV/L0Ra7x4jWvaNsHhQrvJTcWcQXLccFeS3+1b7lbzMr4MwTaegj92Dz5oeShediWSzccbIkZaQCV7ziTHFxQKGKS2UR10SYbK/hxB8vHL/oXrkBoEPYUHkt49EmgfkQrMPQcqkUDRF3TxvRCGvtGbcZU4ZquETr87bfnKRN0fUqXJdo4llXH5eqMF6sG5N8YUFfPQItBPXahQ9b4wn+oCd7DOPfCtIRw0V870r15nUKNar6x5L5KSkYQYy2XgCCZLDh8HO2meUJ6xAMPCeac+fZtY1/ZdQ0W0HiSSxS/HjaQLlcrxh0pHBgfgIGnbQe1w7Fu6RS5WDO69vWQboiWrai612snpvGdpdH4gLox6ixFyvEAuqGgUF0zqg6pqnGSpCYnh2lsrkjmpSr+wzW+3gvshVWZYzPLmz4WXbBZgU7R9T3KPvO0F4r7ZkhsP6ICefsXaz6KyICPOviS+RGL8sDFPqUm8ZklNV1+jYQ2GU1to6At0uyXTcfoiSUJAt22uLGUl9ZDTcPwLALy6QpKTaMz+5UbZh331yGukb/WKvSCJk/JB2s3G24M0mGm6+VpopCZex25u8H1BwAmhoBcHN3g7ijLr6qInn1SRkmEOLOs8dqx1OMYBX7sK542md3DfkZDznTVIfYpQX9nvwOSR++0Vnn9bQctSNt7CZ66vE0Ctis4/h0FkqKhKNWa0PsIjth5Y7jec60L+kgYRIwkhoILxkQPhFrac9diH+F0aSrlUdNu3fGsVmEUlgkk1au8U8vFQWtGX6v2u60WlZ08GPt+bAbWduSiGBV6O3RzvWcjLxRsFzRS22HElehgGBRfXX+l0Ej8BfUiYFMfURPYUC5kdx7RC6L14IwH9RKXViekc8kPAist0jZ4gsPX4DCKu97GPAWjTO9EZfuDklVCgODq5VYepIhIiTbV4XrN834fl9ez0sAAWazxNi+ZV3yim3o2cyV1jOvsJiBhs8UCwGDapBb7mhhVHirXiQ7+VE8GuHP0YeCEviSjl+rB5SautmJZyIsjmVlfHbKxDuHjVJoqEGlzcEjWWERun5gUoQbcYjLMlJxwsBOag10TDaPCEVcloFyCHwOaaKYdDiICpFSuToN4p2v8XoYJcyCKFroLDmnM1MBCfWyawNlAxyQUiDqo/egeuXKu6mYdxYhiZNvcCfqTQvDQ+XEwFrLyX6tLu/FXeSgwrT9bgF1KNrfHYqaE/dFsSBpJWa9tcyDqEnqcsCyIJpOtlYCKJLfVdQW4YC5Z6UiTNb3EnadMme2yNP43gVH4mEh9kUaOuRSwlR066RaHG9qQoNOYCefvEm3Vc1eTMkjTnkadB/Y0pFjB/e1xz3qHQgdRSpE2JErP03dWKPO7KkCH5vP3Gs5LTWNG9TM3nlL1lm/IIWj/1Ek1dBqvWDviJOjVT5UU96Yx4pzG+ZbSeEIfIZph6pIAzMbNKesw4zKsbhRh+gyr8XkUzew9S87bpAOABJCClo2Do5ZhyMxFI2OD/S+lm6lBJl6TYjG35Nhfy4dEHFK4I1YgG0+21dfy9EvcsXG4nfFIvgCUI4QlVB6wwqfMrUVZxOulqi/26GIuaIcsOec48SYcY82A0ybFjm9pyZf3RXW1IsZEZ51mjXgDI5R1ubAMu2On9tDIvH4VdzgSc6xmNO7v6uTMgcXmZie8bUdV4liGWNIrpH2IVjcfECDOGqXGq49Yv8kHqyQait+EDghFI0jRHepmbeS24xOhC7UhjFZ+X9E3Z4S9FacctvJz3YzLvcMz0gyqMEl/vclIo4AvvktXabX8NDg7r/AviENVnUBsGWS4jz1IGKMEm+A4NZJq53eUw0VSqf176pcG/GPz/ZB2f2izUjGX1eDLV1SNJLdy+FIngRpe+7KOWkJcp/DpZcB+7W5JuQ9zg355gFGCbwPxMqV8L3v3qpqRn0dEMJ9ZcHekTfzKq8yY+EIK41uKARQ1t5XxlOAQokAyVvhz4VRU2vxooPb4W9pqZt2MrrTLPm3N4ABgLy2CwxrQdhFK1vGXfA2kFD0HQKX2ROq7QXbYAjDsL65gOeT8bPtBAnzPMYhGakzVa8JIQu95Gyfmcw00y5P7885QeyqBKFV78pjxxr9sXrU8EKdkpXLcegNR2XAmh2MZh/+w4vnFRGk4PAUirEqLo0pfkXVooxrgpI5PFjFdT27cQPs2++CAVsUash36ladf60qzX838d7rtCL8R5/QH5s5Tc/fHgmj3+p81R2QtM2KK42sqx0/KcxsMvow9ugPmz9mCmKJZn+JpAJ6+AoDI5wpxMnhGYGAueLDKMe6w4G+Lh5hoEHi6+mfAWeqpibxDb/o5dW4aZQFa/DLczGVkky1WWulaDreyKM9kRhxx7PST0nHVr3/B6pPnA3/Air/5mLlxy585X22ewVyZg5Zh6yPOfkvEn3MQxnr7uqtfwba4ASIMg8uoxuE+1y+ajXmE6BXOQ7FUhnsS1QGg3AJlETrPtsNfaQZFVV5LzrnQn1u/i+UMXVhAHpPuOj+bm+B28VComKYyZFNG82n+8jO2DS1wONtur8m+bIYBV2ocPOoO4ExZ3ODB5oIHrd6S2T/M3k9mn171rP/Aft76ZTcKwybdEVmWhggsM7fsYUrCu3F8iEYKT0ztk6yvxxK6Y1hbBd3cvCvbEr8wMs3DZwwrNMC4R00L4buEdzSUuoZRBAZY4PPHwgHTUQUlDoG+798YrV9p97wvnQ+8gIwCFU3cQ0/13aTm9Clm82MKsJynFifAsvS6FcNltWF6JRqpqZn+4vNv0qzyrS1DBys+kN80fBy9670NtYM25Tl36Oyr6rWj7vXdS6MnbgM+TTvYUHsSqvoM0fQA7rrUQ/cbwQzoz7+Bjg0HdN4jEX01HSJKIMEPGvDD/gPeB/uz9MmxzHsiEUbmdLF/DP+MmWE2VrHgRQX+fw/46mEbJeMm7ki5FqhUSiJSFvpj4dh9CipWI0a7GyFkIl55LmikAJzR0+3hx7XDhb7utVtK60NcCdhDsFn3wZRqBe3dwCHZNudYC7B1lTZkUn6Zahex94rIa4SnIRgpu0vXa1skwYnZYJeCNh5QbdHqFJqslsSa2Yq9Nbjnb7JgU8PxDf83suYb5WWd/HvJTkAcebped1bpAAuE7WMHQa4fdhtM4ISPGrouASFrfHPU2liwPWVvOD8B55h9ihAKHltoDGeB2BGxD688saQIkkgfifrX3BYy0fcWsmPTNqyVDZyuTCCwJhQWtro1az0Yf/mfMfNx9SkML090S8bM2e/vsPyHd8YPFJcIXmYUHoqSv1JCuZ1sXzPWu5t6nYQezN8AixtRTUHMSr0hMYIIHOEIw4psZ/lsIRsJMnd2ZDiwo8i0lmEK22YJlGM4EmjKY+iQswxWQql2yMzwEED87kYnWkRtxiiHgHpAUG+RoXXOUJNpK2NXKSF3vdsFfuj3kLoiin7P1XTQRjElke8OYqOFhIHcQJmBE/rPhMrJ2n4uHnco0sH3OW76yeN5vg+JJ22cX5NW3GM7G7MMlaQP9pq0tAq3ZvhwDNQrvgLlPCkbLwmMRUIwV1+CgCX9bRzHvNKJS9fJ6u7xmvpsE3tG3w7/rB3a6exa5n9cCWjBPFGmGWWbkJZhEySBO87aBCIwK8GMlhi1VDbNheaEgo+O0MJlP0SxYG2fsqkEtaV+Y0yCf8TU8vkeDkPFrGHJ9t0QJdll3VCTqyV5VPnxO9ib2f4Ta0Gnl9raytce148MTs36fAzCygYGpQPC72aBiSLDW/V0JZV+6rVsNdnSSeIKGtkGN2takPTIySESn37zQP+bM1EbReIXIropMi9q59x/yBEKNZkX+sxTRIQdEqk7hxyVOqXf6fjg4VODA0exo6eL+wuB1PEGzS4RlZdx2yHn+rbNtdC5jI8CflKGie6t0L+8sbytSPwOI78eS+LPqXPbRrvQhkxvaJvIurpdtVnzo1cxLK/j03IgWd8lLT+sd94Y4yKKXcvi89N859TQRYdT9zHcmLsdNkA0rgV39myEXn6/fesClB3OrQOaWZmzGJgloo22v9MURhzrbx8Wp7nkICOypQZ62gKGLPOy+egH6L0vWaTFLzgTRnWxLJPXIVgWQJe/WrgLjypQCTin/DoI3wR3ACrrWcLTEquQu+v+KXDo5yiCoNwx/g+nY0BNS1iVJauLusp+2avbm4EGAPtNa9QzAh0Lm9QEPEyIZNBPrbKJ1yPJI7deq85wE0UxVKDObODs9PAmD6VFXMlTmIip95R0FFmZhhQmrzc5O8SDUnywYvsA6sOfrBO8Y5ktBTcNGpPRPmVF5GEcGkQbvSaWFuenbWyqek7BNbGNSbTzHpq60095CjWyH03b9BY88i8qrRa3GOyPxDHfVh7VTOc7CUoBzKriqTyOrPcTGvwY1ruwqMTS1WzFFcY0Ina2E+juTizADIb90CT3AVFU3I8ANbes1NtR9CIddMZy6xRmpFcUvJBhtdGjXH2RbXxf7YfX8MF+u0arABPMF39GKasQSCLPS6YNLaKc2Ou6O6HdUiTuilaQVNFQFsNjf1Clc0LmXjp/xlIW/knHzQQqM/E9zVt6dxryTeQSriJO9Ro/TAw4bCegcyJvsUf0L7aRbX65QnzpaKImjPQ23q59XDetXxPB0f0/an0Q5pxQVLuBA/vJyM91GTMYrZIbRShyUvmM0ljP+4efuXMRx5X7WRIsTR6dlV74x/Jdhdg4DjrsGCS0OhjqYZ3d3BBge4cQtdfx+2g1QI8FGo3aO1vHzXcygq2JxsS1VfMZMY6XPoNaIh1GMCYaTMq+zPeSjCCkI06u5hjuFZmIv6R5H3gqYwObMxuz6zbybyEwsEeTQiYFusyt7l/cvrXGQfWCavlVYEkwkpk8UfSKyR9JkCv9WmX8R6yxfwlx1ViS9xiKTaIj7Z/t3XtoGZKgyN9Zq6wmjVaESOY1oNyQaLMHDz7TLzi5bV82XjBXs6hElm8iy7UQfXXqwBgE9vmf9IqU0Pn6W7eGff4AocDx9eoEtPmtmxSBKwQH18wa1AP7haqlKqSZoleQ7HnNDbhPMy6AUOjvtZV6KUT8AcmumtxJXgHi2W885/g5QbRbdEwHeZK7EB3I/fws+XFyxYIFlKjMXPAODmVOhTnp8McSCGGIp2ZwoB4ALYGLQiOtQgLGNKiH6p9AO7E5yhDY0Y9xr4rge1Cv3PxFeOPHp7hyZYPhgYXKLiwfSCcADLFBABSRnhkRdIwDXTB9xSAcAtGn6UBjFwIqb64Bz7V7E2Vg1yvywwD+SZC00b+Y4fY7uSjzawod8XUVXUlisa/H+bUA29vl24jI6WmGkPyPKz/U/Yd/CLHU5Nq34dKgybTbBLsAv0taAOnqjWe7BzZiE0Y8YuSCgXg9rLjDDnofQ9++sbdjXpwe9ynrCDEz8rwBI+xpy6LrsxXzPjJG9asQju+/A7B3B3jhwTmnSyMDSa7D+zh/UA9DtgCpi1fI/AYNBO2ocQFgx4hBJaiycxzRGBWtGYxtGexmWRS8WLo/jq3jqj1aeHKiflX75/TwwMSizz/ZhlbyPjZE9o67fLcnqIxETnjSE9fHfW2c8js/28kXpfY9CCCF1CSYZfZgZlbmAw2ENk4AAB0hsOspTUH/dpcbAONwnJcpEopcY9Z787PU9YMJ80LWJDpTyf5b+MqDzuy3Gq71wV4uLjhZluISAWpy8nNhRwkDfUUiGBMyi1lr3SgvgNO1XQhb3Rw0UkB5dFFFh5J0slVSg8/D9MIIaB26azh3nHMa0is64zcfMymgQqDvBY2stT2t8m9/jE5Gy6e+PuiiyASomoQWlVTKnAH5wOTH6ccUmk1wvq7MFXKYszwzifVI5nfCj/ZGIsfc3MAymDK/r1QHODrsW9v/U3caa6MpmjHLjjgiBJGtpwjH+L+zEsJ50N3eyy8HdrJT4cQywTeo8MXHHESAm+o8gxBfgAPcDzTo0Uqn4zZYr7t0HqPnQxaM1us20gQyKqTt63GrmN3+2tu2QyZZhsqwEBaG5J59PQuIKvgFJ3qMWzAeNzbGroHP83baIPncv80+33WJP7RogMR9lmM+PcU150rByU9DP/ogGtBu/V3brlOltSx9ACw71H7F4vAyOV15VuUZL+sGWfxSjdiWAaWIQJ5rvOkHLaUjrPyBYEzjTv5IRHDTA8I0JHL89ddhnRtM7fKRlFy6W0mby3DB/aOxJcpVd71nR4+zr75PIbv38D4IN8mQRwY1Vj1yGo1Uo5ajp+iood+NLMszt8qcDd/aJg9ynoYi2u/+5uvhKageB+o+h1u5LYxKuU/yYNAHYVcy0RYzimpArsjG6+LXHvdv4ZesTNjJf1tgU88lQlfLWv/3cwZR57SG94FcTASQQCUvwxsMUjiwAdUKlyTiwB9RQ9ucgVu/2gPFC/dqQMaxv/COjj4GtTIwU9z0FQgPn+lWrF6onKoOsIlwYFw1T2LKx3civtYFa+X6v0N4pYXt5G6hvxbhf1Aalf5hubhmFKdHtKHDeAlV8zEkrc4ECLqp0j6EMizzqfoxP03rXvVEjztPWL0E/gMkG6Y+M0hDZANTiUzLU9puHN1adhxDqKfObDzyAjoPrF2KGizQvVn3OP+iXcmgy0PnRNaKdLMpU87TOiA5FFK8tD2U8jANV9HCAkQggrk103TMQmG3O4MEFO4al0PBZqzusNaahbr3/k7d5UmnA2K9miBNkY8JT3VWF2fXw0hyDCPmjguFOnz7COq1jI8WFNsR4ISDwipPhbsKYgmtDKt9TXuLyv1uWE95FYK6xowkaVx4/k9iEexyP+IXvVs6koV1eAS4yFPMobdgqM/nciTqUDzgFAqJjLIcrv1OdwvD19KwxAbrD9hPiicLIb3niu/yStm85oe0YmYXTXIn2F8uG7CuiWfnUYFu7GVOQuAnzOX00fFnPFYivRj388HUfcxrTYuNjjv/uCC2v7DBsF6We46YOIlgV0//cKDfhOUNIdjC5hec8XPecHoZC8DJF7C/8aXEjw6TmRjXitWwDs0Etrjgnn6eM3vR3k5O4UWixf4lxTnSs+i2vLLqdMiUfZnNDlwBrlQAyHKZXcX8ZFgswPSWDcwHdhykTer7C523xdQ/jIbhxuEfRJBbxnbyP2EwfI2QmDwfERrHRpz1mkD5JJ7aAcpjJSkatlt90y3sAg2CUoMauhM6LDu83sIccYcRqte+iqkqXYSEhUg===we_provide_best_cccam_&_iptv_custom_module_and_tools_or_web_development_services===xtream-masters.com}");
?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 8ff0c27b2b3242be04168da8afe8390a |
Eval Count | 1 |
Decode Time | 695 ms |