Index: branches/5.2.x/core/kernel/utility/logger.php
===================================================================
--- branches/5.2.x/core/kernel/utility/logger.php (revision 16714)
+++ branches/5.2.x/core/kernel/utility/logger.php (revision 16715)
@@ -1,1522 +1,1538 @@
'logger.php',
'kErrorHandlerStack' => 'logger.php',
'kExceptionHandlerStack' => 'logger.php',
'kDBConnection' => 'db_connection.php',
'kDBConnectionDebug' => 'db_connection.php',
'kDBLoadBalancer' => 'db_load_balancer.php',
);
/**
* Create event log
*
* @param Array $methods_to_call List of invokable kLogger class method with their parameters (if any)
* @access public
*/
public function __construct($methods_to_call = Array ())
{
parent::__construct();
$this->dbStorage = $this->getDBStorage();
$system_config = kUtil::getSystemConfig();
$this->_debugMode = $this->Application->isDebugMode();
$this->setState($system_config->get('EnableSystemLog', self::STATE_DISABLED));
$this->_maxLogLevel = $system_config->get('SystemLogMaxLevel', self::LL_NOTICE);
foreach ($methods_to_call as $method_to_call) {
call_user_func_array(Array ($this, $method_to_call[0]), $method_to_call[1]);
}
if ( !kUtil::constOn('DBG_ZEND_PRESENT') && !$this->Application->isDebugMode() ) {
// don't report error on screen if debug mode is turned off
error_reporting(0);
ini_set('display_errors', 0);
}
register_shutdown_function(Array ($this, 'catchLastError'));
}
/**
* Create separate connection for logging purposes.
*
* @return kDBConnection
*/
protected function getDBStorage()
{
$system_config = new kSystemConfig(true);
$vars = $system_config->getData();
$db_class = $this->Application->isDebugMode() ? 'kDBConnectionDebug' : 'kDBConnection';
// Can't use "kApplication::makeClass", because class factory isn't initialized at this point.
$db = new $db_class(SQL_TYPE, array($this, 'handleSQLError'), 'logger');
$db->setup($vars);
return $db;
}
/**
* Sets state of the logged (enabled/user-only/disabled)
*
* @param $new_state
* @return void
* @access public
*/
public function setState($new_state = null)
{
if ( isset($new_state) ) {
$this->_state = (int)$new_state;
}
if ( $this->_state === self::STATE_ENABLED ) {
$this->_enableErrorHandling();
}
elseif ( $this->_state === self::STATE_DISABLED ) {
$this->_disableErrorHandling();
}
}
/**
* Enable error/exception handling capabilities
*
* @return void
* @access protected
*/
protected function _enableErrorHandling()
{
$this->_disableErrorHandling();
$this->_handlers[self::LL_ERROR] = new kErrorHandlerStack($this);
$this->_handlers[self::LL_CRITICAL] = new kExceptionHandlerStack($this);
}
/**
* Disables error/exception handling capabilities
*
* @return void
* @access protected
*/
protected function _disableErrorHandling()
{
foreach ($this->_handlers as $index => $handler) {
$this->_handlers[$index]->__destruct();
unset($this->_handlers[$index]);
}
}
/**
* Initializes new log record. Use "kLogger::write" to save to db/disk
*
* @param string $message
* @param int $code
* @return kLogger
* @access public
*/
public function prepare($message = '', $code = null)
{
$this->_logRecord = Array (
'LogUniqueId' => kUtil::generateId(),
'LogMessage' => $message,
'LogLevel' => self::LL_INFO,
'LogCode' => $code,
'LogType' => self::LT_OTHER,
'LogHostname' => $_SERVER['HTTP_HOST'],
'LogRequestSource' => php_sapi_name() == 'cli' ? 2 : 1,
'LogRequestURI' => php_sapi_name() == 'cli' ? implode(' ', $GLOBALS['argv']) : $_SERVER['REQUEST_URI'],
'LogUserId' => USER_GUEST,
'IpAddress' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '',
'LogSessionKey' => 0,
'LogProcessId' => getmypid(),
'LogUserData' => '',
'LogNotificationStatus' => self::LNS_DISABLED,
);
if ( $this->Application->isAdmin ) {
$this->_logRecord['LogInterface'] = defined('CRON') && CRON ? self::LI_CRON_ADMIN : self::LI_ADMIN;
}
else {
$this->_logRecord['LogInterface'] = defined('CRON') && CRON ? self::LI_CRON_FRONT : self::LI_FRONT;
}
if ( $this->Application->InitDone ) {
$this->_logRecord['LogUserId'] = $this->Application->RecallVar('user_id');
$this->_logRecord['LogSessionKey'] = $this->Application->GetSID();
$this->_logRecord['IpAddress'] = $this->Application->getClientIp();
}
return $this;
}
/**
* Sets one or more fields of log record
*
* @param string|Array $field_name
* @param string|null $field_value
* @return kLogger
* @access public
* @throws UnexpectedValueException
*/
public function setLogField($field_name, $field_value = null)
{
if ( isset($field_value) ) {
$this->_logRecord[$field_name] = $field_value;
}
elseif ( is_array($field_name) ) {
$this->_logRecord = array_merge($this->_logRecord, $field_name);
}
else {
throw new UnexpectedValueException('Invalid arguments');
}
return $this;
}
/**
* Sets user data
*
* @param string $data
* @param bool $as_array
* @return kLogger
* @access public
*/
public function setUserData($data, $as_array = false)
{
if ( $as_array ) {
$data = serialize((array)$data);
}
return $this->setLogField('LogUserData', $data);
}
/**
* Add user data
*
* @param string $data
* @param bool $as_array
* @return kLogger
* @access public
*/
public function addUserData($data, $as_array = false)
{
$new_data = $this->_logRecord['LogUserData'];
if ( $as_array ) {
$new_data = $new_data ? unserialize($new_data) : Array ();
$new_data[] = $data;
$new_data = serialize($new_data);
}
else {
$new_data .= ($new_data ? PHP_EOL : '') . $data;
}
return $this->setLogField('LogUserData', $new_data);
}
/**
* Adds event to log record
*
* @param kEvent $event
* @return kLogger
* @access public
*/
public function addEvent(kEvent $event)
{
$this->_logRecord['LogEventName'] = (string)$event;
return $this;
}
/**
* Adds log source file & file to log record
*
* @param string|Array $file_or_trace file path
* @param int $line file line
* @return kLogger
* @access public
*/
public function addSource($file_or_trace = '', $line = 0)
{
if ( is_array($file_or_trace) ) {
$trace_info = $file_or_trace[0];
$this->_logRecord['LogSourceFilename'] = $trace_info['file'];
$this->_logRecord['LogSourceFileLine'] = $trace_info['line'];
}
else {
$this->_logRecord['LogSourceFilename'] = $file_or_trace;
$this->_logRecord['LogSourceFileLine'] = $line;
}
return $this;
}
/**
* Adds session contents to log record
*
* @param bool $include_optional Include optional session variables
* @return kLogger
* @access public
*/
public function addSessionData($include_optional = false)
{
if ( $this->Application->InitDone ) {
$this->_logRecord['LogSessionData'] = serialize($this->Application->Session->getSessionData($include_optional));
}
return $this;
}
/**
* Adds user request information to log record
*
* @return kLogger
* @access public
*/
public function addRequestData()
{
$request_data = array(
'Headers' => $this->Application->HttpQuery->getHeaders(),
);
$request_variables = Array('_GET' => $_GET, '_POST' => $_POST, '_COOKIE' => $_COOKIE);
foreach ( $request_variables as $title => $data ) {
if ( !$data ) {
continue;
}
$request_data[$title] = $data;
}
$this->_logRecord['LogRequestData'] = serialize($request_data);
return $this;
}
/**
* Adds trace to log record
*
* @param Array $trace
* @param int $skip_levels
* @param Array $skip_files
* @return kLogger
* @access public
*/
public function addTrace($trace = null, $skip_levels = 1, $skip_files = null)
{
$trace = $this->createTrace($trace, $skip_levels, $skip_files);
foreach ($trace as $trace_index => $trace_info) {
if ( isset($trace_info['args']) ) {
$trace[$trace_index]['args'] = $this->_implodeObjects($trace_info['args']);
}
}
$this->_logRecord['LogBacktrace'] = serialize($this->_removeObjectsFromTrace($trace));
return $this;
}
/**
* Remove objects from trace, since before PHP 5.2.5 there wasn't possible to remove them initially
*
* @param Array $trace
* @return Array
* @access protected
*/
protected function _removeObjectsFromTrace($trace)
{
if ( version_compare(PHP_VERSION, '5.3', '>=') ) {
return $trace;
}
$trace_indexes = array_keys($trace);
foreach ($trace_indexes as $trace_index) {
unset($trace[$trace_index]['object']);
}
return $trace;
}
/**
* Implodes object to prevent memory leaks
*
* @param Array $array
* @return Array
* @access protected
*/
protected function _implodeObjects($array)
{
$ret = Array ();
foreach ($array as $key => $value) {
if ( is_array($value) ) {
$ret[$key] = $this->_implodeObjects($value);
}
elseif ( is_object($value) ) {
if ( $value instanceof kEvent ) {
$ret[$key] = 'Event: ' . (string)$value;
}
elseif ( $value instanceof kBase ) {
$ret[$key] = (string)$value;
}
else {
$ret[$key] = 'Class: ' . get_class($value);
}
}
elseif ( is_resource($value) ) {
$ret[$key] = (string)$value;
}
elseif ( strlen($value) > 200 ) {
$ret[$key] = substr($value, 0, 50) . ' ...';
}
else {
$ret[$key] = $value;
}
}
return $ret;
}
/**
* Removes first N levels from trace
*
* @param Array $trace
* @param int $levels
* @param Array $files
* @return Array
* @access public
*/
public function createTrace($trace = null, $levels = null, $files = null)
{
if ( !isset($trace) ) {
$trace = debug_backtrace(false);
}
if ( !$trace ) {
// no trace information
return $trace;
}
if ( isset($levels) && is_numeric($levels) ) {
for ($i = 0; $i < $levels; $i++) {
array_shift($trace);
}
}
if ( isset($files) && is_array($files) ) {
$classes = array_keys($files);
while ( true ) {
$trace_info = $trace[0];
$file = isset($trace_info['file']) ? basename($trace_info['file']) : '';
$class = isset($trace_info['class']) ? $trace_info['class'] : '';
if ( ($file && !in_array($file, $files)) || ($class && !in_array($class, $classes)) ) {
break;
}
array_shift($trace);
}
}
return $trace;
}
/**
* Adds PHP error to log record
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
* @return kLogger
* @access public
*/
public function addError($errno, $errstr, $errfile = null, $errline = null)
{
$errstr = self::expandMessage($errstr, !$this->_debugMode);
$this->_logRecord['LogLevel'] = $this->_getLogLevelByErrorNo($errno);
if ( $this->isLogType(self::LT_DATABASE, $errstr) ) {
list ($errno, $errstr, $sql) = self::parseDatabaseError($errstr);
$this->_logRecord['LogType'] = self::LT_DATABASE;
$this->_logRecord['LogUserData'] = $sql;
$trace = $this->createTrace(null, 4, $this->_ignoreInTrace);
$this->addSource($trace);
$this->addTrace($trace, 0);
}
else {
$this->_logRecord['LogType'] = self::LT_PHP;
$this->addSource((string)$errfile, $errline);
$this->addTrace(null, 4);
}
$this->_logRecord['LogCode'] = $errno;
$this->_logRecord['LogMessage'] = $errstr;
return $this;
}
/**
* Adds PHP exception to log record
*
* @param Exception $exception
* @return kLogger
* @access public
*/
public function addException($exception)
{
$errstr = self::expandMessage($exception->getMessage(), !$this->_debugMode);
$this->_logRecord['LogLevel'] = self::LL_CRITICAL;
$exception_trace = $exception->getTrace();
array_unshift($exception_trace, array(
'function' => '',
'file' => $exception->getFile() !== null ? $exception->getFile() : 'n/a',
'line' => $exception->getLine() !== null ? $exception->getLine() : 'n/a',
'args' => array(),
));
if ( $this->isLogType(self::LT_DATABASE, $errstr) ) {
list ($errno, $errstr, $sql) = self::parseDatabaseError($errstr);
$this->_logRecord['LogType'] = self::LT_DATABASE;
$this->_logRecord['LogUserData'] = $sql;
$trace = $this->createTrace($exception_trace, null, $this->_ignoreInTrace);
$this->addSource($trace);
$this->addTrace($trace, 0);
}
else {
$this->_logRecord['LogType'] = self::LT_PHP;
$errno = $exception->getCode();
$this->addSource((string)$exception->getFile(), $exception->getLine());
$this->addTrace($exception_trace, 0);
}
$this->_logRecord['LogCode'] = $errno;
$this->_logRecord['LogMessage'] = $errstr;
return $this;
}
/**
* Allows to map PHP error numbers to syslog log level
*
* @param int $errno
* @return int
* @access protected
*/
protected function _getLogLevelByErrorNo($errno)
{
$error_number_mapping = Array (
self::LL_ERROR => Array (E_RECOVERABLE_ERROR, E_USER_ERROR, E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE),
self::LL_WARNING => Array (E_WARNING, E_USER_WARNING, E_CORE_WARNING, E_COMPILE_WARNING),
self::LL_NOTICE => Array (E_NOTICE, E_USER_NOTICE, E_STRICT),
);
if ( version_compare(PHP_VERSION, '5.3.0', '>=') ) {
$error_number_mapping[self::LL_NOTICE][] = E_DEPRECATED;
$error_number_mapping[self::LL_NOTICE][] = E_USER_DEPRECATED;
}
foreach ($error_number_mapping as $log_level => $error_numbers) {
if ( in_array($errno, $error_numbers) ) {
return $log_level;
}
}
return self::LL_ERROR;
}
/**
* Changes log level of a log record
*
* @param int $log_level
* @return kLogger
* @access public
*/
public function setLogLevel($log_level)
{
$this->_logRecord['LogLevel'] = $log_level;
return $this;
}
/**
* Writes prepared log to database or disk, when database isn't available
*
* @param integer $storage_medium Storage medium.
* @param boolean $check_origin Check error origin.
*
* @return integer|boolean
* @throws InvalidArgumentException When unknown storage medium is given.
*/
public function write($storage_medium = self::LS_AUTOMATIC, $check_origin = false)
{
if ( $check_origin && isset($this->_logRecord['LogSourceFilename']) ) {
$origin_allowed = self::isErrorOriginAllowed($this->_logRecord['LogSourceFilename']);
}
else {
$origin_allowed = true;
}
if ( !$this->_logRecord
|| $this->_logRecord['LogLevel'] > $this->_maxLogLevel
|| !$origin_allowed
|| $this->_state == self::STATE_DISABLED
) {
// Nothing to save OR less detailed logging requested OR origin not allowed OR disabled.
$this->_logRecord = array();
return false;
}
$this->_logRecord['LogMemoryUsed'] = memory_get_usage();
$this->_logRecord['LogTimestamp'] = adodb_mktime();
$this->_logRecord['LogDate'] = adodb_date('Y-m-d H:i:s');
if ( $storage_medium == self::LS_AUTOMATIC ) {
$storage_medium = $this->dbStorage->connectionOpened() ? self::LS_DATABASE : self::LS_DISK;
}
if ( $storage_medium == self::LS_DATABASE ) {
$result = $this->dbStorage->doInsert($this->_logRecord, TABLE_PREFIX . 'SystemLog');
}
elseif ( $storage_medium == self::LS_DISK ) {
$result = $this->_saveToFile(RESTRICTED . '/system.log');
}
else {
throw new InvalidArgumentException('Unknown storage medium "' . $storage_medium . '"');
}
$unique_id = $this->_logRecord['LogUniqueId'];
if ( $this->_logRecord['LogNotificationStatus'] == self::LNS_SENT ) {
$this->_sendNotification($unique_id);
}
$this->_logRecord = Array ();
return $result ? $unique_id : false;
}
/**
* Catches last error happened before script ended
*
* @return void
* @access public
*/
public function catchLastError()
{
$this->write();
$last_error = error_get_last();
if ( !is_null($last_error) && isset($this->_handlers[self::LL_ERROR]) ) {
/** @var kErrorHandlerStack $handler */
$handler = $this->_handlers[self::LL_ERROR];
$handler->handle($last_error['type'], $last_error['message'], $last_error['file'], $last_error['line']);
}
}
/**
* Deletes log with given id from database or disk, when database isn't available
*
* @param int $unique_id
* @param int $storage_medium
* @return void
* @access public
* @throws InvalidArgumentException
*/
public function delete($unique_id, $storage_medium = self::LS_AUTOMATIC)
{
if ( $storage_medium == self::LS_AUTOMATIC ) {
$storage_medium = $this->dbStorage->connectionOpened() ? self::LS_DATABASE : self::LS_DISK;
}
if ( $storage_medium == self::LS_DATABASE ) {
$sql = 'DELETE FROM ' . TABLE_PREFIX . 'SystemLog
WHERE LogUniqueId = ' . $unique_id;
$this->dbStorage->Query($sql);
}
elseif ( $storage_medium == self::LS_DISK ) {
// TODO: no way to delete a line from a file
}
else {
throw new InvalidArgumentException('Unknown storage medium "' . $storage_medium . '"');
}
}
/**
* Send notification (delayed or instant) about log record to e-mail from configuration
*
* @param bool $instant
* @return kLogger
* @access public
*/
public function notify($instant = false)
{
$this->_logRecord['LogNotificationStatus'] = $instant ? self::LNS_SENT : self::LNS_PENDING;
return $this;
}
/**
* Sends notification e-mail about message with given $unique_id
*
* @param int $unique_id
* @return void
* @access protected
*/
protected function _sendNotification($unique_id)
{
$notification_email = $this->Application->ConfigValue('SystemLogNotificationEmail');
if ( !$notification_email ) {
trigger_error('System Log notification E-mail not specified', E_USER_NOTICE);
return;
}
$send_params = Array (
'to_name' => $notification_email,
'to_email' => $notification_email,
);
// initialize list outside of e-mail event with right settings
$this->Application->recallObject('system-log.email', 'system-log_List', Array ('unique_id' => $unique_id));
$this->Application->emailAdmin('SYSTEM.LOG.NOTIFY', null, $send_params);
$this->Application->removeObject('system-log.email');
}
/**
* Adds error/exception handler
*
* @param string|Array $handler
* @param bool $is_exception
* @return void
* @access public
*/
public function addErrorHandler($handler, $is_exception = false)
{
$this->_handlers[$is_exception ? self::LL_CRITICAL : self::LL_ERROR]->add($handler);
}
/**
* SQL Error Handler
*
* When not debug mode, then fatal database query won't break anything.
*
* @param int $code
* @param string $msg
* @param string $sql
* @return bool
* @access public
* @throws RuntimeException
*/
public function handleSQLError($code, $msg, $sql)
{
$error_msg = self::shortenMessage(self::DB_ERROR_PREFIX . ' #' . $code . ' - ' . $msg . '. SQL: ' . trim($sql));
if ( isset($this->Application->Debugger) ) {
if ( kUtil::constOn('DBG_SQL_FAILURE') && !defined('IS_INSTALL') ) {
throw new RuntimeException($error_msg);
}
else {
$this->Application->Debugger->appendTrace();
}
}
if ( PHP_SAPI === 'cli' ) {
throw new RuntimeException($error_msg);
}
// Next line also trigger attached error handlers.
trigger_error($error_msg, E_USER_WARNING);
return true;
}
/**
* Packs information about error into a single line
*
* @param string $errno
* @param bool $strip_tags
* @return string
* @access public
*/
public function toString($errno = null, $strip_tags = false)
{
+ if ( PHP_SAPI !== 'cli' && !$this->Application->isDebugMode() ) {
+ $date = date('Y-m-d H:i:s');
+ $reference = $this->_logRecord['LogUniqueId'] . '-' . time();
+
+ $message = <<Oops, something went wrong
+This is page is currently not available.
+We are working on the problem, and appreciate your patience.
+
+Date: {$date}
+Reference: {$reference}
+HTML;
+
+ return $message;
+ }
+
if ( !isset($errno) ) {
$errno = $this->_logRecord['LogCode'];
}
$errstr = $this->_logRecord['LogMessage'];
$errfile = $this->convertPathToRelative($this->_logRecord['LogSourceFilename']);
$errline = $this->_logRecord['LogSourceFileLine'];
if ( PHP_SAPI === 'cli' ) {
$result = sprintf(' [%s] ' . PHP_EOL . ' %s', $errno, $errstr);
if ( $this->_logRecord['LogBacktrace'] ) {
$result .= $this->printBacktrace(unserialize($this->_logRecord['LogBacktrace']));
}
}
else {
$result = '' . $errno . ': ' . "{$errstr} in {$errfile} on line {$errline}";
}
return $strip_tags ? strip_tags($result) : $result;
}
/**
* Prints backtrace result
*
* @param array $trace Trace.
*
* @return string
*/
protected function printBacktrace(array $trace)
{
if ( !$trace ) {
return '';
}
$ret = PHP_EOL . PHP_EOL . PHP_EOL . 'Exception trace:' . PHP_EOL;
foreach ( $trace as $trace_info ) {
$class = isset($trace_info['class']) ? $trace_info['class'] : '';
$type = isset($trace_info['type']) ? $trace_info['type'] : '';
$function = $trace_info['function'];
$args = isset($trace_info['args']) && $trace_info['args'] ? '...' : '';
$file = isset($trace_info['file']) ? $this->convertPathToRelative($trace_info['file']) : 'n/a';
$line = isset($trace_info['line']) ? $trace_info['line'] : 'n/a';
$ret .= sprintf(' %s%s%s(%s) at %s:%s' . PHP_EOL, $class, $type, $function, $args, $file, $line);
}
return $ret;
}
/**
* Short description.
*
* @param string $absolute_path Absolute path.
*
* @return string
*/
protected function convertPathToRelative($absolute_path)
{
return preg_replace('/^' . preg_quote(FULL_PATH, '/') . '/', '...', $absolute_path, 1);
}
/**
* Saves log to file (e.g. when not possible to save into database)
*
* @param $filename
* @return bool
* @access protected
*/
protected function _saveToFile($filename)
{
$time = adodb_date('Y-m-d H:i:s');
$log_file = new SplFileObject($filename, 'a');
return $log_file->fwrite('[' . $time . '] #' . $this->toString(null, true) . PHP_EOL) > 0;
}
/**
* Checks if log type of current log record matches given one
*
* @param int $log_type
* @param string $log_message
* @return bool
* @access public
*/
public function isLogType($log_type, $log_message = null)
{
if ( $this->_logRecord['LogType'] == $log_type ) {
return true;
}
if ( $log_type == self::LT_DATABASE ) {
if ( !isset($log_message) ) {
$log_message = $this->_logRecord['LogMessage'];
}
return strpos($log_message, self::DB_ERROR_PREFIX) !== false;
}
return false;
}
/**
* Shortens message
*
* @param string $message
* @return string
* @access public
*/
public static function shortenMessage($message)
{
$max_len = ini_get('log_errors_max_len');
if ( strlen($message) > $max_len ) {
$long_key = kUtil::generateId();
self::$_longMessages[$long_key] = $message;
return mb_substr($message, 0, $max_len - strlen($long_key) - 2) . ' #' . $long_key;
}
return $message;
}
/**
* Expands shortened message
*
* @param string $message
* @param bool $clear_cache Allow debugger to expand message after it's been expanded by kLogger
* @return string
* @access public
*/
public static function expandMessage($message, $clear_cache = true)
{
if ( preg_match('/(.*)#([\d]+)$/', $message, $regs) ) {
$long_key = $regs[2];
if ( isset(self::$_longMessages[$long_key]) ) {
$message = self::$_longMessages[$long_key];
if ( $clear_cache ) {
unset(self::$_longMessages[$long_key]);
}
}
}
return $message;
}
/**
* Determines if error should be logged based on it's origin.
*
* @param string $file File.
*
* @return boolean
*/
public static function isErrorOriginAllowed($file)
{
static $error_origin_regexp;
// Lazy detect error origins, because they're not available at construction time.
if ( !$error_origin_regexp ) {
$error_origins = array();
$application = kApplication::Instance();
foreach ( $application->ModuleInfo as $module_info ) {
$error_origins[] = preg_quote(rtrim($module_info['Path'], '/'), '/');
}
$error_origins = array_unique($error_origins);
$error_origin_regexp = '/^' . preg_quote(FULL_PATH, '/') . '\/(' . implode('|', $error_origins) . ')\//';
}
// Allow dynamically generated code.
if ( strpos($file, 'eval()\'d code') !== false ) {
return true;
}
// Allow known modules.
if ( preg_match('/^' . preg_quote(MODULES_PATH, '/') . '\//', $file) ) {
return preg_match($error_origin_regexp, $file) == 1;
}
// Don't allow Vendors.
if ( preg_match('/^' . preg_quote(FULL_PATH, '/') . '\/vendor\//', $file) ) {
return false;
}
// Allow everything else within main folder.
return preg_match('/^' . preg_quote(FULL_PATH, '/') . '\//', $file) == 1;
}
/**
* Parses database error message into error number, error message and sql that caused that error
*
* @static
* @param string $message
* @return Array
* @access public
*/
public static function parseDatabaseError($message)
{
$regexp = '/' . preg_quote(self::DB_ERROR_PREFIX) . ' #(.*?) - (.*?)\. SQL: (.*?)$/s';
if ( preg_match($regexp, $message, $regs) ) {
// errno, errstr, sql
return Array ($regs[1], $regs[2], $regs[3]);
}
return Array (0, $message, '');
}
}
/**
* Base class for error or exception handling
*/
abstract class kHandlerStack extends kBase {
/**
* List of added handlers
*
* @var Array
* @access protected
*/
protected $_handlers = Array ();
/**
* Reference to event log, which created this object
*
* @var kLogger
* @access protected
*/
protected $_logger;
/**
* Remembers if handler is activated
*
* @var bool
* @access protected
*/
protected $_enabled = false;
public function __construct(kLogger $logger)
{
parent::__construct();
$this->_logger = $logger;
if ( !kUtil::constOn('DBG_ZEND_PRESENT') ) {
$this->attach();
$this->_enabled = true;
}
}
/**
* Detaches from error handling routines on class destruction
*
* @return void
* @access public
*/
public function __destruct()
{
if ( !$this->_enabled ) {
return;
}
$this->detach();
$this->_enabled = false;
}
/**
* Attach to error handling routines
*
* @abstract
* @return void
* @access protected
*/
abstract protected function attach();
/**
* Detach from error handling routines
*
* @abstract
* @return void
* @access protected
*/
abstract protected function detach();
/**
* Adds new handler to the stack
*
* @param callable $handler
* @return void
* @access public
*/
public function add($handler)
{
$this->_handlers[] = $handler;
}
/**
* Returns `true`, when no other error handlers should process this error.
*
* @param integer $errno Error code.
*
* @return boolean
*/
protected function _handleFatalError($errno)
{
$debug_mode = defined('DEBUG_MODE') && DEBUG_MODE;
$skip_reporting = defined('DBG_SKIP_REPORTING') && DBG_SKIP_REPORTING;
if ( !$this->_handlers || ($debug_mode && $skip_reporting) ) {
// when debugger absent OR it's present, but we actually can't see it's error report (e.g. during ajax request)
if ( $this->_isFatalError($errno) ) {
$this->_displayFatalError($errno);
}
if ( !$this->_handlers ) {
return true;
}
}
return false;
}
/**
* Determines if given error is a fatal
*
* @abstract
* @param Exception|int $errno
* @return bool
*/
abstract protected function _isFatalError($errno);
/**
* Displays div with given error message
*
* @param string $errno
* @return void
* @access protected
*/
protected function _displayFatalError($errno)
{
$errno = $this->_getFatalErrorTitle($errno);
$margin = $this->Application->isAdmin ? '8px' : 'auto';
$error_msg = $this->_logger->toString($errno, PHP_SAPI === 'cli');
if ( PHP_SAPI === 'cli' ) {
echo $error_msg;
exit(1);
}
- echo '
' . $error_msg . '
';
+ echo '' . $error_msg . '
';
exit;
}
/**
* Returns title to show for a fatal
*
* @abstract
* @param Exception|int $errno
* @return string
*/
abstract protected function _getFatalErrorTitle($errno);
}
/**
* Class, that handles errors
*/
class kErrorHandlerStack extends kHandlerStack {
/**
* Attach to error handling routines
*
* @return void
* @access protected
*/
protected function attach()
{
// set as error handler
$error_handler = set_error_handler(Array ($this, 'handle'));
if ( $error_handler ) {
// wrap around previous error handler, if any was set
$this->_handlers[] = $error_handler;
}
}
/**
* Detach from error handling routines
*
* @return void
* @access protected
*/
protected function detach()
{
restore_error_handler();
}
/**
* Determines if given error is a fatal
*
* @param int $errno
* @return bool
* @access protected
*/
protected function _isFatalError($errno)
{
$fatal_errors = Array (E_USER_ERROR, E_RECOVERABLE_ERROR, E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE);
return in_array($errno, $fatal_errors);
}
/**
* Returns title to show for a fatal
*
* @param int $errno
* @return string
* @access protected
*/
protected function _getFatalErrorTitle($errno)
{
return 'Fatal Error';
}
/**
* Default error handler
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
* @param Array $errcontext
* @return bool
* @access public
*/
public function handle($errno, $errstr, $errfile = null, $errline = null, $errcontext = Array ())
{
$log = $this->_logger->prepare()->addError($errno, $errstr, $errfile, $errline);
if ( $this->_handleFatalError($errno) ) {
$log->write(kLogger::LS_AUTOMATIC, !$this->_isFatalError($errno));
return true;
}
$log->write(kLogger::LS_AUTOMATIC, !$this->_isFatalError($errno));
$res = false;
foreach ($this->_handlers as $handler) {
$res = call_user_func($handler, $errno, $errstr, $errfile, $errline, $errcontext);
}
return $res;
}
}
/**
* Class, that handles exceptions
*/
class kExceptionHandlerStack extends kHandlerStack {
/**
* Attach to error handling routines
*
* @return void
* @access protected
*/
protected function attach()
{
// set as exception handler
$exception_handler = set_exception_handler(Array ($this, 'handle'));
if ( $exception_handler ) {
// wrap around previous exception handler, if any was set
$this->_handlers[] = $exception_handler;
}
}
/**
* Detach from error handling routines
*
* @return void
* @access protected
*/
protected function detach()
{
restore_exception_handler();
}
/**
* Determines if given error is a fatal
*
* @param Exception $errno
* @return bool
*/
protected function _isFatalError($errno)
{
return true;
}
/**
* Returns title to show for a fatal
*
* @param Exception $errno
* @return string
*/
protected function _getFatalErrorTitle($errno)
{
return get_class($errno);
}
/**
* Handles exception
*
* @param Exception $exception
* @return bool
* @access public
*/
public function handle($exception)
{
$log = $this->_logger->prepare()->addException($exception);
if ( $exception instanceof kRedirectException ) {
/** @var kRedirectException $exception */
$exception->run();
}
if ( $this->_handleFatalError($exception) ) {
$log->write();
return true;
}
$log->write();
$res = false;
foreach ($this->_handlers as $handler) {
$res = call_user_func($handler, $exception);
}
return $res;
}
}
Index: branches/5.2.x/core/units/logs/system_logs/system_logs_config.php
===================================================================
--- branches/5.2.x/core/units/logs/system_logs/system_logs_config.php (revision 16714)
+++ branches/5.2.x/core/units/logs/system_logs/system_logs_config.php (revision 16715)
@@ -1,205 +1,206 @@
'system-log',
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'SystemLogEventHandler', 'file' => 'system_log_eh.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'SystemLogTagProcessor', 'file' => 'system_log_tp.php', 'build_event' => 'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
5 => 'mode',
),
'ScheduledTasks' => Array (
'system_log_notifications' => Array ('EventName' => 'OnSendNotifications', 'RunSchedule' => '0 * * * *'),
'rotate_system_logs' => Array ('EventName' => 'OnRotate', 'RunSchedule' => '0 0 * * *'),
),
'IDField' => 'LogId',
// 'StatusField' => Array ('Status'),
'TableName' => TABLE_PREFIX . 'SystemLog',
'TitlePresets' => Array (
'default' => Array (
'edit_status_labels' => Array ('system-log' => '!la_title_ViewingSystemLog!'),
),
'system_log_list' => Array (
'prefixes' => Array ('system-log_List'), 'format' => '!la_tab_SystemLog!',
'toolbar_buttons' => Array ('edit', 'delete', 'reset', 'view', 'dbl-click'),
),
'system_log_edit' => Array (
'prefixes' => Array ('system-log'), 'format' => '#system-log_status# "#system-log_titlefield#"',
'toolbar_buttons' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'),
),
),
'PermSection' => Array ('main' => 'in-portal:system_logs'),
'Sections' => Array (
'in-portal:system_logs' => Array (
'parent' => 'in-portal:reports',
'icon' => 'system_log',
'label' => 'la_tab_SystemLog',
'url' => Array ('t' => 'logs/system_logs/system_log_list', 'pass' => 'm'),
'permissions' => Array ('view', 'edit', 'delete'),
'priority' => 6.1,
'type' => stTREE,
),
),
'TitleField' => 'LogMessage',
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'Users AS u ON u.PortalUserId = %1$s.LogUserId',
),
'ListSortings' => Array (
'' => Array (
'Sorting' => Array ('LogId' => 'desc'),
)
),
'CalculatedFields' => Array (
'' => Array (
'Username' => 'CASE %1$s.LogUserId WHEN ' . USER_ROOT . ' THEN "root" WHEN ' . USER_GUEST . ' THEN "Guest" ELSE IF(CONCAT(u.FirstName, u.LastName) <> "", CONCAT(u.FirstName, " ", u.LastName), IF(u.Username = "", u.Email, u.Username)) END',
),
),
'ForceDontLogChanges' => true,
'Fields' => Array (
'LogId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'LogUniqueId' => Array ('type' => 'int', 'default' => NULL),
'LogLevel' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'options' => Array (
kLogger::LL_EMERGENCY => 'emergency',
kLogger::LL_ALERT => 'alert',
kLogger::LL_CRITICAL => 'critical',
kLogger::LL_ERROR => 'error',
kLogger::LL_WARNING => 'warning',
kLogger::LL_NOTICE => 'notice',
kLogger::LL_INFO => 'info',
kLogger::LL_DEBUG => 'debug'
),
'not_null' => 1, 'default' => kLogger::LL_INFO
),
'LogType' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'options' => Array (
kLogger::LT_PHP => 'la_opt_LogTypePhp',
kLogger::LT_DATABASE => 'la_opt_LogTypeDatabase',
kLogger::LT_OTHER => 'la_opt_LogTypeOther',
), 'use_phrases' => 1,
'not_null', 'default' => kLogger::LT_OTHER
),
'LogCode' => Array ('type' => 'int', 'default' => NULL),
'LogMessage' => Array ('type' => 'string', 'default' => NULL),
'LogTimestamp' => Array (
'type' => 'int',
'formatter' => 'kDateFormatter',
'default' => NULL
),
'LogDate' => Array ('type' => 'string', 'default' => NULL),
'LogEventName' => Array ('type' => 'string', 'max_len' => 100, 'not_null' => 1, 'default' => ''),
'LogHostname' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
'LogRequestSource' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'Web', 2 => 'CLI'),
'default' => NULL
),
'LogRequestURI' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
'LogRequestData' => Array ('type' => 'string', 'default' => NULL),
'LogUserId' => Array (
'type' => 'int',
'default' => NULL
),
'LogInterface' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'options' => Array (
kLogger::LI_FRONT => 'Front',
kLogger::LI_ADMIN => 'Admin',
kLogger::LI_CRON_FRONT => 'Cron (Front)',
kLogger::LI_CRON_ADMIN => 'Cron (Admin)',
kLogger::LI_API => 'API',
),
'not_null' => 1, 'default' => 0
),
'IpAddress' => Array ('type' => 'string', 'max_len' => 15, 'not_null' => 1, 'default' => ''),
'LogSessionKey' => Array ('type' => 'int', 'default' => NULL),
'LogSessionData' => Array ('type' => 'string', 'default' => NULL),
'LogBacktrace' => Array ('type' => 'string', 'default' => NULL),
'LogSourceFilename' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
'LogSourceFileLine' => Array ('type' => 'int', 'default' => NULL),
'LogProcessId' => Array ('type' => 'int', 'default' => NULL),
'LogMemoryUsed' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'LogUserData' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'LogNotificationStatus' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'options' => Array (
kLogger::LNS_DISABLED => 'la_opt_LogNotificationDisabled',
kLogger::LNS_PENDING => 'la_opt_LogNotificationPending',
kLogger::LNS_SENT => 'la_opt_LogNotificationSent'
), 'use_phrases' => 1,
'not_null' => 1, 'default' => kLogger::LNS_DISABLED
)
),
'VirtualFields' => Array (
'Username' => Array ('type' => 'string', 'default' => ''),
),
'Grids' => Array (
'Default' => Array (
// 'Icons' => Array ('default' => 'icon16_item.png'),
'Fields' => Array (
'LogId' => Array ('title' => 'column:la_fld_Id', 'filter_block' => 'grid_range_filter', 'width' => 80),
+ 'LogUniqueId' => Array ('filter_block' => 'grid_range_filter', 'width' => 100),
'LogLevel' => Array ('filter_block' => 'grid_options_filter', 'width' => 100),
'LogType' => Array ('filter_block' => 'grid_options_filter', 'width' => 80),
'LogCode' => Array ('filter_block' => 'grid_range_filter', 'width' => 80),
'LogMessage' => Array ('filter_block' => 'grid_like_filter', 'width' => 250),
'LogTimestamp' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 170),
'LogEventName' => Array ('filter_block' => 'grid_like_filter'),
'LogHostname' => Array ('filter_block' => 'grid_like_filter'),
'LogRequestSource' => Array ('filter_block' => 'grid_options_filter'),
'LogRequestURI' => Array ('data_block' => 'grid_uri_td', 'filter_block' => 'grid_like_filter'),
'Username' => Array ('filter_block' => 'grid_range_filter', 'width' => 80),
'LogInterface' => Array ('filter_block' => 'grid_options_filter'),
'IpAddress' => Array ('filter_block' => 'grid_like_filter'),
'LogSessionKey' => Array ('filter_block' => 'grid_range_filter', 'width' => 80),
'LogSourceFilename' => Array ('data_block' => 'grid_filename_td', 'filter_block' => 'grid_like_filter', 'width' => 200),
'LogSourceFileLine' => Array ('filter_block' => 'grid_range_filter', 'width' => 80),
'LogProcessId' => Array ('filter_block' => 'grid_range_filter', 'width' => 80),
'LogMemoryUsed' => Array ('data_block' => 'grid_memory_td', 'filter_block' => 'grid_range_filter'),
'LogUserData' => Array ('filter_block' => 'grid_like_filter', 'nl2br' => 1),
'LogNotificationStatus' => Array ('filter_block' => 'grid_options_filter'),
'LogBacktrace' => Array ('data_block' => 'grid_backtrace_td', 'filter_block' => 'grid_empty_filter', 'width' => 500, 'hidden' => 1),
),
),
),
-);
\ No newline at end of file
+);
Index: branches/5.2.x/core/admin_templates/logs/system_logs/system_log_edit.tpl
===================================================================
--- branches/5.2.x/core/admin_templates/logs/system_logs/system_log_edit.tpl (revision 16714)
+++ branches/5.2.x/core/admin_templates/logs/system_logs/system_log_edit.tpl (revision 16715)
@@ -1,193 +1,194 @@
|
:
:
-
\ No newline at end of file
+
Index: branches/5.2.x/core/install/english.lang
===================================================================
--- branches/5.2.x/core/install/english.lang (revision 16714)
+++ branches/5.2.x/core/install/english.lang (revision 16715)
@@ -1,2229 +1,2230 @@
JGJvZHkNCjxici8+PGJyLz4NCg0KU2luY2VyZWx5LDxici8+PGJyLz4NCg0KV2Vic2l0ZSBhZG1pbmlzdHJhdGlvbi4NCg0KPCEtLSMjIDxpbnAyOmVtYWlsLWxvZ19JdGVtTGluayB0ZW1wbGF0ZT0icGxhdGZvcm0vbXlfYWNjb3VudC9lbWFpbCIvPiAjIy0tPg==
QWN0aXZl
QWRk
QWRkIFRv
QWRtaW5pc3RyYXRpdmUgQ29uc29sZQ==
YWxsb3cgY2hhbmdpbmc=
QWxsb3cgZGVsZXRpbmcgTW9kdWxlIFJvb3QgU2VjdGlvbg==
VmlldyBpbiBCcm93c2UgTW9kZQ==
R28gSW5zaWRl
QWx3YXlz
YW5k
QXV0bw==
QXV0b21hdGlj
QXZhaWxhYmxlIENvbHVtbnM=
QXZhaWxhYmxlIEl0ZW1z
QmFja2dyb3VuZA==
Qm9yZGVycw==
QWRk
RWRpdCBJdGVt
QnJvd3NlIE1vZGU=
Q2FuY2Vs
Q2hhbmdl
Q2xlYXI=
Q29udGVudCBNb2Rl
RGVsZXRl
RGVsZXRl
ZGVsZXRlIHJldmlldw==
RGVwbG95
RGVzaWduIE1vZGU=
RG93bg==
RHVtcA==
RWRpdA==
RWRpdCBCbG9jaw==
RWRpdCBDb250ZW50
RWRpdCBEZXNpZ24=
R2VuZXJhdGU=
R2VuZXJhdGUgUGFnZQ==
R2V0IFZhbHVl
TG9jYXRl
TW92ZSBEb3du
TW92ZSBVcA==
UHVibGlzaGluZyBUb29scw==
UmVidWlsZA==
UmVjb21waWxl
UmVmcmVzaA==
UmVzZXQ=
UmVzZXQgJmFtcDsgVmFsaWRhdGUgQ29uZmlnIEZpbGVz
UmVzZXQgInJvb3QiIHBhc3N3b3Jk
U2F2ZQ==
U2F2ZSBDaGFuZ2Vz
U2VjdGlvbiBQcm9wZXJ0aWVz
U2VjdGlvbiBUZW1wbGF0ZQ==
U2VsZWN0IEFsbA==
U2V0IFZhbHVl
U2hvdyBTdHJ1Y3R1cmU=
U3luY2hyb25pemU=
VW5zZWxlY3Q=
VXA=
VXNl
Ynk=
Q2FuY2Vs
U2VjdGlvbg==
TnVtYmVyIG9mIGRheXMgZm9yIGEgY2F0LiB0byBiZSBORVc=
RGVmYXVsdCBNRVRBIGRlc2NyaXB0aW9u
RGVmYXVsdCBNRVRBIEtleXdvcmRz
TnVtYmVyIG9mIHNlY3Rpb25zIHBlciBwYWdl
U2VjdGlvbnMgUGVyIFBhZ2UgKFNob3J0bGlzdCk=
RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBzZWN0aW9ucw==
QW5kIHRoZW4gYnk=
T3JkZXIgc2VjdGlvbnMgYnk=
Q2xvc2U=
QWNjZXNz
QWRkaXRpb25hbA==
QWZmZWN0ZWQgSXRlbXM=
QWx0IFZhbHVl
QnVpbGQgRGF0ZQ==
U2VjdGlvbiBOYW1l
Q29sdW1uIFBocmFzZQ==
RWZmZWN0aXZl
RS1tYWlsIFRlbXBsYXRlcw==
RW5hYmxlIEUtbWFpbCBDb21tdW5pY2F0aW9u
Jm5ic3A7
RXZlbnQgRGVzY3JpcHRpb24=
RXZlbnQgUGFyYW1z
SGludCBQaHJhc2U=
U3RhdHVz
SW1hZ2U=
VVJM
SW5oZXJpdGVk
SW5oZXJpdGVkIEZyb20=
SW4gTWVudQ==
SVAgQWRkcmVzcw==
UG9wdWxhcg==
VXNlciBQcmltYXJ5
S2V5d29yZA==
TGFiZWw=
TGFuZ3VhZ2UgUGFjayBJbnN0YWxsZWQ=
TGFzdCBDaGFuZ2Vk
TGFzdCBDb21waWxlZA==
TGFzdCBBdHRlbXB0
TGluayBVUkw=
TWFpbGluZyBMaXN0
TWVtYmVyc2hpcCBFeHBpcmVz
TWVzc2FnZSBIZWFkZXJz
SFRNTA==
T3JpZ2luYWwgVmFsdWU=
UGF0aA==
QWRk
RGVsZXRl
RWRpdA==
UGVybWlzc2lvbiBOYW1l
QWNjZXNz
Vmlldw==
UGhyYXNlcw==
VXNlciBJRA==
UHJldmlldw==
UHJpbWFyeSBHcm91cA==
UHJpbWFyeSBWYWx1ZQ==
RmllbGQgUHJvbXB0
UXVldWVk
UmVmZXJlcg==
UmVzZXQgdG8gZGVmYXVsdA==
Q29tbWVudHM=
Q3JlYXRlZCBieQ==
U2NoZWR1bGUgRnJvbSBEYXRl
U2NoZWR1bGUgVG8gRGF0ZQ==
QXR0ZW1wdHMg
U2Vzc2lvbiBFbmQ=
U2Vzc2lvbiBTdGFydA==
U29ydCBieQ==
VHlwZQ==
U3lzdGVtIFBhdGg=
SXRlbSBUeXBl
VXNlcnM=
TGFzdG5hbWUgRmlyc3RuYW1l
RmllbGQgVmFsdWU=
VmlzaWJsZQ==
VmlzaXQgRGF0ZQ==
QXNjZW5kaW5n
RGVzY2VuZGluZw==
QWRtaW4gQ29uc29sZSBJbnRlcmZhY2U=
U1NMIEZ1bGwgVVJMIGZvciBBZG1pbmlzdHJhdGl2ZSBDb25zb2xlIChodHRwczovL3d3dy5kb21haW4uY29tL3BhdGgpIA==
QWxsb3cgdG8gc2VsZWN0IG1lbWJlcnNoaXAgZ3JvdXAgb24gRnJvbnQtZW5k
TGlzdCBhdXRvbWF0aWMgcmVmcmVzaCBpbnRlcnZhbHMgKGluIG1pbnV0ZXMp
QmFja3VwIFBhdGg=
U3dpdGNoIENhdGFsb2cgdGFicyBiYXNlZCBvbiBNb2R1bGU=
U2VjdGlvbiBQZXJtaXNzaW9uIFJlYnVpbGQgTW9kZQ==
Q2hlY2sgU3RvcCBXb3Jkcw==
RW5hYmxlICJWaWV3IFBlcm1pc3Npb25zIiBDaGVjayBpbiBDYXRhbG9n
Q0tGaW5kZXIgTGljZW5zZSBLZXk=
Q0tGaW5kZXIgTGljZW5zZSBOYW1l
RGVmYXVsdCBDU1YgRXhwb3J0IERlbGltaXRlcg==
RGVmYXVsdCBDU1YgRXhwb3J0IEVuY2xvc3VyZSBDaGFyYWN0ZXI=
RGVmYXVsdCBDU1YgRXhwb3J0IEVuY29kaW5n
RGVmYXVsdCBDU1YgRXhwb3J0IE5ldyBMaW5lIFNlcGFyYXRvcg==
U2hvdyAiRm9ybXMgRWRpdG9yIiBpbiBERUJVRyBtb2RlIG9ubHk=
U2hvdyAiUHJvbW8gQmxvY2sgR3JvdXBzIEVkaXRvciIgaW4gREVCVUcgbW9kZSBvbmx5
RGVmYXVsdCBEZXNpZ24gVGVtcGxhdGU=
RGVmYXVsdCBFLW1haWwgUmVjaXBpZW50cw==
RGVmYXVsdCAiUGVyIFBhZ2UiIHNldHRpbmcgaW4gR3JpZHM=
RGVmYXVsdCBSZWdpc3RyYXRpb24gQ291bnRyeQ==
RGVmYXVsdCBBbmFseXRpY3MgVHJhY2tpbmcgQ29kZQ==
RW1haWwgRGVsaXZlcnk=
S2VlcCAiRS1tYWlsIExvZyIgZm9y
RW5hYmxlICJFLW1haWwgTG9nIg==
RW5hYmxlIFJldmlzaW9uIENvbnRyb2wgZm9yIFNlY3Rpb24gQ29udGVudA==
VGVtcGxhdGUgZm9yICJGaWxlIG5vdCBmb3VuZCAoNDA0KSIgRXJyb3I=
RXhjbHVkZSB0ZW1wbGF0ZSBiYXNlZCBTZWN0aW9ucyBmcm9tIFNlYXJjaCBSZXN1bHRzIChpZS4gVXNlciBSZWdpc3RyYXRpb24p
RmlsZW5hbWUgU3BlY2lhbCBDaGFyIFJlcGxhY2VtZW50
Rmlyc3QgRGF5IE9mIFdlZWs=
QWx3YXlzIHVzZSBJbWFnZU1hZ2ljayB0byByZXNpemUgaW1hZ2Vz
Rm9yY2UgUmVkaXJlY3QgdG8gU2VsZWN0ZWQgVVJMIEVuZGluZw==
UmVkaXJlY3QgdG8gSFRUUCB3aGVuIFNTTCBpcyBub3QgcmVxdWlyZWQ=
RnVsbCBpbWFnZSBIZWlnaHQ=
RnVsbCBpbWFnZSBXaWR0aA==
VGVtcGxhdGUgZm9yIEhhcmQgTWFpbnRlbmFuY2U=
QnlwYXNzIEhUVFAgQXV0aGVudGljYXRpb24gZnJvbSBJUHMgKHNlcGFyYXRlZCBieSBzZW1pY29sb25zKQ==
UGFzc3dvcmQgZm9yIEhUVFAgQXV0aGVudGljYXRpb24=
VXNlcm5hbWUgZm9yIEhUVFAgQXV0aGVudGljYXRpb24=
S2VlcCBTZXNzaW9uIGFsaXZlIG9uIEJyb3dzZXIgY2xvc2U=
TWFpbCBGdW5jdGlvbiBIZWFkZXIgU2VwYXJhdG9y
TWFpbGluZyBMaXN0IFF1ZXVlIFBlciBTdGVw
TWFpbGluZyBMaXN0IFNlbmQgUGVyIFN0ZXA=
TWFpbnRlbmFuY2UgTWVzc2FnZSBmb3IgQWRtaW4=
TWFpbnRlbmFuY2UgTWVzc2FnZSBmb3IgRnJvbnQgRW5k
TWF4aW11bSBudW1iZXIgb2YgaW1hZ2Vz
RGVmYXVsdCBVUkwgRW5kaW5nIGluIFNFTy1mcmllbmRseSBtb2Rl
VGVtcGxhdGUgZm9yICJJbnN1ZmZpY2llbnQgUGVybWlzc2lvbnMiIEVycm9y
R1pJUCBjb21wcmVzc2lvbiBsZXZlbCAwLTk=
UGF0aCB0byBXZWJzaXRl
UGVyZm9ybSBFeGFjdCBTZWFyY2g=
Q29tbWVudHMgcGVyIHBhZ2U=
IlJlY3ljbGUgQmluIiBTZWN0aW9uSWQ=
VXNlcm5hbWUgUmVxdWlyZWQgRHVyaW5nIFJlZ2lzdHJhdGlvbg==
UmVzdG9yZSBsYXN0IHZpc2l0ZWQgQWRtaW4gU2VjdGlvbiBhZnRlciBMb2dpbg==
UmVxdWlyZSBTU0wgZm9yIEFkbWluaXN0cmF0aXZlIENvbnNvbGU=
UmVxdWlyZSBTU0wgZm9yIGxvZ2luICYgY2hlY2tvdXQ=
RnJhbWVzIGluIGFkbWluaXN0cmF0aXZlIGNvbnNvbGUgYXJlIHJlc2l6YWJsZQ==
TWluaW1hbCBTZWFyY2ggS2V5d29yZCBMZW5ndGg=
U2Vzc2lvbiBTZWN1cml0eSBDaGVjayBiYXNlZCBvbiBCcm93c2VyIFNpZ25hdHVyZQ==
U2Vzc2lvbiBDb29raWUgRG9tYWlucyAoc2luZ2xlIGRvbWFpbiBwZXIgbGluZSk=
U2Vzc2lvbiBTZWN1cml0eSBDaGVjayBiYXNlZCBvbiBJUA==
V2Vic2l0ZSBTdWJ0aXRsZQ==
VGltZSB6b25lIG9mIHRoZSBzaXRl
VGVtcGxhdGUgZm9yIFNvZnQgTWFpbnRlbmFuY2U=
U1NMIEZ1bGwgVVJMIChodHRwczovL3d3dy5kb21haW4uY29tL3BhdGgp
VXNlIFN0aWNreSBHcmlkIFNlbGVjdGlvbg==
U2VuZCBVc2VyLWRlZmluZWQgIlN5c3RlbSBMb2ciIG1lc3NhZ2VzIHRv
S2VlcCAiU3lzdGVtIExvZyIgZm9y
VGh1bWJuYWlsIEhlaWdodA==
VGh1bWJuYWlsIFdpZHRo
VHJpbSBSZXF1aXJlZCBGaWVsZHM=
VHlwZUtpdCBJRA==
VXBkYXRlIGNvdW50ZXJzIChpbiBvdGhlciBmaWx0ZXJzKSBvbiBmaWx0ZXIgY2hhbmdl
VHJhY2sgZGF0YWJhc2UgY2hhbmdlcyB0byBjaGFuZ2UgbG9n
VXNlIENvbHVtbiBGcmVlemVy
QXV0by1kZXRlY3QgVXNlcidzIGxhbmd1YWdlIGJhc2VkIG9uIGl0J3MgQnJvd3NlciBzZXR0aW5ncw==
VXNlIERvdWJsZSBTb3J0aW5n
RW5hYmxlIEhUVFAgQXV0aGVudGljYXRpb24=
RW5hYmxlIEhUTUwgR1pJUCBjb21wcmVzc2lvbg==
VXNlIFBhZ2VIaXQgY291bnRlcg==
RWRpdGluZyBXaW5kb3cgU3R5bGU=
RW1haWwgYWN0aXZhdGlvbiBleHBpcmF0aW9uIHRpbWVvdXQgKGluIG1pbnV0ZXMp
VXNlIFNtYWxsIFNlY3Rpb24gSGVhZGVycw==
Q29tcHJlc3MgQ29tcGlsZWQgUEhQIFRlbXBsYXRlcw==
VXNlIFRvb2xiYXIgTGFiZWxz
VXNlIFZpc2l0b3IgVHJhY2tpbmc=
VXNlIEphdmFTY3JpcHQgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4vbG9nb3V0IChmb3IgSUlTKQ==
RW5hYmxlIFNFTy1mcmllbmRseSBVUkxzIG1vZGUgKE1PRC1SRVdSSVRFKQ==
RW5hYmxlIE1PRF9SRVdSSVRFIGZvciBTU0w=
V2Vic2l0ZSBuYW1l
WWFob28gQXBwbGljYXRpb25JZA==
QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBzZWxlY3RlZCBFeHBvcnQgUHJlc2V0Pw==
VGhlIHNlY3Rpb24gdHJlZSBtdXN0IGJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgbGF0ZXN0IGNoYW5nZXM=
Q3VycmVudCBUaGVtZQ==
RGF0YSBHcmlkcw==
RGF0YSBHcmlkcyAy
ZGF5cw==
QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgaXRlbShzKT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4=
VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gbWFuYWdlIHNlY3Rpb25zIGFuZCBpdGVtcyBhY3Jvc3MgYWxsIHNlY3Rpb25z
VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gYnJvd3NlIHRoZSBjYXRhbG9nIGFuZCBtYW5hZ2Ugc2VjdGlvbnMgYW5kIGl0ZW1z
TWFuYWdlIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBzaXRlLCBpbmNsdWRpbmcgc2VjdGlvbnMsIGl0ZW1zIGFuZCBzZWN0aW9uIHNldHRpbmdzLg==
RGlzYWJsZWQ=
RG91YmxlLVF1b3Rlcw==
RG93bmxvYWQgQ1NW
RG93bmxvYWQgRXhwb3J0IEZpbGU=
RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0
RHJhZnQ=
RHJhZnQgQXZhaWxhYmxl
ZHJhZnQgc2F2ZWQgYXQgJXM=
Q29udGVudCBFZGl0b3I=
WW91IGhhdmUgbm90IHNhdmVkIGNoYW5nZXMgdG8gdGhlIGl0ZW0geW91IGFyZSBlZGl0aW5nITxiciAvPkNsaWNrIE9LIHRvIGxvb3NlIGNoYW5nZXMgYW5kIGdvIHRvIHRoZSBzZWxlY3RlZCBzZWN0aW9uPGJyIC8+b3IgQ2FuY2VsIHRvIHN0YXkgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbi4=
RGVmYXVsdCB0ZXh0
RmlsZSBpcyBlbXB0eQ==
RmlsZSBpcyBlbXB0eQ==
RW5hYmxlZA==
Q2FuJ3QgZGVsZXRlIHN5c3RlbSBwZXJtaXNzaW9u
Q2FuJ3Qgb3BlbiB0aGUgZmlsZQ==
Q2FuJ3Qgc2F2ZSBhIGZpbGU=
Q29ubmVjdGlvbiBGYWlsZWQ=
RXJyb3IgY29weWluZyBzdWJzZWN0aW9ucw==
Q3VzdG9tIGZpZWxkIHdpdGggaWRlbnRpY2FsIG5hbWUgYWxyZWFkeSBleGlzdHM=
RW1haWwgRGVzaWduIFRlbXBsYXRlIHNob3VsZCBjb250YWluIGF0IGxlYXN0ICIkYm9keSIgdGFnIGluIGl0Lg==
RmlsZSBub3QgZm91bmQ=
RmlsZSBpcyB0b28gbGFyZ2U=
VGhpcyBVUkwgaXMgY29uZmxpY3Rpbmcgd2l0aCBleGlzdGluZyBVUkwgYW5kIGNhbid0IGJlIHVzZWQ=
Z3JvdXAgbm90IGZvdW5k
RmllbGQgZG9lc24ndCBleGlzdCBpbiAiJXMiIHVuaXQgY29uZmln
SW52YWxpZCBGaWxlIEZvcm1hdA==
VW5pdCBjb25maWcgcHJlZml4IG5vdCBmb3VuZA==
aW52YWxpZCBvcHRpb24=
VGhlIHVzZXJuYW1lIGNhbiBjb250YWluIG9ubHk6IGxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmVzLCBkYXNoZXMgYW5kIGRvdHM=
TG9naW4gRmFpbGVk
UmVjZWl2aW5nIGxpc3Qgb2YgbWVzc2FnZXMgZnJvbSB0aGUgU2VydmVyIGhhcyBmYWlsZWQ=
RXJyb3IgbW92aW5nIHN1YnNlY3Rpb24=
Q2FuJ3QgaW5oZXJpdCB0ZW1wbGF0ZSBmcm9tIHRvcCBjYXRlZ29yeQ==
Tm8gbWF0Y2hpbmcgY29sdW1ucyBhcmUgZm91bmQ=
VGhpcyBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQh
VmFsaWRhdGlvbiBlcnJvciwgcGxlYXNlIGRvdWJsZS1jaGVjayBJbi1Qb3J0YWwgdGFncw==
UGFzc3dvcmRzIGRvIG5vdCBtYXRjaCE=
Q2FuJ3QgRGVsZXRlIE5vbi1FbXB0eSBQcm9tbyBCbG9jayBHcm91cA==
UmVxdWlyZWQgZmllbGQoLXMpIG5vdCBmaWxsZWQ=
cmVxdWlyZWQgY29sdW1ucyBtaXNzaW5n
Um9vdCBzZWN0aW9uIG9mIHRoZSBtb2R1bGUocykgY2FuIG5vdCBiZSBkZWxldGVkIQ==
U2VsZWN0IGF0IGxlYXN0IG9uZSBpdGVtIHRvIG1vdmU=
VGVtcGxhdGUgZmlsZSBpcyBtaXNzaW5n
Q29weWluZyBvcGVyYXRpb24gaW4gVGVtcG9yYXJ5IHRhYmxlcyBoYXMgZmFpbGVkLiBQbGVhc2UgY29udGFjdCB3ZWJzaXRlIGFkbWluaXN0cmF0b3Iu
UmVjb3JkIGlzIG5vdCB1bmlxdWU=
U2VjdGlvbiBmaWVsZCBub3QgdW5pcXVl
VW5rbm93biBzZWN0aW9u
VW5rbm93biBzZWN0aW9u
VXNlciBCYW5uZWQ=
dXNlciBub3QgZm91bmQ=
WW91IG11c3Qgc2VsZWN0IG9ubHkgb25lIHVzZXI=
SW5jb3JyZWN0IGRhdGUgZm9ybWF0LCBwbGVhc2UgdXNlICh7Zm9ybWF0fSkgZXguICh7c2FtcGxlfSk=
SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIHt0eXBlfQ==
SW52YWxpZCBGb3JtYXQ=
RmllbGQgdmFsdWUgbGVuZ3RoIGlzIG91dCBvZiByYW5nZSwgcG9zc2libGUgdmFsdWUgbGVuZ3RoIGZyb20ge21pbl9sZW5ndGh9IHRvIHttYXhfbGVuZ3RofQ==
UHJpbWFyeSBMYW5nLiB2YWx1ZSBSZXF1aXJlZA==
RmllbGQgaXMgcmVxdWlyZWQ=
RmllbGQgdmFsdWUgbXVzdCBiZSB1bmlxdWU=
RmllbGQgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSB7bWluX3ZhbHVlfSB0byB7bWF4X3ZhbHVlfQ==
RXhwb3J0IGZvbGRlciBpcyBub3Qgd3JpdGFibGU=
RXJyb3IgY3JlYXRpbmcgZm9sZGVyLiBFcnJvciBudW1iZXI6
UGxlYXNlIG5hbWUgeW91ciBmaWxlcyB0byBiZSB3ZWItZnJpZW5kbHkuIFdlIHJlY29tbWVuZCB1c2luZyBvbmx5IHRoZXNlIGNoYXJhY3RlcnMgaW4gZmlsZSBuYW1lczogDQpMZXR0ZXJzIGEteiwgQS1aLCBOdW1iZXJzIDAtOSwgIl8iICh1bmRlcnNjb3JlKSwgIi0iIChkYXNoKSwgIiAiIChzcGFjZSksICIuIiAocGVyaW9kKQ0KUGxlYXNlIGF2b2lkIHVzaW5nIGFueSBvdGhlciBjaGFyYWN0ZXJzIGxpa2UgcXVvdGVzLCBicmFja2V0cywgcXVvdGF0aW9uIG1hcmtzLCAiPyIsICIhIiwgIj0iLCBmb3JlaWduIHN5bWJvbHMsIGV0Yy4=
RXJyb3Igb24gZmlsZSB1cGxvYWQuIEVycm9yIG51bWJlcjo=
QSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IGF2YWlsYWJsZQ==
RGF0ZQ==
RmlsZSBOYW1l
U2l6ZQ==
Rm9sZGVyIGFscmVhZHkgZXhpc3Rz
SW52YWxpZCBmaWxlIHR5cGUgZm9yIHRoaXMgZm9kZXI=
SW52YWxpZCBmb2xkZXIgbmFtZQ==
WW91IGhhdmUgbm8gcGVybWlzc2lvbnMgdG8gY3JlYXRlIHRoZSBmb2xkZXI=
UGxlYXNlIHR5cGUgdGhlIGZvbGRlciBuYW1l
VHlwZSB0aGUgbmFtZSBvZiB0aGUgbmV3IGZvbGRlcjo=
VW5rbm93biBlcnJvciBjcmVhdGluZyBmb2xkZXI=
RmllbGQ=
RGlzcGxheSBPcmRlcg==
T3JkZXI=
QWN0aW9u
QWRkcmVzcyBMaW5lIDE=
QWRkcmVzcyBMaW5lIDI=
TWVzc2FnZXMgZnJvbSBTaXRlIEFkbWluIGFyZSBmcm9t
QWRtaW4gUHJpbWFyeQ==
TGFuZ3VhZ2U=
QWR2YW5jZWQgQ1NT
QWR2YW5jZWQgU2VhcmNo
QWxsb3cgQ2hhbmdpbmcgIlRvIiBSZWNpcGllbnQ=
QWxsb3cgQ2hhbmdpbmcgU2VuZGVy
QWx0IFZhbHVl
QW5zd2Vy
QXNzaWduZWQgdG8gU2VjdGlvbnM=
QXR0YWNobWVudA==
QXV0byBDcmVhdGUgRmlsZSBOYW1l
QXV0b21hdGljIEZpbGVuYW1l
QXZhaWxhYmxlIENvbHVtbnM=
QmFja2dyb3VuZA==
QmFja2dyb3VuZCBBdHRhY2htZW50
QmFja2dyb3VuZCBDb2xvcg==
QmFja2dyb3VuZCBJbWFnZQ==
QmFja2dyb3VuZCBQb3NpdGlvbg==
QmFja2dyb3VuZCBSZXBlYXQ=
QmNj
QmluZCB0byBTeXN0ZW0gRXZlbnQ=
RWxlbWVudCBQb3NpdGlvbg==
Qm9yZGVyIEJvdHRvbQ==
Qm9yZGVyIExlZnQ=
Qm9yZGVyIFJpZ2h0
Qm9yZGVycw==
Qm9yZGVyIFRvcA==
Qm91bmNlIERhdGU=
Qm91bmNlIEVtYWls
Qm91bmNlIEluZm8=
QnV0dG9uIFRleHQ=
U2VjdGlvbg==
U2VjdGlvbiBGb3JtYXQ=
U2VjdGlvbiBJRA==
U2VjdGlvbiBzZXBhcmF0b3I=
U2VjdGlvbiBUZW1wbGF0ZQ==
Q2M=
Q2hhbmdlcw==
Q2hhcnNldA==
Q2hlY2sgRHVwbGljYXRlcyBieQ==
Q2l0eQ==
Q29sdW1uIFBocmFzZQ==
Q29tbWVudHM=
Q29tcGFueQ==
Q29uZmlndXJhdGlvbiBIZWFkZXIgTGFiZWw=
Q29udGVudCBCbG9jaw==
Q1RSLCAl
Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl
Q291bnRyeQ==
Q3JlYXRlZCBCeQ==
Q3JlYXRlZCBPbg==
Q29tbW9uIFNldHRpbmdz
RGF5
SG91cg==
TWludXRl
TW9udGg=
V2Vla2RheQ==
Q1NTIFRlbXBsYXRl
Q1NTIENsYXNzIE5hbWU=
Q3Vyc29y
Q3VzdG9tIERldGFpbHMgVGVtcGxhdGU=
U2VuZCBFbWFpbCBUbw==
U2VuZCBFbWFpbCBGcm9t
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KRGV0YWlscyBUZW1wbGF0ZQ==
RGF0ZSBGb3JtYXQ=
RGVjaW1hbCBQb2ludA==
RGVzY3JpcHRpb24=
QWNjZXNzIHdpdGggTGluaw==
RGlzcGxheQ==
RGlzcGxheSBpbiBHcmlk
RmllbGQgTGFiZWw=
RGlzcGxheSBzaXRlIG5hbWUgaW4gSGVhZGVy
RGlzcGxheSBUbyBQdWJsaWM=
UmFuZ2Ugb2YgSVBz
RG9tYWluIE5hbWU=
QXMgUGxhaW4gVGV4dA==
RHVyYXRpb24=
RWRpdG9ycyBQaWNr
RWxhcHNlZCBUaW1l
RS1tYWls
RS1tYWlsIENvbW11bmljYXRpb24gUm9sZQ==
RS1tYWlsIG9yIFVzZXJuYW1l
RS1tYWlsICI8c3Ryb25nPntwYXNzd29yZH08L3N0cm9uZz4iIHBhc3N3b3JkIHRvIHVzZXI=
RW1haWxzIGluIFF1ZXVl
RW1haWxzIFNlbnQ=
RW1haWxzIFRvdGFs
RS1tYWlsIFRlbXBsYXRlIE5hbWU=
RW1haWwgVmVyaWZpZWQ=
RW5hYmxl
RW5hYmxlZA==
RW5hYmxlIENhY2hpbmcgZm9yIHRoaXMgU2VjdGlvbg==
RXJyb3IgVGFn
RXN0aW1hdGVkIFRpbWU=
RXZlbnQ=
RXhwaXJl
RXhwb3J0IGNvbHVtbnM=
RXhwb3J0IFNwZWNpZmllZCBDb3VudHJpZXM=
RGF0YSBUeXBlcyB0byBFeHBvcnQ=
RXhwb3J0IFNwZWNpZmllZCBFLW1haWwgVGVtcGxhdGVz
RXhwb3J0IEZpbGVuYW1l
RXhwb3J0IGZvcm1hdA==
RXhwb3J0IE1vZHVsZXM=
RXhwb3J0IFNwZWNpZmllZCBQaHJhc2Vz
RXhwb3J0IFBocmFzZSBUeXBlcw==
RXhwb3J0IFByZXNldCBUaXRsZQ==
RXhwb3J0IFByZXNldA==
U2F2ZS9VcGRhdGUgRXhwb3J0IFByZXNldA==
RXh0ZXJuYWwgTGluaw==
RXh0ZXJuYWwgVVJM
RXh0cmEgSGVhZGVycw==
RmF4
TWF0Y2ggVHlwZQ==
RmllbGQgTmFtZQ==
RmllbGRzIGVuY2xvc2VkIGJ5
RmllbGRzIHNlcGFyYXRlZCBieQ==
RmllbGQgVGl0bGVz
RmllbGQgVHlwZQ==
TWF0Y2ggVmFsdWU=
RmlsZSBDb250ZW50cw==
RmlsZW5hbWU=
RmlsZW5hbWUgUmVwbGFjZW1lbnRz
UGF0aA==
RmlsdGVyIEZpZWxk
RmlsdGVyIFR5cGU=
Rmlyc3QgTmFtZQ==
Rm9udA==
Rm9udCBDb2xvcg==
Rm9udCBGYW1pbHk=
Rm9udCBTaXpl
Rm9udCBTdHlsZQ==
Rm9udCBXZWlnaHQ=
T25saW5lIEZvcm0=
T25saW5lIEZvcm0gU3VibWl0dGVkIFRlbXBsYXRl
U2hvcnQgVVJM
RnJvbSBFbWFpbA==
RnJvbnQtRW5kIE9ubHk=
TGFuZ3VhZ2U=
QWxsb3cgUmVnaXN0cmF0aW9uIG9uIEZyb250LWVuZA==
RnVsbCBOYW1l
VXNlciBHcm91cA==
R3JvdXAgRGlzcGxheSBPcmRlcg==
SUQ=
R3JvdXAgTmFtZQ==
SGVpZ2h0
UmV2aWV3IFdhcyBIZWxwZnVs
SGludCBQaHJhc2U=
SGl0cw==
SG90
SFRNTCBWZXJzaW9u
SFRNTCBWZXJzaW9u
SWNvbiBVUkwgKGRpc2FibGVkKQ==
SWNvbiBVUkw=
SUQ=
SW1hZ2U=
SW1wb3J0IFNlY3Rpb24=
SW1wb3J0IENvbHVtbnM=
SW1wb3J0IEZpbGU=
SW1wb3J0IEZpbGVuYW1l
SW5jbHVkZSBmaWVsZCB0aXRsZXM=
SW5jbHVkZSBTdWJsZXZlbHM=
SW5wdXQgRGF0ZSBGb3JtYXQ=
SW5wdXQgVGltZSBGb3JtYXQ=
SW5zdGFsbCBNb2R1bGVz
SW5zdGFsbCBQaHJhc2UgVHlwZXM=
SVAgQWRkcmVzcw==
SVAgUmVzdHJpY3Rpb25z
VXNlIGN1cnJlbnQgc2VjdGlvbiBhcyByb290IGZvciB0aGUgZXhwb3J0
SVNPIENvZGU=
UHJpbWFyeQ==
UmVxdWlyZWQ=
SXMgU3lzdGVt
U3lzdGVtIFRlbXBsYXRl
VXNlciBGaWVsZA==
SXRlbSBJRA==
SXRlbSBOYW1l
SXRlbSBQcmVmaXg=
SXRlbSBUZW1wbGF0ZQ==
TGFuZ3VhZ2U=
TGFuZ3VhZ2UgRmlsZQ==
TGFuZ3VhZ2UgSUQ=
TGFuZ3VhZ2Vz
TGFzdCBOYW1l
TGFzdCBSdW4gT24=
TGFzdCBSdW4gU3RhdHVz
TGFzdCBUaW1lb3V0IE9u
TGFzdCBVcGRhdGVkIE9u
TGVmdA==
TGluZSBlbmRpbmdz
TGluZSBFbmRpbmdzIEluc2lkZSBGaWVsZHM=
TGluayBUeXBl
SUQ=
TGlzdGluZyBUeXBl
TG9jYWxl
TG9jYWwgTmFtZQ==
TG9jYXRpb24=
QmFja3RyYWNl
Q29kZQ==
RXZlbnQgTmFtZQ==
SG9zdG5hbWU=
TG9naW4=
SW50ZXJmYWNl
TG9nIExldmVs
TWVtb3J5IFVzZWQ=
TWVzc2FnZQ==
Tm90aWZpY2F0aW9uIFN0YXR1cw==
TG9nbyBpbWFnZQ==
Qm90dG9tIExvZ28gSW1hZ2U=
TG9nbyBMb2dpbg==
UHJvY2VzcyBJRA==
UmVxdWVzdCBEYXRh
UmVxdWVzdCBTb3VyY2U=
UmVxdWVzdCBVUkk=
U2Vzc2lvbiBEYXRh
U2Vzc2lvbiBLZXk=
U291cmNlIEZpbGUgTGluZQ==
U291cmNlIEZpbGVuYW1l
VGltZXN0YW1w
VHlwZQ==
+ VW5pcXVlIElE
VXNlciBEYXRh
TWFyZ2luIEJvdHRvbQ==
TWFyZ2luIExlZnQ=
TWFyZ2luIFJpZ2h0
TWFyZ2lucw==
TWFyZ2luIFRvcA==
TWFzdGVyIElE
TWFzdGVyIFByZWZpeA==
TWF4aW11bSBudW1iZXIgb2YgU2VjdGlvbnMgb24gSXRlbSBjYW4gYmUgYWRkZWQgdG8=
Q3VzdG9tIE1lbnUgSWNvbiAoaWUuIGltZy9tZW51X3Byb2R1Y3RzLmdpZik=
TWVudSBTdGF0dXM=
TWVyZ2UgdG8gU3VibWlzc2lvbg==
TWVzc2FnZQ==
TWVzc2FnZSBCb2R5
UGxhaW4gVGV4dCBWZXJzaW9u
TWVzc2FnZSBUeXBl
TWV0YSBEZXNjcmlwdGlvbg==
TWV0YSBLZXl3b3Jkcw==
TWlzc3BlbGxlZCBXb3Jk
TW9kaWZpZWQ=
TW9kaWZpZWQgQnk=
TW9kdWxl
TW9kdWxl
TXVsdGlsaW5ndWFs
TmFtZQ==
TmV3
TmV4dCBSdW4gT24=
Tm90ZXM=
UmV2aWV3IFdhc24ndCBIZWxwZnVs
TnVtYmVyIE9mIENsaWNrcw==
TnVtYmVyIE9mIFZpZXdz
T2NjdXJlZCBPbg==
T3BlbiBJbiBOZXcgV2luZG93
T3B0aW9ucw==
T3B0aW9uIFRpdGxl
T3JkZXI=
T3RoZXIgUmVjaXBpZW50cw==
T3ZlcndyaXRlIERlZmF1bHQgQ2FjaGluZyBLZXk=
UGFjayBOYW1l
UGFkZGluZyBCb3R0b20=
UGFkZGluZyBMZWZ0
UGFkZGluZyBSaWdodA==
UGFkZGluZ3M=
UGFkZGluZyBUb3A=
Q3VzdG9tIENhY2hpbmcgS2V5
Jmx0O1RJVExFJmd0OyBUYWc=
Q2FjaGUgRXhwaXJhdGlvbiBpbiBzZWNvbmRz
VGl0bGUgKE1lbnUgSXRlbSk=
U2VjdGlvbiBUaXRsZQ==
UGFyZW50IEl0ZW0gSUQ=
UGFyZW50IEl0ZW0gTmFtZQ==
UGFyZW50IFNlY3Rpb24=
UGFzc3dvcmQ=
UGVyY2VudHMgQ29tcGxldGVk
UGhvbmU=
TGFiZWw=
UGhyYXNlIFR5cGU=
UG9w
UG9wdWxhcg==
UG9ydA==
UG9zaXRpb24=
UHJlZml4
UHJpbWFyeQ==
UHJpbWFyeSBTZWN0aW9u
UHJpbWFyeQ==
UHJpbWFyeSBMYW5ndWFnZSBQaHJhc2U=
T3JkZXI=
Q29udmVydCB1bm1hdGNoZWQgZS1tYWlscyBpbnRvIG5ldyBzdWJtaXNzaW9ucw==
UHJvbW8gQmxvY2sgR3JvdXA=
UHJvdGVjdGVk
UXVhbnRpdHk=
UmFuZ2UgQ291bnQ=
UmF0aW5n
UmVjaXBpZW50
UmVjaXBpZW50J3MgQWRkcmVzcw==
UmVjaXBpZW50J3MgQWRkcmVzcyBUeXBl
UmVjaXBpZW50J3MgTmFtZQ==
UmVjaXBpZW50cw==
UmVjaXBpZW50IFR5cGU=
Rm9yY2UgUmVkaXJlY3QgKHdoZW4gdXNlcidzIElQIG1hdGNoZXMp
UmVmZXJyZXIgVVJM
S2V5d29yZA==
VHlwZQ==
UmVtb3RlIFVSTA==
UmVwbGFjZSBEdXBsaWNhdGVz
UmVwbGFjZW1lbnQ=
UmVwbGFjZW1lbnQgVGFncw==
UmVwbGllZCBPbg==
UmVwbHkgQmNj
UmVwbHkgQ2M=
UmVwbHkgRnJvbSBFLW1haWw=
UmVwbHkgRnJvbSBOYW1l
UmVwbHkgTWVzc2FnZSBTaWduYXR1cmU=
UmVwbGllZA==
UmVwb3J0ZWQgQnk=
UmVwb3J0ZWQgT24=
UmVxdWlyZWQ=
UmVxdWlyZSBMb2dpbg==
UmVxdWlyZSBTU0w=
Q29tbWVudA==
UHJvbW8gUm90YXRpb24gRGVsYXkgKHNlY29uZHMp
UnVsZSBUeXBl
UnVuIFNjaGVkdWxl
UnVuIFRpbWU=
U2FtZSBBcyBUaHVtYg==
U2NoZWR1bGUgRGF0ZQ==
U2VhcmNoIFRlcm0=
U2VuZGVy
U2VuZGVyJ3MgQWRkcmVzcw==
U2VuZGVyJ3MgTmFtZQ==
U2VudCBPbg==
U2VudA==
U2VydmVy
U2Vzc2lvbiBMb2cgSUQ=
U2hvcnQgRGF0ZSBGb3JtYXQ=
U2hvcnQgSVNPIENvZGU=
U2hvcnQgVGltZSBGb3JtYXQ=
U2ltcGxlIFNlYXJjaA==
U2l0ZSBEb21haW4gTGltaXRhdGlvbg==
TmFtZQ==
U2tpcCBGaXJzdCBSb3c=
U29ydCBWYWx1ZXM=
U1NMIEZ1bGwgVVJM
U3RhcnQgRGF0ZQ==
U3RhdGU=
U3RhdGUgQ291bnRyeQ==
U3RhdHVz
U3RpY2t5
U3RvcCBXb3Jk
U3R5bGVzaGVldCBGaWxl
U3ViamVjdA==
U3VibWl0dGVkIE9u
U3VibWlzc2lvbiBOb3RpZmljYXRpb24gRW1haWw=
U3Vic2NyaWJlZCBPbg==
U3VnZ2VzdGVkIENvcnJlY3Rpb24=
UG9pbnRzIHRvIFNlY3Rpb24=
U3luY2hyb25pemUgTGFuZ3VhZ2U=
U3lzdGVtIEV2ZW50
U2V0dGluZyBIaW50IExhYmVs
U2V0dGluZyBOYW1l
U2VjdGlvbg==
VmFsaWRhdGlvbiBMb2dpYw==
U2V0dGluZyBWYWx1ZQ==
VGFibGUgTmFtZSBpbiBEYXRhYmFzZSA=
VGFn
SXRlbQ==
VGVtcGxhdGUgRmlsZQ==
VGVtcGxhdGUgTmFtZQ==
VGVtcGxhdGU=
VGV4dA==
VGV4dCBBbGlnbg==
VGV4dCBEZWNvcmF0aW9u
VGV4dCBWZXJzaW9u
VGV4dCBWZXJzaW9u
VGhlbWU=
VGhlbWVz
VGhlc2F1cnVzIFRlcm0=
VGhlc2F1cnVzIFR5cGU=
VGhvdXNhbmRzIFNlcGFyYXRvcg==
VGltZSBGb3JtYXQ=
VGltZW91dA==
VGltZSBab25l
VGl0bGU=
VG8=
VG8gRS1tYWls
VG9w
QW5hbHl0aWNzIFRyYWNraW5nIENvZGU=
UHJvbW8gVHJhbnNpdGlvbiBDb250cm9scw==
UHJvbW8gVHJhbnNpdGlvbiBFZmZlY3Q=
UHJvbW8gVHJhbnNpdGlvbiBFZmZlY3QgKGN1c3RvbSk=
VHJhbnNpdGlvbiBEZWxheSAoc2Vjb25kcyk=
UGhyYXNl
VHlwZQ==
TWVhc3VyZXMgU3lzdGVt
VXBsb2FkIEZpbGUgRnJvbSBMb2NhbCBQQw==
QWxsb3dlZCBGaWxlIEV4dGVuc2lvbnM=
TWF4aW11bSBGaWxlIFNpemU=
VVJM
TGluayB0byBFeHRlcm5hbCBVUkw=
VXNlIEN1c3RvbSBNZW51IEljb24=
VXNlciBEb2N1bWVudGF0aW9uIFVSTA==
VXNlciBHcm91cHM=
VXNlcm5hbWU=
VXNlIFNlY3VyaXR5IEltYWdl
UmUtZW50ZXIgUGFzc3dvcmQ=
VmVyc2lvbg==
VmlzaWJpbGl0eQ==
Vm90ZXM=
V2lkdGg=
Wi1JbmRleA==
WklQ
Rm9udCBQcm9wZXJ0aWVz
RG8geW91IHdhbnQgdG8gc2F2ZSB0aGUgY2hhbmdlcz8=
QXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIGRpc2NhcmQgdGhlIGNoYW5nZXM/
RnJvbQ==
RnJvbSBEYXRl
R2VuZXJhbCBTZWN0aW9ucw==
SGVhZCBGcmFtZQ==
SGlkZQ==
QWxsIEZpbGVz
Q2xpY2sgdG8gZWRpdA==
Q1NWIEZpbGVz
SW1hZ2UgRmlsZXM=
UE9QMyBTZXJ2ZXIgUG9ydC4gRm9yIGV4LiAiMTEwIiBmb3IgcmVndWxhciBjb25uZWN0aW9uLCAiOTk1IiBmb3Igc2VjdXJlIGNvbm5lY3Rpb24u
UE9QMyBTZXJ2ZXIgQWRkcmVzcy4gRm9yIGV4LiB1c2UgInNzbDovL3BvcC5nbWFpbC5jb20iIGZvciBHbWFpbCwgInBvcC5tYWlsLnlhaG9vLmNvbSIgZm9yIFlhaG9vLg==
Q2FjaGUgS2V5KHMp
ZGF0YWJhc2UgY2FjaGU=
bWVtb3J5IGNhY2hl
VXNpbmcgUmVndWxhciBFeHByZXNzaW9u
SG90
SFRNTA==
SUQgRmllbGQ=
SW52YWxpZCBFLU1haWw=
SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIGludGVnZXI=
TWlzc2luZyBvciBpbnZhbGlkIEluLVBvcnRhbCBMaWNlbnNl
SW5jb3JyZWN0IFVzZXJuYW1lIG9yIFBhc3N3b3Jk
SW52YWxpZCBzdGF0ZQ==
U2VjdGlvbnM=
PCAxIHNlYy4=
RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBsaW5rcw==
TnVtYmVyIG9mIGRheXMgZm9yIGEgbGluayB0byBiZSBORVc=
TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdl
TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdlIG9uIGEgc2hvcnQgbGlzdGluZw==
QW5kIHRoZW4gYnk=
T3JkZXIgbGlua3MgYnk=
TGludXg=
TG9jYWw=
TG9jYWwgSW1hZ2U=
RnVuY3Rpb24=
TG9nZ2VkIGluIGFz
TG9naW4=
TG9nb3V0
KEdNVCk=
KEdNVCAtMDE6MDAp
KEdNVCAtMTA6MDAp
KEdNVCAtMTE6MDAp
KEdNVCAtMTI6MDAp
KEdNVCAtMDI6MDAp
KEdNVCAtMDM6MDAp
KEdNVCAtMDQ6MDAp
KEdNVCAtMDU6MDAp
KEdNVCAtMDY6MDAp
KEdNVCAtMDc6MDAp
KEdNVCAtMDg6MDAp
KEdNVCAtMDk6MDAp
TWFyZ2lucw==
R3JvdXAgTWVtYmVyc2hpcCBFeHBpcmF0aW9uIFJlbWluZGVyIChkYXlzKQ==
TWV0cmlj
U2VjdGlvbiBwYXRoIGluIG9uZSBmaWVsZA==
TW9kdWxlIG5vdCBsaWNlbnNlZA==
TW9uZGF5
Q2hhbmdlIGxvZyBpcyBjdXJyZW50bHkgZGlzYWJsZWQuIFR1cm4gb24gIiVzIiBzZXR0aW5nIHRvIGVuYWJsZSBpdC4=
RW5hYmxlIHRyYWNraW5nIGRhdGFiYXNlIGNoYW5nZXMgdG8gY2hhbmdlIGxvZz8=
TGFzdCBvcGVyYXRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCE=
QXBwbHkgdG8gYWxsIFN1Yi1zZWN0aW9ucz8=
WW91ciAicm9vdCIgcGFzc3dvcmQgaGFzIGJlZW4gcmVzZXQuIFBsZWFzZSByZW1vdmUgREJHX1JFU0VUX1JPT1QgY29uc3RhbnQgYW5kIGNoZWNrIHlvdXIgZS1tYWlsIGFkZHJlc3Mu
WW91ciBjaGFuZ2VzIHdlcmUgc3VjY2Vzc2Z1bGx5IHNhdmVkIQ==
TmV2ZXI=
TmV2ZXIgRXhwaXJlcw==
TmV3
TmV4dCBzZWN0aW9u
Tm8=
Tm9uZQ==
Tm8gUGVybWlzc2lvbnM=
bmQ=
cmQ=
c3Q=
dGg=
T2Zm
T24=
T25lIFdheQ==
b24gbGluZQ==
Y3JlYXRlZA==
ZGVsZXRlZA==
dXBkYXRlZA==
QWN0aXZl
QWRkcmVzcw==
QWZ0ZXI=
QWxsb3c=
Q3VzdG9t
RmFkZQ==
U2xpZGU=
QXByaWw=
QXVndXN0
QXV0by1EZXRlY3Q=
QXV0b21hdGlj
QmVmb3Jl
Qm91bmNlZA==
Q2FuY2VsZWQ=
Q2l0eQ==
Q29sb24=
Q29tbWE=
Q29tbWVudCBUZXh0
Q29va2llcw==
Q291bnRyaWVz
Q291bnRyeQ==
Q3JlYXRlZCBPbg==
LS0gQ29tbW9uIFNldHRpbmdzIC0t
LS0gRGF5cyAtLQ==
RXZlcnkgZGF5
RXZlcnkgMTUgbWludXRlcw==
RXZlcnkgNSBtaW51dGVz
RXZlcnkgNCBob3Vycw==
RXZlcnkgaG91cg==
RXZlcnkgbWludXRl
RXZlcnkgbW9udGg=
RXZlcnkgb3RoZXIgZGF5
RXZlcnkgb3RoZXIgaG91cg==
RXZlcnkgb3RoZXIgbWludXRl
RXZlcnkgb3RoZXIgbW9udGg=
RXZlcnkgNiBob3Vycw==
RXZlcnkgNiBtb250aHM=
RXZlcnkgMTAgbWludXRlcw==
RXZlcnkgMzAgbWludXRlcw==
RXZlcnkgMyBob3Vycw==
RXZlcnkgMyBtb250aHM=
RXZlcnkgMTIgaG91cnM=
RXZlcnkgd2Vla2RheQ==
LS0gSG91cnMgLS0=
LS0gTWludXRlcyAtLQ==
TW9uIHRocnUgRnJp
TW9uLCBXZWQsIEZyaQ==
LS0gTW9udGhzIC0t
T25jZSBhIGRheQ==
T25jZSBhIG1vbnRo
T25jZSBhbiBob3Vy
T25jZSBhIHdlZWs=
T25jZSBhIHllYXI=
U2F0IGFuZCBTdW4=
VHVlcywgVGh1cnM=
VHdpY2UgYSBkYXk=
MXN0IGFuZCAxNXRo
VHdpY2UgYW4gaG91cg==
LS0gV2Vla2RheXMgLS0=
Q3VycmVudCBEb21haW4=
Q3VzdG9tICJUbyIgUmVjaXBpZW50KC1zKQ==
Q3VzdG9tIFNlbmRlcg==
ZGF5KHMp
RGVjZW1iZXI=
RGVjbGluZWQ=
RGVmYXVsdCBXZWJzaXRlIGFkZHJlc3M=
RGVueQ==
RGVzY3JpcHRpb24=
RGlzYWJsZWQ=
RG9lc24ndCBtYXRjaA==
RWRpdG9yJ3MgUGljaw==
RS1tYWls
RS1tYWlsIEJvZHk=
SW1tZWRpYXRl
RW1haWwgUXVldWU=
Rm9yZXZlciAobmV2ZXIgZGVsZXRlZCBhdXRvbWF0aWNhbGx5KQ==
RS1tYWlsIFN1YmplY3Q=
RS1tYWlsIFRlbXBsYXRlcw==
RXZlcnlvbmU=
RXhhY3Q=
RXhwaXJlZA==
RXh0ZXJuYWw=
RXh0ZXJuYWwgVXJs
RmFpbGVk
RmVicnVhcnk=
Rmlyc3QgTmFtZQ==
RnJpZGF5
R3JvdXA=
R3Vlc3RzIE9ubHk=
aG91cihzKQ==
SW5oZXJpdCBmcm9tIFBhcmVudA==
SW50ZXJuYWw=
SW52YWxpZA==
SVAgQWRkcmVzcw==
SXMgdW5pcXVl
SmFudWFyeQ==
SnVseQ==
SnVuZQ==
TGFzdCBOYW1l
TG9nZ2VkIE91dA==
RGlzYWJsZWQ=
UGVuZGluZw==
U2VudA==
RGF0YWJhc2U=
T3RoZXI=
UEhQ
TWFudWFs
TWFyY2g=
TWF5
bWludXRlKHMp
TW9kYWwgV2luZG93
TW9uZGF5
bW9udGgocyk=
TmV3IEUtbWFpbA==
Tm90IGVtcHR5
Tm90IGxpa2U=
Tm90IFByb2Nlc3NlZA==
Tm90IFJlcGxpZWQ=
Tm92ZW1iZXI=
T2N0b2Jlcg==
MSBkYXk=
MSBtb250aA==
MSB3ZWVr
MSB5ZWFy
UGFydGlhbGx5IFByb2Nlc3NlZA==
UGVuZGluZw==
UGhvbmU=
TGFiZWxz
UG9wdXAgV2luZG93
UHJvY2Vzc2Vk
UHVibGlzaGVk
UXVlcnkgU3RyaW5nIChTSUQp
UmF0aW5n
UmVjaXBpZW50IEUtbWFpbA==
UmVjaXBpZW50IE5hbWU=
UmVwbGllZA==
UnVubmluZw==
U2FtZSBXaW5kb3c=
U2F0dXJkYXk=
c2Vjb25kKHMp
U2VtaS1jb2xvbg==
U2VwdGVtYmVy
U2lsZW50
U3BhY2U=
U3RhdGU=
U3ViLW1hdGNo
U3VjY2Vzcw==
U3VuZGF5
RnJvbSBvdGhlcnM=
VG8gb3RoZXJz
U3lzdGVt
Rm9yZXZlciAobmV2ZXIgZGVsZXRlZCBhdXRvbWF0aWNhbGx5KQ==
VGFi
VGVtcGxhdGU=
MyBtb250aHM=
VGh1cnNkYXk=
VGl0bGU=
VHVlc2RheQ==
MiB3ZWVrcw==
VXNlcg==
RW1haWwgQWN0aXZhdGlvbg==
SW1tZWRpYXRlIA==
VXNlcm5hbWU=
Tm90IEFsbG93ZWQ=
VXBvbiBBcHByb3ZhbA==
VmlydHVhbA==
V2VkbmVzZGF5
d2VlayhzKQ==
eWVhcihzKQ==
Wmlw
T3RoZXIgRmllbGRz
b3V0IG9m
KEdNVCArMDE6MDAp
KEdNVCArMTA6MDAp
KEdNVCArMTE6MDAp
KEdNVCArMTI6MDAp
KEdNVCArMTM6MDAp
KEdNVCArMDI6MDAp
KEdNVCArMDM6MDAp
KEdNVCArMDQ6MDAp
KEdNVCArMDU6MDAp
KEdNVCArMDY6MDAp
KEdNVCArMDc6MDAp
KEdNVCArMDg6MDAp
KEdNVCArMDk6MDAp
UGFkZGluZ3M=
UGFnZQ==
QXR0ZW50aW9uOiAlcyBpcyBjdXJyZW50bHkgZWRpdGluZyB0aGlzIHNlY3Rpb24h
QXR0ZW50aW9uOiAlcyBhcmUgY3VycmVudGx5IGVkaXRpbmcgdGhpcyBzZWN0aW9uISA=
QXR0ZW50aW9uOiAlcyBhcmUgY3VycmVudGx5IGVkaXRpbmcgdGhpcyBzZWN0aW9uIQ==
UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA==
UGFzc3dvcmQgaXMgdG9vIHNob3J0LCBwbGVhc2UgZW50ZXIgYXQgbGVhc3QgJXMgY2hhcmFjdGVycw==
UGVuZGluZw==
UGVyZm9ybWluZyBCYWNrdXA=
UGVyZm9ybWluZyBJbXBvcnQ=
UGVyZm9ybWluZyBSZXN0b3Jl
RXhwb3J0IExhbmd1YWdlIHBhY2s=
SW1wb3J0IExhbmd1YWdlIHBhY2s=
U2V0IFByaW1hcnkgTGFuZ3VhZ2U=
RW5hYmxlIE1vZHVsZXM=
RGlzYWJsZSBNb2R1bGVz
TWFuYWdlIFBlcm1pc3Npb25z
U2VuZCBFLW1haWwgdG8gR3JvdXBzIGluIEFkbWlu
QmFuIFVzZXJz
U2VuZCBFLW1haWwgdG8gVXNlcnMgaW4gQWRtaW4=
QWRtaW4gTG9naW4=
QWRkIFBlbmRpbmcgQ2F0ZWdvcnk=
QWRkIENhdGVnb3J5
RGVsZXRlIENhdGVnb3J5
TW9kaWZ5IENhdGVnb3J5
QWxsb3cgQWRkaW5nIFBlbmRpbmcgQ29udGVudCBSZXZpc2lvbnM=
QWxsb3cgQWRkaW5nIENvbnRlbnQgUmV2aXNpb25z
QWxsb3cgUmVzdG9yaW5nIENvbnRlbnQgUmV2aXNpb25zIGZyb20gSGlzdG9yeQ==
QWxsb3cgVmlld2luZyBIaXN0b3J5IG9mIENvbnRlbnQgUmV2aXNpb25z
QWxsb3cgTW9kZXJhdGluZyAoQXBwcm92ZS9EZWNsaW5lKSBDb250ZW50IFJldmlzaW9ucw==
VmlldyBDYXRlZ29yeQ==
QXBwZW5kIHBocGluZm8gdG8gYWxsIHBhZ2VzIChEZWJ1Zyk=
RGlzcGxheSBJdGVtIFF1ZXJpZXMgKERlYnVnKQ==
RGlzcGxheSBJdGVtIExpc3QgUXVlcmllcyAoRGVidWcp
QWxsb3cgZmF2b3JpdGVz
QWxsb3cgTG9naW4=
Q2hhbmdlIFVzZXIgUHJvZmlsZXM=
U2hvdyBMYW5ndWFnZSBUYWdz
UmVhZC1Pbmx5IEFjY2VzcyBUbyBEYXRhYmFzZQ==
Tm90IFRyYW5zbGF0ZWQ=
VHJhbnNsYXRlZA==
QWRtaW4=
Qm90aA==
RnJvbnQ=
UGljaw==
U2VsZWN0ZWQgQ29sdW1ucw==
UG9wdWxhcg==
UG9zaXRpb24gQW5kIFZpc2liaWxpdHk=
UHJldmlvdXMgc2VjdGlvbg==
UHJpbWFyeQ==
QWN0aXZlIFNlY3Rpb25z
QWN0aXZlIFVzZXJz
U2VudCBUbw==
TWVzc2FnZXMgZnJvbSBTaXRlIEFkbWluIGFyZSBmcm9t
QWR2YW5jZWQgU2VhcmNo
QWR2YW5jZWQgVXNlciBNYW5hZ2VtZW50
QWxsb3cgcGFzc3dvcmQgcmVzZXQgYWZ0ZXI=
R2VuZXJhdGUgZnJvbSB0aGUgYXJ0aWNsZSBib2R5
RGF0ZSBvZiBCYWNrdXA6
QmFja3VwIFBhdGg=
QmFja3VwIHN0YXR1cw==
QmFubmVkIFVzZXJz
RGF0ZSBvZiBCaXJ0aA==
RWRpdG9yJ3MgUGljayBTZWN0aW9ucw==
Q3VycmVudCBTZXNzaW9ucw==
VG90YWwgU2l6ZSBvZiB0aGUgRGF0YWJhc2U=
RGVmYXVsdA==
VXNlciBJRCBmb3IgRGVmYXVsdCBQZXJzaXN0ZW50IFNldHRpbmdz
RGVmYXVsdCBWYWx1ZQ==
RGlzYWJsZWQgU2VjdGlvbnM=
RGlzcGxheSBpbiBHcmlk
RGlzcGxheSBPcmRlcg==
QWxsb3cgRHVwbGljYXRlIFJhdGluZyBWb3Rlcw==
QWxsb3cgRHVwbGljYXRlIFJldmlld3M=
RWRpdG9yJ3MgUGljaw==
VHlwZQ==
VGhlIEVtYWlsIE1lc3NhZ2UgaGFzIGJlZW4gc2VudA==
RXhwb3J0IENvbXBsZXRlIQ==
RmllbGQgSWQ=
RmllbGQgTGFiZWw=
RmllbGQgTmFtZQ==
RmllbGQgUHJvbXB0
RnJlcXVlbmN5
SGVhZGluZw==
KE1pbmltdW0gNCk=
SW1wb3J0IFNvdXJjZQ==
SW5wdXQgVHlwZQ==
S2VlcCBTZXNzaW9uIFdoZW4gQnJvc3dlciBJcyBDbG9zZWQ=
TGFuZ3VhZ2UgQ2FjaGUgVGltZW91dA==
TGFzdCBTZWN0aW9uIFVwZGF0ZQ==
TGFzdCBVcGRhdGVkIExpbms=
U2VydmVyIFJlcXVpcmVzIEF1dGhlbnRpY2F0aW9u
UG9ydCAoZS5nLiBwb3J0IDI1KQ==
TWFpbCBTZXJ2ZXIgQWRkcmVzcw==
TWF4aW1hbCBpbXBvcnRlZCBzZWN0aW9uIGxldmVs
TWVtYmVyc2hpcCBFeHBpcmVz
TGVmdCBNZW51IChUcmVlKSBXaWR0aA==
TW92ZSBkb3du
TW92ZSB1cA==
U2hvdyBtdWx0aXBsZQ==
TmV3IFNlY3Rpb25z
TmV3ZXN0IFNlY3Rpb24gRGF0ZQ==
TmV3ZXN0IExpbmsgRGF0ZQ==
TmV3ZXN0IFVzZXIgRGF0ZQ==
Q3VycmVudGx5IEFjdGl2ZSBVc2VyIFNlc3Npb25z
T3ZlcndyaXRlIEV4aXN0aW5nIFBocmFzZXM=
UGVuZGluZyBTZWN0aW9ucw==
UGVuZGluZyBJdGVtcw==
UGVyZm9ybSB0aGlzIG9wZXJhdGlvbiBub3c/
UGVyIFBhZ2U=
UGVyc29uYWwgSW5mb3JtYXRpb24=
UHJpbWFyeSBHcm91cA==
UHJpb3JpdHk=
UmF0aW5n
KE1pbmltdW0gMCwgTWF4aW11bSA1KQ==
TnVtYmVyIG9mIERhdGFiYXNlIFJlY29yZHM=
TnVtYmVyIG9mIFJlZ2lvbiBQYWNrcw==
U2VhcmNoIFJlbGV2YW5jZSBkZXBlbmRzIG9u
U2VhcmNoIFJlbGV2ZW5jZSBTZXR0aW5ncw==
UmVxdWlyZWQ=
SW5jcmVhc2UgaW1wb3J0YW5jZSBpZiBmaWVsZCBjb250YWlucyBhIHJlcXVpcmVkIGtleXdvcmQgYnk=
UmVzdG9yZSBoYXMgZmFpbGVkIGFuIGVycm9yIG9jY3VyZWQ6
Q2hvb3NlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJhY2t1cCBkYXRlcyB0byByZXN0b3JlIG9yIGRlbGV0ZQ==
UmVzdG9yZSBTdGF0dXM=
UmVzdG9yZSBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
U2VsZWN0IE1vZHVsZSBSb290IFNlY3Rpb246
Um9vdCBQYXNzd29yZA==
U2VhcmNoIFR5cGU=
U2VsZWN0IFNvdXJjZSBMYW5ndWFnZQ==
U2VudCBPbg==
U2Vzc2lvbiBDb29raWUgTmFtZQ==
U2Vzc2lvbiBNYW5hZ2VtZW50IE1ldGhvZA==
U2Vzc2lvbiBJbmFjdGl2aXR5IFRpbWVvdXQgKHNlY29uZHMp
U2hvdyBvbiB0aGUgZ2VuZXJhbCB0YWI=
U2ltcGxlIFNlYXJjaA==
QWRkaXRpb25hbCBNZXNzYWdlIEhlYWRlcnM=
TWFpbCBTZXJ2ZXIgUGFzc3dvcmQ=
TWFpbCBTZXJ2ZXIgVXNlcm5hbWU=
VXNlIG5vbi1ibG9ja2luZyBzb2NrZXQgbW9kZQ==
U1FMIFF1ZXJ5Og==
UGVyZm9ybSBTUUwgUXVlcnk=
U3RlcCBPbmU=
U3VibWl0dGVkIE9u
RW5hYmxlIFRhZyBDYWNoaW5n
VG90YWwgU2l6ZSBvZiBTeXN0ZW0gRmlsZXM=
TnVtYmVyIG9mIERhdGFiYXNlIFRhYmxlcw==
TnVtYmVyIG9mIFRoZW1lcw==
VG90YWwgU2VjdGlvbnM=
VG90YWwgVXNlciBHcm91cHM=
QWN0aXZlIFVzZXJz
RGlzYWJsZWQgVXNlcnM=
UGVuZGluZyBVc2Vycw==
TnVtYmVyIG9mIFVuaXF1ZSBDb3VudHJpZXMgb2YgVXNlcnM=
TnVtYmVyIG9mIFVuaXF1ZSBTdGF0ZXMgb2YgVXNlcnM=
VmFsaWRhdGlvbg==
TGlzdCBvZiBWYWx1ZXM=
KE1pbmltdW0gMSk=
V2FybmluZyE=
V2VpZ2h0
U2luZ2xlLVF1b3RlcyAoaWUuICcp
UmVjaXByb2NhbA==
UmVjb3Jkcw==
VGhpcyByZWNvcmQgaXMgYmVpbmcgZWRpdGVkIGJ5IHRoZSBmb2xsb3dpbmcgdXNlcnM6DQolcw==
VXNlIENhcHRjaGEgY29kZSBvbiBSZWdpc3RyYXRpb24=
UmVndWxhcg==
UmVtb3ZlIEZyb20=
Tm90IGFsbCByZXF1aXJlZCBmaWVsZHMgYXJlIGZpbGxlZC4gUGxlYXNlIGZpbGwgdGhlbSBmaXJzdC4=
Q29tbWVudHMgcGVyIFBhZ2U=
Q29tbWVudHMgcGVyIFBhZ2UgKHNob3J0LWxpc3Qp
UmV2aXNpb24gIyVz
SG9tZQ==
U2FtcGxlIFRleHQ=
c2F2ZWQgYXQgJXM=
U2F2ZSBVc2VybmFtZSBvbiBUaGlzIENvbXB1dGVy
U2VhcmNo
QmFzaWMgUGVybWlzc2lvbnM=
U2VjdGlvbg==
Q29uZmlnIEZpbGVz
Q291bnRlcnM=
Q3VzdG9tIEZpZWxkcw==
U3VibWlzc2lvbiBEYXRh
RS1tYWlsIERlc2lnbiBUZW1wbGF0ZXM=
RmlsZQ==
RnJvbnQtZW5k
RnVsbCBTaXplIEltYWdl
R2VuZXJhbA==
SW1hZ2U=
SW1hZ2UgU2V0dGluZ3M=
SW1wb3J0IENvbXBsZXRlZA==
VXNlciBJdGVtcw==
TWVtb3J5IENhY2hl
TWVzc2FnZQ==
U2VjdGlvbiBPdmVydmlldw==
U2VjdGlvbiBQcm9wZXJ0aWVz
U2VjdGlvbiBDYWNoaW5n
UHJvamVjdCBEZXBsb3ltZW50
UHJvcGVydGllcw==
UXVpY2sgTGlua3M=
UmVjaXBpZW50cyBJbmZvcm1hdGlvbg==
UmVsYXRpb24=
UmVwbGFjZW1lbnQgVGFncw==
U2VuZGVyIEluZm9ybWF0aW9u
U2V0dGluZ3M=
M3JkIFBhcnR5IEFQSSBTZXR0aW5ncw==
QWRtaW4gQ29uc29sZSBTZXR0aW5ncw==
Q1NWIEV4cG9ydCBTZXR0aW5ncw==
TG9ncyBTZXR0aW5ncw==
TWFpbGluZyBTZXR0aW5ncw==
TWFpbnRlbmFuY2UgU2V0dGluZ3M=
U2Vzc2lvbiBTZXR0aW5ncw==
U1NMIFNldHRpbmdz
U3lzdGVtIFNldHRpbmdz
V2Vic2l0ZSBTZXR0aW5ncw==
U3VibWlzc2lvbiBOb3Rlcw==
VGVtcGxhdGVz
VGh1bWJuYWlsIEltYWdl
VHJhbnNsYXRpb24=
U2VhcmNoIFVzZXJz
VmFsdWVz
U2VsZWN0IENvbHVtbnM=
U2VsZWN0ZWQgSXRlbXM=
U2VsZWN0aW5nIFNlY3Rpb25z
T25lIGZpZWxkIGZvciBlYWNoIHNlY3Rpb24gbGV2ZWw=
Q2xvbmU=
Q2xvbmU=
Q29udGludWU=
RWRpdA==
RXhwb3J0
R28gVXA=
SW1wb3J0
RG93bg==
VXA=
TmV3
UmVidWlsZA==
UmVzY2FuIFRoZW1lcw==
UmVzZXQ=
UHJpbWFyeQ==
U3luY2hyb25pemU=
Vmlldw==
U2hvdw==
QWZmZWN0ZWQgcm93cw==
RXhlY3V0ZWQgaW46
U3RlcA==
RGVmaW5pdGlvbg==
UHJldmlldw==
U3VuZGF5
U3lzdGVt
QWRtaW5pc3RyYXRpb24gUGFuZWwgVUk=
QWR2YW5jZWQgVmlldw==
QmFja3Vw
QmFuIFJ1bGVz
QmFzZSBTdHlsZXM=
QmxvY2sgU3R5bGVz
Q2F0YWxvZw==
QnJvd3NlIFdlYnNpdGU=
U2VjdGlvbnM=
Q2hhbmdlcyBMb2c=
Rm9ybXM=
VXNlciBNYW5hZ2VtZW50
Q3VzdG9tIEZpZWxkcw==
RS1tYWlsIEV2ZW50cw==
R2VuZXJhbCBTZXR0aW5ncw==
T3V0cHV0
U2VhcmNo
R2VuZXJhbA==
Q3VzdG9t
RS1tYWlsIENvbW11bmljYXRpb24=
RS1tYWlsIExvZw==
RW1haWwgUXVldWU=
RS1tYWlsIFRlbXBsYXRlcw==
RmllbGRz
RmlsZXM=
Rm9ybXMgQ29uZmlndXJhdGlvbg==
R2VuZXJhbA==
R2VuZXJhbA==
R3JvdXBz
SGVscA==
SW1hZ2Vz
SW1wb3J0IERhdGE=
SXRlbXM=
TGFiZWxz
TG9ncyAmIFJlcG9ydHM=
TWVzc2FnZXM=
UGFja2FnZSBDb250ZW50
UGVybWlzc2lvbnM=
UGVybWlzc2lvbiBUeXBlcw==
UHJvbW8gQmxvY2tz
UHJvcGVydGllcw==
UXVlcnkgRGF0YWJhc2U=
UmVnaW9uYWw=
UmVsYXRlZCBTZWFyY2hlcw==
UmVsYXRpb25z
UmVzdG9yZQ==
Q29tbWVudHM=
U2VhcmNo
U2VhcmNoIExvZw==
UEhQIEluZm9ybWF0aW9u
U3lzdGVtIFRvb2xz
U2Vzc2lvbiBMb2c=
U2Vzc2lvbiBMb2c=
U2V0dGluZ3M=
U2hvdyBBbGw=
U2hvdyBTdHJ1Y3R1cmU=
V2Vic2l0ZSAmIENvbnRlbnQ=
QWRtaW4gU2tpbnM=
U3VtbWFyeQ==
U3lzdGVtIExvZw==
Q29uZmlndXJhdGlvbg==
VGFnIGxpYnJhcnk=
VGhlbWVz
VG9vbHM=
VXNlcnM=
R3JvdXBz
VXNlcnM=
VmlzaXRvciBMb2c=
VmlzaXRz
dGV4dA==
QWRtaW4=
QWR2YW5jZWQ=
QWxs
QXV0by1SZWZyZXNo
QmFjayB1cCBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBiYWNrdXAgZmlsZSBpczo=
SW4tUG9ydGFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHdyaXRlIHRvIHRoaXMgZGlyZWN0b3J5
VGhpcyB1dGlsaXR5IGFsbG93cyB5b3UgdG8gYmFja3VwIHlvdXIgSW4tUG9ydGFsIGRhdGFiYXNlIHNvIGl0IGNhbiBiZSByZXN0b3JlZCBhdCBsYXRlciBpbiBuZWVkZWQu
Ynl0ZXM=
Q2F0YWxvZw==
U2VjdGlvbnM=
U2VjdGlvbg==
WW91IGFyZSBhYm91dCB0byBjbGVhciBjbGlwYm9hcmQgY29udGVudCENClByZXNzIE9LIHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byByZXR1cm4gdG8gcHJldmlvdXMgc2NyZWVuLg==
Q3VzdG9tIEZpZWxkcw==
c2VjdGlvbnM=
RGF0ZS9UaW1lIFNldHRpbmdz
UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHV0aWxpdHkgYXQgeW91ciBvd24gcmlzay4gSW4tUG9ydGFsIG9yIGl0J3MgZGV2ZWxvcGVycyBjYW4gbm90IGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgY29ycnVwdCBkYXRhIG9yIGRhdGEgbG9zcy4=
RGVmYXVsdA==
RGVsZXRl
RGlzYWJsZQ==
UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHV0aWxpdHkgYXQgeW91ciBvd24gcmlzay4gSW4tUG9ydGFsIG9yIGl0J3MgZGV2ZWxvcGVycyBjYW4gbm90IGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgY29ycnVwdCBkYXRhIG9yIGRhdGEgbG9zcy4=
UGxlYXNlIG1ha2Ugc3VyZSB0byBCQUNLVVAgeW91ciBkYXRhYmFzZShzKSBiZWZvcmUgcnVubmluZyB0aGlzIHV0aWxpdHkh
RWRpdA==
RW1haWw=
Rm9sbG93aW5nIGxpbmVzIHdlcmUgTk9UIGltcG9ydGVk
RnJvbnQtRW5kIE9ubHk=
R2VuZXJhbA==
SG90
SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnM=
SW1wb3J0IFJlc3VsdHM=
SW4gRGV2ZWxvcG1lbnQ=
SW52ZXJ0
S2V5d29yZA==
TGluaw==
RGVmYXVsdCBNRVRBIGtleXdvcmRz
TWluaW11bSBwYXNzd29yZCBsZW5ndGg=
VXNlciBuYW1lIGxlbmd0aCAobWluIC0gbWF4KQ==
U2hvdyBtdWx0aXBsZQ==
TmV3
Tm9uZQ==
Tm8gUGVybWlzc2lvbg==
b3I=
UGhvbmU=
UG9wdWxhcg==
UG9wdWxhcml0eQ==
UmVhZHkgdG8gSW5zdGFsbA==
cmVjb3JkcyBhZGRlZA==
cmVjb3JkcyB1cGRhdGVk
UmVxdWlyZWQgZmllbGRz
SGVyZSB5b3UgY2FuIHJlc3RvcmUgeW91ciBkYXRhYmFzZSBmcm9tIGEgcHJldmlvdXNseSBiYWNrZWQgdXAgc25hcHNob3QuIFJlc3RvcmluZyB5b3VyIGRhdGFiYXNlIHdpbGwgZGVsZXRlIGFsbCBvZiB5b3VyIGN1cnJlbnQgZGF0YSBhbmQgbG9nIHlvdSBvdXQgb2YgdGhlIHN5c3RlbS4=
Q29tbWVudA==
Q29tbWVudHM=
TW9kdWxlIFJvb3QgU2VjdGlvbg==
U2F2ZQ==
U2VsZWN0
U2Vzc2lvbiBFeHBpcmVk
U2ltcGxl
U29ydA==
VW5zZWxlY3Q=
VXNlcg==
VXNlcnM=
VmVyc2lvbg==
Vmlldw==
QWRkaW5nIEFkbWluaXN0cmF0b3I=
QWRkaW5nIEJhbiBSdWxl
QWRkaW5nIENvdW50cnkvU3RhdGU=
QWRkaW5nIEN1c3RvbSBGaWVsZA==
QWRkaW5nIEUtbWFpbCBUZW1wbGF0ZQ==
QWRkaW5nIEZpbGU=
QWRkaW5nIEl0ZW0gRmlsdGVy
QWRkaW5nIE1haWxpbmcgTGlzdA==
QWRkaW5nIFBlcm1pc3Npb24gVHlwZQ==
QWRkaW5nIFByb21vIEJsb2Nr
QWRkaW5nIFByb21vIEJsb2NrIEdyb3Vw
QWRkaW5nIFNjaGVkdWxlZCBUYXNr
QWRkaW5nIFNpdGUgRG9tYWlu
QWRkaW5nIFNraW4=
QWRkaW5nIFNwZWxsaW5nIERpY3Rpb25hcnk=
QWRkaW5nIFN0b3AgV29yZA==
QWRkaW5nIFN5c3RlbSBFdmVudCBTdWJzY3JpcHRpb24=
QWRkaW5nIFN5c3RlbSBTZXR0aW5n
QWRkaW5nIFRoZW1lIFRlbXBsYXRl
QWRkaW5nIFRoZXNhdXJ1cw==
QWRkaW5nIEJhc2UgU3R5bGU=
QWRkaW5nIEJsb2NrIFN0eWxl
QWRkaW5nIFNlY3Rpb24=
QWRkaW5nIFNlYXJjaCBGaWVsZA==
QWRkaW5nIENNUyBCbG9jaw==
QWRkaW5nIEZvcm0=
QWRkaW5nIEZvcm0gRmllbGQ=
QWRkaW5nIEdyb3Vw
QWRkaW5nIEltYWdl
QWRkaW5nIExhbmd1YWdl
QWRkaW5nIFBocmFzZQ==
QWRkaW5nIEtleXdvcmQ=
QWRkaW5nIFJlbGF0aW9uc2hpcA==
QWRkaW5nIENvbW1lbnQ=
QWRkaW5nIFRoZW1l
QWRkaW5nIFVzZXI=
QWRkaXRpb25hbCBQZXJtaXNzaW9ucw==
QWRtaW5pc3RyYXRvcnM=
QWR2YW5jZWQ=
U2hvd2luZyBhbGwgcmVnYXJkbGVzcyBvZiBTdHJ1Y3R1cmU=
QmFzZSBTdHlsZXM=
QmxvY2sgU3R5bGVz
Qm91bmNlIFBPUDMgU2VydmVyIFNldHRpbmdz
U2VjdGlvbnM=
U2VsZWN0IHNlY3Rpb24=
Q29sdW1uIFBpY2tlcg==
Q29uZmlndXJhdGlvbg==
Q29udGFjdCBJbmZvcm1hdGlvbg==
Q291bnRyaWVzICYgU3RhdGVz
Q1NWIEV4cG9ydA==
Q1NWIEltcG9ydA==
Q3VzdG9t
Q3VzdG9tIEZpZWxkcw==
RWRpdGluZyBBZG1pbmlzdHJhdG9y
RWRpdGluZyBCYW4gUnVsZQ==
RWRpdGluZyBDaGFuZ2VzIExvZw==
Q29udGVudCBFZGl0b3IgLSBBdXRvLXNhdmVkIGF0ICVz
RWRpdGluZyBDb3VudHJ5L1N0YXRl
RWRpdGluZyBEcmFmdCAoJTIkcyk=
RWRpdGluZyBFLW1haWwgVGVtcGxhdGU=
RWRpdGluZyBGaWxl
RWRpdGluZyBJdGVtIEZpbHRlcg==
RWRpdGluZyBNZW1iZXJzaGlw
RWRpdGluZyBQZXJtaXNzaW9uIFR5cGU=
RWRpdGluZyBQcm9tbyBCbG9jaw==
RWRpdGluZyBQcm9tbyBCbG9jayBHcm91cA==
RWRpdGluZyBTY2hlZHVsZWQgVGFzaw==
RWRpdGluZyBTaXRlIERvbWFpbg==
RWRpdGluZyBTa2lu
RWRpdGluZyBTUEFNIFJlcG9ydA==
RWRpdGluZyBTcGVsbGluZyBEaWN0aW9uYXJ5
RWRpdGluZyBTdG9wIFdvcmQ=
RWRpdGluZyBTdHlsZQ==
RWRpdGluZyBTeXN0ZW0gRXZlbnQgU3Vic2NyaXB0aW9u
RWRpdGluZyBTeXN0ZW0gU2V0dGluZw==
RWRpdGluZyBUaGVtZSBGaWxl
RWRpdGluZyBUaGVzYXVydXM=
RWRpdGluZyBUcmFuc2xhdGlvbg==
RWRpdGluZyBCYXNlIFN0eWxl
RWRpdGluZyBCbG9jayBTdHlsZQ==
RWRpdGluZyBTZWN0aW9u
RWRpdGluZyBDTVMgQmxvY2s=
RWRpdGluZyBDdXN0b20gRmllbGQ=
RWRpdGluZyBGb3Jt
RWRpdGluZyBGb3JtIEZpZWxk
RWRpdGluZyBHcm91cA==
RWRpdGluZyBJbWFnZQ==
RWRpdGluZyBMYW5ndWFnZQ==
RWRpdGluZyBQaHJhc2U=
RWRpdGluZyBLZXl3b3Jk
RWRpdGluZyBSZWxhdGlvbnNoaXA=
RWRpdGluZyBDb21tZW50
RWRpdGluZyBUaGVtZQ==
RWRpdGluZyBVc2Vy
RS1tYWlsIENvbW11bmljYXRpb24=
RS1tYWlsIFNldHRpbmdz
RS1tYWlsIFRlbXBsYXRlcw==
RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBSZXN1bHRz
RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBTdGVwMQ==
RmllbGRz
RmlsZXM=
Rm9ybXM=
Rm9ybSBTdWJtaXNzaW9ucw==
R2VuZXJhbA==
R3JvdXBz
SW1hZ2Vz
SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAx
SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAy
SXRlbSBGaWx0ZXJz
SXRlbXM=
TGFiZWxz
TGFuZy4gTWFuYWdlbWVudA==
TGFuZ3VhZ2UgUGFja3M=
TGFuZ3VhZ2VzIE1hbmFnZW1lbnQ=
TG9hZGluZyAuLi4=
T3RoZXI=
UmVxdWVzdA==
U2Vzc2lvbg==
U291cmNl
TWFpbGluZ3M=
TWVzc2FnZXM=
TW9kdWxlcw==
TmV3IEUtbWFpbCBUZW1wbGF0ZQ==
TmV3IEZpbGU=
TmV3IFJlcGx5
TmV3IFNjaGVkdWxlZCBUYXNr
TmV3IFRoZW1l
TmV3IFRoZW1lIFRlbXBsYXRl
TmV3IEJhc2UgU3R5bGU=
TmV3IEJsb2NrIFN0eWxl
TmV3IFNlY3Rpb24=
TmV3IEZpZWxk
TmV3IEltYWdl
TmV3IFJlbGF0aW9uc2hpcA==
TmV3IENvbW1lbnQ=
Tm8gUGVybWlzc2lvbnM=
UGVybWlzc2lvbnM=
TGFiZWxzICYgUGhyYXNlcw==
UGxlYXNlIFdhaXQ=
UHJvbW8gQmxvY2sgR3JvdXBz
UHJvbW8gQmxvY2tz
UHJvcGVydGllcw==
UmVsYXRlZCBTZWFyY2hlcw==
UmVsYXRpb25z
UmVwbHkgUE9QMyBTZXJ2ZXIgU2V0dGluZ3M=
Q29tbWVudHM=
UnVuIFNjaGVkdWxl
UnVuIFNldHRpbmdz
U2NoZWR1bGVkIFRhc2tz
U2VsZWN0IEdyb3VwKHMp
U2VsZWN0IFVzZXI=
U2VuZCBFLW1haWw=
U2VuZGluZyBQcmVwYXJlZCBFLW1haWxz
TWFpbCBoYXMgYmVlbiBzZW50IFN1Y2Nlc3NmdWxseQ==
U2l0ZSBEb21haW5z
U1BBTSBSZXBvcnRz
U3BlbGxpbmcgRGljdGlvbmFyeQ==
U3RvcCBXb3Jkcw==
U3RydWN0dXJlICYgRGF0YQ==
U3lzdGVtIEN1c3RvbSBGaWVsZHM=
VXNlciBTdWJzY3JpcHRpb25z
U3lzdGVtIFRvb2xz
Q2xlYXIgVGVtcGxhdGVzIENhY2hl
Q29tbW9ubHkgVXNlZCBLZXlz
RGVwbG95IENoYW5nZXM=
RHVtcCBBc3NldHM=
S2V5IE5hbWU=
S2V5IFZhbHVl
TG9jYXRlIFVuaXQgQ29uZmlnIEZpbGU=
UmVidWlsZCBNdWx0aWxpbmd1YWwgRmllbGRz
UmVjb21waWxlIFRlbXBsYXRlcw==
UmVmcmVzaCBUaGVtZSBGaWxlcw==
UmVzZXQgQWRtaW4gQ29uc29sZSBTZWN0aW9ucw==
UmVzZXQgQWxsIEtleXM=
UmVzZXQgQ29uZmlncyBGaWxlcyBDYWNoZSBhbmQgUGFyc2VkIFN5c3RlbSBEYXRh
UmVzZXQgTW9kUmV3cml0ZSBDYWNoZQ==
UmVzZXQgUGFyc2VkIGFuZCBDYWNoZWQgU3lzdGVtIERhdGE=
UmVzZXQgU01TIE1lbnUgQ2FjaGU=
U2hvdyBEYXRhYmFzZSBUYWJsZSBTdHJ1Y3R1cmU=
U3luY2hyb25pemUgRGF0YWJhc2UgUmV2aXNpb25z
VGhlbWUgRmlsZXM=
VGhlc2F1cnVz
VXBkYXRpbmcgU2VjdGlvbnM=
VXNlcnM=
Vmlld2luZyBFbWFpbCBMb2c=
Vmlld2luZyBmb3JtIHN1Ym1pc3Npb24=
Vmlld2luZyBNYWlsaW5nIExpc3Q=
Vmlld2luZyBSZXBseQ==
Vmlld2luZyBSZXZpc2lvbiAjJXMgKCVzKQ==
Vmlld2luZyBTeXN0ZW0gTG9n
VmlzaXRz
V2Vic2l0ZQ==
dG8=
Q3Vyci4gU2VjdGlvbg==
RG93bg==
VXA=
QWRk
QWRkIFVzZXIgdG8gR3JvdXA=
QWRkIFVzZXIgVG8gR3JvdXA=
QXBwcm92ZQ==
QmFjaw==
Q2FuY2Vs
Q2xlYXIgQ2xpcGJvYXJk
Q2xvbmU=
Q2xvbmUgVXNlcnM=
Q2xvc2U=
Q29weQ==
Q3V0
RGVjbGluZQ==
RGVsZXRl
RGVsZXRlIEFsbA==
RGVsZXRlIFJldmlldw==
RGVsZXRlIFJlcG9ydCBPbmx5
RGVueQ==
RGV0YWlscw==
RGlzYWJsZQ==
RGlzY2FyZA==
RWRpdA==
RWRpdCBDdXJyZW50IFNlY3Rpb24=
RnJvbnQtRW5kIE9ubHk=
RW5hYmxl
RXhwb3J0
RXhwb3J0IExhbmd1YWdl
SGlkZSBNZW51
SGlzdG9yeQ==
SG9tZQ==
SW1wb3J0
SW1wb3J0IExhbmd1YWdl
TG9naW4gQXM=
TW92ZSBEb3du
TW92ZSBVcA==
TmV3IEJhc2UgU3R5bGU=
TmV3IEJsb2NrIFN0eWxl
TmV3IENvdW50cnkvU3RhdGU=
TmV3IEdyb3Vw
TmV3IGxhYmVs
TmV3IExhbmd1YWdl
TmV3IFBlcm1pc3Npb24=
TmV3IFBocmFzZQ==
TmV3IENvbW1lbnQ=
TmV3IFNjaGVkdWxlZCBUYXNr
TmV3IFNlYXJjaCBGaWVsZA==
TmV3IFNpdGUgRG9tYWlu
TmV3IFN0b3AgV29yZA==
TmV3IFN5c3RlbSBTZXR0aW5n
TmV3IFRlcm0=
TmV3IFRoZW1l
TmV3IFVzZXI=
TmV3IFNlY3Rpb24=
TmV3IEN1c3RvbSBGaWVsZA==
TmV3IEZvcm0=
TmV3IEZvcm0gRmllbGQ=
TmV3IEltYWdlcw==
QWRkIEtleXdvcmQ=
TmV3IFJlbGF0aW9u
TmV3IFRlbXBsYXRl
TmV4dA==
UGFzdGU=
UHJldmlvdXM=
UHJldmlldw==
U2V0IFByaW1hcnkgR3JvdXA=
UHJpbnQ=
UHJvY2VzcyBRdWV1ZQ==
UHVibGlzaA==
UmVidWlsZCBTZWN0aW9uIENhY2hl
UmVjYWxjdWxhdGUgUHJpb3JpdGllcw==
UmVmcmVzaA==
UmVwbHk=
UmVzY2FuIFRoZW1lcw==
UmVzZW5k
UmVzZXQ=
UmVzZXQgQ291bnRlcnM=
UmVzZXQgUGVyc2lzdGVudCBTZXR0aW5ncw==
UmVzZXQgVG8gQmFzZQ==
UnVu
UnVuIFNRTA==
U2F2ZQ==
U2F2ZSBhcyBEcmFmdA==
U2VhcmNo
UmVzZXQ=
U2VsZWN0IFVzZXI=
U2VuZA==
U2VuZCBFLW1haWw=
U2VuZCBFLW1haWw=
U2V0IFByaW1hcnk=
U2V0IFByaW1hcnkgU2VjdGlvbg==
U2V0IFByaW1hcnkgTGFuZ3VhZ2U=
U2V0IFN0aWNreQ==
U2V0dGluZ3M=
U2hvdyBNZW51
U3luY2hyb25pemUgTGFuZ3VhZ2Vz
VG9vbHM=
VXAgYSBTZWN0aW9u
VmFsaWRhdGU=
Vmlldw==
VmlldyBEZXRhaWxz
Vmlldw==
VG8gRGF0ZQ==
VHJhbnNsYXRl
VHJhbnNsYXRlZA==
VHJlZQ==
Q2hlY2tib3hlcw==
RGF0ZQ==
RGF0ZSAmIFRpbWU=
TGFiZWw=
TXVsdGlwbGUgU2VsZWN0
UGFzc3dvcmQgZmllbGQ=
UmFkaW8gYnV0dG9ucw==
UmFuZ2UgU2xpZGVy
RHJvcCBkb3duIGZpZWxk
Q2hlY2tib3g=
VGV4dCBmaWVsZA==
VGV4dCBhcmVh
RmlsZSBVcGxvYWQ=
VW5jaGFuZ2Vk
VW5pY29kZQ==
VXBkYXRpbmcgQ29uZmlndXJhdGlvbg==
VXBsb2Fk
VXNlIENyb24gdG8gcnVuIFNjaGVkdWxlZCBUYXNrcw==
QXNzaWduIGFkbWluaXN0cmF0b3JzIHRvIGdyb3Vw
QWxsb3cgbmV3IHVzZXIgcmVnaXN0cmF0aW9u
QXNzaWduIEFsbCBVc2VycyBUbyBHcm91cA==
QXNzaWduIHVzZXJzIG5vdCBsb2dnZWQgaW4gdG8gZ3JvdXA=
QXNzaWduIHJlZ2lzdGVyZWQgdXNlcnMgdG8gZ3JvdXA=
QXNzaWduIHBhc3N3b3JkIGF1dG9tYXRpY2FsbHk=
QXNzaWduIG1haWxpbmcgbGlzdCBzdWJzY3JpYmVycyB0byBncm91cA==
VVMvVUs=
RS1tYWlsIGFkZHJlc3M=
VmFsdWU=
RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw==
V2FybmluZzogRW5hYmxpbmcgSFRNTCBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIGNvdWxkIGRhbWFnZSB0aGUgc3lzdGVtIGlmIHVzZWQgaW1wcm9wZXJseSE=
QSBzZWFyY2ggb3IgYSBmaWx0ZXIgaXMgaW4gZWZmZWN0LiBZb3UgbWF5IG5vdCBiZSBzZWVpbmcgYWxsIG9mIHRoZSBkYXRhLg==
T25lIG9yIG1vcmUgZmllbGRzIG9uIHRoaXMgZm9ybSBoYXMgYW4gZXJyb3IuPGJyLz4NCjxzbWFsbD5QbGVhc2UgbW92ZSB5b3VyIG1vdXNlIG92ZXIgdGhlIGZpZWxkcyBtYXJrZWQgd2l0aCByZWQgdG8gc2VlIHRoZSBlcnJvciBkZXRhaWxzLjwvc21hbGw+
TW9kaWZpY2F0aW9ucyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB5b3UgY2xpY2sgdGhlIFNhdmUgYnV0dG9uIQ==
d2Vlaw==
V2luZG93cw==
eWVhcg==
WWVz
U3ViLXNlY3Rpb25zIFF1YW50aXR5
TmF2aWdhdGlvbiBCYXI=
UmF0aW5n
TnVtYmVyIG9mIFJldmlld3M=
TnVtYmVyIG9mIFJhdGluZyBWb3Rlcw==
U2VjdGlvbiBJRA==
Q3JlYXRlZCBCeSBVc2VyIElE
RGF0ZSBDcmVhdGVk
RGVzY3JpcHRpb24=
RWRpdG9ycyBQaWNr
SGl0cw==
SXRlbSBJcyBIb3Q=
TGluayBJRA==
TWV0YSBEZXNjcmlwdGlvbg==
TWV0YSBLZXl3b3Jkcw==
TGFzdCBNb2RpZmllZCBEYXRl
TW9kaWZpZWQgQnkgVXNlciBJRA==
TmFtZQ==
SXRlbSBJcyBOZXc=
Tm90aWZ5IE93bmVyIG9mIENoYW5nZXM=
T3JpZ2luYWwgSXRlbSBJRA==
T3duZXIgVXNlciBJRA==
UGFnZSBDb250ZW50
UGFyZW50IElE
UGFyZW50IFBhdGg=
SXRlbSBJcyBQb3B1bGFy
UHJpb3JpdHk=
UXR5IFNvbGQ=
UmVzb3VyY2UgSUQ=
U3RhdHVz
SXRlbSBJcyBhIFRvcCBTZWxsZXI=
VVJM
RW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCB1bmRvIGFueSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUgdG8gZXhpc3RpbmcgcGhyYXNlcw==
b2Y=
SW52YWxpZA==
Tm90IFZhbGlkYXRlZA==
VmFsaWQ=
TmV3IENhdGVnb3J5ICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIC0gQWRkZWQ=
WW91ciBzdWdnZXN0ZWQgY2F0ZWdvcnkgIjxpbnAyOmNfRmllbGQgbmFtZT0iTmFtZSIvPiIgaGFzIGJlZW4gYWRkZWQu
TmV3IENhdGVnb3J5ICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIFN1Ym1pdHRlZCBieSBVc2Vycw==
QSBjYXRlZ29yeSAiPGlucDI6Y19GaWVsZCBuYW1lPSJOYW1lIi8+IiBoYXMgYmVlbiBhZGRlZC4=
U3VnZ2VzdGVkIENhdGVnb3J5ICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIGlzIFBlbmRpbmc=
VGhlIGNhdGVnb3J5IHlvdSBzdWdnZXN0ZWQgIjxpbnAyOmNfRmllbGQgbmFtZT0iTmFtZSIvPiIgaXMgcGVuZGluZyBmb3IgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWwuDQoNClRoYW5rIHlvdSE=
U3VnZ2VzdGVkIENhdGVnb3J5ICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIGlzIFBlbmRpbmc=
QSBjYXRlZ29yeSAiPGlucDI6Y19GaWVsZCBuYW1lPSJOYW1lIi8+IiBoYXMgYmVlbiBhZGRlZCwgcGVuZGluZyB5b3VyIGNvbmZpcm1hdGlvbi4gIFBsZWFzZSByZXZpZXcgdGhlIGNhdGVnb3J5IGFuZCBhcHByb3ZlIG9yIGRlbnkgaXQu
QSBjYXRlZ29yeSBoYXMgYmVlbiBhcHByb3ZlZA==
WW91ciBzdWdnZXN0ZWQgY2F0ZWdvcnkgIjxpbnAyOmNfRmllbGQgbmFtZT0iTmFtZSIvPiIgaGFzIGJlZW4gYXBwcm92ZWQu
WW91ciBDYXRlZ29yeSAiPGlucDI6Y19GaWVsZCBuYW1lPSJOYW1lIi8+IiBoYXMgYmVlbiBEZW5pZWQ=
WW91ciBjYXRlZ29yeSBzdWdnZXN0aW9uICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIGhhcyBiZWVuIGRlbmllZC4=
TmV3IEVtYWlsIFJFUExZIFJlY2VpdmVkIGluICJGZWVkYmFjayBNYW5hZ2VyIiAoPGlucDI6Zm9ybXN1YnMuLWl0ZW1fRmllbGQgbmFtZT0iRm9ybVN1Ym1pc3Npb25JZCIvPik=
TmV3IEVtYWlsIFJFUExZIFJlY2VpdmVkIGluICZxdW90O0ZlZWRiYWNrIE1hbmFnZXImcXVvdDsuPGJyIC8+DQo8YnIgLz4NCk9yaWdpbmFsIEZlZWRiYWNrSWQ6IDxpbnAyOmZvcm1zdWJzLi1pdGVtX0ZpZWxkIG5hbWU9IkZvcm1TdWJtaXNzaW9uSWQiLz4gPGJyIC8+DQpPcmlnaW5hbCBTdWJqZWN0OiA8aW5wMjpmb3Jtc3Vicy4taXRlbV9Gb3JtRmllbGQgcm9sZT0ic3ViamVjdCIvPiA8YnIgLz4NCjxiciAvPg0KUGxlYXNlIHByb2NlZWQgdG8gdGhlIEFkbWluIENvbnNvbGUgaW4gb3JkZXIgdG8gcmV2aWV3IGFuZCByZXBseSB0byB0aGUgdXNlci4=
TmV3IEVtYWlsIC0gRGVsaXZlcnkgRmFpbHVyZSBSZWNlaXZlZCBpbiAiRmVlZGJhY2sgTWFuYWdlciIgKDxpbnAyOmZvcm1zdWJzLi1pdGVtX0ZpZWxkIG5hbWU9IkZvcm1TdWJtaXNzaW9uSWQiLz4p
TmV3IEVtYWlsIERlbGl2ZXJ5IEZhaWx1cmUgUmVjZWl2ZWQgaW4gJnF1b3Q7RmVlZGJhY2sgTWFuYWdlciZxdW90Oy48YnIgLz4NCjxiciAvPg0KT3JpZ2luYWwgRmVlZGJhY2tJZDogPGlucDI6Zm9ybXN1YnMuLWl0ZW1fRmllbGQgbmFtZT0iRm9ybVN1Ym1pc3Npb25JZCIvPiA8YnIgLz4NCk9yaWdpbmFsIFN1YmplY3Q6IDxpbnAyOmZvcm1zdWJzLi1pdGVtX0Zvcm1GaWVsZCByb2xlPSJzdWJqZWN0Ii8+IDxiciAvPg0KPGJyIC8+DQpQbGVhc2UgcHJvY2VlZCB0byB0aGUgQWRtaW4gQ29uc29sZSBpbiBvcmRlciB0byByZXZpZXcgYW5kIHJlcGx5IHRvIHRoZSB1c2VyLg==
PGlucDI6bV9QYXJhbSBuYW1lPSJzdWJqZWN0Ii8+ICN2ZXJpZnk8aW5wMjpzdWJtaXNzaW9uLWxvZ19GaWVsZCBuYW1lPSJWZXJpZnlDb2RlIi8+
PGlucDI6bV9QYXJhbSBuYW1lPSJtZXNzYWdlIi8+
VGhhbmsgWW91IGZvciBDb250YWN0aW5nIFVzIQ==
PHA+VGhhbmsgeW91IGZvciBjb250YWN0aW5nIHVzLiBXZSdsbCBiZSBpbiB0b3VjaCB3aXRoIHlvdSBzaG9ydGx5ITwvcD4=
TmV3IGZvcm0gc3VibWlzc2lvbg==
PHA+Rm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQuIFBsZWFzZSBwcm9jZWVkIHRvIHRoZSBBZG1pbiBDb25zb2xlIHRvIHJldmlldyB0aGUgc3VibWlzc2lvbiE8L3A+
Um9vdCBSZXNldCBQYXNzd29yZA==
WW91ciBuZXcgcGFzc3dvcmQgaXM6IDxpbnAyOm1fUGFyYW0gbmFtZT0icGFzc3dvcmQiLz4=
U3lzdGVtIExvZyBOb3RpZmljYXRpb25zICg8aW5wMjpzeXN0ZW0tbG9nLmVtYWlsX1RvdGFsUmVjb3Jkcy8+KQ==
PGlucDI6bV9EZWZpbmVFbGVtZW50IG5hbWU9ImJhY2t0cmFjZV9lbGVtZW50Ij4NCgk8bGk+PGlucDI6bV9QaHJhc2UgbmFtZT0ibGFfTG9nQmFja3RyYWNlRnVuY3Rpb24iLz46IDxpbnAyOm1fUGFyYW0gbmFtZT0iZmlsZV9pbmZvIi8+PC9saT4NCjwvaW5wMjptX0RlZmluZUVsZW1lbnQ+DQoNCjxpbnAyOm1fRGVmaW5lRWxlbWVudCBuYW1lPSJzeXN0ZW1fbG9nX2VsZW1lbnQiPg0KCTxoND48aW5wMjpGaWVsZCBuYW1lPSJMb2dUaW1lc3RhbXAiIGZvcm1hdD0iTSBkIEg6aTpzIi8+IDxpbnAyOkZpZWxkIG5hbWU9IkxvZ0hvc3RuYW1lIi8+IDxpbnAyOlJlcXVlc3RVUkkgaHRtbF9lc2NhcGU9IjEiLz5bUElEPTxpbnAyOkZpZWxkIG5hbWU9IkxvZ1Byb2Nlc3NJZCIvPixVSUQ9PGlucDI6RmllbGQgbmFtZT0iTG9nVW5pcXVlSWQiLz5dPC9oND4NCglbPGlucDI6RmllbGQgbmFtZT0iTG9nTGV2ZWwiLz5dICM8aW5wMjpGaWVsZCBuYW1lPSJMb2dDb2RlIi8+OiA8aW5wMjpGaWVsZCBuYW1lPSJMb2dNZXNzYWdlIiBub19zcGVjaWFsPSIxIi8+IGluIDxpbnAyOkZpbGVuYW1lLz4gb24gbGluZSA8aW5wMjpGaWVsZCBuYW1lPSJMb2dTb3VyY2VGaWxlTGluZSIvPjxici8+DQoNCgk8aW5wMjptX2lmIGNoZWNrPSJGaWVsZCIgbmFtZT0iTG9nQmFja3RyYWNlIiBkYj0iZGIiPg0KCQk8YnIvPkJhY2t0cmFjZToNCg0KCQk8b2wgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiAyNXB4OyBmb250LXNpemU6IDEycHg7Ij4NCgkJCTxpbnAyOlByaW50QmFja3RyYWNlIHJlbmRlcl9hcz0iYmFja3RyYWNlX2VsZW1lbnQiLz4NCgkJPC9vbD4NCgk8L2lucDI6bV9pZj4NCg0KCTxpbnAyOm1faWZub3QgY2hlY2s9Im1fUGFyYW0iIG5hbWU9ImlzX2xhc3QiPjxoci8+PC9pbnAyOm1faWZub3Q+DQo8L2lucDI6bV9EZWZpbmVFbGVtZW50Pg0KDQo8aW5wMjpzeXN0ZW0tbG9nLmVtYWlsX1ByaW50TGlzdCByZW5kZXJfYXM9InN5c3RlbV9sb2dfZWxlbWVudCIvPg==
PGlucDI6bV9EZWZpbmVFbGVtZW50IG5hbWU9ImJhY2t0cmFjZV9wbGFpbl9lbGVtZW50Ij4NCjxpbnAyOkJhY2t0cmFjZUluZGV4Lz4uIDxpbnAyOm1fUGhyYXNlIG5hbWU9ImxhX0xvZ0JhY2t0cmFjZUZ1bmN0aW9uIi8+OiA8aW5wMjptX1BhcmFtIG5hbWU9ImZpbGVfaW5mbyIvPg0KPGlucDI6bV9pZm5vdCBjaGVjaz0ibV9QYXJhbSIgbmFtZT0iaXNfbGFzdCI+DQoNCjwvaW5wMjptX2lmbm90Pg0KPC9pbnAyOm1fRGVmaW5lRWxlbWVudD4NCjxpbnAyOm1fRGVmaW5lRWxlbWVudCBuYW1lPSJzeXN0ZW1fbG9nX3BsYWluX2VsZW1lbnQiPg0KPGlucDI6RmllbGQgbmFtZT0iTG9nVGltZXN0YW1wIiBmb3JtYXQ9Ik0gZCBIOmk6cyIvPiA8aW5wMjpGaWVsZCBuYW1lPSJMb2dIb3N0bmFtZSIvPiA8aW5wMjpSZXF1ZXN0VVJJLz5bUElEPTxpbnAyOkZpZWxkIG5hbWU9IkxvZ1Byb2Nlc3NJZCIvPixVSUQ9PGlucDI6RmllbGQgbmFtZT0iTG9nVW5pcXVlSWQiLz5dDQpbPGlucDI6RmllbGQgbmFtZT0iTG9nTGV2ZWwiLz5dICM8aW5wMjpGaWVsZCBuYW1lPSJMb2dDb2RlIi8+OiA8aW5wMjpGaWVsZCBuYW1lPSJMb2dNZXNzYWdlIiBub19zcGVjaWFsPSIxIi8+IGluIDxpbnAyOkZpbGVuYW1lLz4gb24gbGluZSA8aW5wMjpGaWVsZCBuYW1lPSJMb2dTb3VyY2VGaWxlTGluZSIvPg0KPGlucDI6bV9pZiBjaGVjaz0iRmllbGQiIG5hbWU9IkxvZ0JhY2t0cmFjZSIgZGI9ImRiIj4NCg0KQmFja3RyYWNlOg0KPGlucDI6UHJpbnRCYWNrdHJhY2UgcmVuZGVyX2FzPSJiYWNrdHJhY2VfcGxhaW5fZWxlbWVudCIgc3RyaXBfdGFncz0iMSIvPjwvaW5wMjptX2lmPg0KPGlucDI6bV9pZm5vdCBjaGVjaz0ibV9QYXJhbSIgbmFtZT0iaXNfbGFzdCI+DQotLS0tLS0tLS0tLS0tDQoNCjwvaW5wMjptX2lmbm90Pg0KPC9pbnAyOm1fRGVmaW5lRWxlbWVudD4NCjxpbnAyOnN5c3RlbS1sb2cuZW1haWxfUHJpbnRMaXN0IHJlbmRlcl9hcz0ic3lzdGVtX2xvZ19wbGFpbl9lbGVtZW50Ii8+
SW4tcG9ydGFsIHJlZ2lzdHJhdGlvbg==
RGVhciA8aW5wMjp1LnJlZ2lzdGVyX0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIgLz4gPGlucDI6dS5yZWdpc3Rlcl9GaWVsZCBuYW1lPSJMYXN0TmFtZSIgLz4sDQoNClRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgb24gPGlucDI6bV9MaW5rIHRlbXBsYXRlPSJpbmRleCIvPi4gWW91ciByZWdpc3RyYXRpb24gaXMgbm93IGFjdGl2ZS4NCjxpbnAyOm1faWYgY2hlY2s9InUucmVnaXN0ZXJfRmllbGQiIG5hbWU9IkVtYWlsIj4NCjxici8+PGJyLz4NClBsZWFzZSBjbGljayBoZXJlIHRvIHZlcmlmeSB5b3VyIEUtbWFpbCBhZGRyZXNzOg0KPGEgaHJlZj0iPGlucDI6dS5yZWdpc3Rlcl9Db25maXJtUGFzc3dvcmRMaW5rIHQ9InBsYXRmb3JtL215X2FjY291bnQvdmVyaWZ5X2VtYWlsIiBub19hbXA9IjEiLz4iPjxpbnAyOnUucmVnaXN0ZXJfQ29uZmlybVBhc3N3b3JkTGluayB0PSJwbGF0Zm9ybS9teV9hY2NvdW50L3ZlcmlmeV9lbWFpbCIgbm9fYW1wPSIxIi8+PC9hPjxici8+PGJyLz4NCjwvaW5wMjptX2lmPg==
TmV3IFVzZXIgUmVnaXN0cmF0aW9uICg8aW5wMjp1LnJlZ2lzdGVyX1VzZXJUaXRsZS8+KQ==
QSBuZXcgdXNlciAiPGlucDI6dS5yZWdpc3Rlcl9Vc2VyVGl0bGUvPiIgaGFzIGJlZW4gYWRkZWQu
TmV3IHVzZXIgaGFzIGJlZW4gY3JlYXRlZA==
RGVhciA8aW5wMjp1X0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIvPiwNCg0KQSBuZXcgdXNlciBoYXMgYmVlbiBjcmVhdGVkIGFuZCBhc3NpZ25lZCB0byB5b3UNCg0KTm93IHlvdSBjYW4gbG9naW4gdXNpbmcgdGhlIGZvbGxvd2luZyBjcmVkZW50aWFsczoNCg0KPGlucDI6bV9pZiBjaGVjaz0idV9GaWVsZCIgbmFtZT0iVXNlcm5hbWUiPlVzZXJuYW1lOiA8aW5wMjp1X0ZpZWxkIG5hbWU9IlVzZXJuYW1lIi8+PGlucDI6bV9lbHNlLz5FLW1haWw6IDxpbnAyOnVfRmllbGQgbmFtZT0iRW1haWwiLz48L2lucDI6bV9pZj4gDQpQYXNzd29yZDogPGlucDI6dV9GaWVsZCBuYW1lPSJQYXNzd29yZF9wbGFpbiIvPiANCg==
TmV3IFVzZXIgUmVnaXN0cmF0aW9uICg8aW5wMjp1LnJlZ2lzdGVyX1VzZXJUaXRsZS8+PGlucDI6bV9pZiBjaGVjaz0ibV9HZXRDb25maWciIG5hbWU9IlVzZXJfQWxsb3dfTmV3IiBlcXVhbHNfdG89IjQiPiAtIEFjdGl2YXRpb24gRW1haWw8L2lucDI6bV9pZj4p
RGVhciA8aW5wMjp1LnJlZ2lzdGVyX0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIgLz4gPGlucDI6dS5yZWdpc3Rlcl9GaWVsZCBuYW1lPSJMYXN0TmFtZSIgLz4sPGJyIC8+DQo8YnIgLz4NCjxpbnAyOm1faWYgY2hlY2s9Im1fR2V0Q29uZmlnIiBuYW1lPSJVc2VyX0FsbG93X05ldyIgZXF1YWxzX3RvPSI0Ij4NCglUaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIG9uIDxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz4gd2Vic2l0ZS4gVG8gYWN0aXZhdGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGZvbGxvdyBsaW5rIGJlbG93LiA8aW5wMjp1LnJlZ2lzdGVyX0FjdGl2YXRpb25MaW5rIHRlbXBsYXRlPSJwbGF0Zm9ybS9sb2dpbi9hY3RpdmF0ZV9jb25maXJtIi8+DQo8aW5wMjptX2Vsc2UvPg0KCVRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgb24gPGlucDI6bV9MaW5rIHRlbXBsYXRlPSJpbmRleCIvPiB3ZWJzaXRlLiBZb3VyIHJlZ2lzdHJhdGlvbiB3aWxsIGJlIGFjdGl2ZSBhZnRlciBhcHByb3ZhbC4gDQoJDQoJPGlucDI6bV9pZiBjaGVjaz0idS5yZWdpc3Rlcl9GaWVsZCIgbmFtZT0iRW1haWwiPg0KCQk8YnIvPjxici8+DQoJCVBsZWFzZSBjbGljayBoZXJlIHRvIHZlcmlmeSB5b3VyIEUtbWFpbCBhZGRyZXNzOg0KCQk8YSBocmVmPSI8aW5wMjp1LnJlZ2lzdGVyX0NvbmZpcm1QYXNzd29yZExpbmsgdD0icGxhdGZvcm0vbXlfYWNjb3VudC92ZXJpZnlfZW1haWwiIG5vX2FtcD0iMSIvPiI+PGlucDI6dS5yZWdpc3Rlcl9Db25maXJtUGFzc3dvcmRMaW5rIHQ9InBsYXRmb3JtL215X2FjY291bnQvdmVyaWZ5X2VtYWlsIiBub19hbXA9IjEiLz48L2E+PGJyLz48YnIvPg0KCTwvaW5wMjptX2lmPg0KPC9pbnAyOm1faWY+
TmV3IFVzZXIgUmVnaXN0ZXJlZA==
QSBuZXcgdXNlciAiPGlucDI6dS5yZWdpc3Rlcl9Vc2VyVGl0bGUvPiIgaGFzIHJlZ2lzdGVyZWQgYW5kIGlzIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWwu
WW91ciBBY2NvdW50IGlzIEFjdGl2ZQ==
V2VsY29tZSB0byA8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+IQ0KDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkLiBZb3VyIHVzZXIgbmFtZSBpczogIjxpbnAyOnVfVXNlclRpdGxlLz4iLg==
TmV3IFVzZXIgQWNjb3VudCAiPGlucDI6dV9Vc2VyVGl0bGUvPiIgd2FzIEFwcHJvdmVk
VXNlciAiPGlucDI6dV9Vc2VyVGl0bGUvPiIgaGFzIGJlZW4gYXBwcm92ZWQu
WW91ciBSZWdpc3RyYXRpb24gaGFzIGJlZW4gRGVuaWVk
WW91ciByZWdpc3RyYXRpb24gb24gPGEgaHJlZj0iPGlucDI6bV9MaW5rIHRlbXBsYXRlPSJpbmRleCIvPiI+PGlucDI6bV9MaW5rIHRlbXBsYXRlPSJpbmRleCIvPjwvYT4gd2Vic2l0ZSBoYXMgYmVlbiBkZW5pZWQu
VXNlciBSZWdpc3RyYXRpb24gZm9yICAiPGlucDI6dV9Vc2VyVGl0bGUvPiIgaGFzIGJlZW4gRGVuaWVk
VXNlciAiPGlucDI6dV9Vc2VyVGl0bGUvPiIgaGFzIGJlZW4gZGVuaWVkLg==
Q2hhbmdlZCBFLW1haWwgUm9sbGJhY2s=
SGVsbG8sPGJyLz48YnIvPg0KDQpJdCBzZWVtcyB0aGF0IHlvdSBoYXZlIGNoYW5nZWQgZS1tYWlsIGluIHlvdXIgSW4tcG9ydGFsIGFjY291bnQuIFlvdSBtYXkgdW5kbyB0aGlzIGNoYW5nZSBieSBjbGlja2luZyBvbiB0aGUgbGluayBiZWxvdzo8YnIvPjxici8+DQoNCjxhIGhyZWY9IjxpbnAyOnVfVW5kb0VtYWlsQ2hhbmdlTGluayB0ZW1wbGF0ZT0icGxhdGZvcm0vbXlfYWNjb3VudC9yZXN0b3JlX2VtYWlsIi8+Ij48aW5wMjp1X1VuZG9FbWFpbENoYW5nZUxpbmsgdGVtcGxhdGU9InBsYXRmb3JtL215X2FjY291bnQvcmVzdG9yZV9lbWFpbCIvPjwvYT48YnIvPjxici8+DQoNCklmIHlvdSBiZWxpZXZlIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgZW1haWwgaW4gZXJyb3IsIHBsZWFzZSBpZ25vcmUgdGhpcyBlbWFpbC4gWW91ciBhY2NvdW50IHdpbGwgYmUgbGlua2VkIHRvIGFub3RoZXIgZS1tYWlsIHVubGVzcyB5b3UgaGF2ZSBjbGlja2VkIG9uIHRoZSBhYm92ZSBsaW5rLg==
Q2hhbmdlZCBFLW1haWwgVmVyaWZpY2F0aW9u
SGVsbG8sPGJyLz48YnIvPg0KDQpJdCBzZWVtcyB0aGF0IHlvdSBoYXZlIGNoYW5nZWQgZS1tYWlsIGluIHlvdXIgSW4tcG9ydGFsIGFjY291bnQuIFBsZWFzZSB2ZXJpZnkgdGhpcyBuZXcgZS1tYWlsIGJ5IGNsaWNraW5nIG9uIHRoZSBsaW5rIGJlbG93Ojxici8+PGJyLz4NCg0KPGEgaHJlZj0iPGlucDI6dV9Db25maXJtUGFzc3dvcmRMaW5rIHQ9InBsYXRmb3JtL215X2FjY291bnQvdmVyaWZ5X2VtYWlsIiBub19hbXA9IjEiLz4iPjxpbnAyOnVfQ29uZmlybVBhc3N3b3JkTGluayB0PSJwbGF0Zm9ybS9teV9hY2NvdW50L3ZlcmlmeV9lbWFpbCIgbm9fYW1wPSIxIi8+PC9hPjxici8+PGJyLz4NCg0KSWYgeW91IGJlbGlldmUgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBlbWFpbCBpbiBlcnJvciwgcGxlYXNlIGlnbm9yZSB0aGlzIGVtYWlsLiBZb3VyIGVtYWlsIHdpbGwgbm90IGdldCB2ZXJpZmllZCBzdGF0dXMgdW5sZXNzIHlvdSBoYXZlIGNsaWNrZWQgb24gdGhlIGFib3ZlIGxpbmsuDQo=
TWVtYmVyc2hpcCBFeHBpcmF0aW9uIE5vdGljZQ==
WW91ciBtZW1iZXJzaGlwIG9uIDxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz4gd2Vic2l0ZSB3aWxsIHNvb24gZXhwaXJlLg==
TWVtYmVyc2hpcCBFeHBpcmF0aW9uIE5vdGljZSBmb3IgIjxpbnAyOnVfVXNlclRpdGxlLz4iIFNlbnQ=
VXNlciA8aW5wMjp1X1VzZXJUaXRsZS8+IG1lbWJlcnNoaXAgd2lsbCBleHBpcmUgc29vbi4=
WW91ciBNZW1iZXJzaGlwIEV4cGlyZWQ=
WW91ciBtZW1iZXJzaGlwIG9uIDxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz4gd2Vic2l0ZSBoYXMgZXhwaXJlZC4=
VXNlcidzIE1lbWJlcnNoaXAgRXhwaXJlZCAgKCA8aW5wMjp1X1VzZXJUaXRsZS8+KQ==
VXNlcidzICg8aW5wMjp1X1VzZXJUaXRsZS8+KSBtZW1iZXJzaGlwIG9uIDxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz4gd2Vic2l0ZSBoYXMgZXhwaXJlZC4=
TmV3IHBhc3N3b3JkIGdlbmVyYXRlZA==
RGVhciA8aW5wMjp1X0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIvPiwNCg0KQSBuZXcgcGFzc3dvcmQgaGFzIGJlZW4gZ2VuZXJhdGVkIGZvciB5b3VyIHVzZXIuDQoNCk5vdyB5b3UgY2FuIGxvZ2luIHVzaW5nIHRoZSBmb2xsb3dpbmcgY3JlZGVudGlhbHM6DQoNCjxpbnAyOm1faWYgY2hlY2s9InVfRmllbGQiIG5hbWU9IlVzZXJuYW1lIj5Vc2VybmFtZTogPGlucDI6dV9GaWVsZCBuYW1lPSJVc2VybmFtZSIvPjxpbnAyOm1fZWxzZS8+RS1tYWlsOiA8aW5wMjp1X0ZpZWxkIG5hbWU9IkVtYWlsIi8+PC9pbnAyOm1faWY+IA0KUGFzc3dvcmQ6IDxpbnAyOnVfRmllbGQgbmFtZT0iUGFzc3dvcmRfcGxhaW4iLz4g
UmVzZXQgUGFzc3dvcmQgQ29uZmlybWF0aW9u
SGVsbG8sPGJyLz48YnIvPg0KDQpJdCBzZWVtcyB0aGF0IHlvdSBoYXZlIHJlcXVlc3RlZCBhIHBhc3N3b3JkIHJlc2V0IGZvciB5b3VyIEluLXBvcnRhbCBhY2NvdW50LiBJZiB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHBhc3N3b3JkLCBwbGVhc2UgY2xpY2sgb24gdGhlIGxpbmsgYmVsb3c6PGJyLz48YnIvPg0KDQo8YSBocmVmPSI8aW5wMjp1X0NvbmZpcm1QYXNzd29yZExpbmsgbm9fYW1wPSIxIi8+Ij48aW5wMjp1X0NvbmZpcm1QYXNzd29yZExpbmsgbm9fYW1wPSIxIi8+PC9hPjxici8+PGJyLz4NCg0KWW91IHdpbGwgcmVjZWl2ZSBhIHNlY29uZCBlbWFpbCB3aXRoIHlvdXIgbmV3IHBhc3N3b3JkIHNob3J0bHkuPGJyLz48YnIvPg0KDQpJZiB5b3UgYmVsaWV2ZSB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGVtYWlsIGluIGVycm9yLCBwbGVhc2UgaWdub3JlIHRoaXMgZW1haWwuIFlvdXIgcGFzc3dvcmQgd2lsbCBub3QgYmUgY2hhbmdlZCB1bmxlc3MgeW91IGhhdmUgY2xpY2tlZCBvbiB0aGUgYWJvdmUgbGluay4NCg==
U3Vic2NyaWJlZCB0byBhIE1haWxpbmcgTGlzdCBvbiA8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+
WW91IGhhdmUgc3Vic2NyaWJlZCB0byBhIG1haWxpbmcgbGlzdCBvbiA8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+IHdlYnNpdGUu
TmV3IFVzZXIgaGFzIFN1YnNjcmliZWQgdG8gYSBNYWxsaW5nIExpc3Q=
TmV3IHVzZXIgPGlucDI6dV9GaWVsZCBuYW1lPSJFbWFpbCIvPiBoYXMgc3Vic2NyaWJlZCB0byBhIG1haWxpbmcgbGlzdCBvbiA8YSBocmVmPSI8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+Ij48aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+PC9hPiB3ZWJzaXRlLg==
Q2hlY2sgb3V0IHRoaXMgV2Vic2l0ZQ==
SGVsbG8sPC9icj48L2JyPg0KDQpUaGlzIG1lc3NhZ2UgaGFzIGJlZW4gc2VudCB0byB5b3UgZnJvbSBvbmUgb2YgeW91ciBmcmllbmRzLjwvYnI+PC9icj4NCkNoZWNrIG91dCB0aGlzIHNpdGU6IDxhIGhyZWY9IjxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz4iPjxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz48L2E+IQ==
V2Vic2l0ZSBTdWdnZXN0ZWQgdG8gYSBGcmllbmQ=
QSB2aXNpdG9yIHN1Z2dlc3RlZCA8YSBocmVmPSI8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+Ij48aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+PC9hPiB3ZWJzaXRlIHRvIGEgZnJpZW5kLg==
WW91IGhhdmUgYmVlbiB1bnN1YnNjcmliZWQ=
WW91IGhhdmUgc3VjY2Vzc2Z1bGx5IHVuc3Vic2NyaWJlZCBmcm9tIHRoZSBtYWlsaW5nIGxpc3Qgb24gPGEgaHJlZj0iPGlucDI6bV9CYXNlVXJsIC8+Ij48aW5wMjptX0Jhc2VVcmwgLz48L2E+IHdlYnNpdGUu
VXNlciBVbnN1YnNyaWJlZCBmcm9tIE1haWxpbmcgTGlzdA==
QSB1c2VyICI8aW5wMjp1X0ZpZWxkIG5hbWU9IkVtYWlsIi8+IiBoYXMgdW5zdWJzY3JpYmVkIGZyb20gdGhlIG1haWxpbmcgbGlzdCBvbiA8YSBocmVmPSI8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+Ij48aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+PC9hPi4=
VXNlciBSZWdpc3RyYXRpb24gaXMgVmFsaWRhdGVk
V2VsY29tZSB0byBJbi1wb3J0YWwhPGJyLz48YnIvPg0KDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkLiBZb3UgY2FuIGxvZ2luIG5vdyA8YSBocmVmPSI8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+Ij48aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+PC9hPiB1c2luZyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjxici8+PGJyLz4NCg0KPT09PT09PT09PT09PT09PT09PGJyLz4NClVzZXJuYW1lOiAiPGlucDI6dV9Vc2VyVGl0bGUvPiI8YnIvPg0KUGFzc3dvcmQ6ICI8aW5wMjp1X0ZpZWxkIG5hbWU9IlBhc3N3b3JkX3BsYWluIi8+Ijxici8+DQo9PT09PT09PT09PT09PT09PT08YnIvPjxici8+DQo=
TmV3IFVzZXIgUmVnaXN0cmF0aW9uIGlzIFZhbGlkYXRlZA==
VXNlciAiPGlucDI6dV9Vc2VyVGl0bGUvPiIgaGFzIGJlZW4gdmFsaWRhdGVkLg==