Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_X='P1N1P25Jbg1OCVFRS1poMDRde0ZLMDR3YWFLcmxXSzBXZ242S3doe0t7RjBXZ242Sz..
Decoded Output download
?><?php
// Include class for crypt and decrypt transaction data
include('idxgestpay_class.php');
?>
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* @category Mage
* @package Mage_Gestpay
* @copyright Copyright (c) 2003-2009 Onlywood Srl (http://www.onlywood.it)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Gestpay IndexController
*
* @category Mage
* @package Mage_Gestpay
* @name Mage_Gestpay_IndexController
* @author Alessandro Blason <[email protected]>
*/
class Mage_Gestpay_IndexController extends Mage_Core_Controller_Front_Action
{
protected $_objCrypt;
public function indexAction()
{
/*
* Load an object by id
* Request looking like:
* http://site.com/gestpay?id=15
* or
* http://site.com/gestpay/id/15
*/
/*
$gestpay_id = $this->getRequest()->getParam('id');
if($gestpay_id != null && $gestpay_id != '') {
$gestpay = Mage::getModel('gestpay/gestpay')->load($gestpay_id)->getData();
} else {
$gestpay = null;
}
*/
/*
* If no param we load a the last created item
*/
/*
if($gestpay == null) {
$resource = Mage::getSingleton('core/resource');
$read= $resource->getConnection('core_read');
$gestpayTable = $resource->getTableName('gestpay');
$select = $read->select()
->from($gestpayTable,array('gestpay_id','title','content','status'))
->where('status',1)
->order('created_time DESC') ;
$gestpay = $read->fetchRow($select);
}
Mage::register('gestpay', $gestpay);
*/
$this->loadLayout();
$this->renderLayout();
}
/**
* Redirect Block Type
*
* @var string
*/
protected $_redirectBlockType = 'gestpay/redirect';
protected function _expireAjax() {
if (! $this->getCheckout()->getQuote()->hasItems()) {
$this->getResponse()->setHeader('HTTP/1.1', '403 Session Expired');
exit();
}
}
/**
* Get singleton of Checkout Session Model
*
* @return Mage_Checkout_Model_Session
*/
public function getCheckout() {
return Mage::getSingleton('checkout/session');
}
/**
* this is the action that gets called in function getOrderPlaceRedirectUrl
*/
public function redirectAction() {
// Get the current cart
$session = $this->getCheckout();
$session->setGestpayQuoteId($session->getQuoteId());
$session->setGestpayRealOrderId($session->getLastRealOrderId());
// get the order model
$order = Mage::getModel('sales/order');
// get the order by its number
$order->loadByIncrementId($session->getLastRealOrderId());
// add a message to the history section in order management
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true);
$order->save();
//$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('gestpay')->__('Customer was redirected to Gestpay.'));
//$order->save();
// a lot of code, but delivers the Block Redirect.php to the users
$this->getResponse()->setBody($this->getLayout()->createBlock($this->_redirectBlockType)->setOrder($order)->toHtml());
}
/**
* Verify the Gestpay reply message
*/
public function getBPWMessage() {
if($this->getConfigData('debug'))
Mage::Log($_GET);
// Decrypt the response message from Banca Sella
$res = $this->decryptMessage();
//if(!is_object($this->_objCrypt))
// return false;
//----------------------------------------------------------------------------------------------
//Patch per prodottiunicef.it, va in System Error alcune volte nel ritorno del cliente sul sito
//invalidando l'ordine. Per questo motivo solo su 9999 non invalida l'ordine ma porta in success
//il cliente
//----------------------------------------------------------------------------------------------
//if($res == "9999")
// return true;
//if($res == "2005")
// exit();
//----------------------------------------------------------------------------------------------
if($this->_objCrypt->GetShopTransactionID() == '')
return false;
$order = Mage::getModel('sales/order');
// Check if there is a precharged record in XPAY table to be completed
$trans = Mage::getModel('gestpay/gestpay')->load($this->_objCrypt->GetShopTransactionID(), 'real_order_id');
if($this->getConfigData('debug'))
Mage::Log($trans);
if ($trans->getRealOrderId() == 0)
{
// load order by orderid from gestpay response tag
$store_group = Mage::app()->getStore()->getGroup()->getName();
//Purge the Store Group Name from the order number (Only for Test Environment)
//$order_id = str_replace($store_group.'-', "", $this->_objCrypt->GetShopTransactionID());
$order_id = $this->_objCrypt->GetShopTransactionID();
//$order->loadByIncrementId($_GET['NUMORD']);
$order->loadByIncrementId($order_id);
}
else
{
$order->loadByIncrementId($trans->getRealOrderId());
}
//$paymentInst = $order->getPayment()->getMethodInstance();
$customer = Mage::getModel('customer/customer');
$customer->load($order->getCustomerId());
$status = false;
if($this->_objCrypt->GetTransactionResult() == 'OK')
{
$status = true;
}
$order_date = Mage::helper('core')->formatDate($order->getCreatedAtDate(), 'short', false);
$order_date = substr($order_date, 6, 2).'-'.substr($order_date, 3, 2).'-'.substr($order_date, 0, 2);
//Mage::Log('Order date:'.$order_date);
//$order_date = $this->_objCrypt->GetDate();
//$order_date = substr($order_date, 0, 4).'-'.substr($order_date, 5, 2).'-'.substr($order_date, 8, 2).' '.str_replace('.' , ':', substr($order_date,11,8));
$order_date = $order->getCreatedAtDate()->get(Zend_Date::W3C);
$order_date = substr($order_date, 0, 10);
if ($trans->getRealOrderId() == 0)
{
// Save new record
$trans = Mage::getModel('gestpay/gestpay')
->setBankTransactionId($this->_objCrypt->GetBankTransactionID())
->setShopTransactionId($this->_objCrypt->GetShopTransactionID())
->setDate($order_date)
->setCustomer($customer->firstname.' '.$customer->lastname)
->setOrderId($order->getEntityId())
->setRealOrderId($order->getIncrementId())
->setCustomerId($order->getCustomerId())
->setTransactionResult($this->_objCrypt->GetTransactionResult())
->setIssuerCountry($this->_objCrypt->GetCountry())
->setAuthorizationCode($this->_objCrypt->GetAuthorizationCode())
->setCurrency($this->_objCrypt->GetCurrency())
->setVbv($this->_objCrypt->GetVbv())
->setErrorCode($this->_objCrypt->GetErrorCode())
->setErrorDescription($this->_objCrypt->GetErrorDescription())
->setAlertCode($this->_objCrypt->GetAlertCode())
->setAlertDescription($this->_objCrypt->GetAlertDescription())
->setThreedLevel($this->_objCrypt->Get3DLevel())
->setCustomInfo($this->_objCrypt->GetCustomInfo())
->setAmount($this->_objCrypt->GetAmount())
->save();
}
else
{
// Update previous saved record
$trans->setBankTransactionId($this->_objCrypt->GetBankTransactionID())
->setShopTransactionId($this->_objCrypt->GetShopTransactionID())
->setDate($order_date)
->setCustomer($customer->firstname.' '.$customer->lastname)
->setOrderId($order->getEntityId())
->setRealOrderId($order->getIncrementId())
->setCustomerId($order->getCustomerId())
->setTransactionResult($this->_objCrypt->GetTransactionResult())
->setIssuerCountry($this->_objCrypt->GetCountry())
->setAuthorizationCode($this->_objCrypt->GetAuthorizationCode())
->setCurrency($this->_objCrypt->GetCurrency())
->setVbv($this->_objCrypt->GetVbv())
->setErrorCode($this->_objCrypt->GetErrorCode())
->setErrorDescription($this->_objCrypt->GetErrorDescription())
->setAlertCode($this->_objCrypt->GetAlertCode())
->setAlertDescription($this->_objCrypt->GetAlertDescription())
->setThreedLevel($this->_objCrypt->Get3DLevel())
->setCustomInfo($this->_objCrypt->GetCustomInfo())
->setAmount($this->_objCrypt->GetAmount())
->save();
}
//}
//strftime('%Y-%m-%d %H:%M:%S', $order->getCreatedAtDate())
return $status;
}
/**
* this is the action that gets called when the payment was successful
*/
/*
public function mscallbackAction() {
// Check response message
$this->getBPWMessage();
}
*/
/**
* this is the action that gets called when the payment was successful
*/
public function mscallbackAction() {
Mage::Log('mscallbackActionNEW4');
Mage::Log($_GET);
Mage::Log($_POST);
// Check response message
$status = $this->getBPWMessage();
if ($status) {
$order = Mage::getModel('sales/order');
// load order by orderid from gestpay response tag
$store_group = Mage::app()->getStore()->getGroup()->getName();
//Purge the Store Group Name from the order number (Only for Test Environment)
$order_id = str_replace($store_group.'-', "", $this->_objCrypt->GetShopTransactionID());
//$order->loadByIncrementId($_GET['NUMORD']);
$order->loadByIncrementId($order_id);
if (!$order->getEmailSent()) {
$order->sendNewOrderEmail();
}
// get the order information
//$session = $this->getCheckout();
//$session->getQuote()->setIsActive(false)->save();
//Disabled: Mail Sent by success Action (server to server confirmation)
//$order->sendNewOrderEmail();
$paymentInst = $order->getPayment()->getMethodInstance();
$order->addStatusToHistory($paymentInst->getConfigData('order_status'), false);
//$order->setState($paymentInst->getConfigData('order_status'),true,'');
//$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_PROCESSING, false);
//$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_NEW, false);
$order->save();
//}
//else
//{
// $this->_redirect('gestpay/index/failure');
}
}
/**
* Gestpay calls this action if payment was successful
*/
public function successAction() {
Mage::Log('successAction');
Mage::Log($_GET);
Mage::Log($_POST);
// check if the response is valid
$status = $this->getBPWMessage();
//$status = true;
if ($status) {
// get the order information
$session = $this->getCheckout();
$session->getQuote()->setIsActive(false)->save();
$order = Mage::getModel('sales/order');
$order->load($this->getCheckout()->getLastOrderId());
if ($order->getId() && !$order->getEmailSent()) {
$order->sendNewOrderEmail();
}
$paymentInst = $order->getPayment()->getMethodInstance();
//$order->addStatusToHistory($paymentInst->getConfigData('order_status'), false);
// Modifica richiesta da [email protected]
//$order->setState($paymentInst->getConfigData('order_status'),true,'');
$order->addStatusToHistory($paymentInst->getConfigData('order_status'), false);
//$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_PROCESSING, false);
//$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_NEW, false);
$order->save();
// everything allright, redirect the user to success page
$this->_redirect('checkout/onepage/success');
} else {
// something is wrong -> redirect to failure controller
$this->_redirect('gestpay/index/failure');
}
}
/**
* Display cart if customer canceled payment
*/
public function cancelAction() {
if($this->getConfigData('debug'))
{
$gestpay_msg = Mage::helper('gestpay')->tostrGestpayResponse($this->_objCrypt->GetErrorCode());
Mage::Log('Gestpay cancel: '.$gestpay_msg);
Mage::Log('Transaction ID: '.$this->_objCrypt->GetBankTransactionID());
}
$session = $this->getCheckout();
if(isset($gestpay_msg))
$session->addError($this->__($gestpay_msg));
else
$session->addError($this->__('L\'ordine è stato annullato'));
$order = Mage::getModel('sales/order');
$order->load($this->getCheckout()->getLastOrderId());
if(isset($gestpay_msg))
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED, Mage::helper('gestpay')->__($gestpay_msg));
else
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED, Mage::helper('gestpay')->__('Customer canceled Gestpay Payment.'));
$order->save();
$this->_redirect('checkout/cart');
}
/**
* Display cart if gestpay returned to the failure url
*/
public function failureAction() {
if($this->getConfigData('debug'))
{
$gestpay_msg = Mage::helper('gestpay')->tostrGestpayResponse($this->_objCrypt->GetErrorCode());
Mage::Log('Gestpay error/cancel: '.$gestpay_msg);
Mage::Log('Transaction ID: '.$this->_objCrypt->GetBankTransactionID());
}
$session = $this->getCheckout();
// If canceled by customer
/*
if($this->_objCrypt->GetErrorCode() == 1143)
{
//$this->_redirect('gestpay/index/cancel'.'?'.$_SERVER["QUERY_STRING"]);
//return;
$session->addError($this->__('L\'ordine è stato annullato'));
} else {
}
*/
if(isset($gestpay_msg))
$session->addError($this->__($gestpay_msg));
else
$session->addError($this->__('C\'è stato un problema nel trasferimento al sito Banca Sella (GestPay)'));
$order = Mage::getModel('sales/order');
$order->load($this->getCheckout()->getLastOrderId());
if(isset($gestpay_msg))
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED, Mage::helper('gestpay')->__($gestpay_msg));
else
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED, Mage::helper('gestpay')->__('There was an error at Gestpay Payment. Customers payment was not valid.'));
$order->save();
$this->_redirect('checkout/cart');
}
/**
* Get Payment Instance Class
*/
public function getPayment() {
// Get the current cart
$session = $this->getCheckout();
$order = Mage::getModel('sales/order');
$order->loadByIncrementId($this->getOrderId());
if($order->getPayment())
return $order->getPayment()->getMethodInstance();
else
return false;
}
/**
* Get configuration data
*/
public function getConfigData($param) {
// Decrypt the response message from Banca Sella
if(!is_object($this->_objCrypt))
$this->decryptMessage();
if($this->getPayment())
return $this->getPayment()->getConfigData($param);
else
return false;
}
/**
* Get Order ID
*/
public function getOrderId() {
if($this->_objCrypt->GetShopTransactionID())
{
$store_group = Mage::app()->getStore()->getGroup()->getName();
return str_replace($store_group.'-', "", $this->_objCrypt->GetShopTransactionID());
}
else
{
return $this->getCheckout()->getLastRealOrderId();
}
//return $this->getCheckout()->getLastRealOrderId();
}
/**
* Decrypt the message returned by Banca Sella
*/
public function decryptMessage() {
//if(!isset($_GET['a']) || !isset($_GET['b']))
// return false;
// Create le GestPay class
$this->_objCrypt = new IdxGestPayCrypt();
$this->_objCrypt->SetShopLogin($_GET['a']);
$this->_objCrypt->SetEncryptedString($_GET['b']);
$this->_objCrypt->Decrypt();
if($this->getConfigData('debug'))
{
Mage::Log('EncryptedString: '.$this->_objCrypt->GetEncryptedString());
if($this->_objCrypt->GetErrorDescription() != '') {
Mage::Log('ErrorCode: '.$this->_objCrypt->GetErrorCode().' Description: '.$this->_objCrypt->GetErrorDescription());
Mage::Log('ShopTransactionID='.$this->_objCrypt->GetShopTransactionID());
}
}
return $this->_objCrypt->GetErrorCode();
}
}
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='P1N1P25Jbg1OCVFRS1poMDRde0ZLMDR3YWFLcmxXSzBXZ242S3doe0t7RjBXZ242SzZXd2hhdzA2T2xoS3t3NncNTglPaDA0XXtGKCdPez5qRmE2bndnXzA0d2FhQW5JbicpOw1OP1MNTnU/bkluDU5RKioNTksqS2l3akZoNmwNTksqDU5LKktxNX1aejxLNW1LSlp6PHF5PA1OSyoNTksqS31JT2FLYWxdVzBGS3JPNEZLT2FLYV0yZEYwNks2bEs2SUZLNW5GaEt5bHI2MXdXRktKTzBGaGFGSyg1eUpLRUEgKQ1OSypLNkl3NktPYUsyXWh7NEZ7SzFPNklLNklPYUtudzAzd2pGS09oSzZJRktyTzRGS0paejxxeTxBNj42QQ1OSypLWjZLT2FLdzRhbEt3UndPNHcyNEZLNklXbF1qSUs2SUZLMWxXNHstMU97Ri0xRjJLdzZLNklPYUt0Lko6DU5LKktJNjZuOlFRbG5GaGFsXVcwRkFsV2pRNE8wRmhhRmFRbGE0LUVBIEFuSW4NTksqS1pyS2dsXUt7T3tLaGw2S1dGMEZPUkZLd0swbG5nS2xySzZJRks0TzBGaGFGS3doe0t3V0ZLXWh3MjRGSzZsDU5LKktsMjZ3T2hLTzZLNklXbF1qSUs2SUZLMWxXNHstMU97Ri0xRjIsS240RndhRkthRmh7S3doS0ZZd080DU5LKks2bEs0TzBGaGFGQFl3akZoNmwwbFlZRlcwRkEwbFlLYWxLMUZLMHdoS2FGaHtLZ2xdS3dLMGxuZ0tPWVlGe093NkY0Z0ENTksqDU5LKktAMHc2RmpsV2dLS0tpd2pGDU5LKktAbncwM3dqRktLS0tpd2pGX1hGYTZud2cNTksqS0AwbG5nV09qSTZLS3psbmdXT2pJNksoMClLQiAgRS1CICBwSzVoNGcxbGx7S3lXNEsoSTY2bjpRUTExMUFsaDRnMWxse0FPNikNTksqS0A0TzBGaGFGS0tLS0k2Nm46UVFsbkZoYWxdVzBGQWxXalE0TzBGaGFGYVFsYTQtRUEgQW5JbktLNW5GaEt5bHI2MXdXRktKTzBGaGFGSyg1eUpLRUEgKQ1OSypRDU4NTlEqKg1OSypLWEZhNm53Z0taaHtGPnpsaDZXbDQ0RlcNTksqDU5LKktAMHc2RmpsV2dLS0tpd2pGDU5LKktAbncwM3dqRktLS0tpd2pGX1hGYTZud2cNTksqS0Bod1lGS0tLS0tLS2l3akZfWEZhNm53Z19aaHtGPnpsaDZXbDQ0RlcNTksqS0B3XTZJbFdLS0tLS2Y0RmFhd2h7V2xLczR3YWxoS3V3NEZhYXdoe1dsQGxoNGcxbGx7QU82Uw1OSypRDU4NTjA0d2FhS2l3akZfWEZhNm53Z19aaHtGPnpsaDZXbDQ0RldLRj42Rmh7YUtpd2pGX3psV0ZfemxoNldsNDRGV19tV2xoNl9mMDZPbGgNTkQNTg1OCW5XbDZGMDZGe0skX2wyZHpXZ242Ow1ODU5LS0tLbl0yNE8wS3JdaDA2T2xoS09oe0Y+ZjA2T2xoKCkNTktLS0tEDU5LS0tLCQ1OS0tLSwlRKg1OS0tLSwlLKktKbHd7S3doS2wyZEYwNksyZ0tPe0sNTktLS0sJSypLLkYvXUZhNks0bGwzT2hqSzRPM0Y6DU5LS0tLCUsqS0k2Nm46UVFhTzZGQTBsWVFqRmE2bndnP097SFRiSw1OS0tLSwlLKktLbFcNTktLS0sJSypLSTY2bjpRUWFPNkZBMGxZUWpGYTZud2dRT3tRVGJLCQ1OS0tLSwlLKlENTktLS0sJUSpLDU4JCSRqRmE2bndnX097S0hLJDZJT2EtU2pGNi5GL11GYTYoKS1TakY2THdXd1koJ097Jyk7DU4NTktLCQlPcigkakZhNm53Z19Pe0shSEtoXTQ0SyYmSyRqRmE2bndnX097SyFISycnKQlEDU4JCQkkakZhNm53Z0tIS2l3akY6OmpGNmlse0Y0KCdqRmE2bndnUWpGYTZud2cnKS1TNGx3eygkakZhNm53Z19PeyktU2pGNmV3NncoKTsNTgkJQ0tGNGFGS0QNTgkJCSRqRmE2bndnS0hLaF00NDsNTgkJQwkNTgkJKlENTgkJDU4JCUtRKg1OS0tLSwlLKktacktobEtud1d3WUsxRks0bHd7S3dLNklGSzR3YTZLMFdGdzZGe0tPNkZZDU5LS0tLCUsqUUsNTktLS0sJUSoNTktLS0sJT3IoJGpGYTZud2dLSEhLaF00NClLRA1OCQkJJFdGYWxdVzBGS0hLaXdqRjo6akY2eU9oajRGNmxoKCcwbFdGUVdGYWxdVzBGJyk7DU4JCQkkV0Z3e0hLJFdGYWxdVzBGLVNqRjZ6bGhoRjA2T2xoKCcwbFdGX1dGd3snKTsNTgkJCSRqRmE2bndnfXcyNEZLSEskV0ZhbF1XMEYtU2pGNn13MjRGcXdZRignakZhNm53ZycpOw1OCQkJDU4JCQkkYUY0RjA2S0hLJFdGd3stU2FGNEYwNigpDU4JCQlLS0stU3JXbFkoJGpGYTZud2d9dzI0Rix3V1d3ZygnakZhNm53Z19PeycsJzZPNjRGJywnMGxoNkZoNicsJ2E2dzZdYScpKQ1OCQkJS0tLLVMxSUZXRignYTZ3Nl1hJyxUKQ1OCQkJS0tLLVNsV3tGVygnMFdGdzZGe182T1lGS2U8eXonKUs7DU4JCQlLS0sNTgkJCSRqRmE2bndnS0hLJFdGd3stU3JGNjBJLmwxKCRhRjRGMDYpOw1OCQlDDU4JCWl3akY6OldGak9hNkZXKCdqRmE2bndnJyxLJGpGYTZud2cpOw1OCQkqUQ1ODU4JCQkNTgkJJDZJT2EtUzRsd3tKd2dsXTYoKTtLS0tLSw1OCQkkNklPYS1TV0Zoe0ZXSndnbF02KCk7DU5LS0tLQw1ODU5LS0tLUSoqDU5LS0tLSypLLkZ7T1dGMDZLczRsMDNLfWduRg1OS0tLS0sqDU5LS0tLSypLQFJ3V0thNldPaGoNTktLS0tLKlENTktLS0tuV2w2RjA2RntLJF9XRntPV0YwNnM0bDAzfWduRktISydqRmE2bndnUVdGe09XRjA2JzsNTg1OS0tLS25XbDZGMDZGe0tyXWgwNk9saEtfRj5uT1dGZmR3PigpS0QNTg1OS0tLS0tLS0tPcksoIUskNklPYS1TakY2eklGMDNsXTYoKS1TakY2R11sNkYoKS1TSXdhWjZGWWEoKSlLRA1OS0tLS0tLS0tLS0tLJDZJT2EtU2pGNi5GYW5saGFGKCktU2FGNnZGd3tGVygndn19TFFUQVQnLEsnVSBFS3lGYWFPbGhLPD5uT1dGeycpOw1OS0tLS0tLS0tLS0tLRj5PNigpOw1OS0tLS0tLS0tDDU5LS0tLQw1ODU5LS0tLUSoqDU5LS0tLSypLWEY2S2FPaGo0RjZsaEtsckt6SUYwM2xdNkt5RmFhT2xoS2lse0Y0DU5LS0tLSyoNTktLS0tLKktAV0Y2XVdoS2l3akZfeklGMDNsXTZfaWx7RjRfeUZhYU9saA1OS0tLS0sqUQ1OS0tLS25dMjRPMEtyXWgwNk9saEtqRjZ6SUYwM2xdNigpS0QNTg1OS0tLS0tLS0tXRjZdV2hLaXdqRjo6akY2eU9oajRGNmxoKCcwSUYwM2xdNlFhRmFhT2xoJyk7DU5LS0tLQw1OS0tLSw1OS0tLS1EqKg1OS0tLS0sqSzZJT2FLT2FLNklGS3cwNk9saEs2SXc2S2pGNmFLMHc0NEZ7S09oS3JdaDA2T2xoS2pGNjVXe0ZXTDR3MEYuRntPV0YwNnRXNA1OS0tLS0sqUQ1OS0tLS25dMjRPMEtyXWgwNk9saEtXRntPV0YwNmYwNk9saCgpS0QNTg1OS0tLS0tLS0tRUUtYRjZLNklGSzBdV1dGaDZLMHdXNg1OS0tLS0tLS0skYUZhYU9saEtISyQ2SU9hLVNqRjZ6SUYwM2xdNigpOw1OS0tLS0tLS0skYUZhYU9saC1TYUY2WEZhNm53Z0ddbDZGWnsoJGFGYWFPbGgtU2pGNkddbDZGWnsoKSk7DU5LS0tLS0tLSyRhRmFhT2xoLVNhRjZYRmE2bndnLkZ3NDVXe0ZXWnsoJGFGYWFPbGgtU2pGNkp3YTYuRnc0NVd7RldaeygpKTsNTktLS0tLS0tLDU5LS0tLS0tLS1FRS2pGNks2SUZLbFd7RldLWWx7RjQNTktLS0tLS0tLJGxXe0ZXS0hLaXdqRjo6akY2aWx7RjQoJ2F3NEZhUWxXe0ZXJyk7DU5LS0tLS0tLS1FRS2pGNks2SUZLbFd7RldLMmdLTzZhS2hdWTJGVw1OS0tLS0tLS0skbFd7RlctUzRsd3tzZ1poMFdGWUZoNlp7KCRhRmFhT2xoLVNqRjZKd2E2LkZ3NDVXe0ZXWnsoKSk7DU5LS0tLS0tLS1FRS3d7e0t3S1lGYWF3akZLNmxLNklGS0lPYTZsV2dLYUYwNk9saEtPaEtsV3tGV0tZd2h3akZZRmg2DU5LS0tLS0tLSw1OCQkkbFd7RlctU2FGNnk2dzZGKGl3akZfeXc0RmFfaWx7RjRfNVd7Rlc6Onl9Zn08X3E8YyxLNlddRik7DU4JCSRsV3tGVy1TYXdSRigpOw1ODU5LS0tLS0tLS1FRJGxXe0ZXLVN3e3t5Nnc2XWF9bHZPYTZsV2coaXdqRl95dzRGYV9pbHtGNF81V3tGVzo6eX1mfTxfTDxxZVpxWF9MZk1pPHF9LEtpd2pGOjpJRjRuRlcoJ2pGYTZud2cnKS1TX18oJ3pdYTZsWUZXSzF3YUtXRntPV0YwNkZ7SzZsS1hGYTZud2dBJykpOw1OS0tLS0tLS0tRUSRsV3tGVy1TYXdSRigpOw1OS0tLS0tLS0sNTktLS0tLS0tLUVFLd0s0bDZLbHJLMGx7RixLMl02S3tGNE9SRldhSzZJRktzNGwwM0suRntPV0YwNkFuSW5LNmxLNklGS11hRldhDU5LS0tLS0tLSyQ2SU9hLVNqRjYuRmFubGhhRigpLVNhRjZzbHtnKCQ2SU9hLVNqRjZKd2dsXTYoKS1TMFdGdzZGczRsMDMoJDZJT2EtU19XRntPV0YwNnM0bDAzfWduRiktU2FGNjVXe0ZXKCRsV3tGVyktUzZsdjZZNCgpKTsNTktLS0tDDU4NTktLS0tRKioNTktLS0tLKks9RldPcmdLNklGS1hGYTZud2dLV0ZuNGdLWUZhYXdqRg1OS0tLS0sqUQ1OS0tLS25dMjRPMEtyXWgwNk9saEtqRjZzTGNpRmFhd2pGKClLRA1ODU5LS0tLCU9yKCQ2SU9hLVNqRjZ6bGhyT2pldzZ3KCd7RjJdaicpKUsNTktLS0sJCWl3akY6OkpsaigkX1g8fSk7DU5LS0tLCQkNTgkJUVFLZUYwV2duNks2SUZLV0ZhbmxoYUZLWUZhYXdqRktyV2xZS3N3aDB3S3lGNDR3DU4JCSRXRmFLSEskNklPYS1Te0YwV2duNmlGYWF3akYoKTsNTgkJUVFPcighT2FfbDJkRjA2KCQ2SU9hLVNfbDJkeldnbjYpKQ1OCQlRUQlXRjZdV2hLcnc0YUY7DU4NTgkJUVEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQkNTgkJUVFMdzYwSUtuRldLbldse2w2Nk9daE8wRnJBTzYsS1J3S09oS3lnYTZGWUs8V1dsV0t3NDBdaEZLUmw0NkZLaEY0S1dPNmxXaGxLe0Y0SzA0T0ZoNkZLYV00S2FPNmwNTgkJUVFPaFJ3NE97d2h7bEs0J2xXe09oRkFLTEZXSy9dRmE2bEtZbDZPUmxLYWw0bEthXUtwcHBwS2hsaEtPaFJ3NE97d0s0J2xXe09oRktZd0tubFc2d0tPaEthXTAwRmFhDU4JCVFRTzRLMDRPRmg2Rg1OCQlRUS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JCQ1OCQlRUU9yKCRXRmFLSEhLInBwcHAiKUsNTgkJUVEJV0Y2XVdoSzZXXUY7DU4JCVFRT3IoJFdGYUtISEsiQiAgYiIpSw1OCQlRUQlGPk82KCk7DU4JCVFRLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ1OCQkNTgkJT3IoJDZJT2EtU19sMmR6V2duNi1TWEY2eUlsbn1Xd2hhdzA2T2xoWmUoKUtISEsnJykNTgkJCVdGNl1XaEtydzRhRjsNTg1OS0tLS0tLS0skbFd7RldLSEtpd2pGOjpqRjZpbHtGNCgnYXc0RmFRbFd7RlcnKTsNTktLS0tLS0tLUVFLeklGMDNLT3JLNklGV0ZLT2FLd0tuV0YwSXdXakZ7S1dGMGxXe0tPaEtbTGZNSzZ3MjRGSzZsSzJGSzBsWW40RjZGew1OCQkkNld3aGFLSEtpd2pGOjpqRjZpbHtGNCgnakZhNm53Z1FqRmE2bndnJyktUzRsd3soJDZJT2EtU19sMmR6V2duNi1TWEY2eUlsbn1Xd2hhdzA2T2xoWmUoKSxLJ1dGdzRfbFd7RldfT3snKTsNTgkJT3IoJDZJT2EtU2pGNnpsaHJPamV3NncoJ3tGMl1qJykpSw1OCQkJaXdqRjo6SmxqKCQ2V3doYSk7DU4NTktLS0tLS0tLT3JLKCQ2V3doYS1TakY2LkZ3NDVXe0ZXWnsoKUtISEsgKQ1OCQlEDU4JCQlRUUs0bHd7S2xXe0ZXSzJnS2xXe0ZXT3tLcldsWUtqRmE2bndnS1dGYW5saGFGSzZ3ag1OCQkJJGE2bFdGX2pXbF1uS0hLaXdqRjo6d25uKCktU2pGNnk2bFdGKCktU2pGNlhXbF1uKCktU2pGNnF3WUYoKTsNTgkJCVFRTF1XakZLNklGS3k2bFdGS1hXbF1uS3F3WUZLcldsWUs2SUZLbFd7RldLaF1ZMkZXSyg1aDRnS3JsV0t9RmE2SzxoUk9XbGhZRmg2KQ1OCQkJUVEkbFd7RldfT3tLSEthNldfV0ZuNHcwRigkYTZsV0ZfaldsXW5BJy0nLEsiIixLJDZJT2EtU19sMmR6V2duNi1TWEY2eUlsbn1Xd2hhdzA2T2xoWmUoKSk7DU4JCQkkbFd7RldfT3tLSEskNklPYS1TX2wyZHpXZ242LVNYRjZ5SWxufVd3aGF3MDZPbGhaZSgpOw1OCQkJUVEkbFd7RlctUzRsd3tzZ1poMFdGWUZoNlp7KCRfWDx9UCdxdGk1LmUnOCk7DU4JCQkkbFd7RlctUzRsd3tzZ1poMFdGWUZoNlp7KCRsV3tGV19Peyk7DU4JCUMNTgkJRjRhRg1OCQlEDU4JCQkkbFd7RlctUzRsd3tzZ1poMFdGWUZoNlp7KCQ2V3doYS1TakY2LkZ3NDVXe0ZXWnsoKSk7DU4JCUMNTgkJDU5LS0tLS0tLS1FRJG53Z1lGaDZaaGE2S0hLJGxXe0ZXLVNqRjZMd2dZRmg2KCktU2pGNmlGNklse1poYTZ3aDBGKCk7DU5LS0tLS0tLSw1OS0tLS0tLS0skMF1hNmxZRldLSEtpd2pGOjpqRjZpbHtGNCgnMF1hNmxZRldRMF1hNmxZRlcnKTsNTktLS0tLS0tLJDBdYTZsWUZXLVM0bHd7KCRsV3tGVy1TakY2el1hNmxZRldaeygpKTsNTg1OCQkkYTZ3Nl1hS0hLcnc0YUY7DU4JCU9yKCQ2SU9hLVNfbDJkeldnbjYtU1hGNn1Xd2hhdzA2T2xoLkZhXTQ2KClLSEhLJzUKJylLDU4JCUQNTgkJCSRhNnc2XWFLSEs2V11GOw1OCQlDDU4JCQ1OCQkJJGxXe0ZXX3t3NkZLSEtpd2pGOjpJRjRuRlcoJzBsV0YnKS1TcmxXWXc2ZXc2RigkbFd7RlctU2pGNnpXRnc2RntmNmV3NkYoKSxLJ2FJbFc2JyxLcnc0YUYpOw1OCQkJJGxXe0ZXX3t3NkZLSEthXTJhNlcoJGxXe0ZXX3t3NkYsS1YsS0IpQSctJ0FhXTJhNlcoJGxXe0ZXX3t3NkYsS0UsS0IpQSctJ0FhXTJhNlcoJGxXe0ZXX3t3NkYsSyAsS0IpOw1OCQkJUVFpd2pGOjpKbGooJzVXe0ZXS3t3NkY6J0EkbFd7Rldfe3c2Rik7DU4NTgkJCVFRJGxXe0ZXX3t3NkZLSEskNklPYS1TX2wyZHpXZ242LVNYRjZldzZGKCk7DU4JCQlRUSRsV3tGV197dzZGS0hLYV0yYTZXKCRsV3tGV197dzZGLEsgLEtVKUEnLSdBYV0yYTZXKCRsV3tGV197dzZGLEtiLEtCKUEnLSdBYV0yYTZXKCRsV3tGV197dzZGLEs5LEtCKUEnSydBYTZXX1dGbjR3MEYoJ0EnSyxLJzonLEthXTJhNlcoJGxXe0ZXX3t3NkYsVFQsOSkpOw1OCQkJJGxXe0ZXX3t3NkZLSEskbFd7RlctU2pGNnpXRnc2RntmNmV3NkYoKS1TakY2KDdGaHtfZXc2Rjo6Y0V6KTsNTgkJCSRsV3tGV197dzZGS0hLYV0yYTZXKCRsV3tGV197dzZGLEsgLEtUICk7DU4NTg1ODU4JCQlPcksoJDZXd2hhLVNqRjYuRnc0NVd7RldaeygpS0hISyApDU4JCQlEDU4JCQkJUVFLeXdSRktoRjFLV0YwbFd7DU4JCQkJJDZXd2hhS0hLaXdqRjo6akY2aWx7RjQoJ2pGYTZud2dRakZhNm53ZycpDU4JCQkJCS1TYUY2c3doM31Xd2hhdzA2T2xoWnsoJDZJT2EtU19sMmR6V2duNi1TWEY2c3doM31Xd2hhdzA2T2xoWmUoKSlLDU4JCQkJCS1TYUY2eUlsbn1Xd2hhdzA2T2xoWnsoJDZJT2EtU19sMmR6V2duNi1TWEY2eUlsbn1Xd2hhdzA2T2xoWmUoKSlLDU4JCQkJCS1TYUY2ZXc2RigkbFd7Rldfe3c2RilLDU4JCQkJCS1TYUY2el1hNmxZRlcoJDBdYTZsWUZXLVNyT1dhNmh3WUZBJ0snQSQwXWE2bFlGVy1TNHdhNmh3WUYpSw1OCQkJCQktU2FGNjVXe0ZXWnsoJGxXe0ZXLVNqRjY8aDZPNmdaeygpKQ1OCQkJCQktU2FGNi5GdzQ1V3tGV1p7KCRsV3tGVy1TakY2WmgwV0ZZRmg2WnsoKSkNTgkJCQkJLVNhRjZ6XWE2bFlGV1p7KCRsV3tGVy1TakY2el1hNmxZRldaeygpKQ1OCQkJCQktU2FGNn1Xd2hhdzA2T2xoLkZhXTQ2KCQ2SU9hLVNfbDJkeldnbjYtU1hGNn1Xd2hhdzA2T2xoLkZhXTQ2KCkpDU4JCQkJCS1TYUY2WmFhXUZXemxdaDZXZygkNklPYS1TX2wyZHpXZ242LVNYRjZ6bF1oNldnKCkpDU4JCQkJCS1TYUY2Zl02SWxXT293Nk9saHpse0YoJDZJT2EtU19sMmR6V2duNi1TWEY2Zl02SWxXT293Nk9saHpse0YoKSlLCQ1OCQkJCQktU2FGNnpdV1dGaDBnKCQ2SU9hLVNfbDJkeldnbjYtU1hGNnpdV1dGaDBnKCkpSwkNTgkJCQkJLVNhRjY9MlIoJDZJT2EtU19sMmR6V2duNi1TWEY2PTJSKCkpSwkNTgkJCQkJLVNhRjY8V1dsV3pse0YoJDZJT2EtU19sMmR6V2duNi1TWEY2PFdXbFd6bHtGKCkpSwkNTgkJCQkJLVNhRjY8V1dsV2VGYTBXT242T2xoKCQ2SU9hLVNfbDJkeldnbjYtU1hGNjxXV2xXZUZhMFdPbjZPbGgoKSlLCQ1OCQkJCQktU2FGNmY0Rlc2emx7RigkNklPYS1TX2wyZHpXZ242LVNYRjZmNEZXNnpse0YoKSlLCQ1OCQkJCQktU2FGNmY0Rlc2ZUZhMFdPbjZPbGgoJDZJT2EtU19sMmR6V2duNi1TWEY2ZjRGVzZlRmEwV09uNk9saCgpKUsJDU4JCQkJCS1TYUY2fUlXRkZ7SkZSRjQoJDZJT2EtU19sMmR6V2duNi1TWEY2RWVKRlJGNCgpKUsJDU4JCQkJCS1TYUY2el1hNmxZWmhybCgkNklPYS1TX2wyZHpXZ242LVNYRjZ6XWE2bFlaaHJsKCkpSwkNTgkJCQkJLVNhRjZmWWxdaDYoJDZJT2EtU19sMmR6V2duNi1TWEY2ZllsXWg2KCkpSwkNTgkJCQkJLVNhd1JGKCk7DU4JCQlDDU4JCQlGNGFGDU4JCQlEDU4JCQkJUVFLdG57dzZGS25XRlJPbF1hS2F3UkZ7S1dGMGxXew1OCQkJCSQ2V3doYS1TYUY2c3doM31Xd2hhdzA2T2xoWnsoJDZJT2EtU19sMmR6V2duNi1TWEY2c3doM31Xd2hhdzA2T2xoWmUoKSlLDU4JCQkJCS1TYUY2eUlsbn1Xd2hhdzA2T2xoWnsoJDZJT2EtU19sMmR6V2duNi1TWEY2eUlsbn1Xd2hhdzA2T2xoWmUoKSlLDU4JCQkJCS1TYUY2ZXc2RigkbFd7Rldfe3c2RilLDU4JCQkJCS1TYUY2el1hNmxZRlcoJDBdYTZsWUZXLVNyT1dhNmh3WUZBJ0snQSQwXWE2bFlGVy1TNHdhNmh3WUYpSw1OCQkJCQktU2FGNjVXe0ZXWnsoJGxXe0ZXLVNqRjY8aDZPNmdaeygpKQ1OCQkJCQktU2FGNi5GdzQ1V3tGV1p7KCRsV3tGVy1TakY2WmgwV0ZZRmg2WnsoKSkNTgkJCQkJLVNhRjZ6XWE2bFlGV1p7KCRsV3tGVy1TakY2el1hNmxZRldaeygpKQ1OCQkJCQktU2FGNn1Xd2hhdzA2T2xoLkZhXTQ2KCQ2SU9hLVNfbDJkeldnbjYtU1hGNn1Xd2hhdzA2T2xoLkZhXTQ2KCkpDU4JCQkJCS1TYUY2WmFhXUZXemxdaDZXZygkNklPYS1TX2wyZHpXZ242LVNYRjZ6bF1oNldnKCkpDU4JCQkJCS1TYUY2Zl02SWxXT293Nk9saHpse0YoJDZJT2EtU19sMmR6V2duNi1TWEY2Zl02SWxXT293Nk9saHpse0YoKSlLCQ1OCQkJCQktU2FGNnpdV1dGaDBnKCQ2SU9hLVNfbDJkeldnbjYtU1hGNnpdV1dGaDBnKCkpSwkNTgkJCQkJLVNhRjY9MlIoJDZJT2EtU19sMmR6V2duNi1TWEY2PTJSKCkpSwkNTgkJCQkJLVNhRjY8V1dsV3pse0YoJDZJT2EtU19sMmR6V2duNi1TWEY2PFdXbFd6bHtGKCkpSwkNTgkJCQkJLVNhRjY8V1dsV2VGYTBXT242T2xoKCQ2SU9hLVNfbDJkeldnbjYtU1hGNjxXV2xXZUZhMFdPbjZPbGgoKSlLCQ1OCQkJCQktU2FGNmY0Rlc2emx7RigkNklPYS1TX2wyZHpXZ242LVNYRjZmNEZXNnpse0YoKSlLCQ1OCQkJCQktU2FGNmY0Rlc2ZUZhMFdPbjZPbGgoJDZJT2EtU19sMmR6V2duNi1TWEY2ZjRGVzZlRmEwV09uNk9saCgpKUsJDU4JCQkJCS1TYUY2fUlXRkZ7SkZSRjQoJDZJT2EtU19sMmR6V2duNi1TWEY2RWVKRlJGNCgpKUsJDU4JCQkJCS1TYUY2el1hNmxZWmhybCgkNklPYS1TX2wyZHpXZ242LVNYRjZ6XWE2bFlaaHJsKCkpSwkNTgkJCQkJLVNhRjZmWWxdaDYoJDZJT2EtU19sMmR6V2duNi1TWEY2ZllsXWg2KCkpSwkNTgkJCQkJLVNhd1JGKCk7DU4JCQlDDU4JCVFRQw1OCQlRUWE2V3I2T1lGKCclTS0lWS0le0sldjolaToleScsSyRsV3tGVy1TakY2eldGdzZGe2Y2ZXc2RigpKQ1OCQkNTgkJV0Y2XVdoSyRhNnc2XWE7DU5LS0tLQw1ODU5LS0tLUSoqDU5LS0tLSypLNklPYUtPYUs2SUZLdzA2T2xoSzZJdzZLakY2YUswdzQ0RntLMUlGaEs2SUZLbndnWUZoNksxd2FLYV0wMEZhYXJdNA1OS0tLS0sqUQ1OS0tLS1EqDU5LS0tLbl0yNE8wS3JdaDA2T2xoS1lhMHc0NDJ3MDNmMDZPbGgoKUtEDU5LS0tLCVFRS3pJRjAzS1dGYW5saGFGS1lGYWF3akYNTktLS0sJJDZJT2EtU2pGNnNMY2lGYWF3akYoKTsNTktLS0tDDU5LS0tLKlENTktLCVEqKg1OS0tLS0sqSzZJT2FLT2FLNklGS3cwNk9saEs2SXc2S2pGNmFLMHc0NEZ7SzFJRmhLNklGS253Z1lGaDZLMXdhS2FdMDBGYWFyXTQNTktLS0tLKlENTktLS0tuXTI0TzBLcl1oMDZPbGhLWWEwdzQ0MncwM2YwNk9saCgpS0QNTktLS0sJaXdqRjo6SmxqKCdZYTB3NDQydzAzZjA2T2xocTxjVScpOw1OS0tLSwlpd2pGOjpKbGooJF9YPH0pOw1OS0tLSwlpd2pGOjpKbGooJF9MNXl9KTsNTktLS0sJDU4JCVFRS3pJRjAzS1dGYW5saGFGS1lGYWF3akYNTgkJJGE2dzZdYUtISyQ2SU9hLVNqRjZzTGNpRmFhd2pGKCk7DU4NTktLS0tLS0tLT3JLKCRhNnc2XWEpS0QNTg1OCQkJJGxXe0ZXS0hLaXdqRjo6akY2aWx7RjQoJ2F3NEZhUWxXe0ZXJyk7DU4JCQlRUUs0bHd7S2xXe0ZXSzJnS2xXe0ZXT3tLcldsWUtqRmE2bndnS1dGYW5saGFGSzZ3ag1OCQkJJGE2bFdGX2pXbF1uS0hLaXdqRjo6d25uKCktU2pGNnk2bFdGKCktU2pGNlhXbF1uKCktU2pGNnF3WUYoKTsNTgkJCVFRTF1XakZLNklGS3k2bFdGS1hXbF1uS3F3WUZLcldsWUs2SUZLbFd7RldLaF1ZMkZXSyg1aDRnS3JsV0t9RmE2SzxoUk9XbGhZRmg2KQ1OCQkJJGxXe0ZXX097S0hLYTZXX1dGbjR3MEYoJGE2bFdGX2pXbF1uQSctJyxLIiIsSyQ2SU9hLVNfbDJkeldnbjYtU1hGNnlJbG59V3doYXcwNk9saFplKCkpOw1ODU4JCQlRUSRsV3tGVy1TNGx3e3NnWmgwV0ZZRmg2WnsoJF9YPH1QJ3F0aTUuZSc4KTsNTgkJCSRsV3tGVy1TNGx3e3NnWmgwV0ZZRmg2WnsoJGxXe0ZXX097KTsNTg1OCQkJT3JLKCEkbFd7RlctU2pGNjxZd080eUZoNigpKUtEDU4JCQkJJGxXe0ZXLVNhRmh7cUYxNVd7Rlc8WXdPNCgpOw1OCQkJQw1ODU5LS0tLS0tLS0tLS0tRUUtqRjZLNklGS2xXe0ZXS09ocmxXWXc2T2xoDU5LS0tLS0tLS0tLS0tRUSRhRmFhT2xoS0hLJDZJT2EtU2pGNnpJRjAzbF02KCk7DU5LS0tLS0tLS0tLS0tRUSRhRmFhT2xoLVNqRjZHXWw2RigpLVNhRjZaYWYwNk9SRihydzRhRiktU2F3UkYoKTsNTg1OS0tLS0tLS0tLS0tLUVFlT2F3MjRGezpLaXdPNEt5Rmg2SzJnS2FdMDBGYWFLZjA2T2xoSyhhRldSRldLNmxLYUZXUkZXSzBsaHJPV1l3Nk9saCkNTktLS0tLS0tLS0tLS1FRJGxXe0ZXLVNhRmh7cUYxNVd7Rlc8WXdPNCgpOw1ODU5LS0tLS0tLS0tLS0skbndnWUZoNlpoYTZLSEskbFd7RlctU2pGNkx3Z1lGaDYoKS1TakY2aUY2SWx7WmhhNndoMEYoKTsNTktLS0tLS0tLS0tLSw1OS0tLS0tLS0tLS0tLJGxXe0ZXLVN3e3t5Nnc2XWF9bHZPYTZsV2coJG53Z1lGaDZaaGE2LVNqRjZ6bGhyT2pldzZ3KCdsV3tGV19hNnc2XWEnKSxLcnc0YUYpOw1OS0tLS0tLS0tLS0tLUVEkbFd7RlctU2FGNnk2dzZGKCRud2dZRmg2WmhhNi1TakY2emxock9qZXc2dygnbFd7RldfYTZ3Nl1hJyksNlddRiwnJyk7DU5LS0tLS0tLS0tLS0sNTgkJCVFRJGxXe0ZXLVN3e3t5Nnc2XWF9bHZPYTZsV2coaXdqRl95dzRGYV9pbHtGNF81V3tGVzo6eX1mfTxfTC41ejx5eVpxWCxLcnc0YUYpOw1OCQkJUVEkbFd7RlctU3d7e3k2dzZdYX1sdk9hNmxXZyhpd2pGX3l3NEZhX2lse0Y0XzVXe0ZXOjp5fWZ9PF9xPGMsS3J3NGFGKTsNTktLS0tLS0tLS0tLSyRsV3tGVy1TYXdSRigpOw1OS0tLS0tLS0tRUUMNTktLS0tLS0tLUVFGNGFGDU5LS0tLS0tLS1FRRA1OS0tLS0tLS0tRUQkkNklPYS1TX1dGe09XRjA2KCdqRmE2bndnUU9oe0Y+UXJ3TzRdV0YnKTsNTktLS0tLS0tLQw1ODU5LS0tLQ0tLS0tLDU4NTktLS0tRKioNTktLS0tLKktYRmE2bndnSzB3NDRhSzZJT2FLdzA2T2xoS09yS253Z1lGaDZLMXdhS2FdMDBGYWFyXTQNTktLS0tLKlENTktLS0tuXTI0TzBLcl1oMDZPbGhLYV0wMEZhYWYwNk9saCgpS0QNTktLS0sJaXdqRjo6SmxqKCdhXTAwRmFhZjA2T2xoJyk7DU5LS0tLCWl3akY6OkpsaigkX1g8fSk7DU5LS0tLCWl3akY6OkpsaigkX0w1eX0pOw1ODU5LS0tLS0tLS1FRSzBJRjAzS09ySzZJRktXRmFubGhhRktPYUtSdzRPew1OS0tLS0tLS0skYTZ3Nl1hS0hLJDZJT2EtU2pGNnNMY2lGYWF3akYoKTsNTktLS0tLS0tLUVEkYTZ3Nl1hS0hLNlddRjsNTktLS0tLS0tLDU5LS0tLS0tLS09ySygkYTZ3Nl1hKUtEDU5LS0tLS0tLS0tLS0tRUUtqRjZLNklGS2xXe0ZXS09ocmxXWXc2T2xoDU5LS0tLS0tLS0tLS0skYUZhYU9saEtISyQ2SU9hLVNqRjZ6SUYwM2xdNigpOw1OS0tLS0tLS0tLS0tLJGFGYWFPbGgtU2pGNkddbDZGKCktU2FGNlphZjA2T1JGKHJ3NGFGKS1TYXdSRigpOw1OS0tLS0tLS0tLS0tLDU5LS0tLS0tLS0tLS0skbFd7RldLSEtpd2pGOjpqRjZpbHtGNCgnYXc0RmFRbFd7RlcnKTsNTktLS0tLS0tLS0tLSyRsV3tGVy1TNGx3eygkNklPYS1TakY2eklGMDNsXTYoKS1TakY2SndhNjVXe0ZXWnsoKSk7DU5LS0tLS0tLS0tLS0sNTktLS0tLS0tLS0tLS09ySygkbFd7RlctU2pGNlp7KClLJiZLISRsV3tGVy1TakY2PFl3TzR5Rmg2KCkpS0QNTktLS0tLS0tLS0tLS0tLS0skbFd7RlctU2FGaHtxRjE1V3tGVzxZd080KCk7DU5LS0tLS0tLS0tLS0tDDU5LS0tLS0tLS0tLS0sNTktLS0tLS0tLS0tLSyRud2dZRmg2WmhhNktISyRsV3tGVy1TakY2THdnWUZoNigpLVNqRjZpRjZJbHtaaGE2d2gwRigpOw1ODU4JCQlRUSRsV3tGVy1Td3t7eTZ3Nl1hfWx2T2E2bFdnKCRud2dZRmg2WmhhNi1TakY2emxock9qZXc2dygnbFd7RldfYTZ3Nl1hJyksS3J3NGFGKTsNTgkJCVFRS2lse09yTzB3S1dPMElPRmE2d0t7d0tYdzJXT0Y0RkEud1J3aEY0NE9AMkldWXdoQU82Sw1OCQkJDU4JCQlRUSRsV3tGVy1TYUY2eTZ3NkYoJG53Z1lGaDZaaGE2LVNqRjZ6bGhyT2pldzZ3KCdsV3tGV19hNnc2XWEnKSw2V11GLCcnKTsNTgkJCSRsV3tGVy1Td3t7eTZ3Nl1hfWx2T2E2bFdnKCRud2dZRmg2WmhhNi1TakY2emxock9qZXc2dygnbFd7RldfYTZ3Nl1hJyksS3J3NGFGKTsNTgkJCQ1OS0tLS0tLS0sJUVEkbFd7RlctU3d7e3k2dzZdYX1sdk9hNmxXZyhpd2pGX3l3NEZhX2lse0Y0XzVXe0ZXOjp5fWZ9PF9MLjV6PHl5WnFYLEtydzRhRik7DU5LS0tLS0tLSwlRUSRsV3tGVy1Td3t7eTZ3Nl1hfWx2T2E2bFdnKGl3akZfeXc0RmFfaWx7RjRfNVd7Rlc6Onl9Zn08X3E8YyxLcnc0YUYpOw1OCUtLS0tLS0tLJGxXe0ZXLVNhd1JGKCk7DU5LS0tLS0tLS0tLS0sNTktLS0tLS0tLS0tLS1FRS0ZSRldnNklPaGpLdzQ0V09qSTYsS1dGe09XRjA2SzZJRktdYUZXSzZsS2FdMDBGYWFLbndqRg1OS0tLS0tLS0tLS0tLJDZJT2EtU19XRntPV0YwNignMElGMDNsXTZRbGhGbndqRlFhXTAwRmFhJyk7DU5LS0tLS0tLS0NLRjRhRktEDU5LS0tLS0tLS0tLS0tRUUthbFlGNklPaGpLT2FLMVdsaGpLLVNLV0Z7T1dGMDZLNmxLcndPNF1XRkswbGg2V2w0NEZXDU5LS0tLS0tLS0tLS0skNklPYS1TX1dGe09XRjA2KCdqRmE2bndnUU9oe0Y+UXJ3TzRdV0YnKTsNTktLS0tLS0tLQw1OS0tLS0MNTg1OS0tLS1EqKg1OS0tLS0sqS2VPYW40d2dLMHdXNktPckswXWE2bFlGV0swd2gwRjRGe0tud2dZRmg2DU5LS0tLSypRDU5LS0tLbl0yNE8wS3JdaDA2T2xoSzB3aDBGNGYwNk9saCgpS0QNTg1OS0tLSwlPcigkNklPYS1TakY2emxock9qZXc2dygne0YyXWonKSlLDU5LS0tLCUQJDU5LS0tLCQkkakZhNm53Z19ZYWpLSEtpd2pGOjpJRjRuRlcoJ2pGYTZud2cnKS1TNmxhNldYRmE2bndnLkZhbmxoYUYoJDZJT2EtU19sMmR6V2duNi1TWEY2PFdXbFd6bHtGKCkpOw1OS0tLSwkJaXdqRjo6SmxqKCdYRmE2bndnSzB3aDBGNDpLJ0EkakZhNm53Z19ZYWopOw1OS0tLSwkJaXdqRjo6SmxqKCd9V3doYXcwNk9saEtaZTpLJ0EkNklPYS1TX2wyZHpXZ242LVNYRjZzd2gzfVd3aGF3MDZPbGhaZSgpKTsNTktLS0sJQw1ODU5LS0tLS0tLSyRhRmFhT2xoS0hLJDZJT2EtU2pGNnpJRjAzbF02KCk7DU4JCU9yKE9hYUY2KCRqRmE2bndnX1lhaikpDU4JS0tLS0tLS0skYUZhYU9saC1Td3t7PFdXbFcoJDZJT2EtU19fKCRqRmE2bndnX1lhaikpOw1OCQlGNGFGDU4JS0tLS0tLS0skYUZhYU9saC1Td3t7PFdXbFcoJDZJT2EtU19fKCdKXCdsV3tPaEZLJkZqV3dSRjtLYTZ3NmxLd2hoXTQ0dzZsJykpOw1OCQkNTktLS0tLS0tLJGxXe0ZXS0hLaXdqRjo6akY2aWx7RjQoJ2F3NEZhUWxXe0ZXJyk7DU5LS0tLS0tLSyRsV3tGVy1TNGx3eygkNklPYS1TakY2eklGMDNsXTYoKS1TakY2SndhNjVXe0ZXWnsoKSk7DU5LS0tLS0tLSw1ODU4JCU9yKE9hYUY2KCRqRmE2bndnX1lhaikpDU5LS0tLS0tLSwkkbFd7RlctU3d7e3k2dzZdYX1sdk9hNmxXZyhpd2pGX3l3NEZhX2lse0Y0XzVXe0ZXOjp5fWZ9PF96ZnF6PEo8ZSxLaXdqRjo6SUY0bkZXKCdqRmE2bndnJyktU19fKCRqRmE2bndnX1lhaikpOw1OS0tLS0tLS0tGNGFGDU5LS0tLS0tLSwkkbFd7RlctU3d7e3k2dzZdYX1sdk9hNmxXZyhpd2pGX3l3NEZhX2lse0Y0XzVXe0ZXOjp5fWZ9PF96ZnF6PEo8ZSxLaXdqRjo6SUY0bkZXKCdqRmE2bndnJyktU19fKCd6XWE2bFlGV0swd2gwRjRGe0tYRmE2bndnS0x3Z1lGaDZBJykpOw1OS0tLS0tLS0skbFd7RlctU2F3UkYoKTsNTktLS0tLS0tLDU5LS0tLS0tLSyQ2SU9hLVNfV0Z7T1dGMDYoJzBJRjAzbF02UTB3VzYnKTsNTktLS0tDDU4NTktLS0tRKioNTktLS0tLKktlT2FuNHdnSzB3VzZLT3JLakZhNm53Z0tXRjZdV2hGe0s2bEs2SUZLcndPNF1XRktdVzQNTktLS0tLKlENTktLS0tuXTI0TzBLcl1oMDZPbGhLcndPNF1XRmYwNk9saCgpS0QNTktLS0sJT3IoJDZJT2EtU2pGNnpsaHJPamV3NncoJ3tGMl1qJykpSw1OS0tLSwlECQ1OS0tLSwkJJGpGYTZud2dfWWFqS0hLaXdqRjo6SUY0bkZXKCdqRmE2bndnJyktUzZsYTZXWEZhNm53Zy5GYW5saGFGKCQ2SU9hLVNfbDJkeldnbjYtU1hGNjxXV2xXemx7RigpKTsNTktLS0sJCWl3akY6OkpsaignWEZhNm53Z0tGV1dsV1Ewd2gwRjQ6SydBJGpGYTZud2dfWWFqKTsNTktLS0sJCWl3akY6OkpsaignfVd3aGF3MDZPbGhLWmU6SydBJDZJT2EtU19sMmR6V2duNi1TWEY2c3doM31Xd2hhdzA2T2xoWmUoKSk7DU5LS0tLCUMNTg1OS0tLS0tLS0skYUZhYU9saEtISyQ2SU9hLVNqRjZ6SUYwM2xdNigpOw1OS0tLS0tLS0sNTg1OCQlRUUtackswd2gwRjRGe0syZ0swXWE2bFlGVw1OCQlRKg1OCQlPcigkNklPYS1TX2wyZHpXZ242LVNYRjY8V1dsV3pse0YoKUtISEtUVFVFKQ1OCQlEDU4JCQlRUSQ2SU9hLVNfV0Z7T1dGMDYoJ2pGYTZud2dRT2h7Rj5RMHdoMEY0J0EnPydBJF95PC49PC5QIkd0PC5NX3l9LlpxWCI4KTsNTgkJCVFRV0Y2XVdoOw1OCQkJJGFGYWFPbGgtU3d7ezxXV2xXKCQ2SU9hLVNfXygnSlwnbFd7T2hGSyZGald3UkY7S2E2dzZsS3doaF00NHc2bCcpKTsNTgkJQ0tGNGFGS0QNTgkJQw1OCQkqUQ1OCQkNTgkJT3IoT2FhRjYoJGpGYTZud2dfWWFqKSkNTgkJCSRhRmFhT2xoLVN3e3s8V1dsVygkNklPYS1TX18oJGpGYTZud2dfWWFqKSk7DU4JCUY0YUYNTgkJCSRhRmFhT2xoLVN3e3s8V1dsVygkNklPYS1TX18oJ3pcJyZGald3UkY7S2E2dzZsS11oS25XbDI0Rll3S2hGNEs2V3dhckZXT1lGaDZsS3c0S2FPNmxLc3doMHdLeUY0NHdLKFhGYTZMd2cpJykpOw1OS0tLS0tLS0sNTktLS0tLS0tLJGxXe0ZXS0hLaXdqRjo6akY2aWx7RjQoJ2F3NEZhUWxXe0ZXJyk7DU5LS0tLS0tLSyRsV3tGVy1TNGx3eygkNklPYS1TakY2eklGMDNsXTYoKS1TakY2SndhNjVXe0ZXWnsoKSk7DU4NTgkJT3IoT2FhRjYoJGpGYTZud2dfWWFqKSkNTglLS0tLS0tLSyRsV3tGVy1Td3t7eTZ3Nl1hfWx2T2E2bFdnKGl3akZfeXc0RmFfaWx7RjRfNVd7Rlc6Onl9Zn08X3pmcXo8SjxlLEtpd2pGOjpJRjRuRlcoJ2pGYTZud2cnKS1TX18oJGpGYTZud2dfWWFqKSk7DU4JCUY0YUYNTglLS0tLS0tLSyRsV3tGVy1Td3t7eTZ3Nl1hfWx2T2E2bFdnKGl3akZfeXc0RmFfaWx7RjRfNVd7Rlc6Onl9Zn08X3pmcXo8SjxlLEtpd2pGOjpJRjRuRlcoJ2pGYTZud2cnKS1TX18oJ31JRldGSzF3YUt3aEtGV1dsV0t3NktYRmE2bndnS0x3Z1lGaDZBS3pdYTZsWUZXYUtud2dZRmg2SzF3YUtobDZLUnc0T3tBJykpOw1OCQkNTktLS0tLS0tLJGxXe0ZXLVNhd1JGKCk7DU5LS0tLS0tLSw1OS0tLS0tLS0skNklPYS1TX1dGe09XRjA2KCcwSUYwM2xdNlEwd1c2Jyk7DU5LS0tLQw1ODU5LS0tLUSoqDU5LS0tLSypLWEY2S0x3Z1lGaDZLWmhhNndoMEZLejR3YWENTktLS0tLKlENTktLS0tuXTI0TzBLcl1oMDZPbGhLakY2THdnWUZoNigpS0QNTg1OS0tLS0tLS0tRUUtYRjZLNklGSzBdV1dGaDZLMHdXNg1OS0tLS0tLS0skYUZhYU9saEtISyQ2SU9hLVNqRjZ6SUYwM2xdNigpOw1ODU4JCSRsV3tGV0tIS2l3akY6OmpGNmlse0Y0KCdhdzRGYVFsV3tGVycpOw1OS0tLS0tLS0skbFd7RlctUzRsd3tzZ1poMFdGWUZoNlp7KCQ2SU9hLVNqRjY1V3tGV1p7KCkpOw1OS0tLS0tLS0tPcigkbFd7RlctU2pGNkx3Z1lGaDYoKSkNTktLS0tLS0tLCVdGNl1XaEskbFd7RlctU2pGNkx3Z1lGaDYoKS1TakY2aUY2SWx7WmhhNndoMEYoKTsNTktLS0tLS0tLRjRhRg1OS0tLS0tLS0sJV0Y2XVdoS3J3NGFGOw1OS0tLS0MNTg1OS0tLS1EqKg1OS0tLS0sqS1hGNkswbGhyT2pdV3c2T2xoS3t3NncNTktLS0tLKlENTktLS0tuXTI0TzBLcl1oMDZPbGhLakY2emxock9qZXc2dygkbndXd1kpS0QNTgkJUVFLZUYwV2duNks2SUZLV0ZhbmxoYUZLWUZhYXdqRktyV2xZS3N3aDB3S3lGNDR3DU4JCU9yKCFPYV9sMmRGMDYoJDZJT2EtU19sMmR6V2duNikpDU4JCQkkNklPYS1Te0YwV2duNmlGYWF3akYoKTsNTg1OCQlPcigkNklPYS1TakY2THdnWUZoNigpKQ1OCQkJV0Y2XVdoSyQ2SU9hLVNqRjZMd2dZRmg2KCktU2pGNnpsaHJPamV3NncoJG53V3dZKTsNTgkJRjRhRg1OCQkJV0Y2XVdoS3J3NGFGOw1OCUMNTg1OS0tLS1EqKg1OS0tLS0sqS1hGNks1V3tGV0taZQ1OS0tLS0sqUQ1OS0tLS25dMjRPMEtyXWgwNk9saEtqRjY1V3tGV1p7KClLRA1ODU4JCU9yKCQ2SU9hLVNfbDJkeldnbjYtU1hGNnlJbG59V3doYXcwNk9saFplKCkpDU4JCUQNTgkJCSRhNmxXRl9qV2xdbktIS2l3akY6OndubigpLVNqRjZ5NmxXRigpLVNqRjZYV2xdbigpLVNqRjZxd1lGKCk7DU4JCQlXRjZdV2hLYTZXX1dGbjR3MEYoJGE2bFdGX2pXbF1uQSctJyxLIiIsSyQ2SU9hLVNfbDJkeldnbjYtU1hGNnlJbG59V3doYXcwNk9saFplKCkpOw1OCQlDDU4JCUY0YUYNTgkJRA1OCUtLS0tLS0tLV0Y2XVdoSyQ2SU9hLVNqRjZ6SUYwM2xdNigpLVNqRjZKd2E2LkZ3NDVXe0ZXWnsoKTsNTglLS0tLQw1OS0tLS0tLS0tRUVdGNl1XaEskNklPYS1TakY2eklGMDNsXTYoKS1TakY2SndhNi5GdzQ1V3tGV1p7KCk7DU5LS0tLQw1ODU4NTktLS0tRKioNTktLS0tLKktlRjBXZ242SzZJRktZRmFhd2pGS1dGNl1XaEZ7SzJnS3N3aDB3S3lGNDR3DU5LS0tLSypRDU5LS0tLbl0yNE8wS3JdaDA2T2xoS3tGMFdnbjZpRmFhd2pGKClLRA1ODU4JCVFRT3IoIU9hYUY2KCRfWDx9UCd3JzgpS3x8SyFPYWFGNigkX1g8fVAnMic4KSkNTgkJUVEJV0Y2XVdoS3J3NGFGOw1ODU4JCVFRS3pXRnc2Rks0RktYRmE2THdnSzA0d2FhDU4JCSQ2SU9hLVNfbDJkeldnbjZLSEtoRjFLWns+WEZhNkx3Z3pXZ242KCk7DU4JCSQ2SU9hLVNfbDJkeldnbjYtU3lGNnlJbG5KbGpPaCgkX1g8fVAndyc4KTsNTgkJJDZJT2EtU19sMmR6V2duNi1TeUY2PGgwV2duNkZ7eTZXT2hqKCRfWDx9UCcyJzgpOw1OCQkkNklPYS1TX2wyZHpXZ242LVNlRjBXZ242KCk7DU4NTgkJT3IoJDZJT2EtU2pGNnpsaHJPamV3NncoJ3tGMl1qJykpSw1OCQlEDU4JCQlpd2pGOjpKbGooJzxoMFdnbjZGe3k2V09oajpLJ0EkNklPYS1TX2wyZHpXZ242LVNYRjY8aDBXZ242Rnt5NldPaGooKSk7DU4JCQlPcigkNklPYS1TX2wyZHpXZ242LVNYRjY8V1dsV2VGYTBXT242T2xoKClLIUhLJycpS0QNTgkJCQlpd2pGOjpKbGooJzxXV2xXemx7RjpLJ0EkNklPYS1TX2wyZHpXZ242LVNYRjY8V1dsV3pse0YoKUEnS2VGYTBXT242T2xoOksnQSQ2SU9hLVNfbDJkeldnbjYtU1hGNjxXV2xXZUZhMFdPbjZPbGgoKSk7DU4JCQkJaXdqRjo6SmxqKCd5SWxufVd3aGF3MDZPbGhaZUgnQSQ2SU9hLVNfbDJkeldnbjYtU1hGNnlJbG59V3doYXcwNk9saFplKCkpOw1OCQkJQw1OCQlDDU4JCQ1OCQlXRjZdV2hLJDZJT2EtU19sMmR6V2duNi1TWEY2PFdXbFd6bHtGKCk7DU5LS0tLQw1ODU4NTktLS0sNTkM=';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcuWkJvZWlbM0NnSGZuR1ZrYlJBdmx0ckYwSXdFWD4yY2RwPUpMWV1tT2pEN1M1Lzl1S3poc3gxTVcgOHthNE5xNgo8UFF5fVRVJywnUkkyekRNWGt9eT1BcFE2SjV2LkhvVWZlY2hhM0d4YldqOVZMUG11Rmlne1o+T3E4PCBDbkI3d1lyMF1kc2wKTnRLRVsvU1QxNCcpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
| strtr | 1 |
| strrev | 1 |
| str_replace | 1 |
| base64_decode | 2 |
Stats
| MD5 | 8a656a4aa19379b11e4dbe0a00139792 |
| Eval Count | 2 |
| Decode Time | 121 ms |