Index: trunk/core/kernel/startup.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/kernel/startup.php (.../startup.php) (revision 7391) +++ trunk/core/kernel/startup.php (.../startup.php) (revision 7855) @@ -31,8 +31,8 @@ $vars = parse_portal_ini(FULL_PATH.'/config.php'); - define('APPLICATION_CLASS', isset($vars['ApplicationClass']) ? $vars['ApplicationClass'] : 'kApplication'); - define('APPLICATION_PATH', isset($vars['ApplicationPath']) ? $vars['ApplicationPath'] : '/core/kernel/application.php'); + safeDefine('APPLICATION_CLASS', isset($vars['ApplicationClass']) ? $vars['ApplicationClass'] : 'kApplication'); + safeDefine('APPLICATION_PATH', isset($vars['ApplicationPath']) ? $vars['ApplicationPath'] : '/core/kernel/application.php'); if (isset($vars['WriteablePath'])) { define('WRITEABLE', FULL_PATH.$vars['WriteablePath']); @@ -85,8 +85,8 @@ include_once(KERNEL_PATH.'/utility/debugger.php'); $debugger_end = getmicrotime(); if (isset($debugger) && constOn('DBG_PROFILE_INCLUDES')) { -// $debugger->profileStart('inc_globals', KERNEL_PATH.'/globals.php', $globals_start); -// $debugger->profileFinish('inc_globals', KERNEL_PATH.'/globals.php', $globals_end); + $debugger->profileStart('inc_globals', KERNEL_PATH.'/globals.php', $globals_start); + $debugger->profileFinish('inc_globals', KERNEL_PATH.'/globals.php', $globals_end); $debugger->profilerAddTotal('includes', 'inc_globals'); $debugger->profileStart('inc_debugger', KERNEL_PATH.'/utility/debugger.php', $debugger_start); Index: trunk/core/admin_templates/regional/languages_list.tpl =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/regional/languages_list.tpl (.../languages_list.tpl) (revision 7635) +++ trunk/core/admin_templates/regional/languages_list.tpl (.../languages_list.tpl) (revision 7855) @@ -1,6 +1,6 @@ - + Index: trunk/core/kernel/db/dbitem.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/db/dbitem.php (.../dbitem.php) (revision 7635) +++ trunk/core/kernel/db/dbitem.php (.../dbitem.php) (revision 7855) @@ -323,7 +323,7 @@ { $skip = false; $skip = $skip || ( isset($this->VirtualFields[$field_name]) ); //skipping 'virtual' field - $skip = $skip || ( !getArrayValue($this->FieldValues, $field_name) && getArrayValue($this->Fields[$field_name], 'skip_empty') ); //skipping 'virtual' field + $skip = $skip || ( !getArrayValue($this->FieldValues, $field_name) && getArrayValue($this->Fields[$field_name], 'skip_empty') ); //skipping marked field with 'skip_empty' // $skip = $skip || ($field_name == $this->IDField && !$force_id); //skipping Primary Key // $table_name = preg_replace("/^(.*)\./", "$1", $field_name); @@ -538,8 +538,14 @@ array_push($unique_fields,$field); foreach($unique_fields as $unique_field) { - $where[] = '`'.$unique_field.'` = '.$this->Conn->qstr( $this->GetDBField($unique_field) ); + // if field is not empty or if it is required - we add where condition + if ($this->GetDBField($unique_field) != '' || $this->Fields[$unique_field]['required']) { + $where[] = '`'.$unique_field.'` = '.$this->Conn->qstr( $this->GetDBField($unique_field) ); + } } + // This can ONLY happen if all unique fields are empty and not required. + // In such case we return true, because if unique field is not required there may be numerous empty values + if (!$where) return true; $sql = 'SELECT COUNT(*) FROM %s WHERE ('.implode(') AND (',$where).') AND ('.$this->IDField.' <> '.(int)$this->ID.')'; @@ -669,38 +675,43 @@ $fields_sql = ''; $values_sql = ''; - foreach ($this->FieldValues as $field_name => $field_value) - { + foreach ($this->FieldValues as $field_name => $field_value) { if ($this->SkipField($field_name, $force_id)) continue; - $fields_sql .= sprintf('`%s`, ',$field_name); //Adding field name to fields block of Insert statement - //Adding field' value to Values block of Insert statement, escaping it with ADODB' qstr - if (is_null( $this->FieldValues[$field_name] )) - { - if (isset($this->Fields[$field_name]['not_null']) && $this->Fields[$field_name]['not_null']) - { - $values_sql .= $this->Conn->qstr($this->Fields[$field_name]['default']).', '; - } - else - { - $values_sql .= 'NULL, '; - } - } - else - { - $values_sql .= sprintf('%s, ',$this->Conn->qstr($this->FieldValues[$field_name], 0)); - } + //Adding field' value to Values block of Insert statement, escaping it with qstr + if (is_null( $this->FieldValues[$field_name] )) { + if (isset($this->Fields[$field_name]['not_null']) && $this->Fields[$field_name]['not_null']) { + $values_sql .= $this->Conn->qstr($this->Fields[$field_name]['default'], 0); + } + else { + $values_sql .= 'NULL'; + } + } + else { + if ($field_name == $this->IDField && $this->FieldValues[$field_name] == 0) { + $values_sql .= 'DEFAULT'; + } + else { + $values_sql .= $this->Conn->qstr($this->FieldValues[$field_name], 0); + } + } + + $fields_sql .= '`'.$field_name.'`, '; //Adding field name to fields block of Insert statement + $values_sql .= ', '; } //Cutting last commas and spaces $fields_sql = ereg_replace(", $", '', $fields_sql); $values_sql = ereg_replace(", $", '', $values_sql); $sql = sprintf('INSERT INTO %s (%s) VALUES (%s)', $this->TableName, $fields_sql, $values_sql); //Formatting query //Executing the query and checking the result - if($this->Conn->ChangeQuery($sql) === false) return false; + if ($this->Conn->ChangeQuery($sql) === false) return false; $insert_id = $this->Conn->getInsertID(); - if($insert_id == 0) $insert_id = $this->FieldValues[$this->IDField]; + if ($insert_id == 0) { + // insert into temp table (id is not auto-increment field) + $insert_id = $this->FieldValues[$this->IDField]; + } $this->setID($insert_id); if (!$system_create){ Index: trunk/core/units/groups/groups_config.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/groups/groups_config.php (.../groups_config.php) (revision 7702) +++ trunk/core/units/groups/groups_config.php (.../groups_config.php) (revision 7855) @@ -71,7 +71,7 @@ ), 'Fields' => Array ( - 'GroupId' => Array(), + 'GroupId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Name' => Array('type' => 'string', 'not_null' => '1', 'required' => 1, 'default' => ''), 'Description' => Array('type' => 'string','default' => ''), 'CreatedOn' => Array('type' => 'double', 'formatter' => 'kDateFormatter', 'not_null' => '1','default' => '#NOW#'), Index: trunk/core/units/categories/categories_config.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/categories/categories_config.php (.../categories_config.php) (revision 7702) +++ trunk/core/units/categories/categories_config.php (.../categories_config.php) (revision 7855) @@ -220,7 +220,7 @@ 'Fields' => Array ( - 'CategoryId' => Array('type' => 'int','not_null' => 1,'default' => ''), + 'CategoryId' => Array('type' => 'int','not_null' => 1,'default' => 0), 'Type' => Array('type' => 'int','not_null' => 1,'default' => 0), 'ParentId' => Array('type' => 'int','not_null' => 1,'default' => 0), 'Name' => Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'not_null' => 1, 'required' => 1, 'default' => ''), @@ -230,10 +230,9 @@ 'CreatedOn' => Array('formatter' => 'kDateFormatter', 'default'=>'#NOW#', 'required' => 1, 'not_null' => 1), 'EditorsPick' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Status' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Active', 2 => 'la_Pending', 0 => 'la_Disabled' ), 'use_phrases' => 1, 'not_null' => 1,'default' => 2), - 'Pop' => Array('type' => 'int', 'default' => ''), - 'Priority' => Array('type' => 'int', 'not_null' => 1, 'default' => ''), + 'Priority' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'MetaKeywords' => Array('type' => 'string', 'default' => ''), - 'CachedDescendantCatsQty' => Array('type' => 'int', 'default' => ''), + 'CachedDescendantCatsQty' => Array('type' => 'int', 'default' => 0), 'CachedNavbar' => Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'not_null' => 1, 'default' => ''), 'CreatedById' => Array('type' => 'int', 'formatter' => 'kLEFTFormatter', 'options' => Array(-1 => 'root', -2 => 'Guest'),'left_sql'=>'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'not_null' => 1,'default' => '0'), 'ResourceId' => Array('type' => 'int', 'default' => ''), Index: trunk/core/units/admin/admin_events_handler.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/admin/admin_events_handler.php (.../admin_events_handler.php) (revision 7391) +++ trunk/core/units/admin/admin_events_handler.php (.../admin_events_handler.php) (revision 7855) @@ -29,7 +29,7 @@ function OnResetConfigsCache(&$event) { - $this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName = "config_files" OR VarName = "configs_parsed"'); + $this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName = "config_files" OR VarName = "configs_parsed" OR VarName = "sections_parsed"'); } /** @@ -76,7 +76,7 @@ */ function OnStartup(&$event) { - + } /** Index: trunk/core/units/languages/languages_event_handler.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 7635) +++ trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 7855) @@ -220,6 +220,7 @@ { $modules = getArrayValue($field_values,'Module'); $lang_xml =& $this->Application->recallObject('LangXML'); + /* @var $lang_xml LangXML_Parser */ $lang_xml->Parse($filename, $field_values['PhraseType'], $modules, $field_values['ImportOverwrite']); $event->redirect = true; Index: trunk/core/admin_templates/config/config_universal.tpl =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/config/config_universal.tpl (.../config_universal.tpl) (revision 7635) +++ trunk/core/admin_templates/config/config_universal.tpl (.../config_universal.tpl) (revision 7855) @@ -3,7 +3,7 @@ - + Index: trunk/core/units/languages/languages_config.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/languages/languages_config.php (.../languages_config.php) (revision 7702) +++ trunk/core/units/languages/languages_config.php (.../languages_config.php) (revision 7855) @@ -143,7 +143,7 @@ ) ), 'Fields' => Array( - 'LanguageId' => Array(), + 'LanguageId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'PackName' => Array('type' => 'string','not_null' => '1','default' => '','required'=>1), 'LocalName' => Array('type' => 'string','not_null' => '1','default' => '','required'=>1), 'Enabled' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array(0 => 'la_Disabled', 1 => 'la_Enabled'), 'use_phrases' => 1, 'not_null' => '1', 'default' => 1), Index: trunk/core/units/general/cat_dbitem_export.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/general/cat_dbitem_export.php (.../cat_dbitem_export.php) (revision 7391) +++ trunk/core/units/general/cat_dbitem_export.php (.../cat_dbitem_export.php) (revision 7855) @@ -1194,7 +1194,7 @@ $object =& $event->getObject( Array('skip_autoload' => true) ); $options = $object->GetFieldOptions('ExportPresets'); - $user =& $this->Application->recallObject('u'); + $user =& $this->Application->recallObject('u.current'); $export_settings = $user->getPersistantVar('export_settings'); if (!$export_settings) return ; $export_settings = unserialize($export_settings); @@ -1314,7 +1314,7 @@ { if ($object->GetDBField('ExportSavePreset')) { $name = $object->GetDBField('ExportPresetName'); - $user =& $this->Application->recallObject('u'); + $user =& $this->Application->recallObject('u.current'); $export_settings = $user->getPersistantVar('export_settings'); $export_settings = $export_settings ? unserialize($export_settings) : array(); $export_settings[$event->Prefix][$name] = $field_values; Index: trunk/admin/editor/cmseditor/editor/dialog/fck_document.html =================================================================== diff -u -r7635 -r7855 --- trunk/admin/editor/cmseditor/editor/dialog/fck_document.html (.../fck_document.html) (revision 7635) +++ trunk/admin/editor/cmseditor/editor/dialog/fck_document.html (.../fck_document.html) (revision 7855) @@ -25,7 +25,7 @@
   - +
@@ -46,7 +46,7 @@ View In:
   - @@ -115,7 +115,7 @@    - + Index: trunk/core/units/general/xml_helper.php =================================================================== diff -u -r6093 -r7855 --- trunk/core/units/general/xml_helper.php (.../xml_helper.php) (revision 6093) +++ trunk/core/units/general/xml_helper.php (.../xml_helper.php) (revision 7855) @@ -24,9 +24,9 @@ xml_set_character_data_handler( $xml_parser, Array(&$this, 'characterData') ); if (!xml_parse($xml_parser, $xml, 1)) { $this->RootElement =& new kXMLNode('ERROR', array('code'=>xml_get_error_code($xml_parser),'message'=>xml_error_string(xml_get_error_code($xml_parser)))); - trigger_error(sprintf('XML error: %s at line %d'), + trigger_error(sprintf('XML error: %s at line %d', xml_error_string(xml_get_error_code($xml_parser)), - xml_get_current_line_number($xml_parser), E_USER_WARNING); + xml_get_current_line_number($xml_parser)), E_USER_WARNING); } xml_parser_free($xml_parser); return $this->RootElement; Index: trunk/core/kernel/constants.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/kernel/constants.php (.../constants.php) (revision 7391) +++ trunk/core/kernel/constants.php (.../constants.php) (revision 7855) @@ -30,6 +30,7 @@ define('erFAIL', -1); // event finished working, but result is unsuccsessfull define('erFATAL', -2); // event experienced FATAL error - no hooks should continue! define('erPERM_FAIL', -3); // event failed on internal permission checking (user has not permission) + define('erSTOP', -4); // event requested to stop processing (don't parse templates) // permission types define('ptCATEGORY', 0); @@ -45,4 +46,8 @@ // don't show debugger buttons on front (if not overrided in "debug.php") safeDefine('DBG_TOOLBAR_BUTTONS', 0); } + + // common usage regular expressions + define('REGEX_EMAIL_USER', '[-a-zA-Z0-9!\#$%&*+\/=?^_`{|}~.]+'); + define('REGEX_EMAIL_DOMAIN', '[a-zA-Z0-9]{1}[-.a-zA-Z0-9_]*\.[a-zA-Z]{2,6}'); ?> \ No newline at end of file Index: trunk/core/units/categories/categories_event_handler.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 7635) +++ trunk/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 7855) @@ -11,6 +11,8 @@ parent::mapPermissions(); $permissions = Array( 'OnRebuildCache' => Array('self' => 'add|edit'), + 'OnPasteClipboard' => Array('self' => 'add|edit'), + 'OnPaste' => array('self'=>'add|edit', 'subitem' => 'edit'), // 'OnSave' => Array('self' => 'add|edit') ); $this->permMapping = array_merge($this->permMapping, $permissions); @@ -98,7 +100,7 @@ // hide categories with status = 4 (system categories) $object->addFilter('system_categories', '%1$s.Status <> 4'); - if ( $event->getEventParam('parent_cat_id') ) { + if ($event->getEventParam('parent_cat_id') !== false) { $parent_cat_id = $event->getEventParam('parent_cat_id'); if ($parent_cat_id == 'Root') { @@ -347,7 +349,7 @@ if ($id == 0) { if ($temp_object->isLoaded()) { - // new category -> update chache (not loaded when "Home" category) + // new category -> update cache (not loaded when "Home" category) $this->Application->StoreVar('PermCache_UpdateRequired', 1); } return ; @@ -357,7 +359,7 @@ $live_object =& $this->Application->recallObject($event->Prefix.'.-item', null, Array('live_table' => true, 'skip_autoload' => true)); $live_object->Load($id); - $cached_fields = Array('Name', 'Filename', 'CategoryTemplate', 'ParentId'); + $cached_fields = Array('Name', 'Filename', 'CategoryTemplate', 'ParentId', 'Priority'); foreach ($cached_fields as $cached_field) { if ($live_object->GetDBField($cached_field) != $temp_object->GetDBField($cached_field)) { Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 7391) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 7855) @@ -308,6 +308,7 @@ $current_path = $this->Conn->GetOne('SELECT ParentPath FROM '.TABLE_PREFIX.'Category WHERE CategoryId='.$parent_cat_id); $subcats = $this->Conn->GetCol('SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ParentPath LIKE "'.$current_path.'%" '); $object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.CategoryId IN ('.implode(', ', $subcats).')'); + $object->addFilter('primary_filter', 'PrimaryCat = 1'); } else { $object->addFilter('category_filter', TABLE_PREFIX.'CategoryItems.CategoryId = '.$parent_cat_id ); @@ -1365,6 +1366,39 @@ } /** + * Performs each export step & displays progress percent + * + * @param kEvent $event + */ + function OnExportProgress(&$event) + { + $export_object =& $this->Application->recallObject('CatItemExportHelper'); + /* @var $export_object kCatDBItemExportHelper */ + + $event = new kEvent($event->getPrefixSpecial().':OnDummy'); + + $action_method = 'perform'.ucfirst($event->Special); + $field_values = $export_object->$action_method($event); + + // finish code is done from JS now + if ($field_values['start_from'] == $field_values['total_records']) { + if ($event->Special == 'import') { + $this->Application->StoreVar('PermCache_UpdateRequired', 1); + $this->Application->Redirect('in-portal/categories/cache_updater', Array('m_opener' => 'r', 'pass' => 'm', 'continue' => 1, 'no_amp' => 1)); + } + elseif ($event->Special == 'export') { + $template = $this->Application->getUnitOption($event->Prefix, 'ModuleFolder').'/'.$event->Special.'_finish'; + $this->Application->Redirect($template, Array('pass' => 'all')); + } + } + + $export_options = $export_object->loadOptions($event); + echo $export_options['start_from'] * 100 / $export_options['total_records']; + + $event->status = erSTOP; + } + + /** * Returns specific to each item type columns only * * @param kEvent $event Index: trunk/core/units/general/helpers/modules.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/general/helpers/modules.php (.../modules.php) (revision 7635) +++ trunk/core/units/general/helpers/modules.php (.../modules.php) (revision 7855) @@ -165,7 +165,7 @@ if (isset($modules)) return $modules; $this->_readConfig(); - $license = base64_decode($GLOBALS['g_License']); + $license = isset($GLOBALS['g_License']) ? base64_decode($GLOBALS['g_License']) : ''; $this->_ParseLicense($license); $modules = Array(); @@ -182,7 +182,8 @@ else { $modules = array_keys($this->Application->ModuleInfo); } - array_push($modules, 'Core', 'Proj-base', 'Proj-CMS', 'Custom'); + + array_push($modules, 'Core', 'Proj-base', 'Proj-CMS', 'Custom'); return $modules; } @@ -205,7 +206,8 @@ */ function _GetDomain() { - return $this->Application->ConfigValue('DomainDetect') ? $_SERVER['HTTP_HOST'] : $GLOBALS['g_Domain']; + $config_domain = isset($GLOBALS['g_Domain']) ? $GLOBALS['g_Domain'] : ''; + return $this->Application->ConfigValue('DomainDetect') ? $_SERVER['HTTP_HOST'] : $config_domain; } function _keyED($txt, $encrypt_key) Index: trunk/core/units/custom_data/custom_data_config.php =================================================================== diff -u -r4802 -r7855 --- trunk/core/units/custom_data/custom_data_config.php (.../custom_data_config.php) (revision 4802) +++ trunk/core/units/custom_data/custom_data_config.php (.../custom_data_config.php) (revision 7855) @@ -74,7 +74,7 @@ 'ItemSQLs' => Array('' => 'SELECT %1$s.* %2$s FROM %1$s'), 'Fields' => Array( - 'CustomDataId' => Array(), + 'CustomDataId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'ResourceId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), ), ); Index: trunk/core/kernel/utility/debugger.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/utility/debugger.php (.../debugger.php) (revision 7635) +++ trunk/core/kernel/utility/debugger.php (.../debugger.php) (revision 7855) @@ -248,10 +248,18 @@ */ function dumpVars() { + $dump_mode = 'var_dump'; $dumpVars = func_get_args(); + + if ($dumpVars[count($dumpVars) - 1] === 'STRICT') { + $dump_mode = 'strict_var_dump'; + array_pop($dumpVars); + } + foreach ($dumpVars as $varValue) { - $this->Data[] = Array('value' => $varValue, 'debug_type' => 'var_dump'); + $this->Data[] = Array('value' => $varValue, 'debug_type' => $dump_mode); } + } function prepareHTML($dataIndex) @@ -273,6 +281,10 @@ return $this->highlightString( $this->print_r($Data['value'], true) ); break; + case 'strict_var_dump': + return $this->highlightString( var_export($Data['value'], true) ); + break; + case 'trace': ini_set('memory_limit', '500M'); $trace =& $Data['trace']; @@ -834,7 +846,7 @@ } return 0; } - + /** * Generates report * @@ -884,13 +896,13 @@ $this->appendHTML('Memory used by Objects: '.round($this->ProfilerTotals['objects'] / 1024, 2).'Kb'); } - /*if ($this->constOn('DBG_INCLUDED_FILES')) { + if ($this->constOn('DBG_INCLUDED_FILES')) { $files = get_included_files(); $this->appendHTML('Included files:'); foreach ($files as $file) { $this->appendHTML($this->getFileLink($this->getLocalFile($file)).' ('.round(filesize($file) / 1024, 2).'Kb)'); } - }*/ + } /*if ($this->constOn('DBG_PROFILE_INCLUDES')) { $this->appendHTML('Included files statistics:'.( $this->constOn('DBG_SORT_INCLUDES_MEM') ? ' (sorted by memory usage)':'')); @@ -959,7 +971,7 @@ $Debugger.DOMViewerURL = ''; $Debugger.EditorPath = ''; $Debugger.DebugURL = 'baseURL.'/debugger_responce.php?sid='.$this->rowSeparator.'&path='.urlencode($dbg_path); ?>'; - + IsFatalError || DBG_RAISE_ON_WARNINGS) { echo '$Debugger.Toggle();'; @@ -1010,12 +1022,21 @@ */ function getShortReport($memory_used) { + if ($this->constOn('DBG_TOOLBAR_BUTTONS')) { + // we have sql & error count in toolbar, don't duplicate here $info = Array( + 'Script Runtime' => 'PROFILE:script_runtime', + ); + } + else { + // toolbar not visible, then show sql & error count too + $info = Array ( 'Script Runtime' => 'PROFILE:script_runtime', '-' => 'SEP:-', 'Notice / Warning' => 'PROFILE_TC:error_handling', 'SQLs Count' => 'PROFILE_TC:sql', ); + } $ret = 'Application:'.$this->formatSize($memory_used).' ('.$memory_used.')'; foreach ($info as $title => $value_key) { Index: trunk/core/admin_templates/js/script.js =================================================================== diff -u -r7702 -r7855 --- trunk/core/admin_templates/js/script.js (.../script.js) (revision 7702) +++ trunk/core/admin_templates/js/script.js (.../script.js) (revision 7855) @@ -1111,15 +1111,6 @@ return doc; } - - function addEvent(el, evname, func) { - if (is.ie) { - el.attachEvent("on" + evname, func); - } else { - el.addEventListener(evname, func, true); - } - }; - function set_persistant_var($var_name, $var_value, $t, $form_action) { set_hidden_field('field', $var_name); @@ -1303,6 +1294,7 @@ NumberFormatter.Parse = function(num) { + if (num == '') return 0; return parseFloat( num.toString().replace(this.ThousandsSep, '').replace(this.DecimalSep, '.') ); } @@ -1319,40 +1311,65 @@ return x1 + x2; } -var last_shown_error = false; -var errors = new Object(); -var first_error = new Object(); -var fields = new Object(); -var textareas100 = new Array(); -function show_form_error(prefix, field, sticky) -{ - if (isset(errors[prefix]) && isset(errors[prefix][field])) { - span = document.getElementById('error_msg_'+prefix); - span.innerHTML = fields[prefix][field] + ' - ' + errors[prefix][field]; - if (sticky) last_shown_error = field; +function getDimensions(obj) { + var style + if (obj.currentStyle) { + style = obj.currentStyle; } -} -function hide_form_error(prefix) -{ - span = document.getElementById('error_msg_'+prefix); - if (!span) return; - span.innerHTML = '
'; - if (typeof(last_shown_error) != 'undefined' && last_shown_error) { - show_form_error(prefix, last_shown_error); + else { + style = getComputedStyle(obj,''); } + padding = [parseInt(style.paddingTop), parseInt(style.paddingRight), parseInt(style.paddingBottom), parseInt(style.paddingLeft)] + border = [parseInt(style.borderTopWidth), parseInt(style.borderRightWidth), parseInt(style.borderBottomWidth), parseInt(style.borderLeftWidth)] + for (var i in padding) if ( isNaN( padding[i] ) ) padding[i] = 0 + for (var i in border) if ( isNaN( border[i] ) ) border[i] = 0 + + var result = new Object(); + result.innerHeight = obj.clientHeight - padding[0] - padding[2]; + result.innerWidth = obj.clientWidth - padding[1] - padding[3]; + result.padding = padding; + result.borders = border; + + return result; } -function add_form_error(prefix, field, element, error_msg) { - if (error_msg != '') { - if (typeof(errors[prefix]) == 'undefined') { - errors[prefix] = new Object(); + +function findPos(obj) { + var curleft = curtop = 0; + if (obj.offsetParent) { + curleft = obj.offsetLeft + curtop = obj.offsetTop + while (obj = obj.offsetParent) { + curleft += obj.offsetLeft + curtop += obj.offsetTop } - errors[prefix][field] = error_msg; - document.getElementById(element).onfocus = function() { - show_form_error(prefix, field, true) - }; - document.getElementById(element).onblur = function() {last_shown_error = false}; - if (typeof(first_error[prefix]) == 'undefined' || first_error[prefix] == false) { - first_error[prefix] = [field, element]; - } } + return [curleft,curtop]; +} + +function addEvent(el, evname, func, traditional) { + if (traditional) { + eval('el.on'+evname+'='+func); + return; + } + + if (is.ie) { + el.attachEvent("on" + evname, func); + } else { + el.addEventListener(evname, func, true); + } +}; + +function addLoadEvent(func, wnd) { + if (!wnd) wnd = window + var oldonload = wnd.onload; + if (typeof wnd.onload != 'function') { + wnd.onload = func; + } else { + wnd.onload = function() { + if (oldonload) { + oldonload(); + } + func(); + } + } } \ No newline at end of file Index: trunk/core/units/categories/categories_item.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/categories/categories_item.php (.../categories_item.php) (revision 7635) +++ trunk/core/units/categories/categories_item.php (.../categories_item.php) (revision 7855) @@ -75,7 +75,8 @@ function checkFilename() { - if( !$this->GetDBField('AutomaticFilename') ) + // System templates allow any characters in filename, because they may and will contain "/" + if( !$this->GetDBField('AutomaticFilename') && !$this->GetDBField('IsSystem')) { $filename = $this->GetDBField('Filename'); $this->SetDBField('Filename', $this->stripDisallowed($filename) ); Index: trunk/core/kernel/db/db_event_handler.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 7635) +++ trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 7855) @@ -122,6 +122,7 @@ 'OnExport' => Array('self' => 'view|advanced:export'), 'OnExportBegin' => Array('self' => 'view|advanced:export'), + 'OnExportProgress' => Array('self' => 'view|advanced:export'), // theese event do not harm, but just in case check them too :) @@ -909,10 +910,10 @@ function OnCreate(&$event) { $object =& $event->getObject( Array('skip_autoload' => true) ); - + /* @var $object kDBItem */ + $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - if($items_info) - { + if ($items_info) { list($id,$field_values) = each($items_info); $object->SetFieldsFromHash($field_values); } @@ -1781,6 +1782,10 @@ */ function OnCreateCustomFields(&$event) { + if (defined('IS_INSTALL') && IS_INSTALL && !$this->Application->TableFound('CustomField')) { + return false; + } + $main_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix'); if (!$main_prefix) return false; $item_type = $this->Application->getUnitOption($main_prefix, 'ItemType'); @@ -1802,7 +1807,7 @@ // 2. create fields (for customdata item) $fields = $this->Application->getUnitOption($event->Prefix, 'Fields', Array()); - $field_options = Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'not_null' => 1, 'db_type' => 'text', 'default' => ''); + $field_options = Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'db_type' => 'text', 'default' => ''); foreach ($custom_fields as $custom_id => $custom_params) { if (isset($fields['cust_'.$custom_id])) continue; $fields['cust_'.$custom_id] = $field_options; @@ -2005,7 +2010,7 @@ list($id,$field_values) = each($items_info); $preset_key = $field_values['ExportPresets']; - $user =& $this->Application->recallObject('u'); + $user =& $this->Application->recallObject('u.current'); $export_settings = $user->getPersistantVar('export_settings'); if (!$export_settings) return ; $export_settings = unserialize($export_settings); Index: trunk/core/units/general/cat_tag_processor.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/general/cat_tag_processor.php (.../cat_tag_processor.php) (revision 7635) +++ trunk/core/units/general/cat_tag_processor.php (.../cat_tag_processor.php) (revision 7855) @@ -99,33 +99,6 @@ return $special; } - function ExportStatus($params) - { - $export_object =& $this->Application->recallObject('CatItemExportHelper'); - /* @var $export_object kCatDBItemExportHelper */ - - $event = new kEvent($this->getPrefixSpecial().':OnDummy'); - - $action_method = 'perform'.ucfirst($this->Special); - $field_values = $export_object->$action_method($event); - - // finish code is done from JS now - if ($field_values['start_from'] == $field_values['total_records']) - { - if ($this->Special == 'import') { - $this->Application->StoreVar('PermCache_UpdateRequired', 1); - $this->Application->Redirect('in-portal/categories/cache_updater', Array('m_opener' => 'r', 'pass' => 'm', 'continue' => 1, 'no_amp' => 1)); - } - elseif ($this->Special == 'export') { - $template = $this->Application->getUnitOption($this->Prefix, 'ModuleFolder').'/'.$this->Special.'_finish'; - $this->Application->Redirect($template, Array('pass' => 'all')); - } - } - - $export_options = $export_object->loadOptions($event); - return $export_options['start_from'] * 100 / $export_options['total_records']; - } - function CatalogItemCount($params) { $object =& $this->GetList($params); Index: trunk/core/units/categories/categories_tag_processor.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/categories/categories_tag_processor.php (.../categories_tag_processor.php) (revision 7635) +++ trunk/core/units/categories/categories_tag_processor.php (.../categories_tag_processor.php) (revision 7855) @@ -184,13 +184,11 @@ // $cat_id = $this->Application->Parser->GetParam('cat_id'); $cat_id = $this->Application->GetVar($this->getPrefixSpecial().'_id'); } - if($cat_id == 'Root') - { - $object =& $this->Application->recallObject('mod.'.$params['module']); - $params['m_cat_id'] = $object->GetDBField('RootCat'); + if ("$cat_id" == 'Root') { + $params['m_cat_id'] = $this->Application->findModule('Name', $params['module'], 'RootCat'); unset($params['module']); } - else{ + else { $params['m_cat_id'] = $cat_id; } unset($params['cat_id']); Index: trunk/core/units/general/helpers/multilanguage.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 7635) +++ trunk/core/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 7855) @@ -140,8 +140,15 @@ $field_mask['type'] = $field_options['db_type']; } $field_mask['default'] = 'DEFAULT '.$default_value; - $field_mask = $field_mask['name'].' '.$field_mask['type'].' '.$field_mask['null'].' '.$field_mask['default']; - + + if (strtoupper($field_mask['type']) == 'TEXT') { + // text fields in mysql doesn't have default value + $field_mask = $field_mask['name'].' '.$field_mask['type'].' '.$field_mask['null']; + } + else { + $field_mask = $field_mask['name'].' '.$field_mask['type'].' '.$field_mask['null'].' '.$field_mask['default']; + } + $sqls[] = 'ALTER TABLE '.$table_name.( $this->generateAlterSQL($field_mask, $created_count + 1, $create_count) ); } } Index: trunk/core/kernel/db/db_connection.php =================================================================== diff -u -r6685 -r7855 --- trunk/core/kernel/db/db_connection.php (.../db_connection.php) (revision 6685) +++ trunk/core/kernel/db/db_connection.php (.../db_connection.php) (revision 7855) @@ -77,7 +77,7 @@ * @var string */ var $lastQuery = ''; - + /** * Initializes connection class with * db type to used in future @@ -178,6 +178,10 @@ $func = $this->getMetaFunction('connect'); $this->connectionID = $func($host, $user, $pass, $force_new) or trigger_error("Database connection failed, please check your connection settings", E_USER_ERROR); if ($this->connectionID) { + if (defined('DBG_SQL_MODE')) { + $this->Query('SET sql_mode = \''.DBG_SQL_MODE.'\''); + } + $this->setDB($db); $this->showError(); } Index: trunk/core/kernel/session/session.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/session/session.php (.../session.php) (revision 7635) +++ trunk/core/kernel/session/session.php (.../session.php) (revision 7855) @@ -93,6 +93,10 @@ function StoreSession(&$session, $additional_fields = Array()) { + if (defined('IS_INSTALL') && IS_INSTALL && !$this->Application->TableFound($this->TableName)) { + return false; + } + $fields_hash = Array ( $this->IDField => $session->SID, $this->TimestampField => $session->Expiration @@ -366,9 +370,9 @@ $this->CookieName = $cookie_name; } - function InitStorage() + function InitStorage($special) { - $this->Storage =& $this->Application->recallObject('SessionStorage'); + $this->Storage =& $this->Application->recallObject('SessionStorage.'.$special); $this->Storage->setSessionTimeout($this->SessionTimeout); } @@ -380,7 +384,7 @@ if ($this->CookiesEnabled) $_COOKIE['cookies_on'] = 1; $this->Checkers = Array(); - $this->InitStorage(); + $this->InitStorage($special); $this->Data =& new Params(); $tmp_sid = $this->GetPassedSIDValue(); @@ -389,10 +393,10 @@ if( !(defined('IS_INSTALL') && IS_INSTALL) ) { $expired_sids = $this->DeleteExpired(); - if( ( $expired_sids && in_array($tmp_sid,$expired_sids) ) || ( $tmp_sid && !$check ) ) - { + if ( ( $expired_sids && in_array($tmp_sid,$expired_sids) ) || ( $tmp_sid && !$check ) ) { $this->SetSession(); $this->Application->HandleEvent($event, 'u:OnSessionExpire'); + return ; } } @@ -650,6 +654,15 @@ break; } $this->Storage->StoreSession($this); + + if ($this->Application->IsAdmin() || $this->Special == 'admin') { + $this->StoreVar('admin', 1); + } + + if ($this->Special != '') { + // front-session called from admin or otherwise, then save it's data + $this->SaveData(); + } } /** @@ -859,7 +872,23 @@ { return $this->Storage->DeleteExpired(); } + + /** + * Allows to check if user in this session is logged in or not + * + * @return bool + */ + function LoggedIn() + { + $user_id = $this->RecallVar('user_id'); + $ret = $user_id > 0; + if ($this->RecallVar('admin') == 1 && ($user_id == -1)) { + $ret = true; + } + return $ret; + } + } ?> \ No newline at end of file Index: trunk/core/kernel/db/db_tag_processor.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 7702) +++ trunk/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 7855) @@ -105,7 +105,7 @@ $block_params['label'] = addslashes( $this->Application->Phrase($filter_params['label']) ); if (getArrayValue($view_filter,$filter_key)) { $submit = 0; - if ($params['old_style']) { + if (isset($params['old_style'])) { $status = $group_params['element_type'] == 'checkbox' ? 1 : 2; } else { @@ -151,13 +151,32 @@ $block_params['sort_field'] = isset($options['sort_field']) ? $options['sort_field'] : $field; $block_params['filter_field'] = isset($options['filter_field']) ? $options['filter_field'] : $field; + if (isset($options['filter_width'])) { + $block_params['filter_width'] = $options['filter_width']; + } + elseif (isset($options['width'])) { + if (preg_match('/range/', $options['filter_block'])) { + if ($options['width'] < 60) { + $options['width'] = 60; + $block_params['filter_width'] = 20; + } + else { + $block_params['filter_width'] = $options['width'] - 40; + } + } + else { + $block_params['filter_width'] = max($options['width']-10, 20); + } + } + if (isset($block_params['filter_width'])) $block_params['filter_width'] .= 'px'; + $field_options = $this->Application->getUnitOption($this->Prefix.'.'.$field, 'Fields'); if (isset($field_options['use_phrases'])) { $block_params['use_phrases'] = $field_options['use_phrases']; } $block_params['is_last'] = ($i == count($grid_config)); - $block_params = array_merge($std_params, $block_params, $options); + $block_params = array_merge($std_params, $options, $block_params); $o.= $this->Application->ParseBlock($block_params, 1); } return $o; @@ -468,7 +487,9 @@ unset($params['page']); } - $params['pass'] = 'm,'.$this->getPrefixSpecial(); + if (!isset($params['pass'])) { + $params['pass'] = 'm,'.$this->getPrefixSpecial(); + } return $this->Application->HREF($t, '', $params); } @@ -1655,7 +1676,7 @@ $force_module = getArrayValue($params, 'module'); if ($force_module) { if ($force_module == '#session#') { - $force_module = $this->Application->RecallVar('module'); + $force_module = preg_replace('/([^:]*):.*/', '\1', $this->Application->RecallVar('module')); if (!$force_module) $force_module = 'core'; } else { @@ -1822,7 +1843,6 @@ //'UserFilesPath' => $pathtoroot.'kernel/user_files', 'ProjectPath' => BASE_PATH.'/', 'CustomConfigurationsPath' => $this->Application->BaseURL().'core/admin_templates/js/inp_fckconfig.js', -// 'EditorAreaCSS' => $this->Application->BaseURL().'/themes/inportal_site/inc/inportal.css', //GetThemeCSS(), 'StylesXmlPath' => $theme_path.'/inc/styles.xml', 'EditorAreaCSS' => $theme_path.'/inc/style.css', 'DefaultClass' => 'Default Text', Index: trunk/core/admin_templates/sections_list.tpl =================================================================== diff -u -r7391 -r7855 --- trunk/core/admin_templates/sections_list.tpl (.../sections_list.tpl) (revision 7391) +++ trunk/core/admin_templates/sections_list.tpl (.../sections_list.tpl) (revision 7855) @@ -6,8 +6,8 @@ - img/logo_bg.gif) no-repeat top right;"> - img/logo_bg.gif) no-repeat top right; height: 55px;"> + @@ -66,7 +66,7 @@ - + "> - + - + "> - + "> - + - + "> - - + + - - - - +
+
img/icons/.gif" align="absmiddle" title="">  Index: trunk/core/admin_templates/js/tree.js =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/js/tree.js (.../tree.js) (revision 7635) +++ trunk/core/admin_templates/js/tree.js (.../tree.js) (revision 7855) @@ -48,6 +48,8 @@ for (var i=0; i < this.Level; i++) { img = document.createElement('img'); + img.style.width = '16px'; + img.style.height = '22px'; img.src = TREE_ICONS_PATH+'/ftv2blank.gif'; img.style.verticalAlign = 'middle'; td.appendChild(img); @@ -62,6 +64,8 @@ TreeItem.prototype.appendNodeImage = function(td) { img = document.createElement('img'); + img.style.width = '16px'; + img.style.height = '22px'; img.src = this.getNodeImage(); img.style.verticalAlign = 'middle'; td.appendChild(img); @@ -70,6 +74,8 @@ TreeItem.prototype.appendIcon = function (td) { img = document.createElement('img'); + img.style.width = '24px'; + img.style.height = '22px'; if (this.Icon.indexOf('http://') != -1) { img.src = this.Icon; } @@ -408,6 +414,8 @@ TreeFolder.prototype.appendNodeImage = function(td, is_last) { img = document.createElement('img'); + img.style.width = '16px'; + img.style.height = '22px'; img.src = this.getNodeImage(is_last); img.style.cursor = 'hand'; img.style.cursor = 'pointer'; Index: trunk/core/units/users/users_event_handler.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 7702) +++ trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 7855) @@ -46,6 +46,10 @@ if ($event->Special == 'regular') { $object->addFilter('primary_filter', 'ug.GroupId <> 11'); } + + if (!$this->Application->IsAdmin()) { + $object->addFilter('status_filter', '%1$s.Status = '.STATUS_ACTIVE); + } } @@ -105,17 +109,25 @@ function OnSessionExpire() { - if( $this->Application->IsAdmin() ) { + if ($this->Application->IsAdmin()) { $this->Application->Redirect('index', Array('expired' => 1), '', 'index.php'); } - else { - $http_query =& $this->Application->recallObject('HTTPQuery'); - $get = $http_query->getRedirectParams(); - - $t = $this->Application->GetVar('t'); - $get['js_redirect'] = $this->Application->ConfigValue('UseJSRedirect'); - $this->Application->Redirect($t ? $t : 'index', $get); + + if ($this->Application->GetVar('admin') == 1) { + $session_admin =& $this->Application->recallObject('Session.admin'); + /* @var $session_admin Session */ + + if (!$session_admin->LoggedIn()) { + // front-end session created from admin session & both expired + $this->Application->DeleteVar('admin'); + $this->Application->Redirect('index', Array('expired' => 1), '', 'admin/index.php'); + } } + + $get = $this->Application->HttpQuery->getRedirectParams(); + $t = $this->Application->GetVar('t'); + $get['js_redirect'] = $this->Application->ConfigValue('UseJSRedirect'); + $this->Application->Redirect($t ? $t : 'index', $get); } /** @@ -689,7 +701,7 @@ $user_email = $this->Application->RecallVar('SubscriberEmail'); if (preg_match("/^[_a-zA-Z0-9-\.]+@[a-zA-Z0-9-\.]+\.[a-z]{2,4}$/", $user_email)){ - + $this->RemoveRequiredFields($object); if($object->Load(array('Email'=>$user_email))){ $group_info = $this->GetGroupInfo($object->GetID()); Index: trunk/core/units/admin/admin_config.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/admin/admin_config.php (.../admin_config.php) (revision 7391) +++ trunk/core/units/admin/admin_config.php (.../admin_config.php) (revision 7855) @@ -36,6 +36,7 @@ 'permissions' => Array('advanced:admin_login', 'advanced:front_login'), 'priority' => 0, 'type' => stTREE, + 'icon_module' => 'in-portal', ), 'in-portal:service' => Array( Index: trunk/core/install/english.lang =================================================================== diff -u -r6685 -r7855 --- trunk/core/install/english.lang (.../english.lang) (revision 6685) +++ trunk/core/install/english.lang (.../english.lang) (revision 7855) @@ -1,2303 +1,2304 @@ m/d/Yg:i:s Am/d/Yg:i:s A.,iso-8859-12 - WW91ciBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4gWW91IHdpbGwgcmVjZWl2ZSB5b3VyIG5ldyBwYXNzd29yZCBpbiB0aGUgZW1haWwgc2hvcnRseS4= - QWN0aXZl - QWRkZWQ= - QWRkIFRv - QWx3YXlz - YW5k - QWN0aXZl - QXV0aG9y - RGF0ZQ== - QXJ0aWNsZSBFeGNlcnB0 - SGl0cw== - UmF0aW5n - QXJ0aWNsZSByZXZpZXdlZA== - QXJ0aWNsZSBUaXRsZQ== - QXV0bw== - QXV0b21hdGlj - QmFja2dyb3VuZA== - QmFuIGVtYWlsIGFkZHJlc3M= - QmFuIElQIGFkZHJlc3M= - QmFuIHVzZXIgbmFtZQ== - SW1wb3J0ZWQ= - Qm9yZGVycw== - Q2hhbmdl - RG93bg== - VXA= - T0s= - Ynl0ZXM= - QnkgdGhlbWU= - Q2FuY2Vs - Q2F0ZWdvcnk= - RGF0ZQ== - TnVtYmVyIG9mIGRheXMgZm9yIGEgY2F0LiB0byBiZSBORVc= - Q2F0ZWdvcnkgRGVzY3JpcHRpb24= - RGVmYXVsdCBNRVRBIGRlc2NyaXB0aW9u - RGVmYXVsdCBNRVRBIEtleXdvcmRz - Q2F0ZWdvcnkgTmFtZQ== - TnVtYmVyIG9mIGNhdGVnb3JpZXMgcGVyIHBhZ2U= - Q2F0ZWdvcmllcyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ== - UGljaw== - UG9wdWxhcml0eQ== - RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBjYXRlZ29yaWVz - QW5kIHRoZW4gYnk= - T3JkZXIgY2F0ZWdvcmllcyBieQ== - Q2xvc2U= - QWx0IFZhbHVl - Q2Vuc29yZWQgV29yZA== - Q3JlYXRlZCBPbg== - RGF0ZS9UaW1l - U3RhdHVz - TGFiZWw= - RmllbGQgTmFtZQ== - VHlwZQ== - SW1hZ2U= - SW5oZXJpdGVkIEZyb20= - SXRlbQ== - SXRlbSBGaWVsZA== - SXRlbSBUeXBl - SXRlbSBWYWx1ZQ== - Q29tcGFyaXNvbiBPcGVyYXRvcg== - TGluayBOYW1l - QWNjZXNz - SW5oZXJpdGVk - UG9zdGVy - UHJldmlldw== - UmVwbGFjZW1lbnQ= - UmVwbGllcw== - UnVsZSBUeXBl - U3RhdHVz - VG9waWM= - VVJM - U3RhdHVz - VmFsaWRhdGVkIE9u - VmFsdWU= - Vmlld3M= - QWNjZXNz - QWRkaXRpb25hbA== - QmFzZWQgT24= - Q2F0ZWdvcnk= - Q2F0ZWdvcnkgTmFtZQ== - Q3JlYXRlZCBPbg== - RGVzY3JpcHRpb24= - RHVyYXRpb24= - RHVyYXRpb24gVHlwZQ== - RWZmZWN0aXZl - RW1haWw= - RXZlbnQ= - RmllbGQgTmFtZQ== - Rmlyc3QgTmFtZQ== - R3JvdXAgTmFtZQ== - SUQ= - U3RhdHVz - SW1hZ2U= - VVJM - SW5oZXJpdGVk - SW5oZXJpdGVkIEZyb20= - U3lzdGVt - TGFiZWw= - TGFzdCBDaGFuZ2Vk - TGFzdCBDb21waWxlZA== - TGFzdCBOYW1l - TGluayBVUkw= - TmFtZQ== - TW9kdWxl - TmFtZQ== - UGFjayBOYW1l - QWRk - RGVsZXRl - RWRpdA== - UGVybWlzc2lvbiBOYW1l - QWNjZXNz - Vmlldw== - VHlwZQ== - UHJldmlldw== - UHJpbWFyeSBHcm91cA== - UHJpbWFyeSBWYWx1ZQ== - RmllbGQgUHJvbXB0 - UmVsYXRpb24gVHlwZQ== - UmV2aWV3ZWQgQnk= - UmV2aWV3IFRleHQ= - U2VsZWN0b3I= - U3RhdHVz - SXRlbQ== - SXRlbSBUeXBl - VGl0bGU= - VmFsdWU= - VHlwZQ== - VXNlciBDb3VudA== - RmllbGQgVmFsdWU= - VmlzaXQgRGF0ZQ== - QXNjZW5kaW5n - RGF0ZQ== - RGVzY2VuZGluZw== - UmV2aWV3IFRleHQ= - UmV2aWV3IG5vdCBhZGRlZCBkdWUgdG8gYSBzeXN0ZW0gZXJyb3I= - QmFja3VwIFBhdGg= - Q29tcGFueQ== - RmlsZSBub3QgZm91bmQgKDQwNCkgdGVtcGxhdGU= - Rmlyc3QgRGF5IE9mIFdlZWs= - UmVkaXJlY3QgdG8gSFRUUCB3aGVuIFNTTCBpcyBub3QgcmVxdWlyZWQ= - TmFtZQ== - SW5zdWZmaWNlbnQgcGVybWlzc2lvbnMgdGVtcGxhdGU= - R1pJUCBjb21wcmVzc2lvbiBsZXZlbCAwLTk= - UmV2aWV3cyBwZXIgcGFnZQ== - UmVnaXN0cmF0aW9uIE51bWJlcg== - UmVxdWlyZSBTU0wgZm9yIGxvZ2luICYgY2hlY2tvdXQ= - U2VydmVyIE5hbWU= - U2VydmVyIFBhdGg= - VGltZSB6b25lIG9mIHRoZSBzaXRl - U1NMIEZ1bGwgVVJMIChodHRwczovL3d3dy5kb21haW4uY29tL3BhdGgp - VGltZSB6b25lIG9mIHRoZSBzZXJ2ZXI= - RW5hYmxlIEhUTUwgR1pJUCBjb21wcmVzc2lvbg== - VXNlIEphdmFTY3JpcHQgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4vbG9nb3V0IChmb3IgSUlTKQ== - VXNlIE1PRCBSRVdSSVRF - RW5hYmxlIE1PRF9SRVdSSVRFIGZvciBTU0w= - V2Vic2l0ZSBhZGRyZXNz - V2Vic2l0ZSBuYW1l - V2ViIGFkZHJlc3M= - VGhlIGNhdGVnb3J5IHRyZWUgbXVzdCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGxhdGVzdCBjaGFuZ2Vz - Q29udGludWU= - Q3JlYXRlZCBPbg== - Q3JlZGl0cw== - ZGF5cw== - QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgaXRlbShzKT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tQnVsbGV0aW4gc2V0dGluZ3M= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY2Vuc29yZWQgd29yZHMgYW5kIHRoZWlyIHJlcGxhY2VtZW50cw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZW1haWwgc2V0dGluZ3M= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2ltbGV5cw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gb3V0cHV0IHNldHRpbmdz - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZGVmYXVsdCBzZWFyY2ggc2V0dGluZ3M= - SW4tYnVsbGV0aW4gZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnM= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBzZXR0aW5ncw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgZW1haWwgZXZlbnRz - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBvdXRwdXQgc2V0dGluZ3M= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2VhcmNoIHNldHRpbmdzIGFuZCBmaWVsZHM= - SW4tTGluayBHZW5lcmFsIENvbmZpZ3VyYXRpb24gT3B0aW9ucw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBydW4gdmFsaWRhdGlvbiBvbiB0aGUgbGlua3M= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBzZXR0aW5ncw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBjdXN0b20gZmllbGRz - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBlbWFpbCBjb25maWd1cmF0aW9u - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBvdXRwdXQgc2V0dGluZ3M= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBkZWZhdWx0IHNlYXJjaCBjb25maWd1cmF0aW9u - SW4tTmV3eiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbnN0YWxsIG5ldyBtb2R1bGVz - VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gbWFuYWdlIGNhdGVnb3JpZXMgYW5kIGl0ZW1zIGFjcm9zcyBhbGwgY2F0ZWdvcmllcw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIHN5c3RlbSBiYWNrdXBz - VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gYnJvd3NlIHRoZSBjYXRhbG9nIGFuZCBtYW5hZ2UgY2F0ZWdvcmllcyBhbmQgaXRlbXM= - VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGNhdGVnb3J5IGN1c3RvbSBmaWVsZHM= - Q29uZmlndXJlIENhdGVnb3J5IEVtYWlsIEV2ZW50cw== - Q29uZmlndXJlIENhdGVnb3J5IHNlYXJjaCBvcHRpb25z - VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgY2F0ZWdvcnkgc2V0dGluZ3M= - VGhpcyBpcyBhIGdlbmVyYWwgY29uZmd1cmF0aW9uIHNlY3Rpb24= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgcmVnaW9uYWwgc2V0dGluZ3MsIG1hbmFnZSBhbmQgZWRpdCBsYW5ndWFnZXM= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgQ1NTIHN0eWxlc2hlZXRzIGZvciB0aGVtZXMu - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlbWVzIGFuZCBlZGl0IHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcw== - VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgdXNlciBzZXR0aW5ncw== - VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBlLW1haWxzIHNlbnQgYnkgSW4tUG9ydGFs - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBleHBvcnQgSW4tcG9ydGFsIGRhdGE= - SGVscCBzZWN0aW9uIGZvciBJbi1wb3J0YWwgYW5kIGFsbCBvZiBpdHMgbW9kdWxlcy4gQWxzbyBhY2Nlc3NpYmxlIHZpYSB0aGUgc2VjdGlvbi1zcGVjaWZpYyBpbnRlcmFjdGl2ZSBoZWxwIGZlYXR1cmUu - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbXBvcnQgZGF0YSBmcm9tIG90aGVyIHByb2dyYW1zIGludG8gSW4tcG9ydGFs - VGhpcyBzZWN0aW9uIHNob3dzIHN1bW1hcnkgc3RhdGlzdGljcw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGEgaW1wb3J0IGZyb20gb3RoZXIgc3lzdGVtcw== - TWFuYWdlIHN0YXR1cyBvZiBhbGwgbW9kdWxlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgSW4tcG9ydGFsIHN5c3RlbS4= - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBlbmFibGVkIGFuZCBkaXNhYmxlIG1vZHVsZXM= - VmlldyBzeXN0ZW0gc3RhdGlzdGljcywgbG9ncyBhbmQgcmVwb3J0cw== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGFiYXNlIHJlc3RvcmVz - VGhpcyBzZWN0aW9uIGRpc3BsYXlzIGEgbGlzdCBvZiBhbGwgcmV2aWV3cyBpbiB0aGUgc3lzdGVtLg== - VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzZWFyY2ggbG9nIGFuZCBhbGxvd3MgdG8gbWFuYWdlIGl0 - VGhpcyBzZWN0aW9uIGFsbG93cyB0byB2aWV3IFBIUCBjb25maWd1cmF0aW9u - VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBhY3RpdmUgc2Vzc2lvbnMgYW5kIGFsbG93cyB0byBtYW5hZ2UgdGhlbQ== - TWFuYWdlIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBzaXRlLCBpbmNsdWRpbmcgY2F0ZWdvcmllcywgaXRlbXMgYW5kIGNhdGVnb3J5IHNldHRpbmdzLg== - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRpcmVjdCBTUUwgcXVlcmllcyBvbiBJbi1wb3J0YWwgZGF0YWJhc2U= - TWFuYWdlIHN5c3RlbS13aWRlIHNldHRpbmdzLCBlZGl0IHRoZW1lcyBhbmQgbGFuZ3VhZ2Vz - VGhpcyBzZWN0aW9uIHNob3dzIGF2YWlsYWJsZSB0YWdzIGZvciB1c2luZyBpbiB0ZW1wbGF0ZXM= - VXNlIHZhcmlvdXMgSW4tcG9ydGFsIGRhdGEgbWFuYWdlbWVudCB0b29scywgaW5jbHVkaW5nIGJhY2t1cCwgcmVzdG9yZSwgaW1wb3J0IGFuZCBleHBvcnQ= - TWFuYWdlIHVzZXJzIGFuZCBncm91cHMsIHNldCB1c2VyICYgZ3JvdXAgcGVybWlzc2lvbnMgYW5kIGRlZmluZSB1c2VyIHNldHRpbmdzLg== - TWFuYWdlIFVzZXIgQmFuIFJ1bGVz - VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHVzZXIgY3VzdG9tIGZpZWxkcw== - Q29uZmlndXJlIFVzZXIgZW1haWwgZXZlbnRz - VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYWdhbmUgZ3JvdXBzLCBhc3NpZ24gdXNlcnMgdG8gZ3JvdXBzIGFuZCBwZXJmb3JtIG1hc3MgZW1haWwgc2VuZGluZw== - VGhpcyBzZWN0aW9ucyBhbGxvd3MgdG8gbWFuYWdlIHVzZXJzLCB0aGVpciBwZXJtaXNzaW9ucyBhbmQgcGVyZm9ybSBtYXNzIGVtYWls - VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzaXRlIHZpc2l0b3JzIGxvZw== - RGlzYWJsZWQ= - RG93bmxvYWQgRXhwb3J0IEZpbGU= - RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0 - WW91IGhhdmUgbm90IHNhdmVkIGNoYW5nZXMgdG8gdGhlIGl0ZW0geW91IGFyZSBlZGl0aW5nITxiciAvPkNsaWNrIE9LIHRvIGxvb3NlIGNoYW5nZXMgYW5kIGdvIHRvIHRoZSBzZWxlY3RlZCBzZWN0aW9uPGJyIC8+b3IgQ2FuY2VsIHRvIHN0YXkgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbi4= - RmlsZSBpcyBlbXB0eQ== - IA== - RW5hYmxlZA== - Q2FuJ3Qgc2F2ZSBhIGZpbGU= - RXJyb3IgY29weWluZyBzdWJjYXRlZ29yaWVz - Q3VzdG9tIGZpZWxkIHdpdGggaWRlbnRpY2FsIG5hbWUgYWxyZWFkeSBleGlzdHM= - VXNlcm5hbWUgeW91IGhhdmUgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc3lzdGVtLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgdXNlcm5hbWUu - RmlsZSBpcyB0b28gbGFyZ2U= - SW52YWxpZCBGaWxlIEZvcm1hdA== - RXJyb3IgbW92aW5nIHN1YmNhdGVnb3J5 - UGFzc3dvcmRzIGRvIG5vdCBtYXRjaCE= - cmVxdWlyZWQgY29sdW1ucyBtaXNzaW5n - Q2F0ZWdvcnkgZmllbGQgbm90IHVuaXF1ZQ== - VW5rbm93biBjYXRlZ29yeQ== - SW5jb3JyZWN0IGRhdGUgZm9ybWF0LCBwbGVhc2UgdXNlICglcykgZXguICglcyk= - SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlICVz - SW52YWxpZCBGb3JtYXQ= - RmllbGQgaXMgb3V0IG9mIHJhbmdl - RmllbGQgaXMgcmVxdWlyZWQ= - RmllbGQgdmFsdWUgbXVzdCBiZSB1bmlxdWU= - RmllbGQgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSAlcyB0byAlcw== - QWRkIEFydGljbGU= - QXBwcm92ZSBBcnRpY2xl - RGVjbGluZSBBcnRpY2xl - TW9kaWZ5IEFydGljbGU= - QXBwcm92ZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg== - RGVjbGluZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg== - QXJ0aWNsZSBSZXZpZXcgQWRkZWQ= - UGVuZGluZyBBcnRpY2xlIFJldmlldyBBZGRlZA== - QXBwcm92ZSBBcnRpY2xlIFJldmlldw== - RGVjbGluZSBBcnRpY2xlIFJldmlldw== - QWRkIENhdGVnb3J5 - QWRkIFBlbmRpbmcgQ2F0ZWdvcnk= - QXBwcm92ZSBDYXRlZ29yeQ== - RGVueSBDYXRlZ29yeQ== - TW9kaWZ5IENhdGVnb3J5 - RGVsZXRlIENhdGVnb3J5 - Q29tbW9uIEZvb3RlciBUZW1wbGF0ZQ== - RW1haWwgZXZlbnRzIGltcG9ydCBwcm9ncmVzcw== - QWRkIExpbms= - QWRkIFBlbmRpbmcgTGluaw== - QXBwcm92ZSBQZW5kaW5nIExpbms= - RGVueSBMaW5r - TW9kaWZ5IExpbms= - QXBwcm92ZSBMaW5rIE1vZGlmaWNhdGlvbg== - RGVjbGluZSBsaW5rIG1vZGlmaWNhdGlvbg== - TGluayBNb2RpZmljYXRpb24gUGVuZGluZw== - TGluayBSZXZpZXcgQWRkZWQ= - UGVuZGluZyBSZXZpZXcgQWRkZWQ= - QXBwcm92ZSBMaW5rIFJldmlldw== - RGVjbGluZSBMaW5rIFJldmlldw== - TmV3IFByaXZhdGUgTWVzc2FnZQ== - UG9zdCBBZGRlZA== - UG9zdCBNb2RpZmllZA== - VG9waWMgQWRkZWQ= - QWRkIFVzZXI= - QWRkIFBlbmRpbmcgVXNlcg== - QXBwcm92ZSBVc2Vy - RGVueSBVc2Vy - Rm9yZ290IFBhc3N3b3Jk - TWVtYmVyc2hpcCBleHBpcmF0aW9uIG5vdGljZQ== - TWVtYmVyc2hpcCBleHBpcmVk - UGFzc3dvcmQgQ29uZmlybWF0aW9u - VXNlciBzdWJzY3JpYmVk - U3VnZ2VzdCB0byBhIGZyaWVuZA== - VXNlciB1bnN1YnNjcmliZWQ= - VmFsaWRhdGUgVXNlcg== - RmllbGQ= - RGlzcGxheSBPcmRlcg== - QWRkcmVzcyBMaW5l - QWR2YW5jZWQgQ1NT - QWx0IFZhbHVl - QXV0b21hdGljIEZpbGVuYW1l - QXZhaWxhYmxlIENvbHVtbnM= - QmFja2dyb3VuZA== - QmFja2dyb3VuZCBBdHRhY2htZW50 - QmFja2dyb3VuZCBDb2xvcg== - QmFja2dyb3VuZCBJbWFnZQ== - QmFja2dyb3VuZCBQb3NpdGlvbg== - QmFja2dyb3VuZCBSZXBlYXQ= - Qm9yZGVyIEJvdHRvbQ== - Qm9yZGVyIExlZnQ= - Qm9yZGVyIFJpZ2h0 - Qm9yZGVycw== - Qm9yZGVyIFRvcA== - Q2F0ZWdvcnk= - QXV0b21hdGljIERpcmVjdG9yeSBOYW1l - RGlyZWN0b3J5IE5hbWU= - Q2F0ZWdvcnkgRm9ybWF0 - Q2F0ZWdvcnkgSUQ= - Q2F0ZWdvcnkgc2VwYXJhdG9y - Q2F0ZWdvcnkgVGVtcGxhdGU= - Q2hhcnNldA== - Q2hlY2sgRHVwbGljYXRlcyBieQ== - Q29tcGFueQ== - Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl - Q3JlYXRlZCBCeQ== - Q3JlYXRlZCBPbg== - Q3Vyc29y - RGF0ZSBGb3JtYXQ= - RGVjaW1hbCBQb2ludA== - RGVzY3JpcHRpb24= - RGlzcGxheQ== - QXMgUGxhaW4gVGV4dA== - RHVyYXRpb24= - RWRpdG9ycyBQaWNr - RWxhcHNlZCBUaW1l - RW5hYmxlZA== - RXN0aW1hdGVkIFRpbWU= - RXhwaXJl - RXhwb3J0IGNvbHVtbnM= - RXhwb3J0IEZpbGVuYW1l - RXhwb3J0IGZvcm1hdA== - RXhwb3J0IE1vZHVsZXM= - RXhwb3J0IFBocmFzZSBUeXBlcw== - RXh0cmEgSGVhZGVycw== - RmF4 - RmllbGRzIGVuY2xvc2VkIGJ5 - RmllbGRzIHNlcGFyYXRlZCBieQ== - RmllbGQgVGl0bGVz - RmlsZW5hbWU= - Rm9udA== - Rm9udCBDb2xvcg== - Rm9udCBGYW1pbHk= - Rm9udCBTaXpl - Rm9udCBTdHlsZQ== - Rm9udCBXZWlnaHQ= - SUQ= - R3JvdXAgTmFtZQ== - SGVpZ2h0 - SGl0cw== - SG90 - SWNvbiBVUkw= - SUQ= - SW1hZ2UgSUQ= - SW1wb3J0IENhdGVnb3J5 - SW1wb3J0IEZpbGVuYW1l - SW5jbHVkZSBmaWVsZCB0aXRsZXM= - SW5wdXQgRGF0ZSBGb3JtYXQ= - SW5wdXQgVGltZSBGb3JtYXQ= - SW5zdGFsbCBNb2R1bGVz - SW5zdGFsbCBQaHJhc2UgVHlwZXM= - VXNlIGN1cnJlbnQgY2F0ZWdvcnkgYXMgcm9vdCBmb3IgdGhlIGV4cG9ydA== - UHJpbWFyeQ== - SXMgU3lzdGVt - SXRlbSBUZW1wbGF0ZQ== - TGFuZ3VhZ2UgRmlsZQ== - TGFuZ3VhZ2UgSUQ= - TGVmdA== - TGluZSBlbmRpbmdz - TGluZSBFbmRpbmdzIEluc2lkZSBGaWVsZHM= - TG9jYWwgTmFtZQ== - TG9jYXRpb24= - TWFyZ2luIEJvdHRvbQ== - TWFyZ2luIExlZnQ= - TWFyZ2luIFJpZ2h0 - TWFyZ2lucw== - TWFyZ2luIFRvcA== - TWVzc2FnZSBCb2R5 - TWVzc2FnZSBUeXBl - TWV0YSBEZXNjcmlwdGlvbg== - TWV0YSBLZXl3b3Jkcw== - TW9kaWZpZWQ= - TW9kdWxl - TmFtZQ== - TmV3 - UGFjayBOYW1l - UGFkZGluZyBCb3R0b20= - UGFkZGluZyBMZWZ0 - UGFkZGluZyBSaWdodA== - UGFkZGluZ3M= - UGFkZGluZyBUb3A= - UGVyY2VudHMgQ29tcGxldGVk - TGFiZWw= - UGhyYXNlIFR5cGU= - UG9w - UG9zaXRpb24= - UHJpbWFyeQ== - UHJpbWFyeQ== - UHJpbWFyeSBUcmFuc2xhdGlvbg== - UHJpb3JpdHk= - UmF0aW5n - UmVsYXRpb24gSUQ= - VHlwZQ== - UmVtb3RlIFVSTA== - UmVwbGFjZSBEdXBsaWNhdGVz - UmV2aWV3IElE - UmV2aWV3IFRleHQ= - U2FtZSBBcyBUaHVtYg== - QmFzZWQgT24= - U3R5bGU= - U2VsZWN0b3IgSUQ= - U2VsZWN0b3IgTmFtZQ== - U2tpcCBGaXJzdCBSb3c= - U3RhdHVz - U3R5bGVzaGVldCBJRA== - U3ViamVjdA== - SXRlbQ== - VGV4dCBBbGlnbg== - VGV4dCBEZWNvcmF0aW9u - VGhvdXNhbmRzIFNlcGFyYXRvcg== - VGltZSBGb3JtYXQ= - VGl0bGU= - VG9w - VmFsdWU= - TWVhc3VyZXMgU3lzdGVt - VXBsb2FkIEZpbGUgRnJvbSBMb2NhbCBQQw== - VVJM - VmlzaWJpbGl0eQ== - Vm90ZXM= - V2lkdGg= - Wi1JbmRleA== - Rm9udCBQcm9wZXJ0aWVz - RnJvbSBEYXRl - RnJvbnQgZW5k - Z2lnYWJ5dGUocyk= - VGhpcyBoZWxwIHNlY3Rpb24gZG9lcyBub3QgeWV0IGV4aXN0LCBpdCdzIGNvbWluZyBzb29uIQ== - aHRtbA== - SUQgRmllbGQ= - SW1wb3J0aW5nIEVtYWlsIEV2ZW50cyAuLi4= - SW1wb3J0aW5nIExhbmd1YWdlcyAuLi4= - SW1wb3J0aW5nIFBocmFzZXMgLi4u - RW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCB1bmRvIGFueSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUgdG8gZXhpc3RpbmcgcGhyYXNlcw== - SW1wb3J0aW5nIFBocmFzZXM= - SW4tbGluaw== - SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIGludGVnZXI= - TWlzc2luZyBvciBpbnZhbGlkIEluLVBvcnRhbCBMaWNlbnNl - SW52YWxpZCBzdGF0ZQ== - Q2F0ZWdvcmllcw== - TGlua3M= - QXJ0aWNsZXM= - VG9waWNz - SzQgQWR2YW5jZWQgVmlldw== - SzQgQ2F0YWxvZw== - S0I= - TGFuZ3VhZ2U= - SW1wb3J0IHByb2dyZXNz - TGFzdCBVcGRhdGVk - RGF0ZQ== - TGluayBEZXNjcmlwdGlvbg== - RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBsaW5rcw== - SGl0cw== - TGluayBOYW1l - TnVtYmVyIG9mIGRheXMgZm9yIGEgbGluayB0byBiZSBORVc= - TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdl - TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdlIG9uIGEgc2hvcnQgbGlzdGluZw== - UmF0aW5n - TGluayByZXZpZXdlZA== - QW5kIHRoZW4gYnk= - T3JkZXIgbGlua3MgYnk= - YW5kIHRoZW4gYnk= - U29ydCByZXZpZXdzIGJ5 - VVJM - RGlzcGxheSBsaW5rIFVSTCBpbiBzdGF0dXMgYmFy - TG9jYWwgSW1hZ2U= - TG9nZ2VkIGluIGFz - TG9naW4= - KEdNVCk= - KEdNVCAtMDE6MDAp - KEdNVCAtMTA6MDAp - KEdNVCAtMTE6MDAp - KEdNVCAtMTI6MDAp - KEdNVCAtMDI6MDAp - KEdNVCAtMDM6MDAp - KEdNVCAtMDQ6MDAp - KEdNVCAtMDU6MDAp - KEdNVCAtMDY6MDAp - KEdNVCAtMDc6MDAp - KEdNVCAtMDg6MDAp - KEdNVCAtMDk6MDAp - TWFyZ2lucw== - TUI= - R3JvdXAgTWVtYmVyc2hpcCBFeHBpcmF0aW9uIFJlbWluZGVyIChkYXlzKQ== - TWFpbiBNZW51 - TWV0cmlj - TWlzc2luZyBJbiBUaGVtZQ== - Q2F0ZWdvcnkgcGF0aCBpbiBvbmUgZmllbGQ= - TW9kdWxlIG5vdCBsaWNlbnNlZA== - TW9uZGF5 - TmV2ZXI= - TmV2ZXIgRXhwaXJlcw== - TmV3 - TnVtYmVyIG9mIGRheXMgdG8gYXJjaGl2ZSBhcnRpY2xlcyBhdXRvbWF0aWNhbGx5 - RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBhcnRpY2xlcw== - TnVtYmVyIG9mIGRheXMgZm9yIGEgYXJ0aWNsZSB0byBiZSBORVc= - TnVtYmVyIG9mIGFydGljbGVzIHBlciBwYWdl - QXJ0aWNsZXMgUGVyIFBhZ2UgKFNob3J0bGlzdCk= - QW5kIHRoZW4gYnk= - T3JkZXIgYXJ0aWNsZXMgYnk= - QW5kIHRoZW4gYnk= - U29ydCByZXZpZXdzIGJ5 - TmV4dCBjYXRlZ29yeQ== - TmV4dCBncm91cA== - TmV4dCBVc2Vy - Tm8= - Tm9uZQ== - Tm8gU3ViamVjdA== - Tm8gdG9waWNz - TnVtYmVyIG9mIFBvc3Rz - b2Y= - T2Zm - T24= - T25lIFdheQ== - ZGF5KHMp - aG91cihzKQ== - bWludXRlKHMp - bW9udGgocyk= - c2Vjb25kKHMp - d2VlayhzKQ== - eWVhcihzKQ== - T3JpZ2luYWwgVmFsdWVz - T3JpZ2luYWwgVmFsdWU= - T3JpZ2luYWwgVmFsdWVz - T3RoZXIgRmllbGRz - KEdNVCArMDE6MDAp - KEdNVCArMTA6MDAp - KEdNVCArMTE6MDAp - KEdNVCArMTI6MDAp - KEdNVCArMTM6MDAp - KEdNVCArMDI6MDAp - KEdNVCArMDM6MDAp - KEdNVCArMDQ6MDAp - KEdNVCArMDU6MDAp - KEdNVCArMDY6MDAp - KEdNVCArMDc6MDAp - KEdNVCArMDg6MDAp - KEdNVCArMDk6MDAp - UGFkZGluZ3M= - UGFnZQ== - VG8gY2hhbmdlIHRoZSBwYXNzd29yZCwgZW50ZXIgdGhlIHBhc3N3b3JkIGhlcmUgYW5kIGluIHRoZSBib3ggYmVsb3c= - UGVuZGluZw== - UGVyZm9ybWluZyBCYWNrdXA= - UGVyZm9ybWluZyBFeHBvcnQ= - UGVyZm9ybWluZyBJbXBvcnQ= - UGVyZm9ybWluZyBSZXN0b3Jl - QWxsb3dzIGFjY2VzcyB0byB0aGUgQWRtaW5pc3RyYXRpb24gdXRpbGl0eQ== - UmVhZC1Pbmx5IEFjY2VzcyBUbyBEYXRhYmFzZQ== - Q2F0ZWdvcmllcw== - TGlua3M= - QXJ0aWNsZXM= - VG9waWNz - UGVybWlzc2lvbiBUeXBlIEFkbWlu - QWRtaW5pc3RyYXRpb24= - UGVybWlzc2lvbiBUeXBlIEZyb250IEVuZA== - RnJvbnQgRW5k - Tm90IFRyYW5zbGF0ZWQ= - VHJhbnNsYXRlZA== - QWRtaW4= - Qm90aA== - RnJvbnQ= - RWRpdG9yJ3MgcGljaw== - UG9w - UG9zaXRpb24gQW5kIFZpc2liaWxpdHk= - TmV3IHBvc3RzIChkYXlzKQ== - TnVtYmVyIG9mIHBvc3RzIHBlciBwYWdl - UG9zdHM= - UHJldmlvdXMgY2F0ZWdvcnk= - UHJldmlvdXMgZ3JvdXA= - UHJldmlvdXMgVXNlcg== - UHJpbWFyeQ== - QWN0aXZlIEFydGljbGVz - QWN0aXZlIENhdGVnb3JpZXM= - QWN0aXZlIExpbmtz - QWN0aXZlIFRvcGljcw== - QWN0aXZlIFVzZXJz - QWRkIE1vZHVsZQ== - U2VudCBUbw== - QWRtaW4gZ3JvdXA= - TWVzc2FnZXMgZnJvbSBTaXRlIEFkbWluIGFyZSBmcm9t - QWR2YW5jZWQgU2VhcmNo - QWxsb3cgcGFzc3dvcmQgcmVzZXQgYWZ0ZXI= - QWxsIHRlbXBsYXRlcw== - QWx0IHZhbHVl - QXBwbHlpbmcgQmFuIExpc3QgdG8gRXhpc3RpbmcgVXNlcnMuLg== - Q29udGludWUgdG8gcmVzdG9yZSBhdCBteSBvd24gcmlzaz8= - QXJjaGl2ZWQ= - QXJjaGl2YXRpb24gRGF0ZQ== - QXZlcmFnZSBSYXRpbmcgb2YgQXJ0aWNsZXM= - QXJ0aWNsZSBCb2R5 - QXJ0aWNsZSBFeGNlcnB0 - QXJ0aWNsZSBFeGNlcnB0 - VG90YWwgQXJ0aWNsZSBSZXZpZXdz - QWN0aXZlIEFydGljbGVz - QXJjaGl2ZWQgQXJ0aWNsZXM= - UGVuZGluZyBBcnRpY2xlcw== - VG90YWwgQXJ0aWNsZXM= - QXR0YWNobWVudA== - QXR0ZW50aW9uIQ== - QXV0aG9y - R2VuZXJhdGUgZnJvbSB0aGUgYXJ0aWNsZSBib2R5 - QXV0b21hdGljIERpcmVjdG9yeSBOYW1l - QXV0b21hdGljIEZpbGVuYW1l - TW9kdWxlcw== - QmFjayBVcCBEYXRl - QmFja3VwIFBhdGg= - QmFja3VwIHN0YXR1cw== - QmFubmVkIFVzZXJz - RGF0ZSBvZiBCaXJ0aA== - Q2FjaGUgVGltZW91dCAoc2Vjb25kcyk= - RWRpdG9yJ3MgUGljayBDYXRlZ29yaWVz - Q2F0ZWdvcnkgSUQ= - Q2F0ZWdvcnkgTGVhZCBTdG9yeSBBcnRpY2xlcw== - Q2F0ZWdvcnkgUGVybWlzc2lvbnM= - Q2F0ZWdvcnkgTGVhZCBTdG9yeQ== - Q2Vuc29yc2hpcCBJZA== - Q2Vuc29yc2hpcCBXb3Jk - Q2hhcnNldA== - Q2l0eQ== - Q29tbWVudHM= - Q29udGludWU= - Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl - Q291bnRyeQ== - Q3JlYXRlZCBieQ== - Q3JlYXRlZCBvbg== - Q3JlYXRlZCBhdA== - Q3VycmVudCBTZXNzaW9ucw== - Q3VzdG9tIEZpbGVuYW1l - RGF0YWJhc2UgU2V0dGluZ3M= - VG90YWwgU2l6ZSBvZiB0aGUgRGF0YWJhc2U= - KG1tLWRkLXl5eXkp - U2VydmVyIERhdGFiYXNl - U2VydmVyIFBhc3N3b3Jk - RGF0YWJhc2UgVXNlciBOYW1l - RGVjaW1hbCBQb2ludA== - RGVmYXVsdA== - RGVsZXRl - RGVzY3JpcHRpb24= - RGlyZWN0b3J5IE5hbWU= - RGlzYWJsZWQgQXJ0aWNsZXM= - RGlzYWJsZWQgQ2F0ZWdvcmllcw== - RGlzYWJsZWQgTGlua3M= - RGlzcGxheSBPcmRlcg== - RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0Og== - QWxsb3cgRHVwbGljYXRlIFJhdGluZyBWb3Rlcw== - QWxsb3cgRHVwbGljYXRlIFJldmlld3M= - RWRpdA== - RWRpdG9yJ3MgUGljaw== - RWRpdG9yJ3MgUGljayBBcnRpY2xlcw== - RWRpdG9yJ3MgUGljayBMaW5rcw== - RWRpdG9yIFBpY2sgVG9waWNz - RWRpdCBRdWVyeQ== - RW1haWw= - RW1haWwgQm9keQ== - RW1haWwgZGVsaXZlcnkgYWJvcnRlZA== - VGhlIEVtYWlsIE1lc3NhZ2UgaGFzIGJlZW4gc2VudA== - UGxlYXNlIFdhaXQgd2hpbGUgSW4tUG9ydGFsIHByZXBhcmVzIHRvIHNlbmQgdGhlIG1lc3NhZ2UuLg== - RW1haWwgU3ViamVjdA== - RW1vdGlvbiBJZA== - RW5hYmxlIFRlbXBsYXRlIENhY2hpbmc= - RW5hYmxlZA== - RW5hYmxlIEhUTUw/ - RXJyb3IgVGFn - RXZlbnQ= - RXhwaXJhdGlvbiBEYXRl - RXhwb3J0IEZpbGVuYW1l - R2VuZXJhbCBlcnJvcjogdW5hYmxlIHRvIGV4cG9ydA== - RmllbGQgSWQ= - RmllbGQgTGFiZWw= - RmllbGQgTmFtZQ== - RmllbGQgUHJvbXB0 - RmlsZSBJZA== - RmlsZSBuYW1l - Rmlyc3QgTmFtZQ== - Rmlyc3QgTmFtZQ== - RnJlcXVlbmN5 - RnJvbS9UbyBVc2Vy - RnJvbQ== - RnJvbnQgcGFnZSBsZWFkIGFydGljbGU= - R2VuZXJhbCBQZXJtaXNzaW9ucw== - R3JvdXAgTmFtZQ== - RXh0cmEgTWFpbCBIZWFkZXJz - SGVhZGluZw== - KE1pbmltdW0gNCk= - SGl0cw== - SG90 - SG90IEFydGljbGVz - SG90IExpbmtz - SG90IFRvcGljcw== - SFRNTA== - SFRNTCBWZXJzaW9u - SWNvbiBVUkw= - SW1hZ2U= - SW1hZ2UgSUQ= - SW1wb3J0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBkaWQgbm90IGNvbXBsZXRlLg== - TGluayBJbWFnZSBOYW1l - VGFibGUgTmFtZSBQcmVmaXg= - SW5pdGlhbCBJbXBvcnQgQ2F0ZWdvcnk= - SW4tTGluayBEYXRhYmFzZSBOYW1l - SW4tTGluayBEYXRhYmFzZSBQYXNzd29yZA== - SW4tTGluayBEYXRhYmFzZSBVc2VybmFtZQ== - SW4tTGluayBTZXJ2ZXIgTmFtZQ== - SW4tTGluayBTUUwgVHlwZQ== - SW5wdXQgVHlwZQ== - SW5zdGFsbGF0aW9uIFN0YXR1cw== - SVAgQWRkcmVzcw== - SVAgQWRkcmVzcw== - SXRlbQ== - SXRlbSBGaWVsZA== - RmllbGQgVmFsdWU= - RmllbGQgQ29tcGFyaXNvbg== - S2V5IFN0cm9rZQ== - S2V5d29yZA== - TGFiZWw= - TGFuZ3VhZ2UgRmlsZQ== - TGFuZ3VhZ2UgSWQ= - TGFuZ3VhZ2UgQ2FjaGUgVGltZW91dA== - RGF0ZSBGb3JtYXQ= - VGltZSBGb3JtYXQ= - TGFzdCBVcGRhdGVkIEFydGljbGU= - TGFzdCBDYXRlZ29yeSBVcGRhdGU= - TGFzdCBVcGRhdGVkIExpbms= - TGFzdCBOYW1l - TGFzdCBVcGRhdGVkIFBvc3QgRGF0ZQ== - TGFzdCBVcGRhdGVkIFBvc3QgVGltZQ== - TGFzdCBVcGRhdGVkIFRvcGljIERhdGU= - TGFzdCBVcGRhdGVkIFRvcGljIFRpbWU= - TGFzdCBOYW1l - U2l0ZSBMZWFkIFN0b3J5 - Q2F0ZWdvcnkgbGVhZCBhcnRpY2xl - TGVhZCBTdG9yeSBBcnRpY2xlcw== - TGluayBJZA== - VG90YWwgTGluayBSZXZpZXdz - QXZlcmFnZSBSYXRpbmcgb2YgTGlua3M= - TGluayBPd25lcg== - SW5zdGFsbCBQaHJhc2UgVHlwZXM6 - TG9jYWwgTmFtZQ== - TG9jYXRpb24= - U2VydmVyIFJlcXVpcmVzIEF1dGhlbnRpY2F0aW9u - U2VuZCBIVE1MIGVtYWls - UG9ydCAoZS5nLiBwb3J0IDI1KQ== - TWFpbCBTZXJ2ZXIgQWRkcmVzcw== - TWF4aW11bSBIaXRzIG9mIGFuIEFydGljbGU= - TWF4aW11bSBIaXRzIG9mIGEgTGluaw== - TWF4aW11bSBWb3RlcyBvZiBhIExpbms= - VG9waWMgTWF4aW11bSBIaXRz - VG9waWMgTWF4aW11bSBWb3Rlcw== - TWF4aW11bSBWb3RlcyBvZiBhbiBBcnRpY2xl - TWF4aW1hbCBpbXBvcnRlZCBjYXRlZ29yeSBsZXZlbA== - TWVtYmVyc2hpcCBFeHBpcmVz - Rm9ybWF0 - TWV0YSBEZXNjcmlwdGlvbg== - TWV0YSBLZXl3b3Jkcw== - TWluaW11bSBrZXl3b3JkIGxlbmd0aA== - TW9kaWZpZWQgT24= - TW9kaWZpZWQgYXQ= - TW9kdWxl - TW92ZSBkb3du - TW92ZSB1cA== - U2hvdyBtdWx0aXBsZQ== - TmFtZQ== - TmV3 - TmV3IEFydGljbGVz - TmV3IENhdGVnb3JpZXM= - TmV3ZXN0IEFydGljbGUgRGF0ZQ== - TmV3ZXN0IENhdGVnb3J5IERhdGU= - TmV3ZXN0IExpbmsgRGF0ZQ== - TmV3ZXN0IFBvc3QgRGF0ZQ== - TmV3ZXN0IFBvc3QgVGltZQ== - TmV3ZXN0IFRvcGljIERhdGU= - TmV3ZXN0IFRvcGljIFRpbWU= - TmV3ZXN0IFVzZXIgRGF0ZQ== - TmV3IExpbmtz - TmV3cyBBcnRpY2xlIElE - TmV3IFRvcGljcw== - Q3VycmVudGx5IEFjdGl2ZSBVc2VyIFNlc3Npb25z - Tm90aWZ5IE93bmVy - TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgdW5yZWdpc3RlcmVkIHVzZXJzIHRvIHZpZXcgaXQ= - T3ZlcndyaXRlIEV4aXN0aW5nIFBocmFzZXM= - UGFjayBOYW1l - UGFyYW1ldGVy - UGFyZW50IHRlbXBsYXRlcw== - UGFzc3dvcmQ= - UmVwZWF0IFBhc3N3b3Jk - UGVuZGluZw== - UGVuZGluZyBDYXRlZ29yaWVz - UGVuZGluZyBJdGVtcw== - UGVuZGluZyBMaW5rcw== - UGVyZm9ybSB0aGlzIG9wZXJhdGlvbiBub3c/ - UGVyIFBhZ2U= - UGVyc29uYWwgSW5mb3JtYXRpb24= - UGhvbmU= - UGhyYXNlIElk - UGhyYXNlcw== - UGhyYXNlIFR5cGU= - UGxhaW4gVGV4dA== - UG9wdWxhcml0eQ== - UG9wdWxhciBBcnRpY2xlcw== - UG9wdWxhciBMaW5rcw== - UG9wdWxhciBUb3BpY3M= - UG9zdGVkIGJ5 - UG9zdHMgdG8gbG9jaw== - VG90YWwgUG9zdHM= - UHJpbWFyeQ== - UHJpbWFyeSBHcm91cA== - UHJpbWFyeSBWYWx1ZQ== - UHJpb3JpdHk= - UHJvcGVydGllcw== - UmF0aW5n - KE1pbmltdW0gMCwgTWF4aW11bSA1KQ== - TnVtYmVyIG9mIERhdGFiYXNlIFJlY29yZHM= - TnVtYmVyIG9mIFJlZ2lvbiBQYWNrcw== - UmVndWxhciBVc2VyIEdyb3Vw - TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgcmVnaXN0ZXJlZCB1c2VycyB0byB2aWV3IGl0 - UmVsYXRpb24gSUQ= - UmVsYXRpb24gVHlwZQ== - U2VhcmNoIFJlbGV2YW5jZSBkZXBlbmRzIG9u - U2VhcmNoIFJlbGV2ZW5jZSBTZXR0aW5ncw== - VXNlIHJlbW90ZSBpbWFnZSAoVVJMKQ== - UmVwbGFjZW1lbnQgV29yZA== - SW5jcmVhc2UgaW1wb3J0YW5jZSBpZiBmaWVsZCBjb250YWlucyBhIHJlcXVpcmVkIGtleXdvcmQgYnk= - UmVzdG9yZSBoYXMgZmFpbGVkIGFuIGVycm9yIG9jY3VyZWQ6 - Q2hvb3NlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJhY2t1cCBkYXRlcyB0byByZXN0b3JlIG9yIGRlbGV0ZQ== - UmVzdG9yZSBTdGF0dXM= - UmVzdG9yZSBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 - UmV2aWV3ZWQgQnk= - UmV2aWV3IElE - UmV2aWV3IFRleHQ= - U2VsZWN0IE1vZHVsZSBSb290IENhdGVnb3J5Og== - Um9vdCBjYXRlZ29yeSBuYW1lIChsYW5ndWFnZSB2YXJpYWJsZSk= - Um9vdCBQYXNzd29yZA== - UGxlYXNlIGVudGVyIHRoZSBSb290IHBhc3N3b3Jk - VmVyaWZ5IFJvb3QgUGFzc3dvcmQ= - UnVsZSBUeXBl - VmFsaWRhdGlvbiBQcm9ncmVzcw== - U2VhcmNo - U2VhcmNoIFR5cGU= - U2VsZWN0IFNvdXJjZSBMYW5ndWFnZQ== - U2VuZCBFbWFpbCBBcw== - U2VudCBPbg== - U2VydmVyIEhvc3RuYW1l - U0lE - U2Vzc2lvbiBDb29raWUgTmFtZQ== - U2Vzc2lvbiBNYW5hZ2VtZW50IE1ldGhvZA== - U2Vzc2lvbiBJbmFjdGl2aXR5IFRpbWVvdXQgKHNlY29uZHMp - U2hvdyBvbiB0aGUgZ2VuZXJhbCB0YWI= - U2ltcGxlIFNlYXJjaA== - QWRkaXRpb25hbCBNZXNzYWdlIEhlYWRlcnM= - TWFpbCBTZXJ2ZXIgUGFzc3dvcmQ= - TWFpbCBTZXJ2ZXIgVXNlcm5hbWU= - VXNlIG5vbi1ibG9ja2luZyBzb2NrZXQgbW9kZQ== - U1FMIFF1ZXJ5Og== - QW4gU1FMIGVycm9yIGhhcyBvY2N1cmVk - UGVyZm9ybSBTUUwgUXVlcnk= - U1FMIFF1ZXJ5IFJlc3VsdHM= - U2VydmVyIFR5cGU= - U3RhcnQgRGF0ZQ== - U3RhdGU= - U3RhdHVz - U3RlcCBPbmU= - U3RyZWV0 - U3R5bGVzaGVldA== - U3ViamVjdA== - U3ViIFNlYXJjaA== - RW5hYmxlIFRhZyBDYWNoaW5n - VG90YWwgU2l6ZSBvZiBTeXN0ZW0gRmlsZXM= - U3lzdGVtIHByZW1pc3Npb25z - TnVtYmVyIG9mIERhdGFiYXNlIFRhYmxlcw== - VGVtcGxhdGU= - VGV4dCBWZXJzaW9u - VGhlbWU= - TnVtYmVyIG9mIFRoZW1lcw== - VGhlbWUgSWQ= - VGhvdXNhbmRzIFNlcGFyYXRvcg== - UmVtb3RlIFVSTA== - KGhoOm1tOnNzKQ== - VGl0bGU= - VG8= - VG9waWNzIEF2ZXJhZ2UgUmF0aW5n - VG9waWMgSUQ= - VG9waWMgTG9ja2Vk - VG90YWwgVG9waWMgUmV2aWV3cw== - QWN0aXZlIFRvcGljcw== - RGlzYWJsZWQgVG9waWNz - UGVuZGluZyBUb3BpY3M= - VG90YWwgVG9waWNz - VG90YWwgVXNlcnMgd2l0aCBUb3BpY3M= - VG90YWwgQ2F0ZWdvcmllcw== - VG90YWwgTGlua3M= - VG90YWwgVXNlciBHcm91cHM= - VHlwZQ== - VXBkYXRpbmc= - VXBsb2FkIGltYWdlIGZyb20gbG9jYWwgUEM= - VVJM - VXNlciBDb3VudA== - VXNlcm5hbWU= - VXNlcm5hbWU= - QWN0aXZlIFVzZXJz - RGlzYWJsZWQgVXNlcnM= - UGVuZGluZyBVc2Vycw== - TnVtYmVyIG9mIFVuaXF1ZSBDb3VudHJpZXMgb2YgVXNlcnM= - TnVtYmVyIG9mIFVuaXF1ZSBTdGF0ZXMgb2YgVXNlcnM= - VmFsdWU= - TGlzdCBvZiBWYWx1ZXM= - Vmlld3M= - VmlzaWJsZQ== - KE1pbmltdW0gMSk= - Vm90ZXM= - V2FybmluZyE= - V2VpZ2h0 - Wmlw - U2Vzc2lvbiBSZWZlcnJlciBDaGVja2luZw== - bGFfUmF0aW5n - QWxyZWFkeSB2b3RlZA== - UmVjaXByb2NhbA== - UmVtb3ZlIEZyb20= - Tm90IGFsbCByZXF1aXJlZCBmaWVsZHMgYXJlIGZpbGxlZC4gUGxlYXNlIGZpbGwgdGhlbSBmaXJzdC4= - QWNjZXNzIGRlbmllZA== - RmlsZSBlcnJvcg== - RmlsZSBub3QgZm91bmQ= - VW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl - QW4gdW5kZWZpbmVkIGVycm9yIGhhcyBvY2N1cmVk - UmV2aWV3ZXI= - UmV2aWV3IGFkZGVkIHN1Y2Nlc3NmdWxseQ== - VGhpcyBpdGVtIGhhcyBhbHJlYWR5IGJlZW4gcmV2aWV3ZWQ= - RXJyb3IgYWRkaW5nIHJldmlldw== - UmV2aWV3cyBQZXIgUGFnZQ== - UmV2aWV3cyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ== - RXJyb3IgdmVyaWZ5aW5nIHBhc3N3b3Jk - UnVubmluZyBRdWVyeQ== - U2FtcGxlIFRleHQ= - U2F2ZQ== - U2VhcmNo - U2VhcmNo - U2VhcmNoIENhdGVnb3JpZXM= - U2VhcmNoIExpbmtz - U2VhcmNoIEFydGljbGVz - U2VhcmNoIFRvcGljcw== - Q2F0ZWdvcmllczE= - Q2xlYXIgU2VhcmNo - TmV3IFNlYXJjaA== - TUVUQSBJbmZvcm1hdGlvbg== - Q2F0ZWdvcnk= - Q291bnRlcnM= - Q3VzdG9tIEZpZWxkcw== - RnVsbCBTaXplIEltYWdl - R2VuZXJhbA== - SW1hZ2U= - TWVzc2FnZQ== - U2VjdGlvbiBPdmVydmlldw== - UHJvcGVydGllcw== - UXVpY2sgTGlua3M= - UmVsYXRpb24= - VGVtcGxhdGVz - VGh1bWJuYWlsIEltYWdl - VHJhbnNsYXRpb24= - U2VhcmNoIFVzZXJz - U2VsZWN0aW5nIENhdGVnb3JpZXM= - RW1wdHkgc2VsZWN0aW9u - T25lIGZpZWxkIGZvciBlYWNoIGNhdGVnb3J5IGxldmVs - U2hvd2luZyBMb2dz - U2hvd2luZyBTdGF0aXN0aWNz - U2hvdyBFbWFpbCBMb2c= - U2hvd2luZyBMb2dz - QW5kIHRoZW4gYnk= - U3RlcA== - RGVmaW5pdGlvbg== - UHJldmlldw== - U3VuZGF5 - QWRtaW5pc3RyYXRpb24gUGFuZWwgVUk= - QWR2YW5jZWQgVmlldw== - QmFja3Vw - VXNlciBCYW4gTGlzdA== - QmFzZSBTdHlsZXM= - QmxvY2sgU3R5bGVz - Q2F0YWxvZw== - Q2F0ZWdvcmllcw== - U2VsZWN0IEl0ZW0= - Q2F0ZWdvcnkgU2VsZWN0 - Q2Vuc29yc2hpcA== - Q29tbXVuaXR5 - R2VuZXJhbCBTZXR0aW5ncw== - Q2Vuc29yc2hpcA== - Q3VzdG9tIEZpZWxkcw== - RS1tYWlsIFNldHRpbmdz - R2VuZXJhbCBTZXR0aW5ncw== - T3V0cHV0IFNldHRpbmdz - U2VhcmNoIFNldHRpbmdz - R2VuZXJhbCBTZXR0aW5ncw== - U21pbGV5cw== - R2VuZXJhbCBTZXR0aW5ncw== - Q3VzdG9t - RWRpdGluZyBSZXZpZXc= - RW1haWwgRXZlbnRz - RW1haWwgTG9n - RW1haWwgTWVzc2FnZQ== - RXhwb3J0IERhdGE= - RXhwb3J0IExhbmd1YWdlIFBhY2s= - R2VuZXJhbA== - R2VuZXJhbCBTZXR0aW5ncw== - R3JvdXA= - R3JvdXBz - U2VsZWN0IEdyb3Vw - SGVscA== - SW1hZ2Vz - SW1wb3J0IERhdGE= - SW1wb3J0IExhbmd1YWdlIFBhY2s= - SW4tbGluayBpbXBvcnQ= - SW5zdGFsbA== - SXRlbSBMaXN0 - SXRlbXM= - TGFiZWw= - TGFiZWxz - TGluayBWYWxpZGF0aW9u - TWFpbCBMaXN0 - TWVzc2FnZQ== - TWlzc2luZyBMYWJlbHM= - TW9kdWxlcw== - TW9kdWxlcyBNYW5hZ2VtZW50 - TW9kdWxlcyAmIFNldHRpbmdz - T3ZlcnZpZXc= - UGFja2FnZSBDb250ZW50 - UGVybWlzc2lvbnM= - cGhwQkIgSW1wb3J0 - UHJvcGVydGllcw== - UXVlcnkgRGF0YWJhc2U= - UmVnaW9uYWw= - UmVsYXRpb25z - U3VtbWFyeSAmIExvZ3M= - UmVzdG9yZQ== - UmV2aWV3 - UmV2aWV3cw== - UnVsZSBQcm9wZXJ0aWVz - U2VhcmNo - U2VhcmNoIExvZw== - U2VhcmNoIEdyb3Vwcw== - U2VhcmNoIFVzZXJz - U2VuZCBlLW1haWw= - U2VydmVyIEluZm9ybWF0aW9u - U2Vzc2lvbiBMb2c= - R2VuZXJhbCBTZXR0aW5ncw== - U3RydWN0dXJlICYgRGF0YQ== - U3RhdGlzdGljcw== - U3R5bGVzaGVldHM= - U3VtbWFyeQ== - Q29uZmlndXJhdGlvbg== - VGFnIGxpYnJhcnk= - VGVtcGxhdGU= - VGVtcGxhdGVz - VGhlbWVz - VG9vbHM= - VXBkYXRlIExpY2Vuc2U= - QmFuIHVzZXI= - VXNlciBCYW4gTGlzdA== - VXNlcnM= - VXNlciBTZWxlY3Q= - R3JvdXBz - VXNlcnM= - VmlzaXRz - VGFnIExpYnJhcnk= - VGFnIExpYnJhcnk= - dGVyYWJ5dGUocyk= - dGV4dA== - SW52YWxpZCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQ= - QWN0aXZl - QWRkaW5n - QWRkcmVzcw== - TG9naW4gbm90IGFsbG93ZWQgZnJvbSB0aGlzIGFkZHJlc3M= - QWRtaW4= - QWRtaW5pc3RyYXRvciBSZWNlaXZlIE5vdGljZXMgV2hlbg== - QWR2YW5jZWQ= - QWxs - QWxsb3c= - QW55 - QXJjaGl2ZWQ= - QXJ0aWNsZQ== - QXJ0aWNsZXM= - YXM= - QmFja2luZyB1cA== - QmFjayB1cCBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBiYWNrdXAgZmlsZSBpczo= - QmFja3VwIFBhdGg= - SW4tUG9ydGFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHdyaXRlIHRvIHRoaXMgZGlyZWN0b3J5 - VGhpcyB1dGlsaXR5IGFsbG93cyB5b3UgdG8gYmFja3VwIHlvdXIgY3VycmVudCBkYXRhIGZyb20gSW4tUG9ydGFsIGRhdGFiYXNlLg== - QmFja3VwIGluIHByb2dyZXNz - QmFu - VXNlciBCYW4gUnVsZXM= - QmFuIFVzZXIgSW5mb3JtYXRpb24= - QmxhbmsgdXNlcm5hbWUgb3IgcGFzc3dvcmQ= - Qm90aA== - QnVpbHQgSW4= - Ynl0ZXM= - Q2F0YWxvZw== - Q2F0ZWdvcmllcw== - Q2F0ZWdvcnk= - Q2Vuc29yc2hpcA== - Q2l0eQ== - WW91IGFyZSBhYm91dCB0byBjbGVhciBjbGlwYm9hcmQgY29udGVudCENClByZXNzIE9LIHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byByZXR1cm4gdG8gcHJldmlvdXMgc2NyZWVuLg== - U2VjdGlvbiBDb21pbmcgU29vbg== - Q29tcGxldGU= - Q29uZmlndXJhdGlvbg== - Q29udGFpbnM= - Q291bnRlcnM= - Q3VycmVudA== - Q3VzdG9t - Q3VzdG9tIEZpZWxk - Q3VzdG9tIEZpZWxkcw== - RGF0YWJhc2UgU2V0dGluZ3MgLSBJbnRlY2huaWMgSW4tTGluayAyLng= - Y2F0ZWdvcmllcw== - RGF0YSBUeXBlIDI= - cG9zdA== - bGlua3M= - dXNlcnM= - RGF0ZS9UaW1lIFNldHRpbmdz - RGF5 - UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gIFBsZWFzZSBiZSBhZHZpc2VkIHRoYXQgeW91IGNhbiB1c2UgdGhpcyB1dGlsaXR5IGF0IHlvdXIgb3duIHJpc2suICBJbnRlY2huaWMgQ29ycG9yYXRpb24gY2FuIG5vdCBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGNvcnJ1cHQgZGF0YSBvciBkYXRhIGxvc3Mu - RGVmYXVsdA== - RGVsZXRl - RGVuaWVk - RGVueQ== - RGlzYWJsZQ== - RGlzYWJsZWQ= - UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHV0aWxpdHkgYXQgeW91ciBvd24gcmlzay4gSW50ZWNobmljIENvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLg== - UGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5pbmcgdGhpcyB1dGlsaXR5Lg== - RWRpdA== - RWRpdGluZw== - RWRpdG9y - RW1haWw= - RW1vdGlvbiBJY29ucw== - RW5hYmxl - RW5hYmxlZA== - RXZlbnRz - RXhhbXBsZQ== - RXhpc3Rz - RXhwaXJlZA== - RXhwb3J0 - RmllbGRz - RmlsdGVy - Rmlyc3QgTmFtZQ== - Zm9y - RnJvbnQ= - RnJvbnQgRW5k - RnJvbnQtZW5kIE9ubHk= - RnVsbA== - RnVsbCBTaXplIEltYWdl - R2VuZXJhbA== - R3JlYXRlciBUaGFu - R3JvdXA= - R3JvdXBz - R3JvdXAgTmFtZQ== - R3Vlc3Q= - R3Vlc3QgVXNlcnM= - SG90 - SG91cg== - SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnM= - SW1hZ2U= - SW1hZ2Vz - SW5hY3RpdmU= - SW4gRGV2ZWxvcG1lbnQ= - SW5zdGFsbA== - SW5zdGFsbGVk - SW52YWxpZA== - SW52ZXJ0 - SVAgQWRkcmVzcw== - SXM= - SXMgTm90 - SXRlbXM= - S2V5d29yZA== - TGFiZWw= - TGFuZ3VhZ2UgSW1wb3J0 - TGFuZ3VhZ2U= - TGFzdCBOYW1l - TGVhZGluZw== - TGVzcyBUaGFu - TGljZW5zZQ== - TGluaw== - TGlua3M= - VmFsaWRhdGluZyBMaW5rcw== - TG9jYWw= - TG9ja2Vk - VXNlcm5hbWU= - RW1haWwgRXZlbnQ= - RGVmYXVsdCBNRVRBIGtleXdvcmRz - TWluaW11bSBrZXl3b3JkIGxlbmd0aA== - TWludXRl - TWluaW11bSBwYXNzd29yZCBsZW5ndGg= - TWluaW11bSB1c2VyIG5hbWUgbGVuZ3Ro - QmxhbmsgcGFzc3dvcmRzIGFyZSBub3QgYWxsb3dlZA== - QmxhbmsgdXNlciBuYW1l - TW9kdWxlcw== - TW9udGhz - U2hvdyBtdWx0aXBsZQ== - TmV3 - TmV3IENlbnNvciBXb3Jk - TmV3IEZpZWxk - TmV3IFRoZW1l - Tm8gQ2F0ZWdvcmllcw== - Tm9uZQ== - Tm8gcGVybWlzc2lvbnM= - RG9lcyBOb3QgQ29udGFpbg== - Tm90IFZhbGlkYXRlZA== - Tm8gcGVybWlzc2lvbnM= - T25lIFdheQ== - UGFjaw== - UGVuZGluZw== - UGVybWlzc2lvbg== - UGhvbmU= - UG9wdWxhcg== - UG9wdWxhcml0eQ== - UG9zdCBCb2R5 - UG9zdHM= - UHJlcmVxdWlzaXRlIG5vdCBmdWxmaWxsZWQsIGluc3RhbGxhdGlvbiBjYW5ub3QgY29udGludWUh - UHJpbWFyeQ== - UXVpY2sgbGlua3M= - UmVhZCBPbmx5 - UmVhZHkgdG8gSW5zdGFsbA== - UmVjaXByb2NhbA== - UmVsYXRpb24= - UmVsYXRpb25z - UmVwbGllcw== - VGhlIHZlcnNpb25zIG9mIHRoZSBiYWNrdXAgYW5kIHlvdXIgY29kZSBkb24ndCBtYXRjaC4gWW91ciBpbnN0YWxsYXRpb24gd2lsbCBwcm9iYWJseSBiZSBub24gb3BlcmF0aW9uYWwu - SGVyZSB5b3UgY2FuIHJlc3RvcmUgeW91ciBkYXRhYmFzZSBmcm9tIGEgcHJldmlvdXNseSBiYWNrZWQgdXAgc25hcHNob3QuIFJlc3RvcmluZyB5b3VyIGRhdGFiYXNlIHdpbGwgZGVsZXRlIGFsbCBvZiB5b3VyIGN1cnJlbnQgZGF0YSBhbmQgbG9nIHlvdSBvdXQgb2YgdGhlIHN5c3RlbS4= - UmVzdG9yZSBpcyBpbiBwcm9ncmVzcw== - IFJ1bm5pbmcgdGhpcyB1dGlsaXR5IHdpbGwgYWZmZWN0IHlvdXIgZGF0YWJhc2UuICBQbGVhc2UgYmUgYWR2aXNlZCB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgdXRpbGl0eSBhdCB5b3VyIG93biByaXNrLiAgSW50ZWNobmljIGNvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLiAgUGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5p - UmVzdHJpY3Rpb25z - UmVzdWx0cw== - UmV2aWV3 - UmV2aWV3cw== - Um9vdA== - TW9kdWxlIFJvb3QgQ2F0ZWdvcnk= - cm93KHMp - UnVsZQ== - U2FtZQ== - U2FtZSBhcyB0aHVtYm5haWw= - U2F2ZQ== - U2Nhbm5pbmc= - U2VhcmNoIFJlc3VsdHM= - U2Vjb25kcw== - U2VsZWN0 - U2VuZA== - U2Vzc2lvbnM= - U2Vzc2lvbiBFeHBpcmVk - U2V0dGluZ3M= - U2hvd2luZyBHcm91cHM= - U2hvd2luZyBVc2Vycw== - U2ltcGxl - U2l6ZQ== - U21pbGV5 - U01UUCAobWFpbCkgU2VydmVy - U29ydA== - U3RhdGU= - U3RlcA== - U3ViQ2F0cw== - U3ViSXRlbXM= - VGFibGU= - VGVtcGxhdGU= - VGVtcGxhdGVz - VGhlbWU= - VGh1bWJuYWls - VGh1bWJuYWlsIEltYWdl - dG8= - VG9waWM= - VG9waWNz - VHlwZQ== - dHlwZXM= - SXMgVW5pcXVl - VW5zZWxlY3Q= - VXBkYXRlIExpY2Vuc2U= - WW91ciBkYXRhIHdpbGwgYmUgbW9kaWZpZWQgZHVyaW5nIHRoZSB1cGdyYWRlLiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgbWFrZSBhIGJhY2t1cCBvZiB5b3VyIGRhdGFiYXNlLiBQcm9jZWVkIHdpdGggdGhlIHVwZ3JhZGU/ - VXBsb2Fk - VXNlcg== - VXNlciBSZWNlaXZlcyBOb3RpY2VzIFdoZW4= - VXNlcnM= - VXNlciBDb3VudA== - VmFsaWQ= - VmVyc2lvbg== - Vmlldw== - Vmlld3M= - V2Vic2l0ZQ== - V2Vla3M= - V2l0aGlu - WWVhcnM= - Wmlw - QWRkaW5nIEN1c3RvbSBGaWVsZA== - QWRkaW5nIEJhc2UgU3R5bGU= - QWRkaW5nIEJsb2NrIFN0eWxl - QWRkaW5nIENhdGVnb3J5 - QWRkaW5nIEdyb3Vw - QWRkaW5nIEltYWdl - QWRkaW5nIExhbmd1YWdl - QWRkaW5nIFBocmFzZQ== - QWRkaW5nIFJlbGF0aW9uc2hpcA== - QWRkaW5nIFJldmlldw== - QWRkaW5nIFN0eWxlc2hlZXQ= - QWRkaXRpb25hbCBQZXJtaXNzaW9ucw== - QWRkIE1vZHVsZQ== - QWR2YW5jZWQgVmlldw== - QmFja3Vw - QmFzZSBTdHlsZXM= - QmxvY2sgU3R5bGVz - Q2F0YWxvZw== - Q2F0ZWdvcmllcw== - U2VsZWN0IHJlbGF0aW9u - U2VsZWN0IGNhdGVnb3J5 - Q2Vuc29yc2hpcA== - Q29tbXVuaXR5 - Q29uZmlndXJhdGlvbg== - Q3VzdG9t - Q3VzdG9tIEZpZWxkcw== - RG9uZQ== - RWRpdGluZyBFbWFpbCBFdmVudA== - RWRpdGluZyBHcm91cA== - RWRpdGluZyBTdHlsZQ== - RWRpdGluZyBUcmFuc2xhdGlvbg== - RWRpdGluZyBCYXNlIFN0eWxl - RWRpdGluZyBCbG9jayBTdHlsZQ== - RWRpdGluZyBDYXRlZ29yeQ== - RWRpdGluZyBDdXN0b20gRmllbGQ= - RWRpdGluZyBHcm91cA== - RWRpdGluZyBJbWFnZQ== - RWRpdGluZyBMYW5ndWFnZQ== - RWRpdGluZyBQaHJhc2U= - RWRpdGluZyBSZWxhdGlvbnNoaXA= - RWRpdGluZyBSZXZpZXc= - RWRpdGluZyBTdHlsZXNoZWV0 - U2l0ZSBTdHJ1Y3R1cmU= - RWRpdCBDYXRlZ29yeQ== - RWRpdCBHcm91cA== - U2l0ZSBTdHJ1Y3R1cmU= - U2l0ZSBTdHJ1Y3R1cmU= - RWRpdCBVc2Vy - RS1tYWlsIEV2ZW50cw== - RS1tYWlsIFNldHRpbmdz - RXhwb3J0IERhdGE= - RXhwb3J0IExhbmd1YWdlIFBhY2s= - RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBSZXN1bHRz - RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBTdGVwMQ== - R2VuZXJhbA== - R2VuZXJhbCBDb25maWd1cmF0aW9u - R3JvdXBz - U2VsZWN0IGdyb3Vw - SGVscA== - SW1hZ2Vz - SW1wb3J0IERhdGE= - SW1wb3J0IExhbmd1YWdlIFBhY2s= - SW4tYnVsbGV0aW4= - SW4tbGluaw== - SW4tbmV3eg== - SW5zdGFsbGF0aW9uIEhlbHA= - SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAx - SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAy - SXRlbXM= - TGFiZWw= - TGFiZWxz - SW5zdGFsbCBMYW5ndWFnZSBQYWNr - TGFuZ3VhZ2UgUGFja3M= - TG9hZGluZyAuLi4= - TW9kdWxlIFN0YXR1cw== - TmV3IEN1c3RvbSBGaWVsZA== - TmV3IEJhc2UgU3R5bGU= - TmV3IEJsb2NrIFN0eWxl - TmV3IENhdGVnb3J5 - TmV3IEdyb3Vw - TmV3IEltYWdl - TmV3IExhbmd1YWdl - TmV3IFBocmFzZQ== - TmV3IFJlbGF0aW9uc2hpcA== - TmV3IFJldmlldw== - TmV3IFN0eWxlc2hlZXQ= - Tm8gUGVybWlzc2lvbnM= - UGVybWlzc2lvbnM= - UGxlYXNlIFdhaXQ= - UHJvcGVydGllcw== - UmVnaW9uYWw= - UmVnaW9uYWwgU2V0dGluZ3M= - UmVsYXRpb25z - U3VtbWFyeSAmIExvZ3M= - UmVzdG9yZQ== - UmV2aWV3cw== - U2VhcmNoIExvZw== - U2VhcmNoIFJlc3VsdHM= - U2VsZWN0IFVzZXI= - U2VsZWN0IGl0ZW0= - U2VsZWN0IGl0ZW0= - UHJlcGFyaW5nIHRvIFNlbmQgTWFpbA== - U2VuZCBlbWFpbA== - Q2FuY2VsIHNlbmRpbmcgbWFpbA== - TWFpbCBoYXMgYmVlbiBzZW50IFN1Y2Nlc3NmdWxseQ== - UHJlcGFyaW5nIHRvIFNlbmQgTWVzc2FnZXM= - U2VuZGluZyBNZXNzYWdlLi4= - U2Vzc2lvbiBMb2c= - TW9kdWxlcyAmIFNldHRpbmdz - U3RydWN0dXJlICYgRGF0YQ== - U3R5bGVzaGVldHM= - U3VtbWFyeQ== - Q29uZmlndXJhdGlvbg== - VG9vbHM= - VXBkYXRpbmcgQ2F0ZWdvcmllcw== - VXNlcnM= - U2VsZWN0IHVzZXI= - VmlzaXRz - dG8= - QWRkIFVzZXIgdG8gR3JvdXA= - QWRkIFVzZXIgVG8gR3JvdXA= - QXBwbHkgUnVsZXM= - QXBwcm92ZQ== - QmFjaw== - QmFu - Q2FuY2Vs - Q2xlYXIgQ2xpcGJvYXJk - Q2xvbmU= - Q2xvc2U= - Q29udGludWUgTGluayBWYWxpZGF0aW9u - Q29weQ== - Q3V0 - RGVjbGluZQ== - RGVsZXRl - RGVsZXRlIEFsbA== - RGVsZXRlIFVzZXIgRnJvbSBHcm91cA== - RGVueQ== - RGlzYWJsZQ== - RWRpdA== - RWRpdCBDdXJyZW50IENhdGVnb3J5 - RGlzYWJsZQ== - RW5hYmxl - RnJvbnQgT25seQ== - U2VsZWN0IFVzZXI= - RW5hYmxl - RXhwb3J0 - RXhwb3J0IExhbmd1YWdl - SG9tZQ== - SW1wb3J0 - SW1wb3J0IExhbmd1YWdl - SW1wb3J0IGEgTGFnbnVhZ2UgUGFja2FnZQ== - TW92ZSBEb3du - TW92ZSBVcA== - TW92ZSBEb3du - TW92ZSBVcA== - TmV3IEJhc2UgU3R5bGU= - TmV3IEJsb2NrIFN0eWxl - TmV3IEdyb3Vw - TmV3IGxhYmVs - TmV3IExhbmd1YWdl - TmV3IFJldmlldw== - TmV3IFN0eWxlc2hlZXQ= - U3RhcnQgTmV3IFZhbGlkYXRpb24= - TmV3IENhdGVnb3J5 - TmV3IENlbnNvciBXb3Jk - TmV3IENvdXBvbg== - TmV3IEN1c3RvbSBGaWVsZA== - TmV3IERpc2NvdW50 - TmV3IEVtb3Rpb24gSWNvbg== - TmV3IEltYWdl - TmV3IEltYWdlcw== - QWRkIG5ldyBsYWJlbA== - TmV3IExhbmd1YWdlIFBhY2s= - TmV3IFBlcm1pc3Npb24= - TmV3IFJlbGF0aW9u - TmV3IFJldmlldw== - TmV3IFJ1bGU= - TmV3IFRlbXBsYXRl - TmV3IFRoZW1l - TmV3IFVzZXI= - TmV4dA== - TmV4dCBzdGVw - UGFzdGU= - UHJldmlldw== - UHJldmlvdXM= - UHJldmlvdXMgc3RlcA== - U2V0IFByaW1hcnkgVGhlbWU= - U2V0IFByaW1hcnkgR3JvdXA= - UHJpbnQ= - UmVidWlsZCBDYXRlZ29yeSBDYWNoZQ== - UmVmcmVzaA== - RGVsZXRlIFVzZXIgRnJvbSBHcm91cA== - UmVzY2FuIFRoZW1lcw== - UmVzZXQ= - UmVzZXQgVG8gQmFzZQ== - UmVzZXQgVmFsaWRhdGlvbiBTdGF0dXM= - UmVzdG9yZQ== - U2F2ZQ== - U2VhcmNo - UmVzZXQ= - U2VsZWN0 - U2VsZWN0IFVzZXI= - U2VuZCBFLW1haWw= - U2VuZCBFLW1haWw= - U2V0IFByaW1hcnk= - U2V0IFByaW1hcnkgQ2F0ZWdvcnk= - U2V0IFByaW1hcnkgTGFuZ3VhZ2U= - Q2FuY2Vs - VXAgYSBDYXRlZ29yeQ== - VmFsaWRhdGU= - Vmlldw== - RGlzcGxheSBlZGl0b3IgcGlja3MgYWJvdmUgcmVndWxhciB0b3BpY3M= - TmV3IFRvcGljcyAoRGF5cyk= - TnVtYmVyIG9mIHRvcGljcyBwZXIgcGFnZQ== - VG9waWNzIFBlciBQYWdlIChTaG9ydGxpc3Qp - UGljaw== - VG9waWMgcmV2aWV3ZWQ= - QW5kIHRoZW4gYnk= - QW5kIHRoZW4gYnk= - YW5kIHRoZW4gYnk= - T3JkZXIgVG9waWNzIEJ5 - U29ydCB0b3BpY3MgYnk= - QW5kIHRoZW4gYnk= - T3JkZXIgdG9waWNzIGJ5 - VG9waWMgVGV4dA== - Vmlld3M= - VG8gRGF0ZQ== - VHJhbnNsYXRl - Q2hlY2tib3hlcw== - RGF0ZQ== - RGF0ZSAmIFRpbWU= - TGFiZWw= - UGFzc3dvcmQgZmllbGQ= - UmFkaW8gYnV0dG9ucw== - RHJvcCBkb3duIGZpZWxk - Q2hlY2tib3g= - VGV4dCBmaWVsZA== - VGV4dCBhcmVh - VW5jaGFuZ2Vk - VXBkYXRpbmcgQ29uZmlndXJhdGlvbg== - VXBkYXRpbmcgUnVsZXM= - VXNlIENyb24gZm9yIFJ1bm5pbmcgUmVndWxhciBFdmVudHM= - QWxsb3cgbmV3IHVzZXIgcmVnaXN0cmF0aW9u - QXNzaWduIEFsbCBVc2VycyBUbyBHcm91cA== - VmFsaWRhdGUgZS1tYWlsIGFkZHJlc3M= - QXNzaWduIHVzZXJzIG5vdCBsb2dnZWQgaW4gdG8gZ3JvdXA= - QXNzaWduIHJlZ2lzdGVyZWQgdXNlcnMgdG8gZ3JvdXA= - QXNzaWduIHBhc3N3b3JkIGF1dG9tYXRpY2FsbHk= - TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSByZXZpZXdzIGZyb20gdGhlIHNhbWUgdXNlcg== - QXNzaWduIG1haWxpbmcgbGlzdCBzdWJzY3JpYmVycyB0byBncm91cA== - TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSB2b3RlcyBmcm9tIHRoZSBzYW1lIHVzZXI= - SW5zdGFudA== - Tm90IEFsbG93ZWQ= - VXBvbiBBcHByb3ZhbA== - VXNlIEVtYWlscyBBcyBMb2dpbg== - VVMvVUs= - UGxlYXNlIGNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgYW5kIHRyeSBhZ2FpbiE= - VmFsdWU= - RW50ZXIgbGlzdCBvZiB2YWx1ZXMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucywgbGlrZSAxPU9uZSwgMj1Ud28= - QWN0aXZl - QWx3YXlz - QXV0bw== - RGlzYWJsZWQ= - RW5hYmxlZA== - TmV2ZXI= - SW52YWxpZCBQYXNzd29yZA== - UGVuZGluZw== - UmVxdWlyZWQgRmllbGQ= - SW52YWxpZCBVc2VybmFtZQ== - RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw== - Vm90ZSBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5 - V2FybmluZzogRW5hYmxpbmcgSFRNTCBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIGNvdWxkIGRhbWFnZSB0aGUgc3lzdGVtIGlmIHVzZWQgaW1wcm9wZXJseSE= - QSBzZWFyY2ggb3IgYSBmaWx0ZXIgaXMgaW4gZWZmZWN0LiBZb3UgbWF5IG5vdCBiZSBzZWVpbmcgYWxsIG9mIHRoZSBkYXRhLg== - WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHByaW1hcnkgdGhlbWUuIENvbnRpbnVlPw== - TW9kaWZpY2F0aW9ucyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB5b3UgY2xpY2sgdGhlIFNhdmUgYnV0dG9uIQ== - d2Vlaw== - eWVhcg== - WWVz - WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u - QWNjb3VudCBJbmZvcm1hdGlvbg== - QWN0aW9u - QWN0aW9uIEJveA== - SGVyZSBZb3UgQ2FuOg== - QWRk - U3VnZ2VzdCBDYXRlZ29yeSBSZXN1bHRz - Q2F0ZWdvcnkgQWRkZWQgUGVuZGluZyBBcHByb3ZhbA== - WW91ciBjYXRlZ29yeSBzdWdnZXN0aW9uIGhhcyBiZWVuIGFjY2VwdGVkIGFuZCBpcyBwZW5kaW5nIGFkbWluaXN0cmF0aXZlIGFwcHJvdmFsLg== - VGhlIENhdGVnb3J5IHlvdSBzdWdnZXN0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbS4= - QWRkZWQ= - QWRkZWQgVG9kYXk= - QWRkaXRpb25hbCBjYXRlZ29yaWVz - QWRkIExpbmsgUmVzdWx0cw== - QWRkIFBlbmRpbmcgTGluayBSZXN1bHRz - WW91ciBsaW5rIGhhcyBiZWVuIGFkZGVkIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWwu - VGhlIGxpbmsgeW91IGhhdmUgc3VnZ2VzdGVkIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4= - QWRkcmVzcw== - QWRkcmVzcyBMaW5l - QWRkcmVzcyBMaW5lIDE= - QWRkcmVzcyBMaW5lIDI= - QWRkIEZyaWVuZA== - QWRkIExpbms= - U2VuZCBQcml2YXRlIE1lc3NhZ2U= - QWRkIFJldmlldw== - QWRkIFRvcGlj - QWRkIHRvIEZhdm9yaXRlcw== - QWR2YW5jZWQgU2VhcmNo - QWR2YW5jZWQgU2VhcmNo - QWR2YW5jZWQ= - QW55 - Q29udGFpbnM= - SXMgRXF1YWwgVG8= - SXMgTm90IEVxdWFsIFRv - RG9lcyBOb3QgQ29udGFpbg== - QWxsIHJpZ2h0cyByZXNlcnZlZC4= - IGhhcyBhbHJlYWR5IGJlZW4gc3VnZ2VzdGVkIHRvIHRoaXMgc2l0ZSBvbg== - QW5k - QU9MIElN - QXBy - VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvcm0sIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbWVzc2FnZXMgYmVsb3cu - VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvcm0sIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbWVzc2FnZXMgYmVsb3c= - QXJ0aWNsZXM= - QXJ0aWNsZSBEZXRhaWxz - QXJ0aWNsZSBuYW1l - QXJ0aWNsZSBSZXZpZXdz - QXNjZW5kaW5n - QXVn - QXV0aG9y - QXV0b21hdGlj - RGlzYWJsZWQgYXZhdGFy - QmFjaw== - QkJDb2Rl - QmlydGggRGF0ZQ== - QmxhbmsgcGFzc3dvcmQ= - Ym94 - TmV3IExpbms= - TmV3IHRvcGlj - U2VuZCBQYXNzd29yZA== - R28= - Sm9pbg== - U3Vic2NyaWJl - Tm8= - T2s= - UmF0ZQ== - U2VhcmNo - VW5zdWJzY3JpYmU= - WWVz - Ynk= - Q2FuY2Vs - Q2F0ZWdvcnk= - Q2F0ZWdvcmllcw== - Y2F0ZWdvcmllcyB1cGRhdGVk - Q2F0ZWdvcnk= - Q2F0ZWdvcnkgSW5mb3JtYXRpb24= - Q2F0ZWdvcnkgU2VhcmNoIFJlc3VsdHM= - Q2F0ZWdvcnkgTGVhZCBTdG9yeQ== - Q2F0ZWdvcmllcw== - Q2l0eQ== - Y2xpY2sgaGVyZQ== - Q2xvc2U= - Q2xvc2UgV2luZG93 - UGFzc3dvcmQgcmVzZXQgaGFzIGNvZGUgZXhwaXJlZA== - UGFzc3dvcmQgcmVzZXQgY29kZSBpcyBub3QgdmFsaWQ= - UHJpY2VzIG9mIG9uZSBvciBtb3JlIGl0ZW1zIGluIHlvdXIgc2hvcHBpbmcgY2FydCBoYXZlIGJlZW4gY2hhbmdlZCBkdWUgdG8geW91ciBsb2dpbiwgcGxlYXNlIHJldmlldyBjaGFuZ2VzLg== - RW1haWxBZGRyZXNz - QWRkaXRpb25hbCBJbWFnZXM= - QURESVRJT05BTCBJTUFHRVM= - Tm8gUGVybWlzc2lvbnM= - UHJvZHVjdCBEZXNjcmlwdGlvbg== - Q29tcGFueQ== - Y29uZmlybQ== - Q29uZmlybWF0aW9uIFRpdGxl - WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGxpbmsgYmVsb3cu - Q29uZmlybWF0aW9uIFN1YnRpdGxl - Q29uZmlybWF0aW9uIHRleHQ= - Q29udGFjdCBVcw== - Q29udGFjdCBJbmZvcm1hdGlvbg== - Q29udGludWU= - Q29va2llcw== - UGxlYXNlIGVuYWJsZSBjb29raWVzIHRvIGxvZ2luIQ== - Q291bnRyeQ== - Y3JlYXRlZA== - Q3JlYXRlIFBhc3N3b3Jk - Q3JlZGl0IENhcmRz - Q3VycmVudCBWYWx1ZQ== - RGF0ZQ== - RGF0ZSBjcmVhdGVk - RGVj - RW5hYmxlIEJCQ29kZQ== - Tm90aWZ5IG1lIG9uIGNoYW5nZXMgdG8gdG9waWNzIEkgY3JlYXRl - UmVjZWl2ZSBQcml2YXRlIE1lc3NhZ2UgTm90aWZpY2F0aW9ucw== - QXR0YXRjaCBNeSBTaWduYXR1cmUgdG8gUG9zdHM= - U2ltbGllcyBvbiBieSBkZWZhdWx0 - U2lnbmF0dXJlcyBvbiBieSBkZWZhdWx0 - RGVsZXRl - Q29uZmlybSBEZWxldGU= - RGVsZXRlIEZyaWVuZA== - QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxpbms/ - VGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkIGZyb20gIEZhdm9yaXRlcy4= - RGVzY2VuZGluZw== - RGV0YWlscw== - ZGV0YWlscyB1cGRhdGVk - RGlyZWN0b3J5 - RGlzYWJsZQ== - TW9kaWZ5 - RWRpdGVkIEJ5 - RWRpdG9ycyBQaWNr - RWRpdG9yJ3MgUGlja3M= - RWRpdCBUb3BpYyBSZXN1bHRz - VG9waWMgbW9kaWZpZWQ= - VG9waWMgaGFzIGJlZW4gbW9kaWZpZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA== - Q2hhbmdlcyBtYWRlIHRvIHRoZSB0b3BpYyBoYXZlIGJlZW4gc2F2ZWQu - TW9kaWZ5IFBvc3Q= - TW9kaWZ5IFRvcGlj - RS1NYWls - QSB1c2VyIHdpdGggc3VjaCBlLW1haWwgYWxyZWFkeSBleGlzdHMu - TWFpbCBzZW5kaW5nIGZhaWxlZA== - RW5hYmxlZA== - RW5kIE9u - Wm9vbSBpbg== - RW50ZXI= - RW50ZXIgeW91ciBmcmllbmQgZS1tYWlsIGFkZHJlc3MgdG8gcmVjb21tZW5kIHRoaXMgc2l0ZQ== - RW50ZXIgeW91ciBlLW1haWwgYWRkcmVzcyB0byBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdC4= - RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg== - TWlzc2luZyBvciBpbnZhbGlkIHZhbHVlcy4gUGxlYXNlIGNoZWNrIGFsbCB0aGUgZmllbGRzIGFuZCB0cnkgYWdhaW4u - U29ycnksIHRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gb3VyIHNlcnZlci4= - RXJyb3IgNDA0IC0gTm90IEZvdW5k - RXJyb3I= - RXJyb3I= - RXhpc3RpbmcgVXNlcnM= - RXhwaXJlcw== - RmFsc2U= - RmF2b3JpdGU= - VW5hYmxlIHRvIGFkZCBmYXZvcml0ZSwgYWNjZXNzIGRlbmllZA== - RmVi - WW91IG11c3QgZW50ZXIgYSBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIHRvIHJldHJpdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9u - Qm90aCBhIFVzZXJuYW1lIGFuZCBQYXNzd29yZCBpcyByZXF1aXJlZA== - UGxlYXNlIGVudGVyIHlvdXIgcGFzc3dvcmQgYW5kIHRyeSBhZ2Fpbg== - WW91IGRpZCBub3QgZW50ZXIgeW91ciBVc2VybmFtZQ== - RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA== - TWlzc2luZyBmaXJzdCBuYW1l - TWlzc2luZyB1c2Vy - RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA== - RW1haWwgaXMgcmVxdWlyZWQ= - Rmlyc3QgbmFtZSBpcyByZXF1aXJlZA== - UGFzc3dvcmQgcmVxdWlyZWQ= - QWNjZXNzIGRlbmllZA== - UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA== - VGhlIHBhc3N3b3JkIGlzIHRvbyBsb25n - UGFzc3dvcmQgaXMgdG9vIHNob3J0 - Tm90IHJlc2V0 - WW91IGhhdmUgYWxyZWFkeSByZXZpZXdlZCB0aGlzIGl0ZW0u - RmlsZSBpcyB0b28gbGFyZ2U= - VXNlciBhY2NvdW50IHdpdGggZ2l2ZW4gRS1tYWlsIG5vdCBmb3VuZA== - VXNlciBhY2NvdW50IHdpdGggZ2l2ZW4gVXNlcm5hbWUgbm90IGZvdW5k - VXNlciBuYW1lIGlzIHRvbyBzaG9ydA== - V3JvbmcgZmlsZSB0eXBl - Y2Mx - Y2My - Y2Mz - Y2M0 - Y2M1 - Y2M2 - bGMx - bGMy - bGMz - bGM0 - bGM1 - bGM2 - dWMx - dWMy - dWMz - dWM0 - dWM1 - dWM2 - QXJjaGl2ZSBEYXRl - QXJ0aWNsZSBBdXRob3I= - QXJ0aWNsZSBCb2R5 - TnVtYmVyIG9mIERlc2NlbmRhbnRz - Q2F0ZWdvcnkgUGF0aA== - UmF0aW5n - TnVtYmVyIG9mIFJldmlld3M= - TnVtYmVyIG9mIFJhdGluZyBWb3Rlcw== - Q2F0ZWdvcnkgSWQ= - Q2l0eQ== - Q291bnRyeQ== - Q3JlYXRlZCBCeSBVc2VyIElE - RGF0ZSBDcmVhdGVk - RGVzY3JpcHRpb24= - RGF0ZSBvZiBCaXJ0aA== - RWRpdG9yJ3MgcGljaw== - RS1tYWls - RW5kcyBPbg== - QXJ0aWNsZSBFeGNlcnB0 - Rmlyc3QgTmFtZQ== - SGl0cw== - SXRlbSBJcyBIb3Q= - TGFzdCBOYW1l - TGFzdCBQb3N0IElE - Q2F0ZWdvcnkgTGVhZCBTdG9yeT8= - TGVhZCBTdG9yeT8= - TGluayBJRA== - TG9naW4gKFVzZXIgbmFtZSk= - TWV0YSBEZXNjcmlwdGlvbg== - TWV0YSBLZXl3b3Jkcw== - TGFzdCBNb2RpZmllZCBEYXRl - TW9kaWZpZWQgQnkgVXNlciBJRA== - TmFtZQ== - SXRlbSBJcyBOZXc= - QXJ0aWNsZSBJRA== - Tm90aWZ5IE93bmVyIG9mIENoYW5nZXM= - T3JpZ2luYWwgSXRlbSBJRA== - T3duZXIgVXNlciBJRA== - UGFyZW50IElk - UGFyZW50IENhdGVnb3J5IFBhdGg= - UGFzc3dvcmQ= - VGVsZXBob25l - SXRlbSBJcyBQb3B1bGFy - VXNlciBJRA== - UG9zdGVkIEJ5 - VG9waWMgUG9zdHM= - UHJpb3JpdHk= - UXR5IFNvbGQ= - UmVzb3VyY2UgSUQ= - U3RhcnQgRGF0ZQ== - U3RhdGU= - U3RhdHVz - U3RyZWV0IEFkZHJlc3M= - QXJ0aWNsZSBUZXh0 - QXJ0aWNsZSBUaXRsZQ== - VG9waWMgSUQ= - VG9waWMgVGV4dA== - VG9waWMgVHlwZQ== - SXRlbSBJcyBhIFRvcCBTZWxsZXI= - VGltZSBab25l - VVJM - Vmlld3M= - WmlwIChQb3N0YWwpIENvZGU= - Rmlyc3QgTmFtZQ== - TW9kdWxl - UGhyYXNl - UHJpbWFyeSBUcmFuc2xhdGlvbg== - VHJhbnNsYXRpb24= - Rm9yZ290IHBhc3N3b3Jk - UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24= - Q29uZmlybSBwYXNzd29yZCByZXNldA== - WW91IGhhdmUgY2hvc2VkIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuIEEgbmV3IHBhc3N3b3JkIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBzeXN0ZW0uIEl0IGhhcyBiZWVuIGVtYWlsZWQgdG8geW91ciBhZGRyZXNzIG9uIGZpbGUu - UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg== - Rm9yZ290IFBhc3N3b3Jk - Rm9yZ290IFBhc3N3b3Jk - RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg== - Rm9ydW1z - V2VsY29tZSB0byBJbi1wb3J0YWwgZm9ydW1zIQ== - V2VsY29tZSB0byBJbi1idWxsZXRpbiBGb3J1bXMh - Rm9ydW0gaXMgbG9ja2VkIGZvciBwb3N0aW5n - Rm91bmQ6 - RnJvbQ== - RnVsbCBTdG9yeQ== - R2V0dGluZyBSYXRlZA== - WW91IG1heSBwbGFjZSB0aGUgZm9sbG93aW5nIEhUTUwgY29kZSBvbiB5b3VyIHdlYiBzaXRlIHRvIGFsbG93IHlvdXIgc2l0ZSB2aXNpdG9ycyB0byB2b3RlIGZvciB0aGlzIHJlc291cmNl - R3Vlc3Q= - SGVscA== - SGVyZQ== - SGl0cw== - SG9tZQ== - SG90 - SG90IExpbmtz - aW4= - SW5ib3g= - VXNlcm5hbWUvUGFzc3dvcmQgSW5jb3JyZWN0 - SW5kaWNhdGVzIFJlcXVpcmVkIGZpZWxkcw== - SW52YWxpZCBlLW1haWwgYWRkcmVzcw== - RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk - SW52YWxpZCBQYXNzd29yZA== - SW4gdGhpcyBtZXNzYWdl - SXRlbXMgc2luY2UgbGFzdCBsb2dpbg== - SmFu - Sm9pbmVk - SnVs - SnVu - S2V5d29yZCBpcyB0b28gc2hvcnQ= - TGFzdCBQb3N0 - TGFzdCBQb3N0IEJ5 - TGFzdCBVcGRhdGU= - TGFzdCBOYW1l - TGVnZW5k - TGlua3M= - bGlua3MgdXBkYXRlZA== - WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA== - WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQ= - TGluayBEZXRhaWxz - TGluayBJbmZvcm1hdGlvbg== - TGluayBOYW1l - TGluayBSYXRpbmcgUmVzdWx0cw== - WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGxpbmsu - VGhhbmsgZm9yIHJhdGluZyB0aGlzIGxpbmsuICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg== - TGluayBSZXZpZXdz - TGluayBSZXZpZXcgUmVzdWx0cw== - TGluayBSZXZpZXcgUGVuZGluZw== - TGluayBTZWFyY2ggUmVzdWx0cw== - TG9jYXRpb24= - TG9ja2VkIHRvcGlj - TG9jay9VbmxvY2s= - TG9naW4= - TG9naW4gSW5mb3JtYXRpb24= - TG9naW4gTmFtZQ== - TG9naW4= - TG9nIE91dA== - TG9nb3V0IG9mIHlvdXIgYWNjb3VudA== - TG9nIG91dCBvZiB0aGUgc3lzdGVt - TWFpbGluZyBMaXN0 - TWFy - TWF5 - TWVzc2FnZQ== - TWVzc2FnZSBCb2R5 - UGFzc3dvcmQgcmVzZXQgaW50ZXJ2YWw= - TWlzc2luZyBUZW1wbGF0ZQ== - TW9kaWZpZWQ= - TGluayBNb2RpZmljYXRpb24gQ29uZmlybWF0aW9u - WW91ciBsaW5rIGhhcyBiZWVuIG1vZGlmaWVkLg== - TGluayBtb2RpZmljYXRpb24gY29tcGxldGU= - WW91ciBsaW5rIG1vZGlmaWNhdGlvbiBoYXMgYmVlbiBzdWJtaXR0ZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA== - TW9kaWZ5IExpbms= - TW9yZQ== - TW9yZSBkZXRhaWxz - TW9yZSBJbmZv - V2VsY29tZQ== - TXkgQWNjb3VudA== - TXkgQXJ0aWNsZXM= - TmV3cyBBcnRpY2xlcyB5b3UgaGF2ZSB3cml0dGVu - TXkgRmF2b3JpdGVz - SXRlbXMgeW91IGhhdmUgbWFya2VkIGFzIGZhdm9yaXRl - TXkgRnJpZW5kcw== - VmlldyB5b3VyIGxpc3Qgb2YgZnJpZW5kcw== - TXkgUHJvZmlsZQ== - WW91ciBBY2NvdW50IEluZm9ybWF0aW9u - TXkgSXRlbXM= - TXkgTGlua3M= - TGlua3MgeW91IGhhdmUgYWRkZWQgdG8gdGhlIHN5c3RlbQ== - TXkgRmF2b3JpdGVz - TXkgTmV3cw== - RmF2b3JpdGUgQXJ0aWNsZXM= - TXkgUHJlZmVyZW5jZXM= - RWRpdCB5b3VyIEluLVBvcnRhbCBQcmVmZXJlbmNlcw== - TXkgUHJvZmlsZQ== - TXkgVG9waWNz - RGlzY3Vzc2lvbnMgeW91IGhhdmUgY3JlYXRlZA== - TXkgVG9waWNz - TmFtZQ== - QWRkIExpbms= - TmV3 - TmV3IEN1c3RvbWVycw== - TmV3IFByaXZhdGUgTWVzc2FnZSBDb25maXJtYXRpb24= - WW91ciBwcml2YXRlIG1lc3NhZ2UgaGFzIGJlZW4gc2VudC4= - TmV3cw== - VGhlIGFydGljbGUgcmV2aWV3IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4= - QXJ0aWNsZSByZXZpZXcgaGFzIGJlZW4gc3VibWl0dGVkIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWw= - TmV3cyBEZXRhaWxz - UmF0ZSBBcnRpY2xlIFJlc3VsdHM= - WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGFydGljbGU= - VGhhbmsgeW91IGZvciByYXRpbmcgdGhpcyBhcnRpY2xlLiBZb3VyIHZvdGUgaGFzIGJlZW4gcmVjb3JkZWQu - VGhlIHJldmlldyBoYXMgYmVlbiBhZGRlZA== - QXJ0aWNsZSByZXZpZXcgc3VibWl0dGVk - U2VhcmNoIFJlc3VsdHM= - bmV3cyB1cGRhdGVk - QWRkIFRvcGljIFJlc3VsdHM= - WW91ciB0b3BpYyBoYXMgYmVlbiBhZGRlZA== - VGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIG11c3QgYXBwcm92ZSB5b3VyIHRvcGljIGJlZm9yZSBpdCBpcyBwdWJsaWNseSBhdmFpbGFibGUu - VGhlIFRvcGljIHlvdSBoYXZlIGNyZWF0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbQ== - TmV3IGFydGljbGVz - TmV3IExpbmtz - TmV3IGFydGljbGVz - TmV3IFByaXZhdGUgTWVzc2FnZQ== - Rm9ydW0gaGFzIG5ldyBwb3N0cw== - TmV3IHByaXZhdGUgbWVzc2FnZQ== - TmV3IGxpbmtz - TmV3IGFydGljbGVz - TmV3IHRvcGljcw== - TmV3IFRvcGlj - TmV3IFVzZXJz - Tm8= - U29ycnksIHlvdSBoYXZlIG5vIGFjY2VzcyB0byB0aGlzIHBhZ2Uh - Tm9uZQ== - Tm90aWZ5IG1lIHdoZW4gcG9zdHMgYXJlIG1hZGUgaW4gdGhpcyB0b3BpYw== - Tm90IGxvZ2dlZCBpbg== - Tm92 - Tm8gQXJ0aWNsZXM= - Tm8gQ2F0ZWdvcmllcw== - Tm8gZXhwaXJhdGlvbg== - Tm8gZmF2b3JpdGVz - Tm8gSXRlbXM= - S2V5d29yZCBtaXNzaW5n - Tm8gTGlua3M= - Rm9ydW0gaGFzIG5vIG5ldyBwb3N0cw== - Tm8gUGVybWlzc2lvbnM= - Tm8gUmVsYXRlZCBDYXRlZ29yaWVz - RXJyb3I6IG5vIHNlc3Npb24= - TWlzc2luZyB0ZW1wbGF0ZQ== - Tm8gVG9waWNz - T2N0 - b2Y= - T2ZmbGluZQ== - T2s= - b24= - T25saW5l - b24gdGhpcyBwb3N0 - WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u - T3B0aW9uYWw= - T3B0aW9ucw== - b3I= - UGFnZQ== - UGFnZTo= - UGFzc3dvcmQ= - UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA== - UGFzc3dvcmQgaXMgdG9vIHNob3J0LCBwbGVhc2UgZW50ZXIgYXQgbGVhc3QgJXMgY2hhcmFjdGVycw== - UGFzc3dvcmQgQWdhaW4= - QWRtaW4gTG9naW4= - QWRkIFBlbmRpbmcgQ2F0ZWdvcnk= - QWRkIENhdGVnb3J5 - RGVsZXRlIENhdGVnb3J5 - TW9kaWZ5IENhdGVnb3J5 - VmlldyBDYXRlZ29yeQ== - QXBwZW5kIHBocGluZm8gdG8gYWxsIHBhZ2VzIChEZWJ1Zyk= - RGlzcGxheSBJdGVtIFF1ZXJpZXMgKERlYnVnKQ== - RGlzcGxheSBJdGVtIExpc3QgUXVlcmllcyAoRGVidWcp - QWxsb3cgZmF2b3JpdGVz - UGVuZGluZyBMaW5r - QWRkIExpbms= - RGVsZXRlIExpbms= - TW9kaWZ5IExpbmsgUGVuZGluZw== - TW9kaWZ5IExpbms= - TGluayBEZWxldGUgYnkgT3duZXI= - TGluayBNb2RpZnkgUGVuZGluZyBieSBPd25lcg== - TGluayBNb2RpZnkgYnkgT3duZXI= - UmF0ZSBMaW5r - UmV2aWV3IExpbms= - UmV2aWV3IExpbmsgUGVuZGluZw== - VmlldyBMaW5r - QWxsb3cgTG9naW4= - QWRkIFBlbmRpbmcgTmV3cw== - QWRkIE5ld3M= - RGVsZXRlIE5ld3M= - TW9kaWZ5IE5ld3M= - UmF0ZSBOZXdz - UmV2aWV3IE5ld3MgUGVuZGluZw== - UmV2aWV3IE5ld3M= - VmlldyBOZXdz - Q2hhbmdlIFVzZXIgUHJvZmlsZXM= - U2hvdyBMYW5ndWFnZSBUYWdz - QWRkIFBlbmRpbmcgVG9waWM= - QWRkIFRvcGlj - RGVsZXRlIFRvcGlj - TG9jay9VbmxvY2sgVG9waWNz - TW9kaWZ5IFRvcGljIFBlbmRpbmc= - TW9kaWZ5IFRvcGlj - VG9waWMgT3duZXIgRGVsZXRl - T3duZXIgTW9kaWZ5IFRvcGljIFBlbmRpbmc= - VG9waWMgT3duZXIgTW9kaWZ5 - UmF0ZSBUb3BpYw== - QWRkIFRvcGljIFJlcGx5 - RGVsZXRlIFRvcGlj - UmVwbHkgVG9waWMgTW9kaWZ5 - UG9zdCBPd25lciBEZWxldGU= - UG9zdCBPd25lciBNb2RpZnk= - VmlldyBUb3BpYyBSZXBseQ== - UmV2aWV3IFRvcGlj - VmlldyBUb3BpYw== - UGhvbmU= - UGljaw== - RWRpdG9yJ3MgUGljayBMaW5rcw== - RWRpdG9yJ3MgUGljayBBcnRpY2xlcw== - RWRpdG9yJ3MgcGljayB0b3BpY3M= - UGxlYXNlIFJlZ2lzdGVy - QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgbWVzc2FnZT8= - UHJpdmF0ZSBNZXNzYWdlcw== - UHJpdmF0ZSBNZXNzYWdlcw== - UG9wdWxhcg== - TW9zdCBQb3B1bGFyIExpbmtz - UG9zdA== - UG9zdGVk - UG9zdGVy - cG9zdHM= - cG9zdHMgdXBkYXRlZA== - UG93ZXJlZCBieQ== - Q2l0eQ== - Q29tcGFueQ== - Q291bnRyeQ== - QmlydGhkYXRl - RS1tYWls - RmF4 - Rmlyc3QgTmFtZQ== - TGFzdCBOYW1l - UGhvbmU= - U3RhdGU= - U3RyZWV0 - U3RyZWV0IDI= - Wmlw - UHJpdmFjeQ== - UHJpdmF0ZSBtZXNzYWdlcyB1cGRhdGVk - UHJpdmF0ZSBNZXNzYWdlcw== - UHJvZmlsZQ== - UHJvZmlsZQ== - cHJvZmlsZSB1cGRhdGVk - QXZhdGFyIEltYWdl - RGVzY3JpcHRpb24= - Q2F0ZWdvcnkgTmFtZQ== - RW1haWw= - RnVsbC1TaXplIEltYWdlOg== - RGVzY3JpcHRpb24= - TGluayBOYW1l - VVJM - TWV0YSBUYWcgRGVzY3JpcHRpb24= - TWV0YSBUYWcgS2V5d29yZHM= - UGFzc3dvcmQ= - UG9zdHMgUGVyIFBhZ2U= - VG9waWNzIFBlciBQYWdl - UG9zdCBTdWJqZWN0 - UmVjb21tZW5kIHRoaXMgc2l0ZSB0byBhIGZyaWVuZA== - UmV2aWV3Og== - U2lnbmF0dXJl - RW50ZXIgeW91ciBlLW1haWwgYWRkcmVzcyB0byBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdC4= - VGh1bWJuYWlsIEltYWdlOg== - VXNlcm5hbWU= - RGlzcGxheSB0byBQdWJsaWM= - UXVlcnkgU3RyaW5n - UXVpY2sgU2VhcmNo - UXVpY2sgTGlua3M= - UmVwbHkgUXVvdGVk - UmF0ZSBUaGlzIExpbms= - VW5hYmxlIHRvIHJhdGUsIGFjY2VzcyBkZW5pZWQ= - UmF0ZSB0aGlzIGFydGljbGU= - UmF0ZSBMaW5r - UmF0ZSBBcnRpY2xl - UmF0ZSB0aGlzIGFydGljbGU= - UmF0ZSBUb3BpYw== - UmF0aW5n - UG9vcg== - RmFpcg== - QXZlcmFnZQ== - R29vZA== - VmVyeSBHb29k - RXhjZWxsZW50 - QWxyZWFkeSB2b3RlZA== - VW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl - VGhlIHJlY2lwaWVudCBpcyByZXF1aXJlZA== - VXNlciBkb2VzIG5vdCBleGlzdA== - VGhlIHJlY2lwaWVudCBkb2VzIG5vdCBleGlzdA== - UmVjb21tZW5k - UmVjb21tZW5kIHRvIGEgRnJpZW5k - UmVjb21tZW5kYXRpb24gQ29uZmlybWF0aW9u - VGhhbmtzIGZvciByZWNvbW1lbmRpbmcgb3VyIHNpdGUgdG8geW91ciBmcmllbmQuIFRoZSBlbWFpbCBoYXMgYmVlbiBzZW50IG91dC4= - UmVjb21tZW5kIHRvIGEgZnJpZW5k - Q2xpY2sgaGVyZSBpZiB5b3VyIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSByZWRpcmVjdCB5b3Uu - UmVkaXJlY3RpbmcgLi4u - UmVnaXN0ZXI= - UmVnaXN0cmF0aW9uIENvbmZpcm1hdGlvbg== - UmVnaXN0cmF0aW9uIENvbXBsZXRl - VGhhbmsgeW91IGZvciBSZWdpc3RlcmluZyEgIFBsZWFzZSBlbnRlciB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBiZWxvdw== - UmVnaXN0ZXIgd2l0aCBJbi1Qb3J0YWwgZm9yIGNvbnZlbmllbnQgYWNjZXNzIHRvIHVzZXIgYWNjb3VudCBzZXR0aW5ncyBhbmQgcHJlZmVyZW5jZXMu - VGhhbmsgWW91LiBSZWdpc3RyYXRpb24gY29tcGxldGVkLg== - UmVsYXRlZCBhcnRpY2xlcw== - UmVsYXRlZCBDYXRlZ29yaWVz - UmVsYXRlZCBDYXRlZ29yaWVz - UmVsYXRlZCBMaW5rcw== - UmVsYXRlZCBOZXdz - UmVtZW1iZXIgTG9naW4= - UmVtb3Zl - UmVtb3ZlIEZyb20gRmF2b3JpdGVz - UmVwZWF0IFBhc3N3b3Jk - UmVwbGllcw== - UmVwbHk= - UmVxdWlyZWQgRmllbGQ= - UmVzZXQ= - QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IHRoZSBwYXNzd29yZD8= - UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg== - UmV2aWV3cw== - cmV2aWV3cyB1cGRhdGVk - VW5hYmxlIHRvIHJldmlldywgYWNjZXNzIGRlbmllZA== - UmV2aWV3IGFydGljbGU= - UmV2aWV3IExpbms= - UmV2aWV3IG5ld3MgYXJ0aWNsZQ== - UmV2aWV3IHRoaXMgYXJ0aWNsZQ== - SG9tZQ== - U2VhcmNo - U2VhcmNoZWQgRm9yOg== - U2VhcmNoIFByb2R1Y3Rz - U2VhcmNoIEFydGljbGVz - U2VhcmNoIENhdGVnb3JpZXM= - U2VhcmNoIExpbmtz - U2VhcmNoIFRvcGljcw== - U2VhcmNoIEFnYWlu - Rm9ybSBFcnJvcg== - U2VhcmNoIFJlc3VsdHM= - U2VhcmNoIFRpcHM= - U2VhcmNoIFR5cGU= - U2VhcmNoIFJlc3VsdHM= - U2VlIEFsc28= - U2VsZWN0IExhbmd1YWdl - U2VsZWN0IFRoZW1l - U2VsZWN0IFVzZXJuYW1l - U2VuZA== - U2VuZCBQcml2YXRlIE1lc3NhZ2U= - U2VudA== - U2Vw - U2hvcHBpbmcgQ2FydA== - U2hvdw== - U2hvdyBTaWduYXR1cmU= - U2hvdyBNeSBTaWduYXR1cmU= - U2l0ZSBMZWFkIFN0b3J5 - U2l0ZSBNYXA= - U21pbGV5cw== - U29ydGVkIGxpc3Q= - U29ydA== - U3RhdGU= - U3RyZWV0 - U3RyZWV0IDI= - QWxzbyBZb3UgQ2FuOg== - U3ViY2F0ZWdvcmllcw== - U3ViamVjdA== - U3VibWl0dGluZyB0bw== - U3Vic2NyaXB0aW9uIGRlbmllZA== - U3Vic2NyaXB0aW9uIENvbmZpcm1hdGlvbg== - QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN1YnNjcmliZSB0byBvdXIgbWFpbGluZyBsaXN0PyAoWW91IGNhbiB1bnN1YnNjcmliZSBhbnkgdGltZSBieSBlbnRlcmluZyB5b3VyIGVtYWlsIG9uIHRoZSBmcm9udCBwYWdlKS4= - VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0IQ== - Rm9ybSBFcnJvcg== - TWlzc2luZyBlbWFpbCBhZGRyZXNz - RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk - U3Vic2NyaXB0aW9uIHN1Y2Nlc3NmdWw= - U3Vic2NyaWJlZA== - VW5kZWZpbmVkIGVycm9yIG9jY3VycmVkLCBzdWJzY3JpcHRpb24gbm90IGNvbXBsZXRlZA== - U3VnZ2VzdCBDYXRlZ29yeQ== - Q2F0ZWdvcnkgU3VnZ2VzdGVkIChQZW5kaW5nIEFwcHJvdmFsKQ== - Rm9ybSBFcnJvcg== - U3VnZ2VzdCBMaW5r - RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk - VGhhbmsgeW91IGZvciBzdWdnZXN0aW5nIG91ciBzaXRlIHRv - VGVtcGxhdGUgRXJyb3I= - IFdlIGFyZSBzb3JyeSB5b3UgaGF2ZSB1bnN1YnNjcmliZWQgZnJvbSBvdXIgbWFpbGluZyBsaXN0 - S2V5d29yZA== - UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg== - VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0 - Q29uZmlybWF0aW9u - TWFpbGluZyBMaXN0 - UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24= - VG8= - VG9wIFJhdGVk - VG9waWNz - VG9waWNzIFVwZGF0ZWQ= - VG9waWMgUmF0aW5nIFJlc3VsdHM= - WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIHRvcGlj - VGhhbmsgeW91IGZvciB2b3RpbmchICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg== - UG9zdCBSZXBseQ== - VG9waWMgU2VhcmNoIFJlc3VsdHM= - VG9waWMgVXBkYXRlZA== - VG9wIFJhdGVkIExpbmtz - VG90YWwgQ2F0ZWdvcmllcw== - VG90YWwgbGlua3MgaW4gdGhlIGRhdGFiYXNl - VG90YWwgQXJ0aWNsZXM= - VG90YWwgVG9waWNz - VHJ1ZQ== - U3lzdGVtIGVycm9yIGhhcyBvY2N1cmVk - VW5zb3J0ZWQgbGlzdA== - VW5zdWJzY3JpcHRpb24gQ29uZmlybWF0aW9u - QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuc3Vic2NyaWJlIGZyb20gb3VyIG1haWxpbmcgbGlzdD8gKFlvdSBjYW4gYWx3YXlzIHN1YnNjcmliZSBhZ2FpbiBieSBlbnRlcmluZyB5b3VyIGVtYWlsIGF0IHRoZSBob21lIHBhZ2Up - V2UgYXJlIHNvcnJ5IHlvdSBoYXZlIHVuc3Vic2NyaWJlZCBmcm9tIG91ciBtYWlsaW5nIGxpc3Q= - VW5zdWJzY3JpYmU= - VXBkYXRl - VXNlcm5hbWU= - VXNlcnMgT25saW5l - QSB1c2VyIHdpdGggc3VjaCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cy4= - QSB1c2VyIHdpdGggc3VjaCB1c2VybmFtZS9lLW1haWwgYWxyZWFkeSBleGlzdHMu - VXNlciBhbHJlYWR5IGV4aXN0cw== - UGVuZGluZyBSZWdpc3RyYXRpb24gQ29tcGxldGU= - VGhhbmsgeW91IGZvciByZWdpc3RlcmluZy4gWW91ciByZWdpc3RyYXRpb24gaXMgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC4= - VmVyaWZ5IHBhc3N3b3Jk - Vmlld3M= - VmlldyBGbGF0 - VmlldyBQTQ== - VmlldyBVc2VyIFByb2ZpbGU= - VmlldyBUaHJlYWRlZA== - VmlldyBZb3VyIFByb2ZpbGU= - RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw== - Vm90ZXM= - V2FybmluZw== - V2UgYWNjZXB0IGNyZWRpdCBjYXJkcw== - d3JvdGU= - WWVz - WW91ciBBY2NvdW50 - U2hvcHBpbmcgQ2FydA== - WW91ciBjdXJyZW5jeQ== - WW91ciBMYW5ndWFnZQ== - WW91ciBXaXNoIExpc3Q= - Wmlw - WklQIENvZGU= - WklQIENvZGU= - Wm9vbQ== - TXkgU2V0dGluZ3M= - TmV4dCBUaGVtZQ== - UHJldmlvdXMgVGhlbWU= - dGVzdCAy + WW91ciBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4gWW91IHdpbGwgcmVjZWl2ZSB5b3VyIG5ldyBwYXNzd29yZCBpbiB0aGUgZW1haWwgc2hvcnRseS4= + QWN0aXZl + QWRkZWQ= + QWRkIFRv + QWx3YXlz + YW5k + QWN0aXZl + QXV0aG9y + RGF0ZQ== + QXJ0aWNsZSBFeGNlcnB0 + SGl0cw== + UmF0aW5n + QXJ0aWNsZSByZXZpZXdlZA== + QXJ0aWNsZSBUaXRsZQ== + QXV0bw== + QXV0b21hdGlj + QmFja2dyb3VuZA== + QmFuIGVtYWlsIGFkZHJlc3M= + QmFuIElQIGFkZHJlc3M= + QmFuIHVzZXIgbmFtZQ== + SW1wb3J0ZWQ= + Qm9yZGVycw== + Q2hhbmdl + RG93bg== + VXA= + T0s= + Ynl0ZXM= + QnkgdGhlbWU= + Q2FuY2Vs + Q2F0ZWdvcnk= + RGF0ZQ== + TnVtYmVyIG9mIGRheXMgZm9yIGEgY2F0LiB0byBiZSBORVc= + Q2F0ZWdvcnkgRGVzY3JpcHRpb24= + RGVmYXVsdCBNRVRBIGRlc2NyaXB0aW9u + RGVmYXVsdCBNRVRBIEtleXdvcmRz + Q2F0ZWdvcnkgTmFtZQ== + TnVtYmVyIG9mIGNhdGVnb3JpZXMgcGVyIHBhZ2U= + Q2F0ZWdvcmllcyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ== + UGljaw== + UG9wdWxhcml0eQ== + RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBjYXRlZ29yaWVz + QW5kIHRoZW4gYnk= + T3JkZXIgY2F0ZWdvcmllcyBieQ== + Q2xvc2U= + QWx0IFZhbHVl + Q2Vuc29yZWQgV29yZA== + Q3JlYXRlZCBPbg== + RGF0ZS9UaW1l + U3RhdHVz + TGFiZWw= + RmllbGQgTmFtZQ== + VHlwZQ== + SW1hZ2U= + SW5oZXJpdGVkIEZyb20= + SXRlbQ== + SXRlbSBGaWVsZA== + SXRlbSBUeXBl + SXRlbSBWYWx1ZQ== + Q29tcGFyaXNvbiBPcGVyYXRvcg== + TGluayBOYW1l + QWNjZXNz + SW5oZXJpdGVk + UG9zdGVy + UHJldmlldw== + UmVwbGFjZW1lbnQ= + UmVwbGllcw== + UnVsZSBUeXBl + U3RhdHVz + VG9waWM= + VVJM + U3RhdHVz + VmFsaWRhdGVkIE9u + VmFsdWU= + Vmlld3M= + QWNjZXNz + QWRkaXRpb25hbA== + QmFzZWQgT24= + Q2F0ZWdvcnk= + Q2F0ZWdvcnkgTmFtZQ== + Q3JlYXRlZCBPbg== + RGVzY3JpcHRpb24= + RHVyYXRpb24= + RHVyYXRpb24gVHlwZQ== + RWZmZWN0aXZl + RW1haWw= + RXZlbnQ= + RmllbGQgTmFtZQ== + Rmlyc3QgTmFtZQ== + R3JvdXAgTmFtZQ== + SUQ= + U3RhdHVz + SW1hZ2U= + VVJM + SW5oZXJpdGVk + SW5oZXJpdGVkIEZyb20= + U3lzdGVt + TGFiZWw= + TGFzdCBDaGFuZ2Vk + TGFzdCBDb21waWxlZA== + TGFzdCBOYW1l + TGluayBVUkw= + TmFtZQ== + TW9kdWxl + TmFtZQ== + UGFjayBOYW1l + QWRk + RGVsZXRl + RWRpdA== + UGVybWlzc2lvbiBOYW1l + QWNjZXNz + Vmlldw== + VHlwZQ== + UHJldmlldw== + UHJpbWFyeSBHcm91cA== + UHJpbWFyeSBWYWx1ZQ== + RmllbGQgUHJvbXB0 + UmVsYXRpb24gVHlwZQ== + UmV2aWV3ZWQgQnk= + UmV2aWV3IFRleHQ= + U2VsZWN0b3I= + U3RhdHVz + SXRlbQ== + SXRlbSBUeXBl + VGl0bGU= + VmFsdWU= + VHlwZQ== + VXNlciBDb3VudA== + RmllbGQgVmFsdWU= + VmlzaXQgRGF0ZQ== + QXNjZW5kaW5n + RGF0ZQ== + RGVzY2VuZGluZw== + UmV2aWV3IFRleHQ= + UmV2aWV3IG5vdCBhZGRlZCBkdWUgdG8gYSBzeXN0ZW0gZXJyb3I= + QmFja3VwIFBhdGg= + Q29tcGFueQ== + RmlsZSBub3QgZm91bmQgKDQwNCkgdGVtcGxhdGU= + Rmlyc3QgRGF5IE9mIFdlZWs= + UmVkaXJlY3QgdG8gSFRUUCB3aGVuIFNTTCBpcyBub3QgcmVxdWlyZWQ= + TmFtZQ== + SW5zdWZmaWNlbnQgcGVybWlzc2lvbnMgdGVtcGxhdGU= + R1pJUCBjb21wcmVzc2lvbiBsZXZlbCAwLTk= + UmV2aWV3cyBwZXIgcGFnZQ== + UmVnaXN0cmF0aW9uIE51bWJlcg== + UmVxdWlyZSBTU0wgZm9yIGxvZ2luICYgY2hlY2tvdXQ= + U2VydmVyIE5hbWU= + U2VydmVyIFBhdGg= + VGltZSB6b25lIG9mIHRoZSBzaXRl + U1NMIEZ1bGwgVVJMIChodHRwczovL3d3dy5kb21haW4uY29tL3BhdGgp + VGltZSB6b25lIG9mIHRoZSBzZXJ2ZXI= + RW5hYmxlIEhUTUwgR1pJUCBjb21wcmVzc2lvbg== + VXNlIEphdmFTY3JpcHQgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4vbG9nb3V0IChmb3IgSUlTKQ== + VXNlIE1PRCBSRVdSSVRF + RW5hYmxlIE1PRF9SRVdSSVRFIGZvciBTU0w= + V2Vic2l0ZSBhZGRyZXNz + V2Vic2l0ZSBuYW1l + V2ViIGFkZHJlc3M= + VGhlIGNhdGVnb3J5IHRyZWUgbXVzdCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGxhdGVzdCBjaGFuZ2Vz + Q29udGludWU= + Q3JlYXRlZCBPbg== + Q3JlZGl0cw== + ZGF5cw== + QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgaXRlbShzKT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tQnVsbGV0aW4gc2V0dGluZ3M= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY2Vuc29yZWQgd29yZHMgYW5kIHRoZWlyIHJlcGxhY2VtZW50cw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZW1haWwgc2V0dGluZ3M= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2ltbGV5cw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gb3V0cHV0IHNldHRpbmdz + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZGVmYXVsdCBzZWFyY2ggc2V0dGluZ3M= + SW4tYnVsbGV0aW4gZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnM= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBzZXR0aW5ncw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgZW1haWwgZXZlbnRz + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBvdXRwdXQgc2V0dGluZ3M= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2VhcmNoIHNldHRpbmdzIGFuZCBmaWVsZHM= + SW4tTGluayBHZW5lcmFsIENvbmZpZ3VyYXRpb24gT3B0aW9ucw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBydW4gdmFsaWRhdGlvbiBvbiB0aGUgbGlua3M= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBzZXR0aW5ncw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBjdXN0b20gZmllbGRz + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBlbWFpbCBjb25maWd1cmF0aW9u + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBvdXRwdXQgc2V0dGluZ3M= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBkZWZhdWx0IHNlYXJjaCBjb25maWd1cmF0aW9u + SW4tTmV3eiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbnN0YWxsIG5ldyBtb2R1bGVz + VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gbWFuYWdlIGNhdGVnb3JpZXMgYW5kIGl0ZW1zIGFjcm9zcyBhbGwgY2F0ZWdvcmllcw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIHN5c3RlbSBiYWNrdXBz + VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gYnJvd3NlIHRoZSBjYXRhbG9nIGFuZCBtYW5hZ2UgY2F0ZWdvcmllcyBhbmQgaXRlbXM= + VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGNhdGVnb3J5IGN1c3RvbSBmaWVsZHM= + Q29uZmlndXJlIENhdGVnb3J5IEVtYWlsIEV2ZW50cw== + Q29uZmlndXJlIENhdGVnb3J5IHNlYXJjaCBvcHRpb25z + VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgY2F0ZWdvcnkgc2V0dGluZ3M= + VGhpcyBpcyBhIGdlbmVyYWwgY29uZmd1cmF0aW9uIHNlY3Rpb24= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgcmVnaW9uYWwgc2V0dGluZ3MsIG1hbmFnZSBhbmQgZWRpdCBsYW5ndWFnZXM= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgQ1NTIHN0eWxlc2hlZXRzIGZvciB0aGVtZXMu + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlbWVzIGFuZCBlZGl0IHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcw== + VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgdXNlciBzZXR0aW5ncw== + VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBlLW1haWxzIHNlbnQgYnkgSW4tUG9ydGFs + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBleHBvcnQgSW4tcG9ydGFsIGRhdGE= + SGVscCBzZWN0aW9uIGZvciBJbi1wb3J0YWwgYW5kIGFsbCBvZiBpdHMgbW9kdWxlcy4gQWxzbyBhY2Nlc3NpYmxlIHZpYSB0aGUgc2VjdGlvbi1zcGVjaWZpYyBpbnRlcmFjdGl2ZSBoZWxwIGZlYXR1cmUu + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbXBvcnQgZGF0YSBmcm9tIG90aGVyIHByb2dyYW1zIGludG8gSW4tcG9ydGFs + VGhpcyBzZWN0aW9uIHNob3dzIHN1bW1hcnkgc3RhdGlzdGljcw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGEgaW1wb3J0IGZyb20gb3RoZXIgc3lzdGVtcw== + TWFuYWdlIHN0YXR1cyBvZiBhbGwgbW9kdWxlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgSW4tcG9ydGFsIHN5c3RlbS4= + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBlbmFibGVkIGFuZCBkaXNhYmxlIG1vZHVsZXM= + VmlldyBzeXN0ZW0gc3RhdGlzdGljcywgbG9ncyBhbmQgcmVwb3J0cw== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGFiYXNlIHJlc3RvcmVz + VGhpcyBzZWN0aW9uIGRpc3BsYXlzIGEgbGlzdCBvZiBhbGwgcmV2aWV3cyBpbiB0aGUgc3lzdGVtLg== + VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzZWFyY2ggbG9nIGFuZCBhbGxvd3MgdG8gbWFuYWdlIGl0 + VGhpcyBzZWN0aW9uIGFsbG93cyB0byB2aWV3IFBIUCBjb25maWd1cmF0aW9u + VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBhY3RpdmUgc2Vzc2lvbnMgYW5kIGFsbG93cyB0byBtYW5hZ2UgdGhlbQ== + TWFuYWdlIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBzaXRlLCBpbmNsdWRpbmcgY2F0ZWdvcmllcywgaXRlbXMgYW5kIGNhdGVnb3J5IHNldHRpbmdzLg== + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRpcmVjdCBTUUwgcXVlcmllcyBvbiBJbi1wb3J0YWwgZGF0YWJhc2U= + TWFuYWdlIHN5c3RlbS13aWRlIHNldHRpbmdzLCBlZGl0IHRoZW1lcyBhbmQgbGFuZ3VhZ2Vz + VGhpcyBzZWN0aW9uIHNob3dzIGF2YWlsYWJsZSB0YWdzIGZvciB1c2luZyBpbiB0ZW1wbGF0ZXM= + VXNlIHZhcmlvdXMgSW4tcG9ydGFsIGRhdGEgbWFuYWdlbWVudCB0b29scywgaW5jbHVkaW5nIGJhY2t1cCwgcmVzdG9yZSwgaW1wb3J0IGFuZCBleHBvcnQ= + TWFuYWdlIHVzZXJzIGFuZCBncm91cHMsIHNldCB1c2VyICYgZ3JvdXAgcGVybWlzc2lvbnMgYW5kIGRlZmluZSB1c2VyIHNldHRpbmdzLg== + TWFuYWdlIFVzZXIgQmFuIFJ1bGVz + VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHVzZXIgY3VzdG9tIGZpZWxkcw== + Q29uZmlndXJlIFVzZXIgZW1haWwgZXZlbnRz + VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYWdhbmUgZ3JvdXBzLCBhc3NpZ24gdXNlcnMgdG8gZ3JvdXBzIGFuZCBwZXJmb3JtIG1hc3MgZW1haWwgc2VuZGluZw== + VGhpcyBzZWN0aW9ucyBhbGxvd3MgdG8gbWFuYWdlIHVzZXJzLCB0aGVpciBwZXJtaXNzaW9ucyBhbmQgcGVyZm9ybSBtYXNzIGVtYWls + VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzaXRlIHZpc2l0b3JzIGxvZw== + RGlzYWJsZWQ= + RG93bmxvYWQgRXhwb3J0IEZpbGU= + RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0 + WW91IGhhdmUgbm90IHNhdmVkIGNoYW5nZXMgdG8gdGhlIGl0ZW0geW91IGFyZSBlZGl0aW5nITxiciAvPkNsaWNrIE9LIHRvIGxvb3NlIGNoYW5nZXMgYW5kIGdvIHRvIHRoZSBzZWxlY3RlZCBzZWN0aW9uPGJyIC8+b3IgQ2FuY2VsIHRvIHN0YXkgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbi4= + RmlsZSBpcyBlbXB0eQ== + IA== + RW5hYmxlZA== + Q2FuJ3Qgc2F2ZSBhIGZpbGU= + RXJyb3IgY29weWluZyBzdWJjYXRlZ29yaWVz + Q3VzdG9tIGZpZWxkIHdpdGggaWRlbnRpY2FsIG5hbWUgYWxyZWFkeSBleGlzdHM= + VXNlcm5hbWUgeW91IGhhdmUgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc3lzdGVtLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgdXNlcm5hbWUu + RmlsZSBpcyB0b28gbGFyZ2U= + SW52YWxpZCBGaWxlIEZvcm1hdA== + RXJyb3IgbW92aW5nIHN1YmNhdGVnb3J5 + UGFzc3dvcmRzIGRvIG5vdCBtYXRjaCE= + cmVxdWlyZWQgY29sdW1ucyBtaXNzaW5n + Q2F0ZWdvcnkgZmllbGQgbm90IHVuaXF1ZQ== + VW5rbm93biBjYXRlZ29yeQ== + SW5jb3JyZWN0IGRhdGUgZm9ybWF0LCBwbGVhc2UgdXNlICglcykgZXguICglcyk= + SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlICVz + SW52YWxpZCBGb3JtYXQ= + RmllbGQgaXMgb3V0IG9mIHJhbmdl + RmllbGQgaXMgcmVxdWlyZWQ= + RmllbGQgdmFsdWUgbXVzdCBiZSB1bmlxdWU= + RmllbGQgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSAlcyB0byAlcw== + QWRkIEFydGljbGU= + QXBwcm92ZSBBcnRpY2xl + RGVjbGluZSBBcnRpY2xl + TW9kaWZ5IEFydGljbGU= + QXBwcm92ZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg== + RGVjbGluZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg== + QXJ0aWNsZSBSZXZpZXcgQWRkZWQ= + UGVuZGluZyBBcnRpY2xlIFJldmlldyBBZGRlZA== + QXBwcm92ZSBBcnRpY2xlIFJldmlldw== + RGVjbGluZSBBcnRpY2xlIFJldmlldw== + QWRkIENhdGVnb3J5 + QWRkIFBlbmRpbmcgQ2F0ZWdvcnk= + QXBwcm92ZSBDYXRlZ29yeQ== + RGVueSBDYXRlZ29yeQ== + TW9kaWZ5IENhdGVnb3J5 + RGVsZXRlIENhdGVnb3J5 + Q29tbW9uIEZvb3RlciBUZW1wbGF0ZQ== + RW1haWwgZXZlbnRzIGltcG9ydCBwcm9ncmVzcw== + QWRkIExpbms= + QWRkIFBlbmRpbmcgTGluaw== + QXBwcm92ZSBQZW5kaW5nIExpbms= + RGVueSBMaW5r + TW9kaWZ5IExpbms= + QXBwcm92ZSBMaW5rIE1vZGlmaWNhdGlvbg== + RGVjbGluZSBsaW5rIG1vZGlmaWNhdGlvbg== + TGluayBNb2RpZmljYXRpb24gUGVuZGluZw== + TGluayBSZXZpZXcgQWRkZWQ= + UGVuZGluZyBSZXZpZXcgQWRkZWQ= + QXBwcm92ZSBMaW5rIFJldmlldw== + RGVjbGluZSBMaW5rIFJldmlldw== + TmV3IFByaXZhdGUgTWVzc2FnZQ== + UG9zdCBBZGRlZA== + UG9zdCBNb2RpZmllZA== + VG9waWMgQWRkZWQ= + QWRkIFVzZXI= + QWRkIFBlbmRpbmcgVXNlcg== + QXBwcm92ZSBVc2Vy + RGVueSBVc2Vy + Rm9yZ290IFBhc3N3b3Jk + TWVtYmVyc2hpcCBleHBpcmF0aW9uIG5vdGljZQ== + TWVtYmVyc2hpcCBleHBpcmVk + UGFzc3dvcmQgQ29uZmlybWF0aW9u + VXNlciBzdWJzY3JpYmVk + U3VnZ2VzdCB0byBhIGZyaWVuZA== + VXNlciB1bnN1YnNjcmliZWQ= + VmFsaWRhdGUgVXNlcg== + RmllbGQ= + RGlzcGxheSBPcmRlcg== + QWRkcmVzcyBMaW5l + QWR2YW5jZWQgQ1NT + QWx0IFZhbHVl + QXV0b21hdGljIEZpbGVuYW1l + QXZhaWxhYmxlIENvbHVtbnM= + QmFja2dyb3VuZA== + QmFja2dyb3VuZCBBdHRhY2htZW50 + QmFja2dyb3VuZCBDb2xvcg== + QmFja2dyb3VuZCBJbWFnZQ== + QmFja2dyb3VuZCBQb3NpdGlvbg== + QmFja2dyb3VuZCBSZXBlYXQ= + Qm9yZGVyIEJvdHRvbQ== + Qm9yZGVyIExlZnQ= + Qm9yZGVyIFJpZ2h0 + Qm9yZGVycw== + Qm9yZGVyIFRvcA== + Q2F0ZWdvcnk= + QXV0b21hdGljIERpcmVjdG9yeSBOYW1l + RGlyZWN0b3J5IE5hbWU= + Q2F0ZWdvcnkgRm9ybWF0 + Q2F0ZWdvcnkgSUQ= + Q2F0ZWdvcnkgc2VwYXJhdG9y + Q2F0ZWdvcnkgVGVtcGxhdGU= + Q2hhcnNldA== + Q2hlY2sgRHVwbGljYXRlcyBieQ== + Q29tcGFueQ== + Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl + Q3JlYXRlZCBCeQ== + Q3JlYXRlZCBPbg== + Q3Vyc29y + RGF0ZSBGb3JtYXQ= + RGVjaW1hbCBQb2ludA== + RGVzY3JpcHRpb24= + RGlzcGxheQ== + QXMgUGxhaW4gVGV4dA== + RHVyYXRpb24= + RWRpdG9ycyBQaWNr + RWxhcHNlZCBUaW1l + RW5hYmxlZA== + RXN0aW1hdGVkIFRpbWU= + RXhwaXJl + RXhwb3J0IGNvbHVtbnM= + RXhwb3J0IEZpbGVuYW1l + RXhwb3J0IGZvcm1hdA== + RXhwb3J0IE1vZHVsZXM= + RXhwb3J0IFBocmFzZSBUeXBlcw== + RXh0cmEgSGVhZGVycw== + RmF4 + RmllbGRzIGVuY2xvc2VkIGJ5 + RmllbGRzIHNlcGFyYXRlZCBieQ== + RmllbGQgVGl0bGVz + RmlsZW5hbWU= + Rm9udA== + Rm9udCBDb2xvcg== + Rm9udCBGYW1pbHk= + Rm9udCBTaXpl + Rm9udCBTdHlsZQ== + Rm9udCBXZWlnaHQ= + SUQ= + R3JvdXAgTmFtZQ== + SGVpZ2h0 + SGl0cw== + SG90 + SWNvbiBVUkw= + SUQ= + SW1hZ2UgSUQ= + SW1wb3J0IENhdGVnb3J5 + SW1wb3J0IEZpbGVuYW1l + SW5jbHVkZSBmaWVsZCB0aXRsZXM= + SW5wdXQgRGF0ZSBGb3JtYXQ= + SW5wdXQgVGltZSBGb3JtYXQ= + SW5zdGFsbCBNb2R1bGVz + SW5zdGFsbCBQaHJhc2UgVHlwZXM= + VXNlIGN1cnJlbnQgY2F0ZWdvcnkgYXMgcm9vdCBmb3IgdGhlIGV4cG9ydA== + UHJpbWFyeQ== + SXMgU3lzdGVt + SXRlbSBUZW1wbGF0ZQ== + TGFuZ3VhZ2UgRmlsZQ== + TGFuZ3VhZ2UgSUQ= + TGVmdA== + TGluZSBlbmRpbmdz + TGluZSBFbmRpbmdzIEluc2lkZSBGaWVsZHM= + TG9jYWwgTmFtZQ== + TG9jYXRpb24= + TWFyZ2luIEJvdHRvbQ== + TWFyZ2luIExlZnQ= + TWFyZ2luIFJpZ2h0 + TWFyZ2lucw== + TWFyZ2luIFRvcA== + TWVzc2FnZSBCb2R5 + TWVzc2FnZSBUeXBl + TWV0YSBEZXNjcmlwdGlvbg== + TWV0YSBLZXl3b3Jkcw== + TW9kaWZpZWQ= + TW9kdWxl + TmFtZQ== + TmV3 + UGFjayBOYW1l + UGFkZGluZyBCb3R0b20= + UGFkZGluZyBMZWZ0 + UGFkZGluZyBSaWdodA== + UGFkZGluZ3M= + UGFkZGluZyBUb3A= + UGVyY2VudHMgQ29tcGxldGVk + TGFiZWw= + UGhyYXNlIFR5cGU= + UG9w + UG9zaXRpb24= + UHJpbWFyeQ== + UHJpbWFyeQ== + UHJpbWFyeSBUcmFuc2xhdGlvbg== + UHJpb3JpdHk= + UmF0aW5n + UmVsYXRpb24gSUQ= + VHlwZQ== + UmVtb3RlIFVSTA== + UmVwbGFjZSBEdXBsaWNhdGVz + UmV2aWV3IElE + UmV2aWV3IFRleHQ= + U2FtZSBBcyBUaHVtYg== + QmFzZWQgT24= + U3R5bGU= + U2VsZWN0b3IgSUQ= + U2VsZWN0b3IgTmFtZQ== + U2tpcCBGaXJzdCBSb3c= + U3RhdHVz + U3R5bGVzaGVldCBJRA== + U3ViamVjdA== + SXRlbQ== + VGV4dCBBbGlnbg== + VGV4dCBEZWNvcmF0aW9u + VGhvdXNhbmRzIFNlcGFyYXRvcg== + VGltZSBGb3JtYXQ= + VGl0bGU= + VG9w + VmFsdWU= + TWVhc3VyZXMgU3lzdGVt + VXBsb2FkIEZpbGUgRnJvbSBMb2NhbCBQQw== + VVJM + VmlzaWJpbGl0eQ== + Vm90ZXM= + V2lkdGg= + Wi1JbmRleA== + Rm9udCBQcm9wZXJ0aWVz + RnJvbSBEYXRl + RnJvbnQgZW5k + Z2lnYWJ5dGUocyk= + VGhpcyBoZWxwIHNlY3Rpb24gZG9lcyBub3QgeWV0IGV4aXN0LCBpdCdzIGNvbWluZyBzb29uIQ== + aHRtbA== + SUQgRmllbGQ= + SW1wb3J0aW5nIEVtYWlsIEV2ZW50cyAuLi4= + SW1wb3J0aW5nIExhbmd1YWdlcyAuLi4= + SW1wb3J0aW5nIFBocmFzZXMgLi4u + RW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCB1bmRvIGFueSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUgdG8gZXhpc3RpbmcgcGhyYXNlcw== + SW1wb3J0aW5nIFBocmFzZXM= + SW4tbGluaw== + SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIGludGVnZXI= + TWlzc2luZyBvciBpbnZhbGlkIEluLVBvcnRhbCBMaWNlbnNl + SW52YWxpZCBzdGF0ZQ== + Q2F0ZWdvcmllcw== + TGlua3M= + QXJ0aWNsZXM= + VG9waWNz + SzQgQWR2YW5jZWQgVmlldw== + SzQgQ2F0YWxvZw== + S0I= + TGFuZ3VhZ2U= + SW1wb3J0IHByb2dyZXNz + TGFzdCBVcGRhdGVk + RGF0ZQ== + TGluayBEZXNjcmlwdGlvbg== + RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBsaW5rcw== + SGl0cw== + TGluayBOYW1l + TnVtYmVyIG9mIGRheXMgZm9yIGEgbGluayB0byBiZSBORVc= + TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdl + TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdlIG9uIGEgc2hvcnQgbGlzdGluZw== + UmF0aW5n + TGluayByZXZpZXdlZA== + QW5kIHRoZW4gYnk= + T3JkZXIgbGlua3MgYnk= + YW5kIHRoZW4gYnk= + U29ydCByZXZpZXdzIGJ5 + VVJM + RGlzcGxheSBsaW5rIFVSTCBpbiBzdGF0dXMgYmFy + TG9jYWwgSW1hZ2U= + TG9nZ2VkIGluIGFz + TG9naW4= + KEdNVCk= + KEdNVCAtMDE6MDAp + KEdNVCAtMTA6MDAp + KEdNVCAtMTE6MDAp + KEdNVCAtMTI6MDAp + KEdNVCAtMDI6MDAp + KEdNVCAtMDM6MDAp + KEdNVCAtMDQ6MDAp + KEdNVCAtMDU6MDAp + KEdNVCAtMDY6MDAp + KEdNVCAtMDc6MDAp + KEdNVCAtMDg6MDAp + KEdNVCAtMDk6MDAp + TWFyZ2lucw== + TUI= + R3JvdXAgTWVtYmVyc2hpcCBFeHBpcmF0aW9uIFJlbWluZGVyIChkYXlzKQ== + TWFpbiBNZW51 + TWV0cmlj + TWlzc2luZyBJbiBUaGVtZQ== + Q2F0ZWdvcnkgcGF0aCBpbiBvbmUgZmllbGQ= + TW9kdWxlIG5vdCBsaWNlbnNlZA== + TW9uZGF5 + TmV2ZXI= + TmV2ZXIgRXhwaXJlcw== + TmV3 + TnVtYmVyIG9mIGRheXMgdG8gYXJjaGl2ZSBhcnRpY2xlcyBhdXRvbWF0aWNhbGx5 + RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBhcnRpY2xlcw== + TnVtYmVyIG9mIGRheXMgZm9yIGEgYXJ0aWNsZSB0byBiZSBORVc= + TnVtYmVyIG9mIGFydGljbGVzIHBlciBwYWdl + QXJ0aWNsZXMgUGVyIFBhZ2UgKFNob3J0bGlzdCk= + QW5kIHRoZW4gYnk= + T3JkZXIgYXJ0aWNsZXMgYnk= + QW5kIHRoZW4gYnk= + U29ydCByZXZpZXdzIGJ5 + TmV4dCBjYXRlZ29yeQ== + TmV4dCBncm91cA== + TmV4dCBVc2Vy + Tm8= + Tm9uZQ== + Tm8gU3ViamVjdA== + Tm8gdG9waWNz + TnVtYmVyIG9mIFBvc3Rz + b2Y= + T2Zm + T24= + T25lIFdheQ== + ZGF5KHMp + aG91cihzKQ== + bWludXRlKHMp + bW9udGgocyk= + c2Vjb25kKHMp + d2VlayhzKQ== + eWVhcihzKQ== + T3JpZ2luYWwgVmFsdWVz + T3JpZ2luYWwgVmFsdWU= + T3JpZ2luYWwgVmFsdWVz + T3RoZXIgRmllbGRz + KEdNVCArMDE6MDAp + KEdNVCArMTA6MDAp + KEdNVCArMTE6MDAp + KEdNVCArMTI6MDAp + KEdNVCArMTM6MDAp + KEdNVCArMDI6MDAp + KEdNVCArMDM6MDAp + KEdNVCArMDQ6MDAp + KEdNVCArMDU6MDAp + KEdNVCArMDY6MDAp + KEdNVCArMDc6MDAp + KEdNVCArMDg6MDAp + KEdNVCArMDk6MDAp + UGFkZGluZ3M= + UGFnZQ== + VG8gY2hhbmdlIHRoZSBwYXNzd29yZCwgZW50ZXIgdGhlIHBhc3N3b3JkIGhlcmUgYW5kIGluIHRoZSBib3ggYmVsb3c= + UGVuZGluZw== + UGVyZm9ybWluZyBCYWNrdXA= + UGVyZm9ybWluZyBFeHBvcnQ= + UGVyZm9ybWluZyBJbXBvcnQ= + UGVyZm9ybWluZyBSZXN0b3Jl + QWxsb3dzIGFjY2VzcyB0byB0aGUgQWRtaW5pc3RyYXRpb24gdXRpbGl0eQ== + UmVhZC1Pbmx5IEFjY2VzcyBUbyBEYXRhYmFzZQ== + Q2F0ZWdvcmllcw== + TGlua3M= + QXJ0aWNsZXM= + VG9waWNz + UGVybWlzc2lvbiBUeXBlIEFkbWlu + QWRtaW5pc3RyYXRpb24= + UGVybWlzc2lvbiBUeXBlIEZyb250IEVuZA== + RnJvbnQgRW5k + Tm90IFRyYW5zbGF0ZWQ= + VHJhbnNsYXRlZA== + QWRtaW4= + Qm90aA== + RnJvbnQ= + RWRpdG9yJ3MgcGljaw== + UG9w + UG9zaXRpb24gQW5kIFZpc2liaWxpdHk= + TmV3IHBvc3RzIChkYXlzKQ== + TnVtYmVyIG9mIHBvc3RzIHBlciBwYWdl + UG9zdHM= + UHJldmlvdXMgY2F0ZWdvcnk= + UHJldmlvdXMgZ3JvdXA= + UHJldmlvdXMgVXNlcg== + UHJpbWFyeQ== + QWN0aXZlIEFydGljbGVz + QWN0aXZlIENhdGVnb3JpZXM= + QWN0aXZlIExpbmtz + QWN0aXZlIFRvcGljcw== + QWN0aXZlIFVzZXJz + QWRkIE1vZHVsZQ== + U2VudCBUbw== + QWRtaW4gZ3JvdXA= + TWVzc2FnZXMgZnJvbSBTaXRlIEFkbWluIGFyZSBmcm9t + QWR2YW5jZWQgU2VhcmNo + QWxsb3cgcGFzc3dvcmQgcmVzZXQgYWZ0ZXI= + QWxsIHRlbXBsYXRlcw== + QWx0IHZhbHVl + QXBwbHlpbmcgQmFuIExpc3QgdG8gRXhpc3RpbmcgVXNlcnMuLg== + Q29udGludWUgdG8gcmVzdG9yZSBhdCBteSBvd24gcmlzaz8= + QXJjaGl2ZWQ= + QXJjaGl2YXRpb24gRGF0ZQ== + QXZlcmFnZSBSYXRpbmcgb2YgQXJ0aWNsZXM= + QXJ0aWNsZSBCb2R5 + QXJ0aWNsZSBFeGNlcnB0 + QXJ0aWNsZSBFeGNlcnB0 + VG90YWwgQXJ0aWNsZSBSZXZpZXdz + QWN0aXZlIEFydGljbGVz + QXJjaGl2ZWQgQXJ0aWNsZXM= + UGVuZGluZyBBcnRpY2xlcw== + VG90YWwgQXJ0aWNsZXM= + QXR0YWNobWVudA== + QXR0ZW50aW9uIQ== + QXV0aG9y + R2VuZXJhdGUgZnJvbSB0aGUgYXJ0aWNsZSBib2R5 + QXV0b21hdGljIERpcmVjdG9yeSBOYW1l + QXV0b21hdGljIEZpbGVuYW1l + TW9kdWxlcw== + QmFjayBVcCBEYXRl + QmFja3VwIFBhdGg= + QmFja3VwIHN0YXR1cw== + QmFubmVkIFVzZXJz + RGF0ZSBvZiBCaXJ0aA== + Q2FjaGUgVGltZW91dCAoc2Vjb25kcyk= + RWRpdG9yJ3MgUGljayBDYXRlZ29yaWVz + Q2F0ZWdvcnkgSUQ= + Q2F0ZWdvcnkgTGVhZCBTdG9yeSBBcnRpY2xlcw== + Q2F0ZWdvcnkgUGVybWlzc2lvbnM= + Q2F0ZWdvcnkgTGVhZCBTdG9yeQ== + Q2Vuc29yc2hpcCBJZA== + Q2Vuc29yc2hpcCBXb3Jk + Q2hhcnNldA== + Q2l0eQ== + Q29tbWVudHM= + Q29udGludWU= + Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl + Q291bnRyeQ== + Q3JlYXRlZCBieQ== + Q3JlYXRlZCBvbg== + Q3JlYXRlZCBhdA== + Q3VycmVudCBTZXNzaW9ucw== + Q3VzdG9tIEZpbGVuYW1l + RGF0YWJhc2UgU2V0dGluZ3M= + VG90YWwgU2l6ZSBvZiB0aGUgRGF0YWJhc2U= + KG1tLWRkLXl5eXkp + U2VydmVyIERhdGFiYXNl + U2VydmVyIFBhc3N3b3Jk + RGF0YWJhc2UgVXNlciBOYW1l + RGVjaW1hbCBQb2ludA== + RGVmYXVsdA== + RGVsZXRl + RGVzY3JpcHRpb24= + RGlyZWN0b3J5IE5hbWU= + RGlzYWJsZWQgQXJ0aWNsZXM= + RGlzYWJsZWQgQ2F0ZWdvcmllcw== + RGlzYWJsZWQgTGlua3M= + RGlzcGxheSBPcmRlcg== + RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0Og== + QWxsb3cgRHVwbGljYXRlIFJhdGluZyBWb3Rlcw== + QWxsb3cgRHVwbGljYXRlIFJldmlld3M= + RWRpdA== + RWRpdG9yJ3MgUGljaw== + RWRpdG9yJ3MgUGljayBBcnRpY2xlcw== + RWRpdG9yJ3MgUGljayBMaW5rcw== + RWRpdG9yIFBpY2sgVG9waWNz + RWRpdCBRdWVyeQ== + RW1haWw= + RW1haWwgQm9keQ== + RW1haWwgZGVsaXZlcnkgYWJvcnRlZA== + VGhlIEVtYWlsIE1lc3NhZ2UgaGFzIGJlZW4gc2VudA== + UGxlYXNlIFdhaXQgd2hpbGUgSW4tUG9ydGFsIHByZXBhcmVzIHRvIHNlbmQgdGhlIG1lc3NhZ2UuLg== + RW1haWwgU3ViamVjdA== + RW1vdGlvbiBJZA== + RW5hYmxlIFRlbXBsYXRlIENhY2hpbmc= + RW5hYmxlZA== + RW5hYmxlIEhUTUw/ + RXJyb3IgVGFn + RXZlbnQ= + RXhwaXJhdGlvbiBEYXRl + RXhwb3J0IEZpbGVuYW1l + R2VuZXJhbCBlcnJvcjogdW5hYmxlIHRvIGV4cG9ydA== + RmllbGQgSWQ= + RmllbGQgTGFiZWw= + RmllbGQgTmFtZQ== + RmllbGQgUHJvbXB0 + RmlsZSBJZA== + RmlsZSBuYW1l + Rmlyc3QgTmFtZQ== + Rmlyc3QgTmFtZQ== + RnJlcXVlbmN5 + RnJvbS9UbyBVc2Vy + RnJvbQ== + RnJvbnQgcGFnZSBsZWFkIGFydGljbGU= + R2VuZXJhbCBQZXJtaXNzaW9ucw== + R3JvdXAgTmFtZQ== + RXh0cmEgTWFpbCBIZWFkZXJz + SGVhZGluZw== + KE1pbmltdW0gNCk= + SGl0cw== + SG90 + SG90IEFydGljbGVz + SG90IExpbmtz + SG90IFRvcGljcw== + SFRNTA== + SFRNTCBWZXJzaW9u + SWNvbiBVUkw= + SW1hZ2U= + SW1hZ2UgSUQ= + SW1wb3J0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBkaWQgbm90IGNvbXBsZXRlLg== + TGluayBJbWFnZSBOYW1l + VGFibGUgTmFtZSBQcmVmaXg= + SW5pdGlhbCBJbXBvcnQgQ2F0ZWdvcnk= + SW4tTGluayBEYXRhYmFzZSBOYW1l + SW4tTGluayBEYXRhYmFzZSBQYXNzd29yZA== + SW4tTGluayBEYXRhYmFzZSBVc2VybmFtZQ== + SW4tTGluayBTZXJ2ZXIgTmFtZQ== + SW4tTGluayBTUUwgVHlwZQ== + SW5wdXQgVHlwZQ== + SW5zdGFsbGF0aW9uIFN0YXR1cw== + SVAgQWRkcmVzcw== + SVAgQWRkcmVzcw== + SXRlbQ== + SXRlbSBGaWVsZA== + RmllbGQgVmFsdWU= + RmllbGQgQ29tcGFyaXNvbg== + S2V5IFN0cm9rZQ== + S2V5d29yZA== + TGFiZWw= + TGFuZ3VhZ2UgRmlsZQ== + TGFuZ3VhZ2UgSWQ= + TGFuZ3VhZ2UgQ2FjaGUgVGltZW91dA== + RGF0ZSBGb3JtYXQ= + VGltZSBGb3JtYXQ= + TGFzdCBVcGRhdGVkIEFydGljbGU= + TGFzdCBDYXRlZ29yeSBVcGRhdGU= + TGFzdCBVcGRhdGVkIExpbms= + TGFzdCBOYW1l + TGFzdCBVcGRhdGVkIFBvc3QgRGF0ZQ== + TGFzdCBVcGRhdGVkIFBvc3QgVGltZQ== + TGFzdCBVcGRhdGVkIFRvcGljIERhdGU= + TGFzdCBVcGRhdGVkIFRvcGljIFRpbWU= + TGFzdCBOYW1l + U2l0ZSBMZWFkIFN0b3J5 + Q2F0ZWdvcnkgbGVhZCBhcnRpY2xl + TGVhZCBTdG9yeSBBcnRpY2xlcw== + TGluayBJZA== + VG90YWwgTGluayBSZXZpZXdz + QXZlcmFnZSBSYXRpbmcgb2YgTGlua3M= + TGluayBPd25lcg== + SW5zdGFsbCBQaHJhc2UgVHlwZXM6 + TG9jYWwgTmFtZQ== + TG9jYXRpb24= + U2VydmVyIFJlcXVpcmVzIEF1dGhlbnRpY2F0aW9u + U2VuZCBIVE1MIGVtYWls + UG9ydCAoZS5nLiBwb3J0IDI1KQ== + TWFpbCBTZXJ2ZXIgQWRkcmVzcw== + TWF4aW11bSBIaXRzIG9mIGFuIEFydGljbGU= + TWF4aW11bSBIaXRzIG9mIGEgTGluaw== + TWF4aW11bSBWb3RlcyBvZiBhIExpbms= + VG9waWMgTWF4aW11bSBIaXRz + VG9waWMgTWF4aW11bSBWb3Rlcw== + TWF4aW11bSBWb3RlcyBvZiBhbiBBcnRpY2xl + TWF4aW1hbCBpbXBvcnRlZCBjYXRlZ29yeSBsZXZlbA== + TWVtYmVyc2hpcCBFeHBpcmVz + Rm9ybWF0 + TWV0YSBEZXNjcmlwdGlvbg== + TWV0YSBLZXl3b3Jkcw== + TWluaW11bSBrZXl3b3JkIGxlbmd0aA== + TW9kaWZpZWQgT24= + TW9kaWZpZWQgYXQ= + TW9kdWxl + TW92ZSBkb3du + TW92ZSB1cA== + U2hvdyBtdWx0aXBsZQ== + TmFtZQ== + TmV3 + TmV3IEFydGljbGVz + TmV3IENhdGVnb3JpZXM= + TmV3ZXN0IEFydGljbGUgRGF0ZQ== + TmV3ZXN0IENhdGVnb3J5IERhdGU= + TmV3ZXN0IExpbmsgRGF0ZQ== + TmV3ZXN0IFBvc3QgRGF0ZQ== + TmV3ZXN0IFBvc3QgVGltZQ== + TmV3ZXN0IFRvcGljIERhdGU= + TmV3ZXN0IFRvcGljIFRpbWU= + TmV3ZXN0IFVzZXIgRGF0ZQ== + TmV3IExpbmtz + TmV3cyBBcnRpY2xlIElE + TmV3IFRvcGljcw== + Q3VycmVudGx5IEFjdGl2ZSBVc2VyIFNlc3Npb25z + Tm90aWZ5IE93bmVy + TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgdW5yZWdpc3RlcmVkIHVzZXJzIHRvIHZpZXcgaXQ= + T3ZlcndyaXRlIEV4aXN0aW5nIFBocmFzZXM= + UGFjayBOYW1l + UGFyYW1ldGVy + UGFyZW50IHRlbXBsYXRlcw== + UGFzc3dvcmQ= + UmVwZWF0IFBhc3N3b3Jk + UGVuZGluZw== + UGVuZGluZyBDYXRlZ29yaWVz + UGVuZGluZyBJdGVtcw== + UGVuZGluZyBMaW5rcw== + UGVyZm9ybSB0aGlzIG9wZXJhdGlvbiBub3c/ + UGVyIFBhZ2U= + UGVyc29uYWwgSW5mb3JtYXRpb24= + UGhvbmU= + UGhyYXNlIElk + UGhyYXNlcw== + UGhyYXNlIFR5cGU= + UGxhaW4gVGV4dA== + UG9wdWxhcml0eQ== + UG9wdWxhciBBcnRpY2xlcw== + UG9wdWxhciBMaW5rcw== + UG9wdWxhciBUb3BpY3M= + UG9zdGVkIGJ5 + UG9zdHMgdG8gbG9jaw== + VG90YWwgUG9zdHM= + UHJpbWFyeQ== + UHJpbWFyeSBHcm91cA== + UHJpbWFyeSBWYWx1ZQ== + UHJpb3JpdHk= + UHJvcGVydGllcw== + UmF0aW5n + KE1pbmltdW0gMCwgTWF4aW11bSA1KQ== + TnVtYmVyIG9mIERhdGFiYXNlIFJlY29yZHM= + TnVtYmVyIG9mIFJlZ2lvbiBQYWNrcw== + UmVndWxhciBVc2VyIEdyb3Vw + TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgcmVnaXN0ZXJlZCB1c2VycyB0byB2aWV3IGl0 + UmVsYXRpb24gSUQ= + UmVsYXRpb24gVHlwZQ== + U2VhcmNoIFJlbGV2YW5jZSBkZXBlbmRzIG9u + U2VhcmNoIFJlbGV2ZW5jZSBTZXR0aW5ncw== + VXNlIHJlbW90ZSBpbWFnZSAoVVJMKQ== + UmVwbGFjZW1lbnQgV29yZA== + SW5jcmVhc2UgaW1wb3J0YW5jZSBpZiBmaWVsZCBjb250YWlucyBhIHJlcXVpcmVkIGtleXdvcmQgYnk= + UmVzdG9yZSBoYXMgZmFpbGVkIGFuIGVycm9yIG9jY3VyZWQ6 + Q2hvb3NlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJhY2t1cCBkYXRlcyB0byByZXN0b3JlIG9yIGRlbGV0ZQ== + UmVzdG9yZSBTdGF0dXM= + UmVzdG9yZSBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 + UmV2aWV3ZWQgQnk= + UmV2aWV3IElE + UmV2aWV3IFRleHQ= + U2VsZWN0IE1vZHVsZSBSb290IENhdGVnb3J5Og== + Um9vdCBjYXRlZ29yeSBuYW1lIChsYW5ndWFnZSB2YXJpYWJsZSk= + Um9vdCBQYXNzd29yZA== + UGxlYXNlIGVudGVyIHRoZSBSb290IHBhc3N3b3Jk + VmVyaWZ5IFJvb3QgUGFzc3dvcmQ= + UnVsZSBUeXBl + VmFsaWRhdGlvbiBQcm9ncmVzcw== + U2VhcmNo + U2VhcmNoIFR5cGU= + U2VsZWN0IFNvdXJjZSBMYW5ndWFnZQ== + U2VuZCBFbWFpbCBBcw== + U2VudCBPbg== + U2VydmVyIEhvc3RuYW1l + U0lE + U2Vzc2lvbiBDb29raWUgTmFtZQ== + U2Vzc2lvbiBNYW5hZ2VtZW50IE1ldGhvZA== + U2Vzc2lvbiBJbmFjdGl2aXR5IFRpbWVvdXQgKHNlY29uZHMp + U2hvdyBvbiB0aGUgZ2VuZXJhbCB0YWI= + U2ltcGxlIFNlYXJjaA== + QWRkaXRpb25hbCBNZXNzYWdlIEhlYWRlcnM= + TWFpbCBTZXJ2ZXIgUGFzc3dvcmQ= + TWFpbCBTZXJ2ZXIgVXNlcm5hbWU= + VXNlIG5vbi1ibG9ja2luZyBzb2NrZXQgbW9kZQ== + U1FMIFF1ZXJ5Og== + QW4gU1FMIGVycm9yIGhhcyBvY2N1cmVk + UGVyZm9ybSBTUUwgUXVlcnk= + U1FMIFF1ZXJ5IFJlc3VsdHM= + U2VydmVyIFR5cGU= + U3RhcnQgRGF0ZQ== + U3RhdGU= + U3RhdHVz + U3RlcCBPbmU= + U3RyZWV0 + U3R5bGVzaGVldA== + U3ViamVjdA== + U3ViIFNlYXJjaA== + RW5hYmxlIFRhZyBDYWNoaW5n + VG90YWwgU2l6ZSBvZiBTeXN0ZW0gRmlsZXM= + U3lzdGVtIHByZW1pc3Npb25z + TnVtYmVyIG9mIERhdGFiYXNlIFRhYmxlcw== + VGVtcGxhdGU= + VGV4dCBWZXJzaW9u + VGhlbWU= + TnVtYmVyIG9mIFRoZW1lcw== + VGhlbWUgSWQ= + VGhvdXNhbmRzIFNlcGFyYXRvcg== + UmVtb3RlIFVSTA== + KGhoOm1tOnNzKQ== + VGl0bGU= + VG8= + VG9waWNzIEF2ZXJhZ2UgUmF0aW5n + VG9waWMgSUQ= + VG9waWMgTG9ja2Vk + VG90YWwgVG9waWMgUmV2aWV3cw== + QWN0aXZlIFRvcGljcw== + RGlzYWJsZWQgVG9waWNz + UGVuZGluZyBUb3BpY3M= + VG90YWwgVG9waWNz + VG90YWwgVXNlcnMgd2l0aCBUb3BpY3M= + VG90YWwgQ2F0ZWdvcmllcw== + VG90YWwgTGlua3M= + VG90YWwgVXNlciBHcm91cHM= + VHlwZQ== + VXBkYXRpbmc= + VXBsb2FkIGltYWdlIGZyb20gbG9jYWwgUEM= + VVJM + VXNlciBDb3VudA== + VXNlcm5hbWU= + VXNlcm5hbWU= + QWN0aXZlIFVzZXJz + RGlzYWJsZWQgVXNlcnM= + UGVuZGluZyBVc2Vycw== + TnVtYmVyIG9mIFVuaXF1ZSBDb3VudHJpZXMgb2YgVXNlcnM= + TnVtYmVyIG9mIFVuaXF1ZSBTdGF0ZXMgb2YgVXNlcnM= + VmFsdWU= + TGlzdCBvZiBWYWx1ZXM= + Vmlld3M= + VmlzaWJsZQ== + KE1pbmltdW0gMSk= + Vm90ZXM= + V2FybmluZyE= + V2VpZ2h0 + Wmlw + U2Vzc2lvbiBSZWZlcnJlciBDaGVja2luZw== + bGFfUmF0aW5n + QWxyZWFkeSB2b3RlZA== + UmVjaXByb2NhbA== + UmVtb3ZlIEZyb20= + Tm90IGFsbCByZXF1aXJlZCBmaWVsZHMgYXJlIGZpbGxlZC4gUGxlYXNlIGZpbGwgdGhlbSBmaXJzdC4= + QWNjZXNzIGRlbmllZA== + RmlsZSBlcnJvcg== + RmlsZSBub3QgZm91bmQ= + VW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl + QW4gdW5kZWZpbmVkIGVycm9yIGhhcyBvY2N1cmVk + UmV2aWV3ZXI= + UmV2aWV3IGFkZGVkIHN1Y2Nlc3NmdWxseQ== + VGhpcyBpdGVtIGhhcyBhbHJlYWR5IGJlZW4gcmV2aWV3ZWQ= + RXJyb3IgYWRkaW5nIHJldmlldw== + UmV2aWV3cyBQZXIgUGFnZQ== + UmV2aWV3cyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ== + RXJyb3IgdmVyaWZ5aW5nIHBhc3N3b3Jk + UnVubmluZyBRdWVyeQ== + U2FtcGxlIFRleHQ= + U2F2ZQ== + U2VhcmNo + U2VhcmNo + U2VhcmNoIENhdGVnb3JpZXM= + U2VhcmNoIExpbmtz + U2VhcmNoIEFydGljbGVz + U2VhcmNoIFRvcGljcw== + Q2F0ZWdvcmllczE= + Q2xlYXIgU2VhcmNo + TmV3IFNlYXJjaA== + TUVUQSBJbmZvcm1hdGlvbg== + Q2F0ZWdvcnk= + Q291bnRlcnM= + Q3VzdG9tIEZpZWxkcw== + RnVsbCBTaXplIEltYWdl + R2VuZXJhbA== + SW1hZ2U= + TWVzc2FnZQ== + U2VjdGlvbiBPdmVydmlldw== + UHJvcGVydGllcw== + UXVpY2sgTGlua3M= + UmVsYXRpb24= + VGVtcGxhdGVz + VGh1bWJuYWlsIEltYWdl + VHJhbnNsYXRpb24= + U2VhcmNoIFVzZXJz + U2VsZWN0aW5nIENhdGVnb3JpZXM= + RW1wdHkgc2VsZWN0aW9u + T25lIGZpZWxkIGZvciBlYWNoIGNhdGVnb3J5IGxldmVs + U2hvd2luZyBMb2dz + U2hvd2luZyBTdGF0aXN0aWNz + U2hvdyBFbWFpbCBMb2c= + U2hvd2luZyBMb2dz + QW5kIHRoZW4gYnk= + U3RlcA== + RGVmaW5pdGlvbg== + UHJldmlldw== + U3VuZGF5 + QWRtaW5pc3RyYXRpb24gUGFuZWwgVUk= + QWR2YW5jZWQgVmlldw== + QmFja3Vw + VXNlciBCYW4gTGlzdA== + QmFzZSBTdHlsZXM= + QmxvY2sgU3R5bGVz + Q2F0YWxvZw== + Q2F0ZWdvcmllcw== + U2VsZWN0IEl0ZW0= + Q2F0ZWdvcnkgU2VsZWN0 + Q2Vuc29yc2hpcA== + Q29tbXVuaXR5 + R2VuZXJhbCBTZXR0aW5ncw== + Q2Vuc29yc2hpcA== + Q3VzdG9tIEZpZWxkcw== + RS1tYWlsIFNldHRpbmdz + R2VuZXJhbCBTZXR0aW5ncw== + T3V0cHV0IFNldHRpbmdz + U2VhcmNoIFNldHRpbmdz + R2VuZXJhbCBTZXR0aW5ncw== + U21pbGV5cw== + R2VuZXJhbCBTZXR0aW5ncw== + Q3VzdG9t + RWRpdGluZyBSZXZpZXc= + RW1haWwgRXZlbnRz + RW1haWwgTG9n + RW1haWwgTWVzc2FnZQ== + RXhwb3J0IERhdGE= + RXhwb3J0IExhbmd1YWdlIFBhY2s= + R2VuZXJhbA== + R2VuZXJhbCBTZXR0aW5ncw== + R3JvdXA= + R3JvdXBz + U2VsZWN0IEdyb3Vw + SGVscA== + SW1hZ2Vz + SW1wb3J0IERhdGE= + SW1wb3J0IExhbmd1YWdlIFBhY2s= + SW4tbGluayBpbXBvcnQ= + SW5zdGFsbA== + SXRlbSBMaXN0 + SXRlbXM= + TGFiZWw= + TGFiZWxz + TGluayBWYWxpZGF0aW9u + TWFpbCBMaXN0 + TWVzc2FnZQ== + TWlzc2luZyBMYWJlbHM= + TW9kdWxlcw== + TW9kdWxlcyBNYW5hZ2VtZW50 + TW9kdWxlcyAmIFNldHRpbmdz + T3ZlcnZpZXc= + UGFja2FnZSBDb250ZW50 + UGVybWlzc2lvbnM= + cGhwQkIgSW1wb3J0 + UHJvcGVydGllcw== + UXVlcnkgRGF0YWJhc2U= + UmVnaW9uYWw= + UmVsYXRpb25z + U3VtbWFyeSAmIExvZ3M= + UmVzdG9yZQ== + UmV2aWV3 + UmV2aWV3cw== + UnVsZSBQcm9wZXJ0aWVz + U2VhcmNo + U2VhcmNoIExvZw== + U2VhcmNoIEdyb3Vwcw== + U2VhcmNoIFVzZXJz + U2VuZCBlLW1haWw= + U2VydmVyIEluZm9ybWF0aW9u + U2Vzc2lvbiBMb2c= + R2VuZXJhbCBTZXR0aW5ncw== + U3RydWN0dXJlICYgRGF0YQ== + U3RhdGlzdGljcw== + U3R5bGVzaGVldHM= + U3VtbWFyeQ== + Q29uZmlndXJhdGlvbg== + VGFnIGxpYnJhcnk= + VGVtcGxhdGU= + VGVtcGxhdGVz + VGhlbWVz + VG9vbHM= + VXBkYXRlIExpY2Vuc2U= + QmFuIHVzZXI= + VXNlciBCYW4gTGlzdA== + VXNlcnM= + VXNlciBTZWxlY3Q= + R3JvdXBz + VXNlcnM= + VmlzaXRz + VGFnIExpYnJhcnk= + VGFnIExpYnJhcnk= + dGVyYWJ5dGUocyk= + dGV4dA== + SW52YWxpZCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQ= + QWN0aXZl + QWRkaW5n + QWRkcmVzcw== + TG9naW4gbm90IGFsbG93ZWQgZnJvbSB0aGlzIGFkZHJlc3M= + QWRtaW4= + QWRtaW5pc3RyYXRvciBSZWNlaXZlIE5vdGljZXMgV2hlbg== + QWR2YW5jZWQ= + QWxs + QWxsb3c= + QW55 + QXJjaGl2ZWQ= + QXJ0aWNsZQ== + QXJ0aWNsZXM= + YXM= + QmFja2luZyB1cA== + QmFjayB1cCBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBiYWNrdXAgZmlsZSBpczo= + QmFja3VwIFBhdGg= + SW4tUG9ydGFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHdyaXRlIHRvIHRoaXMgZGlyZWN0b3J5 + VGhpcyB1dGlsaXR5IGFsbG93cyB5b3UgdG8gYmFja3VwIHlvdXIgY3VycmVudCBkYXRhIGZyb20gSW4tUG9ydGFsIGRhdGFiYXNlLg== + QmFja3VwIGluIHByb2dyZXNz + QmFu + VXNlciBCYW4gUnVsZXM= + QmFuIFVzZXIgSW5mb3JtYXRpb24= + QmxhbmsgdXNlcm5hbWUgb3IgcGFzc3dvcmQ= + Qm90aA== + QnVpbHQgSW4= + Ynl0ZXM= + Q2F0YWxvZw== + Q2F0ZWdvcmllcw== + Q2F0ZWdvcnk= + Q2Vuc29yc2hpcA== + Q2l0eQ== + WW91IGFyZSBhYm91dCB0byBjbGVhciBjbGlwYm9hcmQgY29udGVudCENClByZXNzIE9LIHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byByZXR1cm4gdG8gcHJldmlvdXMgc2NyZWVuLg== + U2VjdGlvbiBDb21pbmcgU29vbg== + Q29tcGxldGU= + Q29uZmlndXJhdGlvbg== + Q29udGFpbnM= + Q291bnRlcnM= + Q3VycmVudA== + Q3VzdG9t + Q3VzdG9tIEZpZWxk + Q3VzdG9tIEZpZWxkcw== + RGF0YWJhc2UgU2V0dGluZ3MgLSBJbnRlY2huaWMgSW4tTGluayAyLng= + Y2F0ZWdvcmllcw== + RGF0YSBUeXBlIDI= + cG9zdA== + bGlua3M= + dXNlcnM= + RGF0ZS9UaW1lIFNldHRpbmdz + RGF5 + UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gIFBsZWFzZSBiZSBhZHZpc2VkIHRoYXQgeW91IGNhbiB1c2UgdGhpcyB1dGlsaXR5IGF0IHlvdXIgb3duIHJpc2suICBJbnRlY2huaWMgQ29ycG9yYXRpb24gY2FuIG5vdCBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGNvcnJ1cHQgZGF0YSBvciBkYXRhIGxvc3Mu + RGVmYXVsdA== + RGVsZXRl + RGVuaWVk + RGVueQ== + RGlzYWJsZQ== + RGlzYWJsZWQ= + UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHV0aWxpdHkgYXQgeW91ciBvd24gcmlzay4gSW50ZWNobmljIENvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLg== + UGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5pbmcgdGhpcyB1dGlsaXR5Lg== + RWRpdA== + RWRpdGluZw== + RWRpdG9y + RW1haWw= + RW1vdGlvbiBJY29ucw== + RW5hYmxl + RW5hYmxlZA== + RXZlbnRz + RXhhbXBsZQ== + RXhpc3Rz + RXhwaXJlZA== + RXhwb3J0 + RmllbGRz + RmlsdGVy + Rmlyc3QgTmFtZQ== + Zm9y + RnJvbnQ= + RnJvbnQgRW5k + RnJvbnQtZW5kIE9ubHk= + RnVsbA== + RnVsbCBTaXplIEltYWdl + R2VuZXJhbA== + R3JlYXRlciBUaGFu + R3JvdXA= + R3JvdXBz + R3JvdXAgTmFtZQ== + R3Vlc3Q= + R3Vlc3QgVXNlcnM= + SG90 + SG91cg== + SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnM= + SW1hZ2U= + SW1hZ2Vz + SW5hY3RpdmU= + SW4gRGV2ZWxvcG1lbnQ= + SW5zdGFsbA== + SW5zdGFsbGVk + SW52YWxpZA== + SW52ZXJ0 + SVAgQWRkcmVzcw== + SXM= + SXMgTm90 + SXRlbXM= + S2V5d29yZA== + TGFiZWw= + TGFuZ3VhZ2UgSW1wb3J0 + TGFuZ3VhZ2U= + TGFzdCBOYW1l + TGVhZGluZw== + TGVzcyBUaGFu + TGljZW5zZQ== + TGluaw== + TGlua3M= + VmFsaWRhdGluZyBMaW5rcw== + TG9jYWw= + TG9ja2Vk + VXNlcm5hbWU= + RW1haWwgRXZlbnQ= + RGVmYXVsdCBNRVRBIGtleXdvcmRz + TWluaW11bSBrZXl3b3JkIGxlbmd0aA== + TWludXRl + TWluaW11bSBwYXNzd29yZCBsZW5ndGg= + TWluaW11bSB1c2VyIG5hbWUgbGVuZ3Ro + QmxhbmsgcGFzc3dvcmRzIGFyZSBub3QgYWxsb3dlZA== + QmxhbmsgdXNlciBuYW1l + TW9kdWxlcw== + TW9udGhz + U2hvdyBtdWx0aXBsZQ== + TmV3 + TmV3IENlbnNvciBXb3Jk + TmV3IEZpZWxk + TmV3IFRoZW1l + Tm8gQ2F0ZWdvcmllcw== + Tm9uZQ== + Tm8gcGVybWlzc2lvbnM= + RG9lcyBOb3QgQ29udGFpbg== + Tm90IFZhbGlkYXRlZA== + Tm8gcGVybWlzc2lvbnM= + T25lIFdheQ== + UGFjaw== + UGVuZGluZw== + UGVybWlzc2lvbg== + UGhvbmU= + UG9wdWxhcg== + UG9wdWxhcml0eQ== + UG9zdCBCb2R5 + UG9zdHM= + UHJlcmVxdWlzaXRlIG5vdCBmdWxmaWxsZWQsIGluc3RhbGxhdGlvbiBjYW5ub3QgY29udGludWUh + UHJpbWFyeQ== + UXVpY2sgbGlua3M= + UmVhZCBPbmx5 + UmVhZHkgdG8gSW5zdGFsbA== + UmVjaXByb2NhbA== + UmVsYXRpb24= + UmVsYXRpb25z + UmVwbGllcw== + VGhlIHZlcnNpb25zIG9mIHRoZSBiYWNrdXAgYW5kIHlvdXIgY29kZSBkb24ndCBtYXRjaC4gWW91ciBpbnN0YWxsYXRpb24gd2lsbCBwcm9iYWJseSBiZSBub24gb3BlcmF0aW9uYWwu + SGVyZSB5b3UgY2FuIHJlc3RvcmUgeW91ciBkYXRhYmFzZSBmcm9tIGEgcHJldmlvdXNseSBiYWNrZWQgdXAgc25hcHNob3QuIFJlc3RvcmluZyB5b3VyIGRhdGFiYXNlIHdpbGwgZGVsZXRlIGFsbCBvZiB5b3VyIGN1cnJlbnQgZGF0YSBhbmQgbG9nIHlvdSBvdXQgb2YgdGhlIHN5c3RlbS4= + UmVzdG9yZSBpcyBpbiBwcm9ncmVzcw== + IFJ1bm5pbmcgdGhpcyB1dGlsaXR5IHdpbGwgYWZmZWN0IHlvdXIgZGF0YWJhc2UuICBQbGVhc2UgYmUgYWR2aXNlZCB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgdXRpbGl0eSBhdCB5b3VyIG93biByaXNrLiAgSW50ZWNobmljIGNvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLiAgUGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5p + UmVzdHJpY3Rpb25z + UmVzdWx0cw== + UmV2aWV3 + UmV2aWV3cw== + Um9vdA== + TW9kdWxlIFJvb3QgQ2F0ZWdvcnk= + cm93KHMp + UnVsZQ== + U2FtZQ== + U2FtZSBhcyB0aHVtYm5haWw= + U2F2ZQ== + U2Nhbm5pbmc= + U2VhcmNoIFJlc3VsdHM= + U2Vjb25kcw== + U2VsZWN0 + U2VuZA== + U2Vzc2lvbnM= + U2Vzc2lvbiBFeHBpcmVk + U2V0dGluZ3M= + U2hvd2luZyBHcm91cHM= + U2hvd2luZyBVc2Vycw== + U2ltcGxl + U2l6ZQ== + U21pbGV5 + U01UUCAobWFpbCkgU2VydmVy + U29ydA== + U3RhdGU= + U3RlcA== + U3ViQ2F0cw== + U3ViSXRlbXM= + VGFibGU= + VGVtcGxhdGU= + VGVtcGxhdGVz + VGhlbWU= + VGh1bWJuYWls + VGh1bWJuYWlsIEltYWdl + dG8= + VG9waWM= + VG9waWNz + VHlwZQ== + dHlwZXM= + SXMgVW5pcXVl + VW5zZWxlY3Q= + VXBkYXRlIExpY2Vuc2U= + WW91ciBkYXRhIHdpbGwgYmUgbW9kaWZpZWQgZHVyaW5nIHRoZSB1cGdyYWRlLiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgbWFrZSBhIGJhY2t1cCBvZiB5b3VyIGRhdGFiYXNlLiBQcm9jZWVkIHdpdGggdGhlIHVwZ3JhZGU/ + VXBsb2Fk + VXNlcg== + VXNlciBSZWNlaXZlcyBOb3RpY2VzIFdoZW4= + VXNlcnM= + VXNlciBDb3VudA== + VmFsaWQ= + VmVyc2lvbg== + Vmlldw== + Vmlld3M= + V2Vic2l0ZQ== + V2Vla3M= + V2l0aGlu + WWVhcnM= + Wmlw + QWRkaW5nIEN1c3RvbSBGaWVsZA== + QWRkaW5nIEJhc2UgU3R5bGU= + QWRkaW5nIEJsb2NrIFN0eWxl + QWRkaW5nIENhdGVnb3J5 + QWRkaW5nIEdyb3Vw + QWRkaW5nIEltYWdl + QWRkaW5nIExhbmd1YWdl + QWRkaW5nIFBocmFzZQ== + QWRkaW5nIFJlbGF0aW9uc2hpcA== + QWRkaW5nIFJldmlldw== + QWRkaW5nIFN0eWxlc2hlZXQ= + QWRkaXRpb25hbCBQZXJtaXNzaW9ucw== + QWRkIE1vZHVsZQ== + QWR2YW5jZWQgVmlldw== + QmFja3Vw + QmFzZSBTdHlsZXM= + QmxvY2sgU3R5bGVz + Q2F0YWxvZw== + Q2F0ZWdvcmllcw== + U2VsZWN0IHJlbGF0aW9u + U2VsZWN0IGNhdGVnb3J5 + Q2Vuc29yc2hpcA== + Q29tbXVuaXR5 + Q29uZmlndXJhdGlvbg== + Q3VzdG9t + Q3VzdG9tIEZpZWxkcw== + RG9uZQ== + RWRpdGluZyBFbWFpbCBFdmVudA== + RWRpdGluZyBHcm91cA== + RWRpdGluZyBTdHlsZQ== + RWRpdGluZyBUcmFuc2xhdGlvbg== + RWRpdGluZyBCYXNlIFN0eWxl + RWRpdGluZyBCbG9jayBTdHlsZQ== + RWRpdGluZyBDYXRlZ29yeQ== + RWRpdGluZyBDdXN0b20gRmllbGQ= + RWRpdGluZyBHcm91cA== + RWRpdGluZyBJbWFnZQ== + RWRpdGluZyBMYW5ndWFnZQ== + RWRpdGluZyBQaHJhc2U= + RWRpdGluZyBSZWxhdGlvbnNoaXA= + RWRpdGluZyBSZXZpZXc= + RWRpdGluZyBTdHlsZXNoZWV0 + U2l0ZSBTdHJ1Y3R1cmU= + RWRpdCBDYXRlZ29yeQ== + RWRpdCBHcm91cA== + U2l0ZSBTdHJ1Y3R1cmU= + U2l0ZSBTdHJ1Y3R1cmU= + RWRpdCBVc2Vy + RS1tYWlsIEV2ZW50cw== + RS1tYWlsIFNldHRpbmdz + RXhwb3J0IERhdGE= + RXhwb3J0IExhbmd1YWdlIFBhY2s= + RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBSZXN1bHRz + RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBTdGVwMQ== + R2VuZXJhbA== + R2VuZXJhbCBDb25maWd1cmF0aW9u + R3JvdXBz + U2VsZWN0IGdyb3Vw + SGVscA== + SW1hZ2Vz + SW1wb3J0IERhdGE= + SW1wb3J0IExhbmd1YWdlIFBhY2s= + SW4tYnVsbGV0aW4= + SW4tbGluaw== + SW4tbmV3eg== + SW5zdGFsbGF0aW9uIEhlbHA= + SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAx + SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAy + SXRlbXM= + TGFiZWw= + TGFiZWxz + SW5zdGFsbCBMYW5ndWFnZSBQYWNr + TGFuZ3VhZ2UgUGFja3M= + TG9hZGluZyAuLi4= + TW9kdWxlIFN0YXR1cw== + TmV3IEN1c3RvbSBGaWVsZA== + TmV3IEJhc2UgU3R5bGU= + TmV3IEJsb2NrIFN0eWxl + TmV3IENhdGVnb3J5 + TmV3IEdyb3Vw + TmV3IEltYWdl + TmV3IExhbmd1YWdl + TmV3IFBocmFzZQ== + TmV3IFJlbGF0aW9uc2hpcA== + TmV3IFJldmlldw== + TmV3IFN0eWxlc2hlZXQ= + Tm8gUGVybWlzc2lvbnM= + UGVybWlzc2lvbnM= + UGxlYXNlIFdhaXQ= + UHJvcGVydGllcw== + UmVnaW9uYWw= + UmVnaW9uYWwgU2V0dGluZ3M= + UmVsYXRpb25z + U3VtbWFyeSAmIExvZ3M= + UmVzdG9yZQ== + UmV2aWV3cw== + U2VhcmNoIExvZw== + U2VhcmNoIFJlc3VsdHM= + U2VsZWN0IFVzZXI= + U2VsZWN0IGl0ZW0= + U2VsZWN0IGl0ZW0= + UHJlcGFyaW5nIHRvIFNlbmQgTWFpbA== + U2VuZCBlbWFpbA== + Q2FuY2VsIHNlbmRpbmcgbWFpbA== + TWFpbCBoYXMgYmVlbiBzZW50IFN1Y2Nlc3NmdWxseQ== + UHJlcGFyaW5nIHRvIFNlbmQgTWVzc2FnZXM= + U2VuZGluZyBNZXNzYWdlLi4= + U2Vzc2lvbiBMb2c= + TW9kdWxlcyAmIFNldHRpbmdz + U3RydWN0dXJlICYgRGF0YQ== + U3R5bGVzaGVldHM= + U3VtbWFyeQ== + Q29uZmlndXJhdGlvbg== + VG9vbHM= + VXBkYXRpbmcgQ2F0ZWdvcmllcw== + VXNlcnM= + U2VsZWN0IHVzZXI= + VmlzaXRz + dG8= + QWRkIFVzZXIgdG8gR3JvdXA= + QWRkIFVzZXIgVG8gR3JvdXA= + QXBwbHkgUnVsZXM= + QXBwcm92ZQ== + QmFjaw== + QmFu + Q2FuY2Vs + Q2xlYXIgQ2xpcGJvYXJk + Q2xvbmU= + Q2xvc2U= + Q29udGludWUgTGluayBWYWxpZGF0aW9u + Q29weQ== + Q3V0 + RGVjbGluZQ== + RGVsZXRl + RGVsZXRlIEFsbA== + RGVsZXRlIFVzZXIgRnJvbSBHcm91cA== + RGVueQ== + RGlzYWJsZQ== + RWRpdA== + RWRpdCBDdXJyZW50IENhdGVnb3J5 + RGlzYWJsZQ== + RW5hYmxl + RnJvbnQgT25seQ== + U2VsZWN0IFVzZXI= + RW5hYmxl + RXhwb3J0 + RXhwb3J0IExhbmd1YWdl + SG9tZQ== + SW1wb3J0 + SW1wb3J0IExhbmd1YWdl + SW1wb3J0IGEgTGFnbnVhZ2UgUGFja2FnZQ== + TW92ZSBEb3du + TW92ZSBVcA== + TW92ZSBEb3du + TW92ZSBVcA== + TmV3IEJhc2UgU3R5bGU= + TmV3IEJsb2NrIFN0eWxl + TmV3IEdyb3Vw + TmV3IGxhYmVs + TmV3IExhbmd1YWdl + TmV3IFJldmlldw== + TmV3IFN0eWxlc2hlZXQ= + U3RhcnQgTmV3IFZhbGlkYXRpb24= + TmV3IENhdGVnb3J5 + TmV3IENlbnNvciBXb3Jk + TmV3IENvdXBvbg== + TmV3IEN1c3RvbSBGaWVsZA== + TmV3IERpc2NvdW50 + TmV3IEVtb3Rpb24gSWNvbg== + TmV3IEltYWdl + TmV3IEltYWdlcw== + QWRkIG5ldyBsYWJlbA== + TmV3IExhbmd1YWdlIFBhY2s= + TmV3IFBlcm1pc3Npb24= + TmV3IFJlbGF0aW9u + TmV3IFJldmlldw== + TmV3IFJ1bGU= + TmV3IFRlbXBsYXRl + TmV3IFRoZW1l + TmV3IFVzZXI= + TmV4dA== + TmV4dCBzdGVw + UGFzdGU= + UHJldmlldw== + UHJldmlvdXM= + UHJldmlvdXMgc3RlcA== + U2V0IFByaW1hcnkgVGhlbWU= + U2V0IFByaW1hcnkgR3JvdXA= + UHJpbnQ= + UmVidWlsZCBDYXRlZ29yeSBDYWNoZQ== + UmVmcmVzaA== + RGVsZXRlIFVzZXIgRnJvbSBHcm91cA== + UmVzY2FuIFRoZW1lcw== + UmVzZXQ= + UmVzZXQgVG8gQmFzZQ== + UmVzZXQgVmFsaWRhdGlvbiBTdGF0dXM= + UmVzdG9yZQ== + U2F2ZQ== + U2VhcmNo + UmVzZXQ= + U2VsZWN0 + U2VsZWN0IFVzZXI= + U2VuZCBFLW1haWw= + U2VuZCBFLW1haWw= + U2V0IFByaW1hcnk= + U2V0IFByaW1hcnkgQ2F0ZWdvcnk= + U2V0IFByaW1hcnkgTGFuZ3VhZ2U= + Q2FuY2Vs + VXAgYSBDYXRlZ29yeQ== + VmFsaWRhdGU= + Vmlldw== + RGlzcGxheSBlZGl0b3IgcGlja3MgYWJvdmUgcmVndWxhciB0b3BpY3M= + TmV3IFRvcGljcyAoRGF5cyk= + TnVtYmVyIG9mIHRvcGljcyBwZXIgcGFnZQ== + VG9waWNzIFBlciBQYWdlIChTaG9ydGxpc3Qp + UGljaw== + VG9waWMgcmV2aWV3ZWQ= + QW5kIHRoZW4gYnk= + QW5kIHRoZW4gYnk= + YW5kIHRoZW4gYnk= + T3JkZXIgVG9waWNzIEJ5 + U29ydCB0b3BpY3MgYnk= + QW5kIHRoZW4gYnk= + T3JkZXIgdG9waWNzIGJ5 + VG9waWMgVGV4dA== + Vmlld3M= + VG8gRGF0ZQ== + VHJhbnNsYXRl + Q2hlY2tib3hlcw== + RGF0ZQ== + RGF0ZSAmIFRpbWU= + TGFiZWw= + UGFzc3dvcmQgZmllbGQ= + UmFkaW8gYnV0dG9ucw== + RHJvcCBkb3duIGZpZWxk + Q2hlY2tib3g= + VGV4dCBmaWVsZA== + VGV4dCBhcmVh + VW5jaGFuZ2Vk + VXBkYXRpbmcgQ29uZmlndXJhdGlvbg== + VXBkYXRpbmcgUnVsZXM= + VXNlIENyb24gZm9yIFJ1bm5pbmcgUmVndWxhciBFdmVudHM= + QWxsb3cgbmV3IHVzZXIgcmVnaXN0cmF0aW9u + QXNzaWduIEFsbCBVc2VycyBUbyBHcm91cA== + VmFsaWRhdGUgZS1tYWlsIGFkZHJlc3M= + QXNzaWduIHVzZXJzIG5vdCBsb2dnZWQgaW4gdG8gZ3JvdXA= + QXNzaWduIHJlZ2lzdGVyZWQgdXNlcnMgdG8gZ3JvdXA= + QXNzaWduIHBhc3N3b3JkIGF1dG9tYXRpY2FsbHk= + TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSByZXZpZXdzIGZyb20gdGhlIHNhbWUgdXNlcg== + QXNzaWduIG1haWxpbmcgbGlzdCBzdWJzY3JpYmVycyB0byBncm91cA== + TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSB2b3RlcyBmcm9tIHRoZSBzYW1lIHVzZXI= + SW5zdGFudA== + Tm90IEFsbG93ZWQ= + VXBvbiBBcHByb3ZhbA== + VXNlIEVtYWlscyBBcyBMb2dpbg== + VVMvVUs= + UGxlYXNlIGNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgYW5kIHRyeSBhZ2FpbiE= + VmFsdWU= + RW50ZXIgbGlzdCBvZiB2YWx1ZXMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucywgbGlrZSAxPU9uZSwgMj1Ud28= + QWN0aXZl + QWx3YXlz + QXV0bw== + RGlzYWJsZWQ= + RW5hYmxlZA== + TmV2ZXI= + SW52YWxpZCBQYXNzd29yZA== + UGVuZGluZw== + UmVxdWlyZWQgRmllbGQ= + SW52YWxpZCBVc2VybmFtZQ== + RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw== + Vm90ZSBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5 + V2FybmluZzogRW5hYmxpbmcgSFRNTCBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIGNvdWxkIGRhbWFnZSB0aGUgc3lzdGVtIGlmIHVzZWQgaW1wcm9wZXJseSE= + QSBzZWFyY2ggb3IgYSBmaWx0ZXIgaXMgaW4gZWZmZWN0LiBZb3UgbWF5IG5vdCBiZSBzZWVpbmcgYWxsIG9mIHRoZSBkYXRhLg== + T25lIG9yIG1vcmUgZmllbGRzIG9uIHRoaXMgZm9ybSBoYXMgYW4gZXJyb3IuPGJyLz4NCjxzbWFsbD5QbGVhc2UgbW92ZSB5b3VyIG1vdXNlIG92ZXIgdGhlIGZpZWxkcyBtYXJrZWQgd2l0aCByZWQgdG8gc2VlIHRoZSBlcnJvciBkZXRhaWxzLjwvc21hbGw+ + WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHByaW1hcnkgdGhlbWUuIENvbnRpbnVlPw== + TW9kaWZpY2F0aW9ucyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB5b3UgY2xpY2sgdGhlIFNhdmUgYnV0dG9uIQ== + d2Vlaw== + eWVhcg== + WWVz + WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u + QWNjb3VudCBJbmZvcm1hdGlvbg== + QWN0aW9u + QWN0aW9uIEJveA== + SGVyZSBZb3UgQ2FuOg== + QWRk + U3VnZ2VzdCBDYXRlZ29yeSBSZXN1bHRz + Q2F0ZWdvcnkgQWRkZWQgUGVuZGluZyBBcHByb3ZhbA== + WW91ciBjYXRlZ29yeSBzdWdnZXN0aW9uIGhhcyBiZWVuIGFjY2VwdGVkIGFuZCBpcyBwZW5kaW5nIGFkbWluaXN0cmF0aXZlIGFwcHJvdmFsLg== + VGhlIENhdGVnb3J5IHlvdSBzdWdnZXN0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbS4= + QWRkZWQ= + QWRkZWQgVG9kYXk= + QWRkaXRpb25hbCBjYXRlZ29yaWVz + QWRkIExpbmsgUmVzdWx0cw== + QWRkIFBlbmRpbmcgTGluayBSZXN1bHRz + WW91ciBsaW5rIGhhcyBiZWVuIGFkZGVkIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWwu + VGhlIGxpbmsgeW91IGhhdmUgc3VnZ2VzdGVkIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4= + QWRkcmVzcw== + QWRkcmVzcyBMaW5l + QWRkcmVzcyBMaW5lIDE= + QWRkcmVzcyBMaW5lIDI= + QWRkIEZyaWVuZA== + QWRkIExpbms= + U2VuZCBQcml2YXRlIE1lc3NhZ2U= + QWRkIFJldmlldw== + QWRkIFRvcGlj + QWRkIHRvIEZhdm9yaXRlcw== + QWR2YW5jZWQgU2VhcmNo + QWR2YW5jZWQgU2VhcmNo + QWR2YW5jZWQ= + QW55 + Q29udGFpbnM= + SXMgRXF1YWwgVG8= + SXMgTm90IEVxdWFsIFRv + RG9lcyBOb3QgQ29udGFpbg== + QWxsIHJpZ2h0cyByZXNlcnZlZC4= + IGhhcyBhbHJlYWR5IGJlZW4gc3VnZ2VzdGVkIHRvIHRoaXMgc2l0ZSBvbg== + QW5k + QU9MIElN + QXBy + VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvcm0sIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbWVzc2FnZXMgYmVsb3cu + VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvcm0sIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbWVzc2FnZXMgYmVsb3c= + QXJ0aWNsZXM= + QXJ0aWNsZSBEZXRhaWxz + QXJ0aWNsZSBuYW1l + QXJ0aWNsZSBSZXZpZXdz + QXNjZW5kaW5n + QXVn + QXV0aG9y + QXV0b21hdGlj + RGlzYWJsZWQgYXZhdGFy + QmFjaw== + QkJDb2Rl + QmlydGggRGF0ZQ== + QmxhbmsgcGFzc3dvcmQ= + Ym94 + TmV3IExpbms= + TmV3IHRvcGlj + U2VuZCBQYXNzd29yZA== + R28= + Sm9pbg== + U3Vic2NyaWJl + Tm8= + T2s= + UmF0ZQ== + U2VhcmNo + VW5zdWJzY3JpYmU= + WWVz + Ynk= + Q2FuY2Vs + Q2F0ZWdvcnk= + Q2F0ZWdvcmllcw== + Y2F0ZWdvcmllcyB1cGRhdGVk + Q2F0ZWdvcnk= + Q2F0ZWdvcnkgSW5mb3JtYXRpb24= + Q2F0ZWdvcnkgU2VhcmNoIFJlc3VsdHM= + Q2F0ZWdvcnkgTGVhZCBTdG9yeQ== + Q2F0ZWdvcmllcw== + Q2l0eQ== + Y2xpY2sgaGVyZQ== + Q2xvc2U= + Q2xvc2UgV2luZG93 + UGFzc3dvcmQgcmVzZXQgaGFzIGNvZGUgZXhwaXJlZA== + UGFzc3dvcmQgcmVzZXQgY29kZSBpcyBub3QgdmFsaWQ= + UHJpY2VzIG9mIG9uZSBvciBtb3JlIGl0ZW1zIGluIHlvdXIgc2hvcHBpbmcgY2FydCBoYXZlIGJlZW4gY2hhbmdlZCBkdWUgdG8geW91ciBsb2dpbiwgcGxlYXNlIHJldmlldyBjaGFuZ2VzLg== + RW1haWxBZGRyZXNz + QWRkaXRpb25hbCBJbWFnZXM= + QURESVRJT05BTCBJTUFHRVM= + Tm8gUGVybWlzc2lvbnM= + UHJvZHVjdCBEZXNjcmlwdGlvbg== + Q29tcGFueQ== + Y29uZmlybQ== + Q29uZmlybWF0aW9uIFRpdGxl + WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGxpbmsgYmVsb3cu + Q29uZmlybWF0aW9uIFN1YnRpdGxl + Q29uZmlybWF0aW9uIHRleHQ= + Q29udGFjdCBVcw== + Q29udGFjdCBJbmZvcm1hdGlvbg== + Q29udGludWU= + Q29va2llcw== + UGxlYXNlIGVuYWJsZSBjb29raWVzIHRvIGxvZ2luIQ== + Q291bnRyeQ== + Y3JlYXRlZA== + Q3JlYXRlIFBhc3N3b3Jk + Q3JlZGl0IENhcmRz + Q3VycmVudCBWYWx1ZQ== + RGF0ZQ== + RGF0ZSBjcmVhdGVk + RGVj + RW5hYmxlIEJCQ29kZQ== + Tm90aWZ5IG1lIG9uIGNoYW5nZXMgdG8gdG9waWNzIEkgY3JlYXRl + UmVjZWl2ZSBQcml2YXRlIE1lc3NhZ2UgTm90aWZpY2F0aW9ucw== + QXR0YXRjaCBNeSBTaWduYXR1cmUgdG8gUG9zdHM= + U2ltbGllcyBvbiBieSBkZWZhdWx0 + U2lnbmF0dXJlcyBvbiBieSBkZWZhdWx0 + RGVsZXRl + Q29uZmlybSBEZWxldGU= + RGVsZXRlIEZyaWVuZA== + QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxpbms/ + VGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkIGZyb20gIEZhdm9yaXRlcy4= + RGVzY2VuZGluZw== + RGV0YWlscw== + ZGV0YWlscyB1cGRhdGVk + RGlyZWN0b3J5 + RGlzYWJsZQ== + TW9kaWZ5 + RWRpdGVkIEJ5 + RWRpdG9ycyBQaWNr + RWRpdG9yJ3MgUGlja3M= + RWRpdCBUb3BpYyBSZXN1bHRz + VG9waWMgbW9kaWZpZWQ= + VG9waWMgaGFzIGJlZW4gbW9kaWZpZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA== + Q2hhbmdlcyBtYWRlIHRvIHRoZSB0b3BpYyBoYXZlIGJlZW4gc2F2ZWQu + TW9kaWZ5IFBvc3Q= + TW9kaWZ5IFRvcGlj + RS1NYWls + QSB1c2VyIHdpdGggc3VjaCBlLW1haWwgYWxyZWFkeSBleGlzdHMu + TWFpbCBzZW5kaW5nIGZhaWxlZA== + RW5hYmxlZA== + RW5kIE9u + Wm9vbSBpbg== + RW50ZXI= + RW50ZXIgeW91ciBmcmllbmQgZS1tYWlsIGFkZHJlc3MgdG8gcmVjb21tZW5kIHRoaXMgc2l0ZQ== + RW50ZXIgeW91ciBlLW1haWwgYWRkcmVzcyB0byBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdC4= + RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg== + TWlzc2luZyBvciBpbnZhbGlkIHZhbHVlcy4gUGxlYXNlIGNoZWNrIGFsbCB0aGUgZmllbGRzIGFuZCB0cnkgYWdhaW4u + U29ycnksIHRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gb3VyIHNlcnZlci4= + RXJyb3IgNDA0IC0gTm90IEZvdW5k + RXJyb3I= + RXJyb3I= + RXhpc3RpbmcgVXNlcnM= + RXhwaXJlcw== + RmFsc2U= + RmF2b3JpdGU= + VW5hYmxlIHRvIGFkZCBmYXZvcml0ZSwgYWNjZXNzIGRlbmllZA== + RmVi + WW91IG11c3QgZW50ZXIgYSBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIHRvIHJldHJpdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9u + Qm90aCBhIFVzZXJuYW1lIGFuZCBQYXNzd29yZCBpcyByZXF1aXJlZA== + UGxlYXNlIGVudGVyIHlvdXIgcGFzc3dvcmQgYW5kIHRyeSBhZ2Fpbg== + WW91IGRpZCBub3QgZW50ZXIgeW91ciBVc2VybmFtZQ== + RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA== + TWlzc2luZyBmaXJzdCBuYW1l + TWlzc2luZyB1c2Vy + RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA== + RW1haWwgaXMgcmVxdWlyZWQ= + Rmlyc3QgbmFtZSBpcyByZXF1aXJlZA== + UGFzc3dvcmQgcmVxdWlyZWQ= + QWNjZXNzIGRlbmllZA== + UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA== + VGhlIHBhc3N3b3JkIGlzIHRvbyBsb25n + UGFzc3dvcmQgaXMgdG9vIHNob3J0 + Tm90IHJlc2V0 + WW91IGhhdmUgYWxyZWFkeSByZXZpZXdlZCB0aGlzIGl0ZW0u + RmlsZSBpcyB0b28gbGFyZ2U= + VXNlciBhY2NvdW50IHdpdGggZ2l2ZW4gRS1tYWlsIG5vdCBmb3VuZA== + VXNlciBhY2NvdW50IHdpdGggZ2l2ZW4gVXNlcm5hbWUgbm90IGZvdW5k + VXNlciBuYW1lIGlzIHRvbyBzaG9ydA== + V3JvbmcgZmlsZSB0eXBl + Y2Mx + Y2My + Y2Mz + Y2M0 + Y2M1 + Y2M2 + bGMx + bGMy + bGMz + bGM0 + bGM1 + bGM2 + dWMx + dWMy + dWMz + dWM0 + dWM1 + dWM2 + QXJjaGl2ZSBEYXRl + QXJ0aWNsZSBBdXRob3I= + QXJ0aWNsZSBCb2R5 + TnVtYmVyIG9mIERlc2NlbmRhbnRz + Q2F0ZWdvcnkgUGF0aA== + UmF0aW5n + TnVtYmVyIG9mIFJldmlld3M= + TnVtYmVyIG9mIFJhdGluZyBWb3Rlcw== + Q2F0ZWdvcnkgSWQ= + Q2l0eQ== + Q291bnRyeQ== + Q3JlYXRlZCBCeSBVc2VyIElE + RGF0ZSBDcmVhdGVk + RGVzY3JpcHRpb24= + RGF0ZSBvZiBCaXJ0aA== + RWRpdG9yJ3MgcGljaw== + RS1tYWls + RW5kcyBPbg== + QXJ0aWNsZSBFeGNlcnB0 + Rmlyc3QgTmFtZQ== + SGl0cw== + SXRlbSBJcyBIb3Q= + TGFzdCBOYW1l + TGFzdCBQb3N0IElE + Q2F0ZWdvcnkgTGVhZCBTdG9yeT8= + TGVhZCBTdG9yeT8= + TGluayBJRA== + TG9naW4gKFVzZXIgbmFtZSk= + TWV0YSBEZXNjcmlwdGlvbg== + TWV0YSBLZXl3b3Jkcw== + TGFzdCBNb2RpZmllZCBEYXRl + TW9kaWZpZWQgQnkgVXNlciBJRA== + TmFtZQ== + SXRlbSBJcyBOZXc= + QXJ0aWNsZSBJRA== + Tm90aWZ5IE93bmVyIG9mIENoYW5nZXM= + T3JpZ2luYWwgSXRlbSBJRA== + T3duZXIgVXNlciBJRA== + UGFyZW50IElk + UGFyZW50IENhdGVnb3J5IFBhdGg= + UGFzc3dvcmQ= + VGVsZXBob25l + SXRlbSBJcyBQb3B1bGFy + VXNlciBJRA== + UG9zdGVkIEJ5 + VG9waWMgUG9zdHM= + UHJpb3JpdHk= + UXR5IFNvbGQ= + UmVzb3VyY2UgSUQ= + U3RhcnQgRGF0ZQ== + U3RhdGU= + U3RhdHVz + U3RyZWV0IEFkZHJlc3M= + QXJ0aWNsZSBUZXh0 + QXJ0aWNsZSBUaXRsZQ== + VG9waWMgSUQ= + VG9waWMgVGV4dA== + VG9waWMgVHlwZQ== + SXRlbSBJcyBhIFRvcCBTZWxsZXI= + VGltZSBab25l + VVJM + Vmlld3M= + WmlwIChQb3N0YWwpIENvZGU= + Rmlyc3QgTmFtZQ== + TW9kdWxl + UGhyYXNl + UHJpbWFyeSBUcmFuc2xhdGlvbg== + VHJhbnNsYXRpb24= + Rm9yZ290IHBhc3N3b3Jk + UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24= + Q29uZmlybSBwYXNzd29yZCByZXNldA== + WW91IGhhdmUgY2hvc2VkIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuIEEgbmV3IHBhc3N3b3JkIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBzeXN0ZW0uIEl0IGhhcyBiZWVuIGVtYWlsZWQgdG8geW91ciBhZGRyZXNzIG9uIGZpbGUu + UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg== + Rm9yZ290IFBhc3N3b3Jk + Rm9yZ290IFBhc3N3b3Jk + RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg== + Rm9ydW1z + V2VsY29tZSB0byBJbi1wb3J0YWwgZm9ydW1zIQ== + V2VsY29tZSB0byBJbi1idWxsZXRpbiBGb3J1bXMh + Rm9ydW0gaXMgbG9ja2VkIGZvciBwb3N0aW5n + Rm91bmQ6 + RnJvbQ== + RnVsbCBTdG9yeQ== + R2V0dGluZyBSYXRlZA== + WW91IG1heSBwbGFjZSB0aGUgZm9sbG93aW5nIEhUTUwgY29kZSBvbiB5b3VyIHdlYiBzaXRlIHRvIGFsbG93IHlvdXIgc2l0ZSB2aXNpdG9ycyB0byB2b3RlIGZvciB0aGlzIHJlc291cmNl + R3Vlc3Q= + SGVscA== + SGVyZQ== + SGl0cw== + SG9tZQ== + SG90 + SG90IExpbmtz + aW4= + SW5ib3g= + VXNlcm5hbWUvUGFzc3dvcmQgSW5jb3JyZWN0 + SW5kaWNhdGVzIFJlcXVpcmVkIGZpZWxkcw== + SW52YWxpZCBlLW1haWwgYWRkcmVzcw== + RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk + SW52YWxpZCBQYXNzd29yZA== + SW4gdGhpcyBtZXNzYWdl + SXRlbXMgc2luY2UgbGFzdCBsb2dpbg== + SmFu + Sm9pbmVk + SnVs + SnVu + S2V5d29yZCBpcyB0b28gc2hvcnQ= + TGFzdCBQb3N0 + TGFzdCBQb3N0IEJ5 + TGFzdCBVcGRhdGU= + TGFzdCBOYW1l + TGVnZW5k + TGlua3M= + bGlua3MgdXBkYXRlZA== + WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA== + WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQ= + TGluayBEZXRhaWxz + TGluayBJbmZvcm1hdGlvbg== + TGluayBOYW1l + TGluayBSYXRpbmcgUmVzdWx0cw== + WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGxpbmsu + VGhhbmsgZm9yIHJhdGluZyB0aGlzIGxpbmsuICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg== + TGluayBSZXZpZXdz + TGluayBSZXZpZXcgUmVzdWx0cw== + TGluayBSZXZpZXcgUGVuZGluZw== + TGluayBTZWFyY2ggUmVzdWx0cw== + TG9jYXRpb24= + TG9ja2VkIHRvcGlj + TG9jay9VbmxvY2s= + TG9naW4= + TG9naW4gSW5mb3JtYXRpb24= + TG9naW4gTmFtZQ== + TG9naW4= + TG9nIE91dA== + TG9nb3V0IG9mIHlvdXIgYWNjb3VudA== + TG9nIG91dCBvZiB0aGUgc3lzdGVt + TWFpbGluZyBMaXN0 + TWFy + TWF5 + TWVzc2FnZQ== + TWVzc2FnZSBCb2R5 + UGFzc3dvcmQgcmVzZXQgaW50ZXJ2YWw= + TWlzc2luZyBUZW1wbGF0ZQ== + TW9kaWZpZWQ= + TGluayBNb2RpZmljYXRpb24gQ29uZmlybWF0aW9u + WW91ciBsaW5rIGhhcyBiZWVuIG1vZGlmaWVkLg== + TGluayBtb2RpZmljYXRpb24gY29tcGxldGU= + WW91ciBsaW5rIG1vZGlmaWNhdGlvbiBoYXMgYmVlbiBzdWJtaXR0ZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA== + TW9kaWZ5IExpbms= + TW9yZQ== + TW9yZSBkZXRhaWxz + TW9yZSBJbmZv + V2VsY29tZQ== + TXkgQWNjb3VudA== + TXkgQXJ0aWNsZXM= + TmV3cyBBcnRpY2xlcyB5b3UgaGF2ZSB3cml0dGVu + TXkgRmF2b3JpdGVz + SXRlbXMgeW91IGhhdmUgbWFya2VkIGFzIGZhdm9yaXRl + TXkgRnJpZW5kcw== + VmlldyB5b3VyIGxpc3Qgb2YgZnJpZW5kcw== + TXkgUHJvZmlsZQ== + WW91ciBBY2NvdW50IEluZm9ybWF0aW9u + TXkgSXRlbXM= + TXkgTGlua3M= + TGlua3MgeW91IGhhdmUgYWRkZWQgdG8gdGhlIHN5c3RlbQ== + TXkgRmF2b3JpdGVz + TXkgTmV3cw== + RmF2b3JpdGUgQXJ0aWNsZXM= + TXkgUHJlZmVyZW5jZXM= + RWRpdCB5b3VyIEluLVBvcnRhbCBQcmVmZXJlbmNlcw== + TXkgUHJvZmlsZQ== + TXkgVG9waWNz + RGlzY3Vzc2lvbnMgeW91IGhhdmUgY3JlYXRlZA== + TXkgVG9waWNz + TmFtZQ== + QWRkIExpbms= + TmV3 + TmV3IEN1c3RvbWVycw== + TmV3IFByaXZhdGUgTWVzc2FnZSBDb25maXJtYXRpb24= + WW91ciBwcml2YXRlIG1lc3NhZ2UgaGFzIGJlZW4gc2VudC4= + TmV3cw== + VGhlIGFydGljbGUgcmV2aWV3IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4= + QXJ0aWNsZSByZXZpZXcgaGFzIGJlZW4gc3VibWl0dGVkIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWw= + TmV3cyBEZXRhaWxz + UmF0ZSBBcnRpY2xlIFJlc3VsdHM= + WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGFydGljbGU= + VGhhbmsgeW91IGZvciByYXRpbmcgdGhpcyBhcnRpY2xlLiBZb3VyIHZvdGUgaGFzIGJlZW4gcmVjb3JkZWQu + VGhlIHJldmlldyBoYXMgYmVlbiBhZGRlZA== + QXJ0aWNsZSByZXZpZXcgc3VibWl0dGVk + U2VhcmNoIFJlc3VsdHM= + bmV3cyB1cGRhdGVk + QWRkIFRvcGljIFJlc3VsdHM= + WW91ciB0b3BpYyBoYXMgYmVlbiBhZGRlZA== + VGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIG11c3QgYXBwcm92ZSB5b3VyIHRvcGljIGJlZm9yZSBpdCBpcyBwdWJsaWNseSBhdmFpbGFibGUu + VGhlIFRvcGljIHlvdSBoYXZlIGNyZWF0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbQ== + TmV3IGFydGljbGVz + TmV3IExpbmtz + TmV3IGFydGljbGVz + TmV3IFByaXZhdGUgTWVzc2FnZQ== + Rm9ydW0gaGFzIG5ldyBwb3N0cw== + TmV3IHByaXZhdGUgbWVzc2FnZQ== + TmV3IGxpbmtz + TmV3IGFydGljbGVz + TmV3IHRvcGljcw== + TmV3IFRvcGlj + TmV3IFVzZXJz + Tm8= + U29ycnksIHlvdSBoYXZlIG5vIGFjY2VzcyB0byB0aGlzIHBhZ2Uh + Tm9uZQ== + Tm90aWZ5IG1lIHdoZW4gcG9zdHMgYXJlIG1hZGUgaW4gdGhpcyB0b3BpYw== + Tm90IGxvZ2dlZCBpbg== + Tm92 + Tm8gQXJ0aWNsZXM= + Tm8gQ2F0ZWdvcmllcw== + Tm8gZXhwaXJhdGlvbg== + Tm8gZmF2b3JpdGVz + Tm8gSXRlbXM= + S2V5d29yZCBtaXNzaW5n + Tm8gTGlua3M= + Rm9ydW0gaGFzIG5vIG5ldyBwb3N0cw== + Tm8gUGVybWlzc2lvbnM= + Tm8gUmVsYXRlZCBDYXRlZ29yaWVz + RXJyb3I6IG5vIHNlc3Npb24= + TWlzc2luZyB0ZW1wbGF0ZQ== + Tm8gVG9waWNz + T2N0 + b2Y= + T2ZmbGluZQ== + T2s= + b24= + T25saW5l + b24gdGhpcyBwb3N0 + WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u + T3B0aW9uYWw= + T3B0aW9ucw== + b3I= + UGFnZQ== + UGFnZTo= + UGFzc3dvcmQ= + UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA== + UGFzc3dvcmQgaXMgdG9vIHNob3J0LCBwbGVhc2UgZW50ZXIgYXQgbGVhc3QgJXMgY2hhcmFjdGVycw== + UGFzc3dvcmQgQWdhaW4= + QWRtaW4gTG9naW4= + QWRkIFBlbmRpbmcgQ2F0ZWdvcnk= + QWRkIENhdGVnb3J5 + RGVsZXRlIENhdGVnb3J5 + TW9kaWZ5IENhdGVnb3J5 + VmlldyBDYXRlZ29yeQ== + QXBwZW5kIHBocGluZm8gdG8gYWxsIHBhZ2VzIChEZWJ1Zyk= + RGlzcGxheSBJdGVtIFF1ZXJpZXMgKERlYnVnKQ== + RGlzcGxheSBJdGVtIExpc3QgUXVlcmllcyAoRGVidWcp + QWxsb3cgZmF2b3JpdGVz + UGVuZGluZyBMaW5r + QWRkIExpbms= + RGVsZXRlIExpbms= + TW9kaWZ5IExpbmsgUGVuZGluZw== + TW9kaWZ5IExpbms= + TGluayBEZWxldGUgYnkgT3duZXI= + TGluayBNb2RpZnkgUGVuZGluZyBieSBPd25lcg== + TGluayBNb2RpZnkgYnkgT3duZXI= + UmF0ZSBMaW5r + UmV2aWV3IExpbms= + UmV2aWV3IExpbmsgUGVuZGluZw== + VmlldyBMaW5r + QWxsb3cgTG9naW4= + QWRkIFBlbmRpbmcgTmV3cw== + QWRkIE5ld3M= + RGVsZXRlIE5ld3M= + TW9kaWZ5IE5ld3M= + UmF0ZSBOZXdz + UmV2aWV3IE5ld3MgUGVuZGluZw== + UmV2aWV3IE5ld3M= + VmlldyBOZXdz + Q2hhbmdlIFVzZXIgUHJvZmlsZXM= + U2hvdyBMYW5ndWFnZSBUYWdz + QWRkIFBlbmRpbmcgVG9waWM= + QWRkIFRvcGlj + RGVsZXRlIFRvcGlj + TG9jay9VbmxvY2sgVG9waWNz + TW9kaWZ5IFRvcGljIFBlbmRpbmc= + TW9kaWZ5IFRvcGlj + VG9waWMgT3duZXIgRGVsZXRl + T3duZXIgTW9kaWZ5IFRvcGljIFBlbmRpbmc= + VG9waWMgT3duZXIgTW9kaWZ5 + UmF0ZSBUb3BpYw== + QWRkIFRvcGljIFJlcGx5 + RGVsZXRlIFRvcGlj + UmVwbHkgVG9waWMgTW9kaWZ5 + UG9zdCBPd25lciBEZWxldGU= + UG9zdCBPd25lciBNb2RpZnk= + VmlldyBUb3BpYyBSZXBseQ== + UmV2aWV3IFRvcGlj + VmlldyBUb3BpYw== + UGhvbmU= + UGljaw== + RWRpdG9yJ3MgUGljayBMaW5rcw== + RWRpdG9yJ3MgUGljayBBcnRpY2xlcw== + RWRpdG9yJ3MgcGljayB0b3BpY3M= + UGxlYXNlIFJlZ2lzdGVy + QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgbWVzc2FnZT8= + UHJpdmF0ZSBNZXNzYWdlcw== + UHJpdmF0ZSBNZXNzYWdlcw== + UG9wdWxhcg== + TW9zdCBQb3B1bGFyIExpbmtz + UG9zdA== + UG9zdGVk + UG9zdGVy + cG9zdHM= + cG9zdHMgdXBkYXRlZA== + UG93ZXJlZCBieQ== + Q2l0eQ== + Q29tcGFueQ== + Q291bnRyeQ== + QmlydGhkYXRl + RS1tYWls + RmF4 + Rmlyc3QgTmFtZQ== + TGFzdCBOYW1l + UGhvbmU= + U3RhdGU= + U3RyZWV0 + U3RyZWV0IDI= + Wmlw + UHJpdmFjeQ== + UHJpdmF0ZSBtZXNzYWdlcyB1cGRhdGVk + UHJpdmF0ZSBNZXNzYWdlcw== + UHJvZmlsZQ== + UHJvZmlsZQ== + cHJvZmlsZSB1cGRhdGVk + QXZhdGFyIEltYWdl + RGVzY3JpcHRpb24= + Q2F0ZWdvcnkgTmFtZQ== + RW1haWw= + RnVsbC1TaXplIEltYWdlOg== + RGVzY3JpcHRpb24= + TGluayBOYW1l + VVJM + TWV0YSBUYWcgRGVzY3JpcHRpb24= + TWV0YSBUYWcgS2V5d29yZHM= + UGFzc3dvcmQ= + UG9zdHMgUGVyIFBhZ2U= + VG9waWNzIFBlciBQYWdl + UG9zdCBTdWJqZWN0 + UmVjb21tZW5kIHRoaXMgc2l0ZSB0byBhIGZyaWVuZA== + UmV2aWV3Og== + U2lnbmF0dXJl + RW50ZXIgeW91ciBlLW1haWwgYWRkcmVzcyB0byBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdC4= + VGh1bWJuYWlsIEltYWdlOg== + VXNlcm5hbWU= + RGlzcGxheSB0byBQdWJsaWM= + UXVlcnkgU3RyaW5n + UXVpY2sgU2VhcmNo + UXVpY2sgTGlua3M= + UmVwbHkgUXVvdGVk + UmF0ZSBUaGlzIExpbms= + VW5hYmxlIHRvIHJhdGUsIGFjY2VzcyBkZW5pZWQ= + UmF0ZSB0aGlzIGFydGljbGU= + UmF0ZSBMaW5r + UmF0ZSBBcnRpY2xl + UmF0ZSB0aGlzIGFydGljbGU= + UmF0ZSBUb3BpYw== + UmF0aW5n + UG9vcg== + RmFpcg== + QXZlcmFnZQ== + R29vZA== + VmVyeSBHb29k + RXhjZWxsZW50 + QWxyZWFkeSB2b3RlZA== + VW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl + VGhlIHJlY2lwaWVudCBpcyByZXF1aXJlZA== + VXNlciBkb2VzIG5vdCBleGlzdA== + VGhlIHJlY2lwaWVudCBkb2VzIG5vdCBleGlzdA== + UmVjb21tZW5k + UmVjb21tZW5kIHRvIGEgRnJpZW5k + UmVjb21tZW5kYXRpb24gQ29uZmlybWF0aW9u + VGhhbmtzIGZvciByZWNvbW1lbmRpbmcgb3VyIHNpdGUgdG8geW91ciBmcmllbmQuIFRoZSBlbWFpbCBoYXMgYmVlbiBzZW50IG91dC4= + UmVjb21tZW5kIHRvIGEgZnJpZW5k + Q2xpY2sgaGVyZSBpZiB5b3VyIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSByZWRpcmVjdCB5b3Uu + UmVkaXJlY3RpbmcgLi4u + UmVnaXN0ZXI= + UmVnaXN0cmF0aW9uIENvbmZpcm1hdGlvbg== + UmVnaXN0cmF0aW9uIENvbXBsZXRl + VGhhbmsgeW91IGZvciBSZWdpc3RlcmluZyEgIFBsZWFzZSBlbnRlciB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBiZWxvdw== + UmVnaXN0ZXIgd2l0aCBJbi1Qb3J0YWwgZm9yIGNvbnZlbmllbnQgYWNjZXNzIHRvIHVzZXIgYWNjb3VudCBzZXR0aW5ncyBhbmQgcHJlZmVyZW5jZXMu + VGhhbmsgWW91LiBSZWdpc3RyYXRpb24gY29tcGxldGVkLg== + UmVsYXRlZCBhcnRpY2xlcw== + UmVsYXRlZCBDYXRlZ29yaWVz + UmVsYXRlZCBDYXRlZ29yaWVz + UmVsYXRlZCBMaW5rcw== + UmVsYXRlZCBOZXdz + UmVtZW1iZXIgTG9naW4= + UmVtb3Zl + UmVtb3ZlIEZyb20gRmF2b3JpdGVz + UmVwZWF0IFBhc3N3b3Jk + UmVwbGllcw== + UmVwbHk= + UmVxdWlyZWQgRmllbGQ= + UmVzZXQ= + QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IHRoZSBwYXNzd29yZD8= + UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg== + UmV2aWV3cw== + cmV2aWV3cyB1cGRhdGVk + VW5hYmxlIHRvIHJldmlldywgYWNjZXNzIGRlbmllZA== + UmV2aWV3IGFydGljbGU= + UmV2aWV3IExpbms= + UmV2aWV3IG5ld3MgYXJ0aWNsZQ== + UmV2aWV3IHRoaXMgYXJ0aWNsZQ== + SG9tZQ== + U2VhcmNo + U2VhcmNoZWQgRm9yOg== + U2VhcmNoIFByb2R1Y3Rz + U2VhcmNoIEFydGljbGVz + U2VhcmNoIENhdGVnb3JpZXM= + U2VhcmNoIExpbmtz + U2VhcmNoIFRvcGljcw== + U2VhcmNoIEFnYWlu + Rm9ybSBFcnJvcg== + U2VhcmNoIFJlc3VsdHM= + U2VhcmNoIFRpcHM= + U2VhcmNoIFR5cGU= + U2VhcmNoIFJlc3VsdHM= + U2VlIEFsc28= + U2VsZWN0IExhbmd1YWdl + U2VsZWN0IFRoZW1l + U2VsZWN0IFVzZXJuYW1l + U2VuZA== + U2VuZCBQcml2YXRlIE1lc3NhZ2U= + U2VudA== + U2Vw + U2hvcHBpbmcgQ2FydA== + U2hvdw== + U2hvdyBTaWduYXR1cmU= + U2hvdyBNeSBTaWduYXR1cmU= + U2l0ZSBMZWFkIFN0b3J5 + U2l0ZSBNYXA= + U21pbGV5cw== + U29ydGVkIGxpc3Q= + U29ydA== + U3RhdGU= + U3RyZWV0 + U3RyZWV0IDI= + QWxzbyBZb3UgQ2FuOg== + U3ViY2F0ZWdvcmllcw== + U3ViamVjdA== + U3VibWl0dGluZyB0bw== + U3Vic2NyaXB0aW9uIGRlbmllZA== + U3Vic2NyaXB0aW9uIENvbmZpcm1hdGlvbg== + QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN1YnNjcmliZSB0byBvdXIgbWFpbGluZyBsaXN0PyAoWW91IGNhbiB1bnN1YnNjcmliZSBhbnkgdGltZSBieSBlbnRlcmluZyB5b3VyIGVtYWlsIG9uIHRoZSBmcm9udCBwYWdlKS4= + VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0IQ== + Rm9ybSBFcnJvcg== + TWlzc2luZyBlbWFpbCBhZGRyZXNz + RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk + U3Vic2NyaXB0aW9uIHN1Y2Nlc3NmdWw= + U3Vic2NyaWJlZA== + VW5kZWZpbmVkIGVycm9yIG9jY3VycmVkLCBzdWJzY3JpcHRpb24gbm90IGNvbXBsZXRlZA== + U3VnZ2VzdCBDYXRlZ29yeQ== + Q2F0ZWdvcnkgU3VnZ2VzdGVkIChQZW5kaW5nIEFwcHJvdmFsKQ== + Rm9ybSBFcnJvcg== + U3VnZ2VzdCBMaW5r + RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk + VGhhbmsgeW91IGZvciBzdWdnZXN0aW5nIG91ciBzaXRlIHRv + VGVtcGxhdGUgRXJyb3I= + IFdlIGFyZSBzb3JyeSB5b3UgaGF2ZSB1bnN1YnNjcmliZWQgZnJvbSBvdXIgbWFpbGluZyBsaXN0 + S2V5d29yZA== + UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg== + VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0 + Q29uZmlybWF0aW9u + TWFpbGluZyBMaXN0 + UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24= + VG8= + VG9wIFJhdGVk + VG9waWNz + VG9waWNzIFVwZGF0ZWQ= + VG9waWMgUmF0aW5nIFJlc3VsdHM= + WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIHRvcGlj + VGhhbmsgeW91IGZvciB2b3RpbmchICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg== + UG9zdCBSZXBseQ== + VG9waWMgU2VhcmNoIFJlc3VsdHM= + VG9waWMgVXBkYXRlZA== + VG9wIFJhdGVkIExpbmtz + VG90YWwgQ2F0ZWdvcmllcw== + VG90YWwgbGlua3MgaW4gdGhlIGRhdGFiYXNl + VG90YWwgQXJ0aWNsZXM= + VG90YWwgVG9waWNz + VHJ1ZQ== + U3lzdGVtIGVycm9yIGhhcyBvY2N1cmVk + VW5zb3J0ZWQgbGlzdA== + VW5zdWJzY3JpcHRpb24gQ29uZmlybWF0aW9u + QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuc3Vic2NyaWJlIGZyb20gb3VyIG1haWxpbmcgbGlzdD8gKFlvdSBjYW4gYWx3YXlzIHN1YnNjcmliZSBhZ2FpbiBieSBlbnRlcmluZyB5b3VyIGVtYWlsIGF0IHRoZSBob21lIHBhZ2Up + V2UgYXJlIHNvcnJ5IHlvdSBoYXZlIHVuc3Vic2NyaWJlZCBmcm9tIG91ciBtYWlsaW5nIGxpc3Q= + VW5zdWJzY3JpYmU= + VXBkYXRl + VXNlcm5hbWU= + VXNlcnMgT25saW5l + QSB1c2VyIHdpdGggc3VjaCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cy4= + QSB1c2VyIHdpdGggc3VjaCB1c2VybmFtZS9lLW1haWwgYWxyZWFkeSBleGlzdHMu + VXNlciBhbHJlYWR5IGV4aXN0cw== + UGVuZGluZyBSZWdpc3RyYXRpb24gQ29tcGxldGU= + VGhhbmsgeW91IGZvciByZWdpc3RlcmluZy4gWW91ciByZWdpc3RyYXRpb24gaXMgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC4= + VmVyaWZ5IHBhc3N3b3Jk + Vmlld3M= + VmlldyBGbGF0 + VmlldyBQTQ== + VmlldyBVc2VyIFByb2ZpbGU= + VmlldyBUaHJlYWRlZA== + VmlldyBZb3VyIFByb2ZpbGU= + RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw== + Vm90ZXM= + V2FybmluZw== + V2UgYWNjZXB0IGNyZWRpdCBjYXJkcw== + d3JvdGU= + WWVz + WW91ciBBY2NvdW50 + U2hvcHBpbmcgQ2FydA== + WW91ciBjdXJyZW5jeQ== + WW91ciBMYW5ndWFnZQ== + WW91ciBXaXNoIExpc3Q= + Wmlw + WklQIENvZGU= + WklQIENvZGU= + Wm9vbQ== + TXkgU2V0dGluZ3M= + TmV4dCBUaGVtZQ== + UHJldmlvdXMgVGhlbWU= + dGVzdCAy U3ViamVjdDogQ2F0ZWdvcnkgYWRkZWQKCllvdXIgc3VnZ2VzdGVkIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBhZGRlZC4= Index: trunk/core/install/install_data.sql =================================================================== diff -u -r7702 -r7855 --- trunk/core/install/install_data.sql (.../install_data.sql) (revision 7702) +++ trunk/core/install/install_data.sql (.../install_data.sql) (revision 7855) @@ -61,180 +61,182 @@ INSERT INTO ConfigurationAdmin VALUES ('MaxImportCategoryLevels', 'la_Text_General', 'la_prompt_max_import_category_levels', 'text', '', '', 10.08, 0, 1); INSERT INTO ConfigurationAdmin VALUES ('UseCronForRegularEvent', 'la_Text_Website', 'la_UseCronForRegularEvent', 'checkbox', NULL, NULL, 10.15, 0, 0); INSERT INTO ConfigurationAdmin VALUES ('NoPermissionTemplate', 'la_Text_Website', 'la_config_nopermission_template', 'text', '', '', 10.17, 0, 0); -INSERT INTO ConfigurationAdmin (VariableName, heading, prompt, element_type, validation, ValueList, DisplayOrder, GroupDisplayOrder, Install) VALUES ('UseOutputCompression', 'la_Text_Website', 'la_config_UseOutputCompression', 'checkbox', '', '', 10.18, 0, 1); -INSERT INTO ConfigurationAdmin (VariableName, heading, prompt, element_type, validation, ValueList, DisplayOrder, GroupDisplayOrder, Install) VALUES ('OutputCompressionLevel', 'la_Text_Website', 'la_config_OutputCompressionLevel', 'text', '', '', 10.19, 0, 1); +INSERT INTO ConfigurationAdmin VALUES ('UseOutputCompression', 'la_Text_Website', 'la_config_UseOutputCompression', 'checkbox', '', '', 10.18, 0, 1); +INSERT INTO ConfigurationAdmin VALUES ('OutputCompressionLevel', 'la_Text_Website', 'la_config_OutputCompressionLevel', 'text', '', '', 10.19, 0, 1); +INSERT INTO ConfigurationAdmin VALUES ('MailFunctionHeaderSeparator', 'la_Text_smtp_server', 'la_config_MailFunctionHeaderSeparator', 'radio', NULL, '1=la_Linux,2=la_Windows', 30.08, 0, 0); -INSERT INTO ConfigurationValues VALUES (NULL, 'Columns_Category', '2', 'In-Portal', 'Categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'DomainSelect','1','In-Portal','in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Site_Path', '/', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Archive', '25', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'debug', '1', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_User', '100', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_LangEmail', '20', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Default_FromAddr', '', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'email_replyto', '', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'email_footer', 'message footer goes here', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Default_Theme', 'default', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Default_Language', 'English', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'SessionTimeout', '3600', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_SortOrder', 'asc', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Suggest_MinInterval', '3600', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'SubCat_ListCount', '3', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Timeout_Rating', '3600', 'In-Portal', 'System'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_SortField', 'u.CreatedOn', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Relations', '10', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Group_SortField', 'GroupName', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Group_SortOrder', 'asc', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Default_FromName', 'Webmaster', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Category', '10', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_Sortfield', 'Name', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_Sortorder', 'asc', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'MetaKeywords', NULL, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Relation_LV_Sortfield', 'ItemType', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'ampm_time', '1', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Template', '10', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Phrase', '40', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Sessionlist', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_Sortfield2', 'Description', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_Sortorder2', 'asc', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_DaysNew', '8', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_ShowPick', '', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_MetaKey', '', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_MetaDesc', '', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'MetaDescription', NULL, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_NewGroup', '13', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_Allow_New', '3', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_Password_Auto', '0', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_Votes_Deny', '5', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_Review_Deny', '5', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Name', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Company', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Reg_Number', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Website_Name', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Web_Address', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Server_Time', '14', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Config_Site_Time', '14', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Site_Name', 'In-Portal', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Backup_Path', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Items', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'GuestSessions', '1', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_Server', NULL, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_Port', NULL, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_User', NULL, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_Pass', NULL, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_SendHTML', '1', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_Authenticate', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Email', '10', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_DefaultHeaders', 'X-Priority: 1\r\nX-MSMail-Priority: High\r\nX-Mailer: In-Portal', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Smtp_AdminMailFrom', 'portal@user.domain.name', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_Highlight_OpenTag', '', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Category_Highlight_CloseTag', '', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_GuestGroup', '14', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'RootPass', '', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Category_Short', '3', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'CookieSessions', '2', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Columns_Category', '2', 'In-Portal', 'Categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'DomainSelect','1','In-Portal','in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Site_Path', '/', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Archive', '25', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'debug', '1', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_User', '100', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_LangEmail', '20', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Default_FromAddr', '', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'email_replyto', '', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'email_footer', 'message footer goes here', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Default_Theme', 'default', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Default_Language', 'English', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SessionTimeout', '3600', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_SortOrder', 'asc', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Suggest_MinInterval', '3600', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SubCat_ListCount', '3', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Timeout_Rating', '3600', 'In-Portal', 'System'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_SortField', 'u.CreatedOn', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Relations', '10', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Group_SortField', 'GroupName', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Group_SortOrder', 'asc', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Default_FromName', 'Webmaster', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Category', '10', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_Sortfield', 'Name', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_Sortorder', 'asc', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'MetaKeywords', DEFAULT, 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Relation_LV_Sortfield', 'ItemType', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'ampm_time', '1', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Template', '10', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Phrase', '40', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Sessionlist', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_Sortfield2', 'Description', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_Sortorder2', 'asc', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_DaysNew', '8', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_ShowPick', '', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_MetaKey', '', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_MetaDesc', '', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'MetaDescription', DEFAULT, 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_NewGroup', '13', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_Allow_New', '3', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_Password_Auto', '0', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_Votes_Deny', '5', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_Review_Deny', '5', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Name', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Company', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Reg_Number', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Website_Name', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Web_Address', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Server_Time', '14', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Config_Site_Time', '14', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Site_Name', 'In-Portal', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Backup_Path', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Items', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'GuestSessions', '1', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_Server', DEFAULT, 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_Port', DEFAULT, 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_User', DEFAULT, 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_Pass', DEFAULT, 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_SendHTML', '1', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_Authenticate', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Email', '10', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_DefaultHeaders', 'X-Priority: 1\r\nX-MSMail-Priority: High\r\nX-Mailer: In-Portal', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Smtp_AdminMailFrom', 'portal@user.domain.name', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_Highlight_OpenTag', '', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Category_Highlight_CloseTag', '', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_GuestGroup', '14', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'RootPass', '', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Category_Short', '3', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'CookieSessions', '2', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_Increase_category', '30', 'In-Portal', 'in-portal:configuration_search'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_Keyword_category', '90', 'In-Portal', 'in-portal:configuration_search'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_Pop_category', '5', 'In-Portal', 'in-portal:configuration_search'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_Rating_category', '5', 'In-Portal', 'in-portal:configuration_search'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Increase_category', '30', 'In-Portal', 'in-portal:configuration_search'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Keyword_category', '90', 'In-Portal', 'in-portal:configuration_search'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Pop_category', '5', 'In-Portal', 'in-portal:configuration_search'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_Rating_category', '5', 'In-Portal', 'in-portal:configuration_search'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_DefaultIncrease', '30', 'In-Portal', 'inportal:configure_searchdefault'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_DefaultKeyword', '80', 'In-Portal', 'SearchRel_DefaultKeyword'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_DefaultPop', '10', 'In-Portal', 'inportal:configuration_searchdefault'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchRel_DefaultRating', '10', 'In-Portal', 'inportal:configure_searchdefault'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SystemTagCache', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Root_Name', 'lu_rootcategory_name', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_SubscriberGroup', '12', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SocketBlockingMode', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Min_UserName', '3', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Min_Password', '5', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'LinksValidation_LV_Sortfield', 'ValidationTime', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'CustomConfig_LV_Sortfield', 'FieldName', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Event_LV_SortField', 'Description', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Theme_LV_SortField', 'Name', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Template_LV_SortField', 'FileName', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Lang_LV_SortField', 'PackName', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Phrase_LV_SortField', 'Phrase', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'LangEmail_LV_SortField', 'Description', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'CustomData_LV_SortField', 'FieldName', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Summary_SortField', 'Module', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Session_SortField', 'UserName', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'SearchLog_SortField', 'Keyword', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_StatItem', '10', 'inportal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Groups', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Event', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_BanRules', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_SearchLog', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_LV_lang', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_LV_Themes', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_LV_Catlist', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Reviews', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Modules', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Grouplist', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Images', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'EmailsL_SortField', 'time_sent', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_EmailsL', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_CustomData', '20', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Perpage_Review', '10', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Search_MinKeyword_Length', '3', 'In-Portal', ''); -INSERT INTO ConfigurationValues VALUES (NULL, 'Users_AllowReset', '180', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Email_As_Login', '0', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'RegistrationCaptcha', '0', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_LoggedInGroup', '15', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'User_MembershipExpirationReminder', '10', 'In-Portal:Users', 'in-portal:configure_users'); -INSERT INTO ConfigurationValues VALUES (NULL, 'FirstDayOfWeek', '1', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SSL_URL', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Require_SSL', '', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'Force_HTTP_When_SSL_Not_Required', '1', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SessionCookieName', 'sid', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'UseModRewrite', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'UseModRewriteWithSSL', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'SessionReferrerCheck', '1', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'ErrorTemplate', 'error_notfound', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'UseJSRedirect', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'MaxImportCategoryLevels', '10', 'In-Portal', 'in-portal:configure_categories'); -INSERT INTO ConfigurationValues VALUES (NULL, 'UseCronForRegularEvent', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues VALUES (NULL, 'NoPermissionTemplate', 'no_permission', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues (VariableName, VariableValue, ModuleOwner, Section) VALUES ('UseOutputCompression', '0', 'In-Portal', 'in-portal:configure_general'); -INSERT INTO ConfigurationValues (VariableName, VariableValue, ModuleOwner, Section) VALUES ('OutputCompressionLevel', '7', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_DefaultIncrease', '30', 'In-Portal', 'inportal:configure_searchdefault'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_DefaultKeyword', '80', 'In-Portal', 'SearchRel_DefaultKeyword'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_DefaultPop', '10', 'In-Portal', 'inportal:configuration_searchdefault'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchRel_DefaultRating', '10', 'In-Portal', 'inportal:configure_searchdefault'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SystemTagCache', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Root_Name', 'lu_rootcategory_name', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_SubscriberGroup', '12', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SocketBlockingMode', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Min_UserName', '3', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Min_Password', '5', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'LinksValidation_LV_Sortfield', 'ValidationTime', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'CustomConfig_LV_Sortfield', 'FieldName', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Event_LV_SortField', 'Description', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Theme_LV_SortField', 'Name', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Template_LV_SortField', 'FileName', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Lang_LV_SortField', 'PackName', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Phrase_LV_SortField', 'Phrase', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'LangEmail_LV_SortField', 'Description', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'CustomData_LV_SortField', 'FieldName', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Summary_SortField', 'Module', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Session_SortField', 'UserName', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SearchLog_SortField', 'Keyword', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_StatItem', '10', 'inportal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Groups', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Event', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_BanRules', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_SearchLog', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_LV_lang', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_LV_Themes', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_LV_Catlist', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Reviews', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Modules', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Grouplist', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Images', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'EmailsL_SortField', 'time_sent', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_EmailsL', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_CustomData', '20', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Perpage_Review', '10', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Search_MinKeyword_Length', '3', 'In-Portal', ''); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Users_AllowReset', '180', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Email_As_Login', '0', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'RegistrationCaptcha', '0', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_LoggedInGroup', '15', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'User_MembershipExpirationReminder', '10', 'In-Portal:Users', 'in-portal:configure_users'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'FirstDayOfWeek', '1', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SSL_URL', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Require_SSL', '', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Force_HTTP_When_SSL_Not_Required', '1', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SessionCookieName', 'sid', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'UseModRewrite', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'UseModRewriteWithSSL', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'SessionReferrerCheck', '1', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'ErrorTemplate', 'error_notfound', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'UseJSRedirect', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'MaxImportCategoryLevels', '10', 'In-Portal', 'in-portal:configure_categories'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'UseCronForRegularEvent', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'NoPermissionTemplate', 'no_permission', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'UseOutputCompression', '0', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'OutputCompressionLevel', '7', 'In-Portal', 'in-portal:configure_general'); +INSERT INTO ConfigurationValues VALUES (DEFAULT, 'MailFunctionHeaderSeparator', 1, 'In-Portal', 'in-portal:configure_general'); -INSERT INTO Events VALUES (30, 'USER.ADD', 1, 0, 'In-Portal:Users', 'la_event_user.add', 0); -INSERT INTO Events VALUES (32, 'USER.ADD', 2, 0, 'In-Portal:Users', 'la_event_user.add', 1); -INSERT INTO Events VALUES (31, 'USER.APPROVE', 1, 0, 'In-Portal:Users', 'la_event_user.approve', 0); -INSERT INTO Events VALUES (33, 'USER.APPROVE', 2, 0, 'In-Portal:Users', 'la_event_user.approve', 1); -INSERT INTO Events VALUES (34, 'USER.VALIDATE', 1, 0, 'In-Portal:Users', 'la_event_user.validate', 0); -INSERT INTO Events VALUES (35, 'USER.VALIDATE', 2, 0, 'In-Portal:Users', 'la_event_user.validate', 1); -INSERT INTO Events VALUES (36, 'USER.DENY', 1, 0, 'In-Portal:Users', 'la_event_user.deny', 0); -INSERT INTO Events VALUES (37, 'USER.DENY', 2, 0, 'In-Portal:Users', 'la_event_user.deny', 1); -INSERT INTO Events VALUES (38, 'USER.PSWD', 2, 0, 'In-Portal:Users', 'la_event_user.forgotpw', 1); -INSERT INTO Events VALUES (39, 'USER.PSWD', 1, 0, 'In-Portal:Users', 'la_event_user.forgotpw', 0); -INSERT INTO Events VALUES (45, 'USER.ADD.PENDING', 1, 0, 'In-Portal:Users', 'la_event_user.add.pending', 0); -INSERT INTO Events VALUES (68, 'USER.ADD.PENDING', 2, 0, 'In-Portal:Users', 'la_event_user.add.pending', 1); -INSERT INTO Events VALUES (47, 'CATEGORY.ADD', 1, 0, 'In-Portal:Category', 'la_event_category.add', 0); -INSERT INTO Events VALUES (48, 'CATEGORY.ADD.PENDING', 1, 0, 'In-Portal:Category', 'la_event_category.add.pending', 0); -INSERT INTO Events VALUES (49, 'CATEGORY.ADD.PENDING', 2, 0, 'In-Portal:Category', 'la_event_category.add.pending', 1); -INSERT INTO Events VALUES (50, 'CATEGORY.ADD', 2, 0, 'In-Portal:Category', 'la_event_category.add', 1); -INSERT INTO Events VALUES (51, 'CATEGORY.DELETE', 1, 0, 'In-Portal:Category', 'la_event_category_delete', 0); -INSERT INTO Events VALUES (52, 'CATEGORY.DELETE', 2, 0, 'In-Portal:Category', 'la_event_category_delete', 1); -INSERT INTO Events VALUES (53, 'CATEGORY.MODIFY', 1, 0, 'In-Portal:Category', 'la_event_category.modify', 0); -INSERT INTO Events VALUES (54, 'CATEGORY.MODIFY', 2, 0, 'In-Portal:Category', 'la_event_category.modify', 1); -INSERT INTO Events VALUES (56, 'CATEGORY.APPROVE', 1, 0, 'In-Portal:Category', 'la_event_category.approve', 0); -INSERT INTO Events VALUES (57, 'CATEGORY.APPROVE', 2, 0, 'In-Portal:Category', 'la_event_category.approve', 1); -INSERT INTO Events VALUES (58, 'CATEGORY.DENY', 1, 0, 'In-Portal:Category', 'la_event_category.deny', 0); -INSERT INTO Events VALUES (59, 'CATEGORY.DENY', 2, 0, 'In-Portal:Category', 'la_event_category.deny', 1); -INSERT INTO Events VALUES (60, 'USER.SUBSCRIBE', 1, 0, 'In-Portal:Users', 'la_event_user.subscribe', 0); -INSERT INTO Events VALUES (61, 'USER.SUBSCRIBE', 2, 0, 'In-Portal:Users', 'la_event_user.subscribe', 1); -INSERT INTO Events VALUES (62, 'USER.UNSUBSCRIBE', 1, 0, 'In-Portal:Users', 'la_event_user.unsubscribe', 0); -INSERT INTO Events VALUES (63, 'USER.UNSUBSCRIBE', 2, 0, 'In-Portal:Users', 'la_event_user.unsubscribe', 1); -INSERT INTO Events VALUES (64, 'USER.SUGGEST', '1', '0', 'In-Portal:Users', 'la_event_user.suggest', '0'); -INSERT INTO Events VALUES (65, 'USER.SUGGEST', '2', '0', 'In-Portal:Users', 'la_event_user.suggest', '1'); -INSERT INTO Events VALUES (67, 'USER.PSWDC', '1', '0', 'In-Portal:Users', 'la_event_user.pswd_confirm', '0'); -INSERT INTO Events VALUES ('', 'USER.MEMBERSHIP.EXPIRED', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expired', '0'); -INSERT INTO Events VALUES ('', 'USER.MEMBERSHIP.EXPIRED', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expired', '1'); -INSERT INTO Events VALUES ('', 'USER.MEMBERSHIP.EXPIRATION.NOTICE', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expiration_notice', '0'); -INSERT INTO Events VALUES ('', 'USER.MEMBERSHIP.EXPIRATION.NOTICE', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expiration_notice', '1'); -INSERT INTO Events (Event, Enabled, FromUserId, Module, Description, Type) VALUES ('COMMON.FOOTER', 1, 0, 'In-Portal', 'la_event_common.footer', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.ADD', 1, 0, 'In-Portal:Users', 'la_event_user.add', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.ADD', 2, 0, 'In-Portal:Users', 'la_event_user.add', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.APPROVE', 1, 0, 'In-Portal:Users', 'la_event_user.approve', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.APPROVE', 2, 0, 'In-Portal:Users', 'la_event_user.approve', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.VALIDATE', 1, 0, 'In-Portal:Users', 'la_event_user.validate', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.VALIDATE', 2, 0, 'In-Portal:Users', 'la_event_user.validate', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.DENY', 1, 0, 'In-Portal:Users', 'la_event_user.deny', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.DENY', 2, 0, 'In-Portal:Users', 'la_event_user.deny', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.PSWD', 2, 0, 'In-Portal:Users', 'la_event_user.forgotpw', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.PSWD', 1, 0, 'In-Portal:Users', 'la_event_user.forgotpw', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.ADD.PENDING', 1, 0, 'In-Portal:Users', 'la_event_user.add.pending', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.ADD.PENDING', 2, 0, 'In-Portal:Users', 'la_event_user.add.pending', 1); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.ADD', 1, 0, 'In-Portal:Category', 'la_event_category.add', 0); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.ADD.PENDING', 1, 0, 'In-Portal:Category', 'la_event_category.add.pending', 0); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.ADD.PENDING', 2, 0, 'In-Portal:Category', 'la_event_category.add.pending', 1); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.ADD', 2, 0, 'In-Portal:Category', 'la_event_category.add', 1); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.DELETE', 1, 0, 'In-Portal:Category', 'la_event_category_delete', 0); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.DELETE', 2, 0, 'In-Portal:Category', 'la_event_category_delete', 1); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.MODIFY', 1, 0, 'In-Portal:Category', 'la_event_category.modify', 0); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.MODIFY', 2, 0, 'In-Portal:Category', 'la_event_category.modify', 1); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.APPROVE', 1, 0, 'In-Portal:Category', 'la_event_category.approve', 0); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.APPROVE', 2, 0, 'In-Portal:Category', 'la_event_category.approve', 1); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.DENY', 1, 0, 'In-Portal:Category', 'la_event_category.deny', 0); +INSERT INTO Events VALUES (DEFAULT, 'CATEGORY.DENY', 2, 0, 'In-Portal:Category', 'la_event_category.deny', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.SUBSCRIBE', 1, 0, 'In-Portal:Users', 'la_event_user.subscribe', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.SUBSCRIBE', 2, 0, 'In-Portal:Users', 'la_event_user.subscribe', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.UNSUBSCRIBE', 1, 0, 'In-Portal:Users', 'la_event_user.unsubscribe', 0); +INSERT INTO Events VALUES (DEFAULT, 'USER.UNSUBSCRIBE', 2, 0, 'In-Portal:Users', 'la_event_user.unsubscribe', 1); +INSERT INTO Events VALUES (DEFAULT, 'USER.SUGGEST', '1', '0', 'In-Portal:Users', 'la_event_user.suggest', '0'); +INSERT INTO Events VALUES (DEFAULT, 'USER.SUGGEST', '2', '0', 'In-Portal:Users', 'la_event_user.suggest', '1'); +INSERT INTO Events VALUES (DEFAULT, 'USER.PSWDC', '1', '0', 'In-Portal:Users', 'la_event_user.pswd_confirm', '0'); +INSERT INTO Events VALUES (DEFAULT, 'USER.MEMBERSHIP.EXPIRED', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expired', '0'); +INSERT INTO Events VALUES (DEFAULT, 'USER.MEMBERSHIP.EXPIRED', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expired', '1'); +INSERT INTO Events VALUES (DEFAULT, 'USER.MEMBERSHIP.EXPIRATION.NOTICE', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expiration_notice', '0'); +INSERT INTO Events VALUES (DEFAULT, 'USER.MEMBERSHIP.EXPIRATION.NOTICE', '1', '0', 'In-Portal:Users', 'la_event_user.membership_expiration_notice', '1'); +INSERT INTO Events VALUES (DEFAULT, 'COMMON.FOOTER', 1, 0, 'In-Portal', 'la_event_common.footer', 1); INSERT INTO IdGenerator VALUES ('100'); @@ -244,337 +246,338 @@ INSERT INTO PortalGroup VALUES (14, 'Guest', 'Guest User', '0', 1, 0, 1, 14); INSERT INTO PortalGroup VALUES (11, 'admin', '', '1054738405', 0, 0, 1, 11); -INSERT INTO StdDestinations VALUES (1, 1, NULL, 'la_country_AFG', 'AFG', 'AF'); -INSERT INTO StdDestinations VALUES (2, 1, NULL, 'la_country_ALB', 'ALB', 'AL'); -INSERT INTO StdDestinations VALUES (3, 1, NULL, 'la_country_DZA', 'DZA', 'DZ'); -INSERT INTO StdDestinations VALUES (4, 1, NULL, 'la_country_ASM', 'ASM', 'AS'); -INSERT INTO StdDestinations VALUES (5, 1, NULL, 'la_country_AND', 'AND', 'AD'); -INSERT INTO StdDestinations VALUES (6, 1, NULL, 'la_country_AGO', 'AGO', 'AO'); -INSERT INTO StdDestinations VALUES (7, 1, NULL, 'la_country_AIA', 'AIA', 'AI'); -INSERT INTO StdDestinations VALUES (8, 1, NULL, 'la_country_ATA', 'ATA', 'AQ'); -INSERT INTO StdDestinations VALUES (9, 1, NULL, 'la_country_ATG', 'ATG', 'AG'); -INSERT INTO StdDestinations VALUES (10, 1, NULL, 'la_country_ARG', 'ARG', 'AR'); -INSERT INTO StdDestinations VALUES (11, 1, NULL, 'la_country_ARM', 'ARM', 'AM'); -INSERT INTO StdDestinations VALUES (12, 1, NULL, 'la_country_ABW', 'ABW', 'AW'); -INSERT INTO StdDestinations VALUES (13, 1, NULL, 'la_country_AUS', 'AUS', 'AU'); -INSERT INTO StdDestinations VALUES (14, 1, NULL, 'la_country_AUT', 'AUT', 'AT'); -INSERT INTO StdDestinations VALUES (15, 1, NULL, 'la_country_AZE', 'AZE', 'AZ'); -INSERT INTO StdDestinations VALUES (16, 1, NULL, 'la_country_BHS', 'BHS', 'BS'); -INSERT INTO StdDestinations VALUES (17, 1, NULL, 'la_country_BHR', 'BHR', 'BH'); -INSERT INTO StdDestinations VALUES (18, 1, NULL, 'la_country_BGD', 'BGD', 'BD'); -INSERT INTO StdDestinations VALUES (19, 1, NULL, 'la_country_BRB', 'BRB', 'BB'); -INSERT INTO StdDestinations VALUES (20, 1, NULL, 'la_country_BLR', 'BLR', 'BY'); -INSERT INTO StdDestinations VALUES (21, 1, NULL, 'la_country_BEL', 'BEL', 'BE'); -INSERT INTO StdDestinations VALUES (22, 1, NULL, 'la_country_BLZ', 'BLZ', 'BZ'); -INSERT INTO StdDestinations VALUES (23, 1, NULL, 'la_country_BEN', 'BEN', 'BJ'); -INSERT INTO StdDestinations VALUES (24, 1, NULL, 'la_country_BMU', 'BMU', 'BM'); -INSERT INTO StdDestinations VALUES (25, 1, NULL, 'la_country_BTN', 'BTN', 'BT'); -INSERT INTO StdDestinations VALUES (26, 1, NULL, 'la_country_BOL', 'BOL', 'BO'); -INSERT INTO StdDestinations VALUES (27, 1, NULL, 'la_country_BIH', 'BIH', 'BA'); -INSERT INTO StdDestinations VALUES (28, 1, NULL, 'la_country_BWA', 'BWA', 'BW'); -INSERT INTO StdDestinations VALUES (29, 1, NULL, 'la_country_BVT', 'BVT', 'BV'); -INSERT INTO StdDestinations VALUES (30, 1, NULL, 'la_country_BRA', 'BRA', 'BR'); -INSERT INTO StdDestinations VALUES (31, 1, NULL, 'la_country_IOT', 'IOT', 'IO'); -INSERT INTO StdDestinations VALUES (32, 1, NULL, 'la_country_BRN', 'BRN', 'BN'); -INSERT INTO StdDestinations VALUES (33, 1, NULL, 'la_country_BGR', 'BGR', 'BG'); -INSERT INTO StdDestinations VALUES (34, 1, NULL, 'la_country_BFA', 'BFA', 'BF'); -INSERT INTO StdDestinations VALUES (35, 1, NULL, 'la_country_BDI', 'BDI', 'BI'); -INSERT INTO StdDestinations VALUES (36, 1, NULL, 'la_country_KHM', 'KHM', 'KH'); -INSERT INTO StdDestinations VALUES (37, 1, NULL, 'la_country_CMR', 'CMR', 'CM'); -INSERT INTO StdDestinations VALUES (38, 1, NULL, 'la_country_CAN', 'CAN', 'CA'); -INSERT INTO StdDestinations VALUES (39, 1, NULL, 'la_country_CPV', 'CPV', 'CV'); -INSERT INTO StdDestinations VALUES (40, 1, NULL, 'la_country_CYM', 'CYM', 'KY'); -INSERT INTO StdDestinations VALUES (41, 1, NULL, 'la_country_CAF', 'CAF', 'CF'); -INSERT INTO StdDestinations VALUES (42, 1, NULL, 'la_country_TCD', 'TCD', 'TD'); -INSERT INTO StdDestinations VALUES (43, 1, NULL, 'la_country_CHL', 'CHL', 'CL'); -INSERT INTO StdDestinations VALUES (44, 1, NULL, 'la_country_CHN', 'CHN', 'CN'); -INSERT INTO StdDestinations VALUES (45, 1, NULL, 'la_country_CXR', 'CXR', 'CX'); -INSERT INTO StdDestinations VALUES (46, 1, NULL, 'la_country_CCK', 'CCK', 'CC'); -INSERT INTO StdDestinations VALUES (47, 1, NULL, 'la_country_COL', 'COL', 'CO'); -INSERT INTO StdDestinations VALUES (48, 1, NULL, 'la_country_COM', 'COM', 'KM'); -INSERT INTO StdDestinations VALUES (49, 1, NULL, 'la_country_COD', 'COD', 'CD'); -INSERT INTO StdDestinations VALUES (50, 1, NULL, 'la_country_COG', 'COG', 'CG'); -INSERT INTO StdDestinations VALUES (51, 1, NULL, 'la_country_COK', 'COK', 'CK'); -INSERT INTO StdDestinations VALUES (52, 1, NULL, 'la_country_CRI', 'CRI', 'CR'); -INSERT INTO StdDestinations VALUES (53, 1, NULL, 'la_country_CIV', 'CIV', 'CI'); -INSERT INTO StdDestinations VALUES (54, 1, NULL, 'la_country_HRV', 'HRV', 'HR'); -INSERT INTO StdDestinations VALUES (55, 1, NULL, 'la_country_CUB', 'CUB', 'CU'); -INSERT INTO StdDestinations VALUES (56, 1, NULL, 'la_country_CYP', 'CYP', 'CY'); -INSERT INTO StdDestinations VALUES (57, 1, NULL, 'la_country_CZE', 'CZE', 'CZ'); -INSERT INTO StdDestinations VALUES (58, 1, NULL, 'la_country_DNK', 'DNK', 'DK'); -INSERT INTO StdDestinations VALUES (59, 1, NULL, 'la_country_DJI', 'DJI', 'DJ'); -INSERT INTO StdDestinations VALUES (60, 1, NULL, 'la_country_DMA', 'DMA', 'DM'); -INSERT INTO StdDestinations VALUES (61, 1, NULL, 'la_country_DOM', 'DOM', 'DO'); -INSERT INTO StdDestinations VALUES (62, 1, NULL, 'la_country_TLS', 'TLS', 'TL'); -INSERT INTO StdDestinations VALUES (63, 1, NULL, 'la_country_ECU', 'ECU', 'EC'); -INSERT INTO StdDestinations VALUES (64, 1, NULL, 'la_country_EGY', 'EGY', 'EG'); -INSERT INTO StdDestinations VALUES (65, 1, NULL, 'la_country_SLV', 'SLV', 'SV'); -INSERT INTO StdDestinations VALUES (66, 1, NULL, 'la_country_GNQ', 'GNQ', 'GQ'); -INSERT INTO StdDestinations VALUES (67, 1, NULL, 'la_country_ERI', 'ERI', 'ER'); -INSERT INTO StdDestinations VALUES (68, 1, NULL, 'la_country_EST', 'EST', 'EE'); -INSERT INTO StdDestinations VALUES (69, 1, NULL, 'la_country_ETH', 'ETH', 'ET'); -INSERT INTO StdDestinations VALUES (70, 1, NULL, 'la_country_FLK', 'FLK', 'FK'); -INSERT INTO StdDestinations VALUES (71, 1, NULL, 'la_country_FRO', 'FRO', 'FO'); -INSERT INTO StdDestinations VALUES (72, 1, NULL, 'la_country_FJI', 'FJI', 'FJ'); -INSERT INTO StdDestinations VALUES (73, 1, NULL, 'la_country_FIN', 'FIN', 'FI'); -INSERT INTO StdDestinations VALUES (74, 1, NULL, 'la_country_FRA', 'FRA', 'FR'); -INSERT INTO StdDestinations VALUES (75, 1, NULL, 'la_country_FXX', 'FXX', 'FX'); -INSERT INTO StdDestinations VALUES (76, 1, NULL, 'la_country_GUF', 'GUF', 'GF'); -INSERT INTO StdDestinations VALUES (77, 1, NULL, 'la_country_PYF', 'PYF', 'PF'); -INSERT INTO StdDestinations VALUES (78, 1, NULL, 'la_country_ATF', 'ATF', 'TF'); -INSERT INTO StdDestinations VALUES (79, 1, NULL, 'la_country_GAB', 'GAB', 'GA'); -INSERT INTO StdDestinations VALUES (80, 1, NULL, 'la_country_GMB', 'GMB', 'GM'); -INSERT INTO StdDestinations VALUES (81, 1, NULL, 'la_country_GEO', 'GEO', 'GE'); -INSERT INTO StdDestinations VALUES (82, 1, NULL, 'la_country_DEU', 'DEU', 'DE'); -INSERT INTO StdDestinations VALUES (83, 1, NULL, 'la_country_GHA', 'GHA', 'GH'); -INSERT INTO StdDestinations VALUES (84, 1, NULL, 'la_country_GIB', 'GIB', 'GI'); -INSERT INTO StdDestinations VALUES (85, 1, NULL, 'la_country_GRC', 'GRC', 'GR'); -INSERT INTO StdDestinations VALUES (86, 1, NULL, 'la_country_GRL', 'GRL', 'GL'); -INSERT INTO StdDestinations VALUES (87, 1, NULL, 'la_country_GRD', 'GRD', 'GD'); -INSERT INTO StdDestinations VALUES (88, 1, NULL, 'la_country_GLP', 'GLP', 'GP'); -INSERT INTO StdDestinations VALUES (89, 1, NULL, 'la_country_GUM', 'GUM', 'GU'); -INSERT INTO StdDestinations VALUES (90, 1, NULL, 'la_country_GTM', 'GTM', 'GT'); -INSERT INTO StdDestinations VALUES (91, 1, NULL, 'la_country_GIN', 'GIN', 'GN'); -INSERT INTO StdDestinations VALUES (92, 1, NULL, 'la_country_GNB', 'GNB', 'GW'); -INSERT INTO StdDestinations VALUES (93, 1, NULL, 'la_country_GUY', 'GUY', 'GY'); -INSERT INTO StdDestinations VALUES (94, 1, NULL, 'la_country_HTI', 'HTI', 'HT'); -INSERT INTO StdDestinations VALUES (95, 1, NULL, 'la_country_HMD', 'HMD', 'HM'); -INSERT INTO StdDestinations VALUES (96, 1, NULL, 'la_country_HND', 'HND', 'HN'); -INSERT INTO StdDestinations VALUES (97, 1, NULL, 'la_country_HKG', 'HKG', 'HK'); -INSERT INTO StdDestinations VALUES (98, 1, NULL, 'la_country_HUN', 'HUN', 'HU'); -INSERT INTO StdDestinations VALUES (99, 1, NULL, 'la_country_ISL', 'ISL', 'IS'); -INSERT INTO StdDestinations VALUES (100, 1, NULL, 'la_country_IND', 'IND', 'IN'); -INSERT INTO StdDestinations VALUES (101, 1, NULL, 'la_country_IDN', 'IDN', 'ID'); -INSERT INTO StdDestinations VALUES (102, 1, NULL, 'la_country_IRN', 'IRN', 'IR'); -INSERT INTO StdDestinations VALUES (103, 1, NULL, 'la_country_IRQ', 'IRQ', 'IQ'); -INSERT INTO StdDestinations VALUES (104, 1, NULL, 'la_country_IRL', 'IRL', 'IE'); -INSERT INTO StdDestinations VALUES (105, 1, NULL, 'la_country_ISR', 'ISR', 'IL'); -INSERT INTO StdDestinations VALUES (106, 1, NULL, 'la_country_ITA', 'ITA', 'IT'); -INSERT INTO StdDestinations VALUES (107, 1, NULL, 'la_country_JAM', 'JAM', 'JM'); -INSERT INTO StdDestinations VALUES (108, 1, NULL, 'la_country_JPN', 'JPN', 'JP'); -INSERT INTO StdDestinations VALUES (109, 1, NULL, 'la_country_JOR', 'JOR', 'JO'); -INSERT INTO StdDestinations VALUES (110, 1, NULL, 'la_country_KAZ', 'KAZ', 'KZ'); -INSERT INTO StdDestinations VALUES (111, 1, NULL, 'la_country_KEN', 'KEN', 'KE'); -INSERT INTO StdDestinations VALUES (112, 1, NULL, 'la_country_KIR', 'KIR', 'KI'); -INSERT INTO StdDestinations VALUES (113, 1, NULL, 'la_country_PRK', 'PRK', 'KP'); -INSERT INTO StdDestinations VALUES (114, 1, NULL, 'la_country_KOR', 'KOR', 'KR'); -INSERT INTO StdDestinations VALUES (115, 1, NULL, 'la_country_KWT', 'KWT', 'KW'); -INSERT INTO StdDestinations VALUES (116, 1, NULL, 'la_country_KGZ', 'KGZ', 'KG'); -INSERT INTO StdDestinations VALUES (117, 1, NULL, 'la_country_LAO', 'LAO', 'LA'); -INSERT INTO StdDestinations VALUES (118, 1, NULL, 'la_country_LVA', 'LVA', 'LV'); -INSERT INTO StdDestinations VALUES (119, 1, NULL, 'la_country_LBN', 'LBN', 'LB'); -INSERT INTO StdDestinations VALUES (120, 1, NULL, 'la_country_LSO', 'LSO', 'LS'); -INSERT INTO StdDestinations VALUES (121, 1, NULL, 'la_country_LBR', 'LBR', 'LR'); -INSERT INTO StdDestinations VALUES (122, 1, NULL, 'la_country_LBY', 'LBY', 'LY'); -INSERT INTO StdDestinations VALUES (123, 1, NULL, 'la_country_LIE', 'LIE', 'LI'); -INSERT INTO StdDestinations VALUES (124, 1, NULL, 'la_country_LTU', 'LTU', 'LT'); -INSERT INTO StdDestinations VALUES (125, 1, NULL, 'la_country_LUX', 'LUX', 'LU'); -INSERT INTO StdDestinations VALUES (126, 1, NULL, 'la_country_MAC', 'MAC', 'MO'); -INSERT INTO StdDestinations VALUES (127, 1, NULL, 'la_country_MKD', 'MKD', 'MK'); -INSERT INTO StdDestinations VALUES (128, 1, NULL, 'la_country_MDG', 'MDG', 'MG'); -INSERT INTO StdDestinations VALUES (129, 1, NULL, 'la_country_MWI', 'MWI', 'MW'); -INSERT INTO StdDestinations VALUES (130, 1, NULL, 'la_country_MYS', 'MYS', 'MY'); -INSERT INTO StdDestinations VALUES (131, 1, NULL, 'la_country_MDV', 'MDV', 'MV'); -INSERT INTO StdDestinations VALUES (132, 1, NULL, 'la_country_MLI', 'MLI', 'ML'); -INSERT INTO StdDestinations VALUES (133, 1, NULL, 'la_country_MLT', 'MLT', 'MT'); -INSERT INTO StdDestinations VALUES (134, 1, NULL, 'la_country_MHL', 'MHL', 'MH'); -INSERT INTO StdDestinations VALUES (135, 1, NULL, 'la_country_MTQ', 'MTQ', 'MQ'); -INSERT INTO StdDestinations VALUES (136, 1, NULL, 'la_country_MRT', 'MRT', 'MR'); -INSERT INTO StdDestinations VALUES (137, 1, NULL, 'la_country_MUS', 'MUS', 'MU'); -INSERT INTO StdDestinations VALUES (138, 1, NULL, 'la_country_MYT', 'MYT', 'YT'); -INSERT INTO StdDestinations VALUES (139, 1, NULL, 'la_country_MEX', 'MEX', 'MX'); -INSERT INTO StdDestinations VALUES (140, 1, NULL, 'la_country_FSM', 'FSM', 'FM'); -INSERT INTO StdDestinations VALUES (141, 1, NULL, 'la_country_MDA', 'MDA', 'MD'); -INSERT INTO StdDestinations VALUES (142, 1, NULL, 'la_country_MCO', 'MCO', 'MC'); -INSERT INTO StdDestinations VALUES (143, 1, NULL, 'la_country_MNG', 'MNG', 'MN'); -INSERT INTO StdDestinations VALUES (144, 1, NULL, 'la_country_MSR', 'MSR', 'MS'); -INSERT INTO StdDestinations VALUES (145, 1, NULL, 'la_country_MAR', 'MAR', 'MA'); -INSERT INTO StdDestinations VALUES (146, 1, NULL, 'la_country_MOZ', 'MOZ', 'MZ'); -INSERT INTO StdDestinations VALUES (147, 1, NULL, 'la_country_MMR', 'MMR', 'MM'); -INSERT INTO StdDestinations VALUES (148, 1, NULL, 'la_country_NAM', 'NAM', 'NA'); -INSERT INTO StdDestinations VALUES (149, 1, NULL, 'la_country_NRU', 'NRU', 'NR'); -INSERT INTO StdDestinations VALUES (150, 1, NULL, 'la_country_NPL', 'NPL', 'NP'); -INSERT INTO StdDestinations VALUES (151, 1, NULL, 'la_country_NLD', 'NLD', 'NL'); -INSERT INTO StdDestinations VALUES (152, 1, NULL, 'la_country_ANT', 'ANT', 'AN'); -INSERT INTO StdDestinations VALUES (153, 1, NULL, 'la_country_NCL', 'NCL', 'NC'); -INSERT INTO StdDestinations VALUES (154, 1, NULL, 'la_country_NZL', 'NZL', 'NZ'); -INSERT INTO StdDestinations VALUES (155, 1, NULL, 'la_country_NIC', 'NIC', 'NI'); -INSERT INTO StdDestinations VALUES (156, 1, NULL, 'la_country_NER', 'NER', 'NE'); -INSERT INTO StdDestinations VALUES (157, 1, NULL, 'la_country_NGA', 'NGA', 'NG'); -INSERT INTO StdDestinations VALUES (158, 1, NULL, 'la_country_NIU', 'NIU', 'NU'); -INSERT INTO StdDestinations VALUES (159, 1, NULL, 'la_country_NFK', 'NFK', 'NF'); -INSERT INTO StdDestinations VALUES (160, 1, NULL, 'la_country_MNP', 'MNP', 'MP'); -INSERT INTO StdDestinations VALUES (161, 1, NULL, 'la_country_NOR', 'NOR', 'NO'); -INSERT INTO StdDestinations VALUES (162, 1, NULL, 'la_country_OMN', 'OMN', 'OM'); -INSERT INTO StdDestinations VALUES (163, 1, NULL, 'la_country_PAK', 'PAK', 'PK'); -INSERT INTO StdDestinations VALUES (164, 1, NULL, 'la_country_PLW', 'PLW', 'PW'); -INSERT INTO StdDestinations VALUES (165, 1, NULL, 'la_country_PSE', 'PSE', 'PS'); -INSERT INTO StdDestinations VALUES (166, 1, NULL, 'la_country_PAN', 'PAN', 'PA'); -INSERT INTO StdDestinations VALUES (167, 1, NULL, 'la_country_PNG', 'PNG', 'PG'); -INSERT INTO StdDestinations VALUES (168, 1, NULL, 'la_country_PRY', 'PRY', 'PY'); -INSERT INTO StdDestinations VALUES (169, 1, NULL, 'la_country_PER', 'PER', 'PE'); -INSERT INTO StdDestinations VALUES (170, 1, NULL, 'la_country_PHL', 'PHL', 'PH'); -INSERT INTO StdDestinations VALUES (171, 1, NULL, 'la_country_PCN', 'PCN', 'PN'); -INSERT INTO StdDestinations VALUES (172, 1, NULL, 'la_country_POL', 'POL', 'PL'); -INSERT INTO StdDestinations VALUES (173, 1, NULL, 'la_country_PRT', 'PRT', 'PT'); -INSERT INTO StdDestinations VALUES (174, 1, NULL, 'la_country_PRI', 'PRI', 'PR'); -INSERT INTO StdDestinations VALUES (175, 1, NULL, 'la_country_QAT', 'QAT', 'QA'); -INSERT INTO StdDestinations VALUES (176, 1, NULL, 'la_country_REU', 'REU', 'RE'); -INSERT INTO StdDestinations VALUES (177, 1, NULL, 'la_country_ROU', 'ROU', 'RO'); -INSERT INTO StdDestinations VALUES (178, 1, NULL, 'la_country_RUS', 'RUS', 'RU'); -INSERT INTO StdDestinations VALUES (179, 1, NULL, 'la_country_RWA', 'RWA', 'RW'); -INSERT INTO StdDestinations VALUES (180, 1, NULL, 'la_country_KNA', 'KNA', 'KN'); -INSERT INTO StdDestinations VALUES (181, 1, NULL, 'la_country_LCA', 'LCA', 'LC'); -INSERT INTO StdDestinations VALUES (182, 1, NULL, 'la_country_VCT', 'VCT', 'VC'); -INSERT INTO StdDestinations VALUES (183, 1, NULL, 'la_country_WSM', 'WSM', 'WS'); -INSERT INTO StdDestinations VALUES (184, 1, NULL, 'la_country_SMR', 'SMR', 'SM'); -INSERT INTO StdDestinations VALUES (185, 1, NULL, 'la_country_STP', 'STP', 'ST'); -INSERT INTO StdDestinations VALUES (186, 1, NULL, 'la_country_SAU', 'SAU', 'SA'); -INSERT INTO StdDestinations VALUES (187, 1, NULL, 'la_country_SEN', 'SEN', 'SN'); -INSERT INTO StdDestinations VALUES (188, 1, NULL, 'la_country_SYC', 'SYC', 'SC'); -INSERT INTO StdDestinations VALUES (189, 1, NULL, 'la_country_SLE', 'SLE', 'SL'); -INSERT INTO StdDestinations VALUES (190, 1, NULL, 'la_country_SGP', 'SGP', 'SG'); -INSERT INTO StdDestinations VALUES (191, 1, NULL, 'la_country_SVK', 'SVK', 'SK'); -INSERT INTO StdDestinations VALUES (192, 1, NULL, 'la_country_SVN', 'SVN', 'SI'); -INSERT INTO StdDestinations VALUES (193, 1, NULL, 'la_country_SLB', 'SLB', 'SB'); -INSERT INTO StdDestinations VALUES (194, 1, NULL, 'la_country_SOM', 'SOM', 'SO'); -INSERT INTO StdDestinations VALUES (195, 1, NULL, 'la_country_ZAF', 'ZAF', 'ZA'); -INSERT INTO StdDestinations VALUES (196, 1, NULL, 'la_country_SGS', 'SGS', 'GS'); -INSERT INTO StdDestinations VALUES (197, 1, NULL, 'la_country_ESP', 'ESP', 'ES'); -INSERT INTO StdDestinations VALUES (198, 1, NULL, 'la_country_LKA', 'LKA', 'LK'); -INSERT INTO StdDestinations VALUES (199, 1, NULL, 'la_country_SHN', 'SHN', 'SH'); -INSERT INTO StdDestinations VALUES (200, 1, NULL, 'la_country_SPM', 'SPM', 'PM'); -INSERT INTO StdDestinations VALUES (201, 1, NULL, 'la_country_SDN', 'SDN', 'SD'); -INSERT INTO StdDestinations VALUES (202, 1, NULL, 'la_country_SUR', 'SUR', 'SR'); -INSERT INTO StdDestinations VALUES (203, 1, NULL, 'la_country_SJM', 'SJM', 'SJ'); -INSERT INTO StdDestinations VALUES (204, 1, NULL, 'la_country_SWZ', 'SWZ', 'SZ'); -INSERT INTO StdDestinations VALUES (205, 1, NULL, 'la_country_SWE', 'SWE', 'SE'); -INSERT INTO StdDestinations VALUES (206, 1, NULL, 'la_country_CHE', 'CHE', 'CH'); -INSERT INTO StdDestinations VALUES (207, 1, NULL, 'la_country_SYR', 'SYR', 'SY'); -INSERT INTO StdDestinations VALUES (208, 1, NULL, 'la_country_TWN', 'TWN', 'TW'); -INSERT INTO StdDestinations VALUES (209, 1, NULL, 'la_country_TJK', 'TJK', 'TJ'); -INSERT INTO StdDestinations VALUES (210, 1, NULL, 'la_country_TZA', 'TZA', 'TZ'); -INSERT INTO StdDestinations VALUES (211, 1, NULL, 'la_country_THA', 'THA', 'TH'); -INSERT INTO StdDestinations VALUES (212, 1, NULL, 'la_country_TGO', 'TGO', 'TG'); -INSERT INTO StdDestinations VALUES (213, 1, NULL, 'la_country_TKL', 'TKL', 'TK'); -INSERT INTO StdDestinations VALUES (214, 1, NULL, 'la_country_TON', 'TON', 'TO'); -INSERT INTO StdDestinations VALUES (215, 1, NULL, 'la_country_TTO', 'TTO', 'TT'); -INSERT INTO StdDestinations VALUES (216, 1, NULL, 'la_country_TUN', 'TUN', 'TN'); -INSERT INTO StdDestinations VALUES (217, 1, NULL, 'la_country_TUR', 'TUR', 'TR'); -INSERT INTO StdDestinations VALUES (218, 1, NULL, 'la_country_TKM', 'TKM', 'TM'); -INSERT INTO StdDestinations VALUES (219, 1, NULL, 'la_country_TCA', 'TCA', 'TC'); -INSERT INTO StdDestinations VALUES (220, 1, NULL, 'la_country_TUV', 'TUV', 'TV'); -INSERT INTO StdDestinations VALUES (221, 1, NULL, 'la_country_UGA', 'UGA', 'UG'); -INSERT INTO StdDestinations VALUES (222, 1, NULL, 'la_country_UKR', 'UKR', 'UA'); -INSERT INTO StdDestinations VALUES (223, 1, NULL, 'la_country_ARE', 'ARE', 'AE'); -INSERT INTO StdDestinations VALUES (224, 1, NULL, 'la_country_GBR', 'GBR', 'GB'); -INSERT INTO StdDestinations VALUES (225, 1, NULL, 'la_country_USA', 'USA', 'US'); -INSERT INTO StdDestinations VALUES (226, 1, NULL, 'la_country_UMI', 'UMI', 'UM'); -INSERT INTO StdDestinations VALUES (227, 1, NULL, 'la_country_URY', 'URY', 'UY'); -INSERT INTO StdDestinations VALUES (228, 1, NULL, 'la_country_UZB', 'UZB', 'UZ'); -INSERT INTO StdDestinations VALUES (229, 1, NULL, 'la_country_VUT', 'VUT', 'VU'); -INSERT INTO StdDestinations VALUES (230, 1, NULL, 'la_country_VAT', 'VAT', 'VA'); -INSERT INTO StdDestinations VALUES (231, 1, NULL, 'la_country_VEN', 'VEN', 'VE'); -INSERT INTO StdDestinations VALUES (232, 1, NULL, 'la_country_VNM', 'VNM', 'VN'); -INSERT INTO StdDestinations VALUES (233, 1, NULL, 'la_country_VGB', 'VGB', 'VG'); -INSERT INTO StdDestinations VALUES (234, 1, NULL, 'la_country_VIR', 'VIR', 'VI'); -INSERT INTO StdDestinations VALUES (235, 1, NULL, 'la_country_WLF', 'WLF', 'WF'); -INSERT INTO StdDestinations VALUES (236, 1, NULL, 'la_country_ESH', 'ESH', 'EH'); -INSERT INTO StdDestinations VALUES (237, 1, NULL, 'la_country_YEM', 'YEM', 'YE'); -INSERT INTO StdDestinations VALUES (238, 1, NULL, 'la_country_YUG', 'YUG', 'YU'); -INSERT INTO StdDestinations VALUES (239, 1, NULL, 'la_country_ZMB', 'ZMB', 'ZM'); -INSERT INTO StdDestinations VALUES (240, 1, NULL, 'la_country_ZWE', 'ZWE', 'ZW'); -INSERT INTO StdDestinations VALUES (370, 2, 38, 'la_state_YT', 'YT', NULL); -INSERT INTO StdDestinations VALUES (369, 2, 38, 'la_state_SK', 'SK', NULL); -INSERT INTO StdDestinations VALUES (368, 2, 38, 'la_state_QC', 'QC', NULL); -INSERT INTO StdDestinations VALUES (367, 2, 38, 'la_state_PE', 'PE', NULL); -INSERT INTO StdDestinations VALUES (366, 2, 38, 'la_state_ON', 'ON', NULL); -INSERT INTO StdDestinations VALUES (365, 2, 38, 'la_state_NU', 'NU', NULL); -INSERT INTO StdDestinations VALUES (364, 2, 38, 'la_state_NS', 'NS', NULL); -INSERT INTO StdDestinations VALUES (363, 2, 38, 'la_state_NT', 'NT', NULL); -INSERT INTO StdDestinations VALUES (362, 2, 38, 'la_state_NL', 'NL', NULL); -INSERT INTO StdDestinations VALUES (361, 2, 38, 'la_state_NB', 'NB', NULL); -INSERT INTO StdDestinations VALUES (360, 2, 38, 'la_state_MB', 'MB', NULL); -INSERT INTO StdDestinations VALUES (359, 2, 38, 'la_state_BC', 'BC', NULL); -INSERT INTO StdDestinations VALUES (358, 2, 38, 'la_state_AB', 'AB', NULL); -INSERT INTO StdDestinations VALUES (357, 2, 225, 'la_state_DC', 'DC', NULL); -INSERT INTO StdDestinations VALUES (356, 2, 225, 'la_state_WY', 'WY', NULL); -INSERT INTO StdDestinations VALUES (355, 2, 225, 'la_state_WI', 'WI', NULL); -INSERT INTO StdDestinations VALUES (354, 2, 225, 'la_state_WV', 'WV', NULL); -INSERT INTO StdDestinations VALUES (353, 2, 225, 'la_state_WA', 'WA', NULL); -INSERT INTO StdDestinations VALUES (352, 2, 225, 'la_state_VA', 'VA', NULL); -INSERT INTO StdDestinations VALUES (351, 2, 225, 'la_state_VT', 'VT', NULL); -INSERT INTO StdDestinations VALUES (350, 2, 225, 'la_state_UT', 'UT', NULL); -INSERT INTO StdDestinations VALUES (349, 2, 225, 'la_state_TX', 'TX', NULL); -INSERT INTO StdDestinations VALUES (348, 2, 225, 'la_state_TN', 'TN', NULL); -INSERT INTO StdDestinations VALUES (347, 2, 225, 'la_state_SD', 'SD', NULL); -INSERT INTO StdDestinations VALUES (346, 2, 225, 'la_state_SC', 'SC', NULL); -INSERT INTO StdDestinations VALUES (345, 2, 225, 'la_state_RI', 'RI', NULL); -INSERT INTO StdDestinations VALUES (344, 2, 225, 'la_state_PR', 'PR', NULL); -INSERT INTO StdDestinations VALUES (343, 2, 225, 'la_state_PA', 'PA', NULL); -INSERT INTO StdDestinations VALUES (342, 2, 225, 'la_state_OR', 'OR', NULL); -INSERT INTO StdDestinations VALUES (341, 2, 225, 'la_state_OK', 'OK', NULL); -INSERT INTO StdDestinations VALUES (340, 2, 225, 'la_state_OH', 'OH', NULL); -INSERT INTO StdDestinations VALUES (339, 2, 225, 'la_state_ND', 'ND', NULL); -INSERT INTO StdDestinations VALUES (338, 2, 225, 'la_state_NC', 'NC', NULL); -INSERT INTO StdDestinations VALUES (337, 2, 225, 'la_state_NY', 'NY', NULL); -INSERT INTO StdDestinations VALUES (336, 2, 225, 'la_state_NM', 'NM', NULL); -INSERT INTO StdDestinations VALUES (335, 2, 225, 'la_state_NJ', 'NJ', NULL); -INSERT INTO StdDestinations VALUES (334, 2, 225, 'la_state_NH', 'NH', NULL); -INSERT INTO StdDestinations VALUES (333, 2, 225, 'la_state_NV', 'NV', NULL); -INSERT INTO StdDestinations VALUES (332, 2, 225, 'la_state_NE', 'NE', NULL); -INSERT INTO StdDestinations VALUES (331, 2, 225, 'la_state_MT', 'MT', NULL); -INSERT INTO StdDestinations VALUES (330, 2, 225, 'la_state_MO', 'MO', NULL); -INSERT INTO StdDestinations VALUES (329, 2, 225, 'la_state_MS', 'MS', NULL); -INSERT INTO StdDestinations VALUES (328, 2, 225, 'la_state_MN', 'MN', NULL); -INSERT INTO StdDestinations VALUES (327, 2, 225, 'la_state_MI', 'MI', NULL); -INSERT INTO StdDestinations VALUES (326, 2, 225, 'la_state_MA', 'MA', NULL); -INSERT INTO StdDestinations VALUES (325, 2, 225, 'la_state_MD', 'MD', NULL); -INSERT INTO StdDestinations VALUES (324, 2, 225, 'la_state_ME', 'ME', NULL); -INSERT INTO StdDestinations VALUES (323, 2, 225, 'la_state_LA', 'LA', NULL); -INSERT INTO StdDestinations VALUES (322, 2, 225, 'la_state_KY', 'KY', NULL); -INSERT INTO StdDestinations VALUES (321, 2, 225, 'la_state_KS', 'KS', NULL); -INSERT INTO StdDestinations VALUES (320, 2, 225, 'la_state_IA', 'IA', NULL); -INSERT INTO StdDestinations VALUES (319, 2, 225, 'la_state_IN', 'IN', NULL); -INSERT INTO StdDestinations VALUES (318, 2, 225, 'la_state_IL', 'IL', NULL); -INSERT INTO StdDestinations VALUES (317, 2, 225, 'la_state_ID', 'ID', NULL); -INSERT INTO StdDestinations VALUES (316, 2, 225, 'la_state_HI', 'HI', NULL); -INSERT INTO StdDestinations VALUES (315, 2, 225, 'la_state_GA', 'GA', NULL); -INSERT INTO StdDestinations VALUES (314, 2, 225, 'la_state_FL', 'FL', NULL); -INSERT INTO StdDestinations VALUES (313, 2, 225, 'la_state_DE', 'DE', NULL); -INSERT INTO StdDestinations VALUES (312, 2, 225, 'la_state_CT', 'CT', NULL); -INSERT INTO StdDestinations VALUES (311, 2, 225, 'la_state_CO', 'CO', NULL); -INSERT INTO StdDestinations VALUES (310, 2, 225, 'la_state_CA', 'CA', NULL); -INSERT INTO StdDestinations VALUES (309, 2, 225, 'la_state_AR', 'AR', NULL); -INSERT INTO StdDestinations VALUES (308, 2, 225, 'la_state_AZ', 'AZ', NULL); -INSERT INTO StdDestinations VALUES (307, 2, 225, 'la_state_AK', 'AK', NULL); -INSERT INTO StdDestinations VALUES (306, 2, 225, 'la_state_AL', 'AL', NULL); +INSERT INTO StdDestinations VALUES (1, 1, DEFAULT, 'la_country_AFG', 'AFG', 'AF'); +INSERT INTO StdDestinations VALUES (2, 1, DEFAULT, 'la_country_ALB', 'ALB', 'AL'); +INSERT INTO StdDestinations VALUES (3, 1, DEFAULT, 'la_country_DZA', 'DZA', 'DZ'); +INSERT INTO StdDestinations VALUES (4, 1, DEFAULT, 'la_country_ASM', 'ASM', 'AS'); +INSERT INTO StdDestinations VALUES (5, 1, DEFAULT, 'la_country_AND', 'AND', 'AD'); +INSERT INTO StdDestinations VALUES (6, 1, DEFAULT, 'la_country_AGO', 'AGO', 'AO'); +INSERT INTO StdDestinations VALUES (7, 1, DEFAULT, 'la_country_AIA', 'AIA', 'AI'); +INSERT INTO StdDestinations VALUES (8, 1, DEFAULT, 'la_country_ATA', 'ATA', 'AQ'); +INSERT INTO StdDestinations VALUES (9, 1, DEFAULT, 'la_country_ATG', 'ATG', 'AG'); +INSERT INTO StdDestinations VALUES (10, 1, DEFAULT, 'la_country_ARG', 'ARG', 'AR'); +INSERT INTO StdDestinations VALUES (11, 1, DEFAULT, 'la_country_ARM', 'ARM', 'AM'); +INSERT INTO StdDestinations VALUES (12, 1, DEFAULT, 'la_country_ABW', 'ABW', 'AW'); +INSERT INTO StdDestinations VALUES (13, 1, DEFAULT, 'la_country_AUS', 'AUS', 'AU'); +INSERT INTO StdDestinations VALUES (14, 1, DEFAULT, 'la_country_AUT', 'AUT', 'AT'); +INSERT INTO StdDestinations VALUES (15, 1, DEFAULT, 'la_country_AZE', 'AZE', 'AZ'); +INSERT INTO StdDestinations VALUES (16, 1, DEFAULT, 'la_country_BHS', 'BHS', 'BS'); +INSERT INTO StdDestinations VALUES (17, 1, DEFAULT, 'la_country_BHR', 'BHR', 'BH'); +INSERT INTO StdDestinations VALUES (18, 1, DEFAULT, 'la_country_BGD', 'BGD', 'BD'); +INSERT INTO StdDestinations VALUES (19, 1, DEFAULT, 'la_country_BRB', 'BRB', 'BB'); +INSERT INTO StdDestinations VALUES (20, 1, DEFAULT, 'la_country_BLR', 'BLR', 'BY'); +INSERT INTO StdDestinations VALUES (21, 1, DEFAULT, 'la_country_BEL', 'BEL', 'BE'); +INSERT INTO StdDestinations VALUES (22, 1, DEFAULT, 'la_country_BLZ', 'BLZ', 'BZ'); +INSERT INTO StdDestinations VALUES (23, 1, DEFAULT, 'la_country_BEN', 'BEN', 'BJ'); +INSERT INTO StdDestinations VALUES (24, 1, DEFAULT, 'la_country_BMU', 'BMU', 'BM'); +INSERT INTO StdDestinations VALUES (25, 1, DEFAULT, 'la_country_BTN', 'BTN', 'BT'); +INSERT INTO StdDestinations VALUES (26, 1, DEFAULT, 'la_country_BOL', 'BOL', 'BO'); +INSERT INTO StdDestinations VALUES (27, 1, DEFAULT, 'la_country_BIH', 'BIH', 'BA'); +INSERT INTO StdDestinations VALUES (28, 1, DEFAULT, 'la_country_BWA', 'BWA', 'BW'); +INSERT INTO StdDestinations VALUES (29, 1, DEFAULT, 'la_country_BVT', 'BVT', 'BV'); +INSERT INTO StdDestinations VALUES (30, 1, DEFAULT, 'la_country_BRA', 'BRA', 'BR'); +INSERT INTO StdDestinations VALUES (31, 1, DEFAULT, 'la_country_IOT', 'IOT', 'IO'); +INSERT INTO StdDestinations VALUES (32, 1, DEFAULT, 'la_country_BRN', 'BRN', 'BN'); +INSERT INTO StdDestinations VALUES (33, 1, DEFAULT, 'la_country_BGR', 'BGR', 'BG'); +INSERT INTO StdDestinations VALUES (34, 1, DEFAULT, 'la_country_BFA', 'BFA', 'BF'); +INSERT INTO StdDestinations VALUES (35, 1, DEFAULT, 'la_country_BDI', 'BDI', 'BI'); +INSERT INTO StdDestinations VALUES (36, 1, DEFAULT, 'la_country_KHM', 'KHM', 'KH'); +INSERT INTO StdDestinations VALUES (37, 1, DEFAULT, 'la_country_CMR', 'CMR', 'CM'); +INSERT INTO StdDestinations VALUES (38, 1, DEFAULT, 'la_country_CAN', 'CAN', 'CA'); +INSERT INTO StdDestinations VALUES (39, 1, DEFAULT, 'la_country_CPV', 'CPV', 'CV'); +INSERT INTO StdDestinations VALUES (40, 1, DEFAULT, 'la_country_CYM', 'CYM', 'KY'); +INSERT INTO StdDestinations VALUES (41, 1, DEFAULT, 'la_country_CAF', 'CAF', 'CF'); +INSERT INTO StdDestinations VALUES (42, 1, DEFAULT, 'la_country_TCD', 'TCD', 'TD'); +INSERT INTO StdDestinations VALUES (43, 1, DEFAULT, 'la_country_CHL', 'CHL', 'CL'); +INSERT INTO StdDestinations VALUES (44, 1, DEFAULT, 'la_country_CHN', 'CHN', 'CN'); +INSERT INTO StdDestinations VALUES (45, 1, DEFAULT, 'la_country_CXR', 'CXR', 'CX'); +INSERT INTO StdDestinations VALUES (46, 1, DEFAULT, 'la_country_CCK', 'CCK', 'CC'); +INSERT INTO StdDestinations VALUES (47, 1, DEFAULT, 'la_country_COL', 'COL', 'CO'); +INSERT INTO StdDestinations VALUES (48, 1, DEFAULT, 'la_country_COM', 'COM', 'KM'); +INSERT INTO StdDestinations VALUES (49, 1, DEFAULT, 'la_country_COD', 'COD', 'CD'); +INSERT INTO StdDestinations VALUES (50, 1, DEFAULT, 'la_country_COG', 'COG', 'CG'); +INSERT INTO StdDestinations VALUES (51, 1, DEFAULT, 'la_country_COK', 'COK', 'CK'); +INSERT INTO StdDestinations VALUES (52, 1, DEFAULT, 'la_country_CRI', 'CRI', 'CR'); +INSERT INTO StdDestinations VALUES (53, 1, DEFAULT, 'la_country_CIV', 'CIV', 'CI'); +INSERT INTO StdDestinations VALUES (54, 1, DEFAULT, 'la_country_HRV', 'HRV', 'HR'); +INSERT INTO StdDestinations VALUES (55, 1, DEFAULT, 'la_country_CUB', 'CUB', 'CU'); +INSERT INTO StdDestinations VALUES (56, 1, DEFAULT, 'la_country_CYP', 'CYP', 'CY'); +INSERT INTO StdDestinations VALUES (57, 1, DEFAULT, 'la_country_CZE', 'CZE', 'CZ'); +INSERT INTO StdDestinations VALUES (58, 1, DEFAULT, 'la_country_DNK', 'DNK', 'DK'); +INSERT INTO StdDestinations VALUES (59, 1, DEFAULT, 'la_country_DJI', 'DJI', 'DJ'); +INSERT INTO StdDestinations VALUES (60, 1, DEFAULT, 'la_country_DMA', 'DMA', 'DM'); +INSERT INTO StdDestinations VALUES (61, 1, DEFAULT, 'la_country_DOM', 'DOM', 'DO'); +INSERT INTO StdDestinations VALUES (62, 1, DEFAULT, 'la_country_TLS', 'TLS', 'TL'); +INSERT INTO StdDestinations VALUES (63, 1, DEFAULT, 'la_country_ECU', 'ECU', 'EC'); +INSERT INTO StdDestinations VALUES (64, 1, DEFAULT, 'la_country_EGY', 'EGY', 'EG'); +INSERT INTO StdDestinations VALUES (65, 1, DEFAULT, 'la_country_SLV', 'SLV', 'SV'); +INSERT INTO StdDestinations VALUES (66, 1, DEFAULT, 'la_country_GNQ', 'GNQ', 'GQ'); +INSERT INTO StdDestinations VALUES (67, 1, DEFAULT, 'la_country_ERI', 'ERI', 'ER'); +INSERT INTO StdDestinations VALUES (68, 1, DEFAULT, 'la_country_EST', 'EST', 'EE'); +INSERT INTO StdDestinations VALUES (69, 1, DEFAULT, 'la_country_ETH', 'ETH', 'ET'); +INSERT INTO StdDestinations VALUES (70, 1, DEFAULT, 'la_country_FLK', 'FLK', 'FK'); +INSERT INTO StdDestinations VALUES (71, 1, DEFAULT, 'la_country_FRO', 'FRO', 'FO'); +INSERT INTO StdDestinations VALUES (72, 1, DEFAULT, 'la_country_FJI', 'FJI', 'FJ'); +INSERT INTO StdDestinations VALUES (73, 1, DEFAULT, 'la_country_FIN', 'FIN', 'FI'); +INSERT INTO StdDestinations VALUES (74, 1, DEFAULT, 'la_country_FRA', 'FRA', 'FR'); +INSERT INTO StdDestinations VALUES (75, 1, DEFAULT, 'la_country_FXX', 'FXX', 'FX'); +INSERT INTO StdDestinations VALUES (76, 1, DEFAULT, 'la_country_GUF', 'GUF', 'GF'); +INSERT INTO StdDestinations VALUES (77, 1, DEFAULT, 'la_country_PYF', 'PYF', 'PF'); +INSERT INTO StdDestinations VALUES (78, 1, DEFAULT, 'la_country_ATF', 'ATF', 'TF'); +INSERT INTO StdDestinations VALUES (79, 1, DEFAULT, 'la_country_GAB', 'GAB', 'GA'); +INSERT INTO StdDestinations VALUES (80, 1, DEFAULT, 'la_country_GMB', 'GMB', 'GM'); +INSERT INTO StdDestinations VALUES (81, 1, DEFAULT, 'la_country_GEO', 'GEO', 'GE'); +INSERT INTO StdDestinations VALUES (82, 1, DEFAULT, 'la_country_DEU', 'DEU', 'DE'); +INSERT INTO StdDestinations VALUES (83, 1, DEFAULT, 'la_country_GHA', 'GHA', 'GH'); +INSERT INTO StdDestinations VALUES (84, 1, DEFAULT, 'la_country_GIB', 'GIB', 'GI'); +INSERT INTO StdDestinations VALUES (85, 1, DEFAULT, 'la_country_GRC', 'GRC', 'GR'); +INSERT INTO StdDestinations VALUES (86, 1, DEFAULT, 'la_country_GRL', 'GRL', 'GL'); +INSERT INTO StdDestinations VALUES (87, 1, DEFAULT, 'la_country_GRD', 'GRD', 'GD'); +INSERT INTO StdDestinations VALUES (88, 1, DEFAULT, 'la_country_GLP', 'GLP', 'GP'); +INSERT INTO StdDestinations VALUES (89, 1, DEFAULT, 'la_country_GUM', 'GUM', 'GU'); +INSERT INTO StdDestinations VALUES (90, 1, DEFAULT, 'la_country_GTM', 'GTM', 'GT'); +INSERT INTO StdDestinations VALUES (91, 1, DEFAULT, 'la_country_GIN', 'GIN', 'GN'); +INSERT INTO StdDestinations VALUES (92, 1, DEFAULT, 'la_country_GNB', 'GNB', 'GW'); +INSERT INTO StdDestinations VALUES (93, 1, DEFAULT, 'la_country_GUY', 'GUY', 'GY'); +INSERT INTO StdDestinations VALUES (94, 1, DEFAULT, 'la_country_HTI', 'HTI', 'HT'); +INSERT INTO StdDestinations VALUES (95, 1, DEFAULT, 'la_country_HMD', 'HMD', 'HM'); +INSERT INTO StdDestinations VALUES (96, 1, DEFAULT, 'la_country_HND', 'HND', 'HN'); +INSERT INTO StdDestinations VALUES (97, 1, DEFAULT, 'la_country_HKG', 'HKG', 'HK'); +INSERT INTO StdDestinations VALUES (98, 1, DEFAULT, 'la_country_HUN', 'HUN', 'HU'); +INSERT INTO StdDestinations VALUES (99, 1, DEFAULT, 'la_country_ISL', 'ISL', 'IS'); +INSERT INTO StdDestinations VALUES (100, 1, DEFAULT, 'la_country_IND', 'IND', 'IN'); +INSERT INTO StdDestinations VALUES (101, 1, DEFAULT, 'la_country_IDN', 'IDN', 'ID'); +INSERT INTO StdDestinations VALUES (102, 1, DEFAULT, 'la_country_IRN', 'IRN', 'IR'); +INSERT INTO StdDestinations VALUES (103, 1, DEFAULT, 'la_country_IRQ', 'IRQ', 'IQ'); +INSERT INTO StdDestinations VALUES (104, 1, DEFAULT, 'la_country_IRL', 'IRL', 'IE'); +INSERT INTO StdDestinations VALUES (105, 1, DEFAULT, 'la_country_ISR', 'ISR', 'IL'); +INSERT INTO StdDestinations VALUES (106, 1, DEFAULT, 'la_country_ITA', 'ITA', 'IT'); +INSERT INTO StdDestinations VALUES (107, 1, DEFAULT, 'la_country_JAM', 'JAM', 'JM'); +INSERT INTO StdDestinations VALUES (108, 1, DEFAULT, 'la_country_JPN', 'JPN', 'JP'); +INSERT INTO StdDestinations VALUES (109, 1, DEFAULT, 'la_country_JOR', 'JOR', 'JO'); +INSERT INTO StdDestinations VALUES (110, 1, DEFAULT, 'la_country_KAZ', 'KAZ', 'KZ'); +INSERT INTO StdDestinations VALUES (111, 1, DEFAULT, 'la_country_KEN', 'KEN', 'KE'); +INSERT INTO StdDestinations VALUES (112, 1, DEFAULT, 'la_country_KIR', 'KIR', 'KI'); +INSERT INTO StdDestinations VALUES (113, 1, DEFAULT, 'la_country_PRK', 'PRK', 'KP'); +INSERT INTO StdDestinations VALUES (114, 1, DEFAULT, 'la_country_KOR', 'KOR', 'KR'); +INSERT INTO StdDestinations VALUES (115, 1, DEFAULT, 'la_country_KWT', 'KWT', 'KW'); +INSERT INTO StdDestinations VALUES (116, 1, DEFAULT, 'la_country_KGZ', 'KGZ', 'KG'); +INSERT INTO StdDestinations VALUES (117, 1, DEFAULT, 'la_country_LAO', 'LAO', 'LA'); +INSERT INTO StdDestinations VALUES (118, 1, DEFAULT, 'la_country_LVA', 'LVA', 'LV'); +INSERT INTO StdDestinations VALUES (119, 1, DEFAULT, 'la_country_LBN', 'LBN', 'LB'); +INSERT INTO StdDestinations VALUES (120, 1, DEFAULT, 'la_country_LSO', 'LSO', 'LS'); +INSERT INTO StdDestinations VALUES (121, 1, DEFAULT, 'la_country_LBR', 'LBR', 'LR'); +INSERT INTO StdDestinations VALUES (122, 1, DEFAULT, 'la_country_LBY', 'LBY', 'LY'); +INSERT INTO StdDestinations VALUES (123, 1, DEFAULT, 'la_country_LIE', 'LIE', 'LI'); +INSERT INTO StdDestinations VALUES (124, 1, DEFAULT, 'la_country_LTU', 'LTU', 'LT'); +INSERT INTO StdDestinations VALUES (125, 1, DEFAULT, 'la_country_LUX', 'LUX', 'LU'); +INSERT INTO StdDestinations VALUES (126, 1, DEFAULT, 'la_country_MAC', 'MAC', 'MO'); +INSERT INTO StdDestinations VALUES (127, 1, DEFAULT, 'la_country_MKD', 'MKD', 'MK'); +INSERT INTO StdDestinations VALUES (128, 1, DEFAULT, 'la_country_MDG', 'MDG', 'MG'); +INSERT INTO StdDestinations VALUES (129, 1, DEFAULT, 'la_country_MWI', 'MWI', 'MW'); +INSERT INTO StdDestinations VALUES (130, 1, DEFAULT, 'la_country_MYS', 'MYS', 'MY'); +INSERT INTO StdDestinations VALUES (131, 1, DEFAULT, 'la_country_MDV', 'MDV', 'MV'); +INSERT INTO StdDestinations VALUES (132, 1, DEFAULT, 'la_country_MLI', 'MLI', 'ML'); +INSERT INTO StdDestinations VALUES (133, 1, DEFAULT, 'la_country_MLT', 'MLT', 'MT'); +INSERT INTO StdDestinations VALUES (134, 1, DEFAULT, 'la_country_MHL', 'MHL', 'MH'); +INSERT INTO StdDestinations VALUES (135, 1, DEFAULT, 'la_country_MTQ', 'MTQ', 'MQ'); +INSERT INTO StdDestinations VALUES (136, 1, DEFAULT, 'la_country_MRT', 'MRT', 'MR'); +INSERT INTO StdDestinations VALUES (137, 1, DEFAULT, 'la_country_MUS', 'MUS', 'MU'); +INSERT INTO StdDestinations VALUES (138, 1, DEFAULT, 'la_country_MYT', 'MYT', 'YT'); +INSERT INTO StdDestinations VALUES (139, 1, DEFAULT, 'la_country_MEX', 'MEX', 'MX'); +INSERT INTO StdDestinations VALUES (140, 1, DEFAULT, 'la_country_FSM', 'FSM', 'FM'); +INSERT INTO StdDestinations VALUES (141, 1, DEFAULT, 'la_country_MDA', 'MDA', 'MD'); +INSERT INTO StdDestinations VALUES (142, 1, DEFAULT, 'la_country_MCO', 'MCO', 'MC'); +INSERT INTO StdDestinations VALUES (143, 1, DEFAULT, 'la_country_MNG', 'MNG', 'MN'); +INSERT INTO StdDestinations VALUES (144, 1, DEFAULT, 'la_country_MSR', 'MSR', 'MS'); +INSERT INTO StdDestinations VALUES (145, 1, DEFAULT, 'la_country_MAR', 'MAR', 'MA'); +INSERT INTO StdDestinations VALUES (146, 1, DEFAULT, 'la_country_MOZ', 'MOZ', 'MZ'); +INSERT INTO StdDestinations VALUES (147, 1, DEFAULT, 'la_country_MMR', 'MMR', 'MM'); +INSERT INTO StdDestinations VALUES (148, 1, DEFAULT, 'la_country_NAM', 'NAM', 'NA'); +INSERT INTO StdDestinations VALUES (149, 1, DEFAULT, 'la_country_NRU', 'NRU', 'NR'); +INSERT INTO StdDestinations VALUES (150, 1, DEFAULT, 'la_country_NPL', 'NPL', 'NP'); +INSERT INTO StdDestinations VALUES (151, 1, DEFAULT, 'la_country_NLD', 'NLD', 'NL'); +INSERT INTO StdDestinations VALUES (152, 1, DEFAULT, 'la_country_ANT', 'ANT', 'AN'); +INSERT INTO StdDestinations VALUES (153, 1, DEFAULT, 'la_country_NCL', 'NCL', 'NC'); +INSERT INTO StdDestinations VALUES (154, 1, DEFAULT, 'la_country_NZL', 'NZL', 'NZ'); +INSERT INTO StdDestinations VALUES (155, 1, DEFAULT, 'la_country_NIC', 'NIC', 'NI'); +INSERT INTO StdDestinations VALUES (156, 1, DEFAULT, 'la_country_NER', 'NER', 'NE'); +INSERT INTO StdDestinations VALUES (157, 1, DEFAULT, 'la_country_NGA', 'NGA', 'NG'); +INSERT INTO StdDestinations VALUES (158, 1, DEFAULT, 'la_country_NIU', 'NIU', 'NU'); +INSERT INTO StdDestinations VALUES (159, 1, DEFAULT, 'la_country_NFK', 'NFK', 'NF'); +INSERT INTO StdDestinations VALUES (160, 1, DEFAULT, 'la_country_MNP', 'MNP', 'MP'); +INSERT INTO StdDestinations VALUES (161, 1, DEFAULT, 'la_country_NOR', 'NOR', 'NO'); +INSERT INTO StdDestinations VALUES (162, 1, DEFAULT, 'la_country_OMN', 'OMN', 'OM'); +INSERT INTO StdDestinations VALUES (163, 1, DEFAULT, 'la_country_PAK', 'PAK', 'PK'); +INSERT INTO StdDestinations VALUES (164, 1, DEFAULT, 'la_country_PLW', 'PLW', 'PW'); +INSERT INTO StdDestinations VALUES (165, 1, DEFAULT, 'la_country_PSE', 'PSE', 'PS'); +INSERT INTO StdDestinations VALUES (166, 1, DEFAULT, 'la_country_PAN', 'PAN', 'PA'); +INSERT INTO StdDestinations VALUES (167, 1, DEFAULT, 'la_country_PNG', 'PNG', 'PG'); +INSERT INTO StdDestinations VALUES (168, 1, DEFAULT, 'la_country_PRY', 'PRY', 'PY'); +INSERT INTO StdDestinations VALUES (169, 1, DEFAULT, 'la_country_PER', 'PER', 'PE'); +INSERT INTO StdDestinations VALUES (170, 1, DEFAULT, 'la_country_PHL', 'PHL', 'PH'); +INSERT INTO StdDestinations VALUES (171, 1, DEFAULT, 'la_country_PCN', 'PCN', 'PN'); +INSERT INTO StdDestinations VALUES (172, 1, DEFAULT, 'la_country_POL', 'POL', 'PL'); +INSERT INTO StdDestinations VALUES (173, 1, DEFAULT, 'la_country_PRT', 'PRT', 'PT'); +INSERT INTO StdDestinations VALUES (174, 1, DEFAULT, 'la_country_PRI', 'PRI', 'PR'); +INSERT INTO StdDestinations VALUES (175, 1, DEFAULT, 'la_country_QAT', 'QAT', 'QA'); +INSERT INTO StdDestinations VALUES (176, 1, DEFAULT, 'la_country_REU', 'REU', 'RE'); +INSERT INTO StdDestinations VALUES (177, 1, DEFAULT, 'la_country_ROU', 'ROU', 'RO'); +INSERT INTO StdDestinations VALUES (178, 1, DEFAULT, 'la_country_RUS', 'RUS', 'RU'); +INSERT INTO StdDestinations VALUES (179, 1, DEFAULT, 'la_country_RWA', 'RWA', 'RW'); +INSERT INTO StdDestinations VALUES (180, 1, DEFAULT, 'la_country_KNA', 'KNA', 'KN'); +INSERT INTO StdDestinations VALUES (181, 1, DEFAULT, 'la_country_LCA', 'LCA', 'LC'); +INSERT INTO StdDestinations VALUES (182, 1, DEFAULT, 'la_country_VCT', 'VCT', 'VC'); +INSERT INTO StdDestinations VALUES (183, 1, DEFAULT, 'la_country_WSM', 'WSM', 'WS'); +INSERT INTO StdDestinations VALUES (184, 1, DEFAULT, 'la_country_SMR', 'SMR', 'SM'); +INSERT INTO StdDestinations VALUES (185, 1, DEFAULT, 'la_country_STP', 'STP', 'ST'); +INSERT INTO StdDestinations VALUES (186, 1, DEFAULT, 'la_country_SAU', 'SAU', 'SA'); +INSERT INTO StdDestinations VALUES (187, 1, DEFAULT, 'la_country_SEN', 'SEN', 'SN'); +INSERT INTO StdDestinations VALUES (188, 1, DEFAULT, 'la_country_SYC', 'SYC', 'SC'); +INSERT INTO StdDestinations VALUES (189, 1, DEFAULT, 'la_country_SLE', 'SLE', 'SL'); +INSERT INTO StdDestinations VALUES (190, 1, DEFAULT, 'la_country_SGP', 'SGP', 'SG'); +INSERT INTO StdDestinations VALUES (191, 1, DEFAULT, 'la_country_SVK', 'SVK', 'SK'); +INSERT INTO StdDestinations VALUES (192, 1, DEFAULT, 'la_country_SVN', 'SVN', 'SI'); +INSERT INTO StdDestinations VALUES (193, 1, DEFAULT, 'la_country_SLB', 'SLB', 'SB'); +INSERT INTO StdDestinations VALUES (194, 1, DEFAULT, 'la_country_SOM', 'SOM', 'SO'); +INSERT INTO StdDestinations VALUES (195, 1, DEFAULT, 'la_country_ZAF', 'ZAF', 'ZA'); +INSERT INTO StdDestinations VALUES (196, 1, DEFAULT, 'la_country_SGS', 'SGS', 'GS'); +INSERT INTO StdDestinations VALUES (197, 1, DEFAULT, 'la_country_ESP', 'ESP', 'ES'); +INSERT INTO StdDestinations VALUES (198, 1, DEFAULT, 'la_country_LKA', 'LKA', 'LK'); +INSERT INTO StdDestinations VALUES (199, 1, DEFAULT, 'la_country_SHN', 'SHN', 'SH'); +INSERT INTO StdDestinations VALUES (200, 1, DEFAULT, 'la_country_SPM', 'SPM', 'PM'); +INSERT INTO StdDestinations VALUES (201, 1, DEFAULT, 'la_country_SDN', 'SDN', 'SD'); +INSERT INTO StdDestinations VALUES (202, 1, DEFAULT, 'la_country_SUR', 'SUR', 'SR'); +INSERT INTO StdDestinations VALUES (203, 1, DEFAULT, 'la_country_SJM', 'SJM', 'SJ'); +INSERT INTO StdDestinations VALUES (204, 1, DEFAULT, 'la_country_SWZ', 'SWZ', 'SZ'); +INSERT INTO StdDestinations VALUES (205, 1, DEFAULT, 'la_country_SWE', 'SWE', 'SE'); +INSERT INTO StdDestinations VALUES (206, 1, DEFAULT, 'la_country_CHE', 'CHE', 'CH'); +INSERT INTO StdDestinations VALUES (207, 1, DEFAULT, 'la_country_SYR', 'SYR', 'SY'); +INSERT INTO StdDestinations VALUES (208, 1, DEFAULT, 'la_country_TWN', 'TWN', 'TW'); +INSERT INTO StdDestinations VALUES (209, 1, DEFAULT, 'la_country_TJK', 'TJK', 'TJ'); +INSERT INTO StdDestinations VALUES (210, 1, DEFAULT, 'la_country_TZA', 'TZA', 'TZ'); +INSERT INTO StdDestinations VALUES (211, 1, DEFAULT, 'la_country_THA', 'THA', 'TH'); +INSERT INTO StdDestinations VALUES (212, 1, DEFAULT, 'la_country_TGO', 'TGO', 'TG'); +INSERT INTO StdDestinations VALUES (213, 1, DEFAULT, 'la_country_TKL', 'TKL', 'TK'); +INSERT INTO StdDestinations VALUES (214, 1, DEFAULT, 'la_country_TON', 'TON', 'TO'); +INSERT INTO StdDestinations VALUES (215, 1, DEFAULT, 'la_country_TTO', 'TTO', 'TT'); +INSERT INTO StdDestinations VALUES (216, 1, DEFAULT, 'la_country_TUN', 'TUN', 'TN'); +INSERT INTO StdDestinations VALUES (217, 1, DEFAULT, 'la_country_TUR', 'TUR', 'TR'); +INSERT INTO StdDestinations VALUES (218, 1, DEFAULT, 'la_country_TKM', 'TKM', 'TM'); +INSERT INTO StdDestinations VALUES (219, 1, DEFAULT, 'la_country_TCA', 'TCA', 'TC'); +INSERT INTO StdDestinations VALUES (220, 1, DEFAULT, 'la_country_TUV', 'TUV', 'TV'); +INSERT INTO StdDestinations VALUES (221, 1, DEFAULT, 'la_country_UGA', 'UGA', 'UG'); +INSERT INTO StdDestinations VALUES (222, 1, DEFAULT, 'la_country_UKR', 'UKR', 'UA'); +INSERT INTO StdDestinations VALUES (223, 1, DEFAULT, 'la_country_ARE', 'ARE', 'AE'); +INSERT INTO StdDestinations VALUES (224, 1, DEFAULT, 'la_country_GBR', 'GBR', 'GB'); +INSERT INTO StdDestinations VALUES (225, 1, DEFAULT, 'la_country_USA', 'USA', 'US'); +INSERT INTO StdDestinations VALUES (226, 1, DEFAULT, 'la_country_UMI', 'UMI', 'UM'); +INSERT INTO StdDestinations VALUES (227, 1, DEFAULT, 'la_country_URY', 'URY', 'UY'); +INSERT INTO StdDestinations VALUES (228, 1, DEFAULT, 'la_country_UZB', 'UZB', 'UZ'); +INSERT INTO StdDestinations VALUES (229, 1, DEFAULT, 'la_country_VUT', 'VUT', 'VU'); +INSERT INTO StdDestinations VALUES (230, 1, DEFAULT, 'la_country_VAT', 'VAT', 'VA'); +INSERT INTO StdDestinations VALUES (231, 1, DEFAULT, 'la_country_VEN', 'VEN', 'VE'); +INSERT INTO StdDestinations VALUES (232, 1, DEFAULT, 'la_country_VNM', 'VNM', 'VN'); +INSERT INTO StdDestinations VALUES (233, 1, DEFAULT, 'la_country_VGB', 'VGB', 'VG'); +INSERT INTO StdDestinations VALUES (234, 1, DEFAULT, 'la_country_VIR', 'VIR', 'VI'); +INSERT INTO StdDestinations VALUES (235, 1, DEFAULT, 'la_country_WLF', 'WLF', 'WF'); +INSERT INTO StdDestinations VALUES (236, 1, DEFAULT, 'la_country_ESH', 'ESH', 'EH'); +INSERT INTO StdDestinations VALUES (237, 1, DEFAULT, 'la_country_YEM', 'YEM', 'YE'); +INSERT INTO StdDestinations VALUES (238, 1, DEFAULT, 'la_country_YUG', 'YUG', 'YU'); +INSERT INTO StdDestinations VALUES (239, 1, DEFAULT, 'la_country_ZMB', 'ZMB', 'ZM'); +INSERT INTO StdDestinations VALUES (240, 1, DEFAULT, 'la_country_ZWE', 'ZWE', 'ZW'); +INSERT INTO StdDestinations VALUES (370, 2, 38, 'la_state_YT', 'YT', DEFAULT); +INSERT INTO StdDestinations VALUES (369, 2, 38, 'la_state_SK', 'SK', DEFAULT); +INSERT INTO StdDestinations VALUES (368, 2, 38, 'la_state_QC', 'QC', DEFAULT); +INSERT INTO StdDestinations VALUES (367, 2, 38, 'la_state_PE', 'PE', DEFAULT); +INSERT INTO StdDestinations VALUES (366, 2, 38, 'la_state_ON', 'ON', DEFAULT); +INSERT INTO StdDestinations VALUES (365, 2, 38, 'la_state_NU', 'NU', DEFAULT); +INSERT INTO StdDestinations VALUES (364, 2, 38, 'la_state_NS', 'NS', DEFAULT); +INSERT INTO StdDestinations VALUES (363, 2, 38, 'la_state_NT', 'NT', DEFAULT); +INSERT INTO StdDestinations VALUES (362, 2, 38, 'la_state_NL', 'NL', DEFAULT); +INSERT INTO StdDestinations VALUES (361, 2, 38, 'la_state_NB', 'NB', DEFAULT); +INSERT INTO StdDestinations VALUES (360, 2, 38, 'la_state_MB', 'MB', DEFAULT); +INSERT INTO StdDestinations VALUES (359, 2, 38, 'la_state_BC', 'BC', DEFAULT); +INSERT INTO StdDestinations VALUES (358, 2, 38, 'la_state_AB', 'AB', DEFAULT); +INSERT INTO StdDestinations VALUES (357, 2, 225, 'la_state_DC', 'DC', DEFAULT); +INSERT INTO StdDestinations VALUES (356, 2, 225, 'la_state_WY', 'WY', DEFAULT); +INSERT INTO StdDestinations VALUES (355, 2, 225, 'la_state_WI', 'WI', DEFAULT); +INSERT INTO StdDestinations VALUES (354, 2, 225, 'la_state_WV', 'WV', DEFAULT); +INSERT INTO StdDestinations VALUES (353, 2, 225, 'la_state_WA', 'WA', DEFAULT); +INSERT INTO StdDestinations VALUES (352, 2, 225, 'la_state_VA', 'VA', DEFAULT); +INSERT INTO StdDestinations VALUES (351, 2, 225, 'la_state_VT', 'VT', DEFAULT); +INSERT INTO StdDestinations VALUES (350, 2, 225, 'la_state_UT', 'UT', DEFAULT); +INSERT INTO StdDestinations VALUES (349, 2, 225, 'la_state_TX', 'TX', DEFAULT); +INSERT INTO StdDestinations VALUES (348, 2, 225, 'la_state_TN', 'TN', DEFAULT); +INSERT INTO StdDestinations VALUES (347, 2, 225, 'la_state_SD', 'SD', DEFAULT); +INSERT INTO StdDestinations VALUES (346, 2, 225, 'la_state_SC', 'SC', DEFAULT); +INSERT INTO StdDestinations VALUES (345, 2, 225, 'la_state_RI', 'RI', DEFAULT); +INSERT INTO StdDestinations VALUES (344, 2, 225, 'la_state_PR', 'PR', DEFAULT); +INSERT INTO StdDestinations VALUES (343, 2, 225, 'la_state_PA', 'PA', DEFAULT); +INSERT INTO StdDestinations VALUES (342, 2, 225, 'la_state_OR', 'OR', DEFAULT); +INSERT INTO StdDestinations VALUES (341, 2, 225, 'la_state_OK', 'OK', DEFAULT); +INSERT INTO StdDestinations VALUES (340, 2, 225, 'la_state_OH', 'OH', DEFAULT); +INSERT INTO StdDestinations VALUES (339, 2, 225, 'la_state_ND', 'ND', DEFAULT); +INSERT INTO StdDestinations VALUES (338, 2, 225, 'la_state_NC', 'NC', DEFAULT); +INSERT INTO StdDestinations VALUES (337, 2, 225, 'la_state_NY', 'NY', DEFAULT); +INSERT INTO StdDestinations VALUES (336, 2, 225, 'la_state_NM', 'NM', DEFAULT); +INSERT INTO StdDestinations VALUES (335, 2, 225, 'la_state_NJ', 'NJ', DEFAULT); +INSERT INTO StdDestinations VALUES (334, 2, 225, 'la_state_NH', 'NH', DEFAULT); +INSERT INTO StdDestinations VALUES (333, 2, 225, 'la_state_NV', 'NV', DEFAULT); +INSERT INTO StdDestinations VALUES (332, 2, 225, 'la_state_NE', 'NE', DEFAULT); +INSERT INTO StdDestinations VALUES (331, 2, 225, 'la_state_MT', 'MT', DEFAULT); +INSERT INTO StdDestinations VALUES (330, 2, 225, 'la_state_MO', 'MO', DEFAULT); +INSERT INTO StdDestinations VALUES (329, 2, 225, 'la_state_MS', 'MS', DEFAULT); +INSERT INTO StdDestinations VALUES (328, 2, 225, 'la_state_MN', 'MN', DEFAULT); +INSERT INTO StdDestinations VALUES (327, 2, 225, 'la_state_MI', 'MI', DEFAULT); +INSERT INTO StdDestinations VALUES (326, 2, 225, 'la_state_MA', 'MA', DEFAULT); +INSERT INTO StdDestinations VALUES (325, 2, 225, 'la_state_MD', 'MD', DEFAULT); +INSERT INTO StdDestinations VALUES (324, 2, 225, 'la_state_ME', 'ME', DEFAULT); +INSERT INTO StdDestinations VALUES (323, 2, 225, 'la_state_LA', 'LA', DEFAULT); +INSERT INTO StdDestinations VALUES (322, 2, 225, 'la_state_KY', 'KY', DEFAULT); +INSERT INTO StdDestinations VALUES (321, 2, 225, 'la_state_KS', 'KS', DEFAULT); +INSERT INTO StdDestinations VALUES (320, 2, 225, 'la_state_IA', 'IA', DEFAULT); +INSERT INTO StdDestinations VALUES (319, 2, 225, 'la_state_IN', 'IN', DEFAULT); +INSERT INTO StdDestinations VALUES (318, 2, 225, 'la_state_IL', 'IL', DEFAULT); +INSERT INTO StdDestinations VALUES (317, 2, 225, 'la_state_ID', 'ID', DEFAULT); +INSERT INTO StdDestinations VALUES (316, 2, 225, 'la_state_HI', 'HI', DEFAULT); +INSERT INTO StdDestinations VALUES (315, 2, 225, 'la_state_GA', 'GA', DEFAULT); +INSERT INTO StdDestinations VALUES (314, 2, 225, 'la_state_FL', 'FL', DEFAULT); +INSERT INTO StdDestinations VALUES (313, 2, 225, 'la_state_DE', 'DE', DEFAULT); +INSERT INTO StdDestinations VALUES (312, 2, 225, 'la_state_CT', 'CT', DEFAULT); +INSERT INTO StdDestinations VALUES (311, 2, 225, 'la_state_CO', 'CO', DEFAULT); +INSERT INTO StdDestinations VALUES (310, 2, 225, 'la_state_CA', 'CA', DEFAULT); +INSERT INTO StdDestinations VALUES (309, 2, 225, 'la_state_AR', 'AR', DEFAULT); +INSERT INTO StdDestinations VALUES (308, 2, 225, 'la_state_AZ', 'AZ', DEFAULT); +INSERT INTO StdDestinations VALUES (307, 2, 225, 'la_state_AK', 'AK', DEFAULT); +INSERT INTO StdDestinations VALUES (306, 2, 225, 'la_state_AL', 'AL', DEFAULT); -INSERT INTO PermissionConfig (PermissionName, Description, ErrorMessage, ModuleId) VALUES ('CATEGORY.VIEW', 'lu_PermName_Category.View_desc', 'lu_PermName_Category.View_error', 'In-Portal'); -INSERT INTO PermCache (CategoryId, PermId, ACL) VALUES (0, 1, '11,12,13,14,15'); +INSERT INTO PermissionConfig VALUES (DEFAULT, 'CATEGORY.VIEW', 'lu_PermName_Category.View_desc', 'lu_PermName_Category.View_error', 'In-Portal'); +INSERT INTO PermCache VALUES (DEFAULT, 0, 1, '11,12,13,14,15'); -INSERT INTO Permissions VALUES (0, 'LOGIN', 13, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'LOGIN', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'ADMIN', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:root.view', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:system.view', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'LOGIN', 13, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'LOGIN', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'ADMIN', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:user_list.view', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:user_list.add', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:user_list.edit', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:user_list.delete', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:root.view', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:system.view', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:configure_lang.view', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:configure_lang.add', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:configure_lang.edit', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:configure_lang.delete', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_list.view', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_list.add', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_list.edit', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_list.delete', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'CATEGORY.VIEW', 11, 1, 0, 0); -INSERT INTO Permissions VALUES (0, 'CATEGORY.ADD', 11, 1, 0, 0); -INSERT INTO Permissions VALUES (0, 'CATEGORY.DELETE', 11, 1, 0, 0); -INSERT INTO Permissions VALUES (0, 'CATEGORY.MODIFY', 11, 1, 0, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.view', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.add', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.edit', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.delete', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (0, 'in-portal:service.view', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.VIEW', 11, 1, 0, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.ADD', 11, 1, 0, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.DELETE', 11, 1, 0, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'CATEGORY.MODIFY', 11, 1, 0, 0); -INSERT INTO Modules (Name, Path, Var, Version, Loaded, LoadOrder, TemplatePath, RootCat, BuildDate) VALUES ('Core', 'core/', 'adm', '0.0.0', 1, 1, '', 0, '0'); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:service.view', 11, 1, 1, 0); + +INSERT INTO Modules VALUES ('Core', 'core/', 'adm', DEFAULT, 1, 1, '', 0, '0'); Index: trunk/core/units/users/users_tag_processor.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 7391) +++ trunk/core/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 7855) @@ -184,7 +184,8 @@ return $submit_value; } - return $this->Application->GetVar('save_username'); // from cookie + $username = $this->Application->GetVar('save_username'); // from cookie + return $username === false ? '' : $username; } } Index: trunk/admin/editor/cmseditor/editor/dialog/fck_replace.html =================================================================== diff -u -r7363 -r7855 --- trunk/admin/editor/cmseditor/editor/dialog/fck_replace.html (.../fck_replace.html) (revision 7363) +++ trunk/admin/editor/cmseditor/editor/dialog/fck_replace.html (.../fck_replace.html) (revision 7855) @@ -96,14 +96,14 @@ } - + - - @@ -113,7 +113,7 @@ - Index: trunk/core/admin_templates/js/toolbar.js =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/js/toolbar.js (.../toolbar.js) (revision 7635) +++ trunk/core/admin_templates/js/toolbar.js (.../toolbar.js) (revision 7855) @@ -63,7 +63,7 @@ ToolBarButton.prototype.GetHTML = function() { var add_style = this.ToolBar.ButtonStyle ? 'style="'+this.ToolBar.ButtonStyle+'"' : ''; var o = '
' - o += ''; + o += ''; if (this.ToolBar.UseLabels) o += '
'+this.Label; o += '
' return o; @@ -81,6 +81,12 @@ this.Container = document.getElementById(this.GetToolID('div')) ? document.getElementById(this.GetToolID('div')) : false; this.Container.btn = this; img.btn = this; + + this.MouseOverImg = new Image(); + this.MouseOverImg.src = this.IconsPath() + this.ToolBar.IconPrefix + this.Title + '_f2.gif'; + this.MouseOutImg = new Image(); + this.MouseOutImg.src = this.IconsPath() + this.ToolBar.IconPrefix + this.Title + '.gif'; + this.SetOnMouseOver(); this.SetOnMouseOut(); this.SetOnClick(); @@ -132,14 +138,14 @@ ToolBarButton.prototype.SetOnMouseOver = function() { this.Container.onmouseover = function() { - this.btn.imgObject.src = this.btn.IconsPath() + this.btn.ToolBar.IconPrefix + this.btn.Title + '_f2.gif'; + this.btn.imgObject.src = this.btn.MouseOverImg.src; this.className = 'toolbar-button-over'; }; } ToolBarButton.prototype.SetOnMouseOut = function() { this.Container.onmouseout = function() { - this.btn.imgObject.src = this.btn.IconsPath() + this.btn.ToolBar.IconPrefix + this.btn.Title + '.gif'; + this.btn.imgObject.src = this.btn.MouseOutImg.src; this.className = 'toolbar-button'; }; } @@ -188,7 +194,12 @@ ToolBarButton.prototype.Disable = function() { if ( !this.Enabled ) return; - this.imgObject.src = this.IconsPath() + this.ToolBar.IconPrefix + this.Title + '_f3.gif'; + + if (typeof(this.DisabledImg) == 'undefined') { + this.DisabledImg = new Image(); + this.DisabledImg.src = this.IconsPath() + this.ToolBar.IconPrefix + this.Title + '_f3.gif'; + } + this.imgObject.src = this.DisabledImg.src; this.Container.onmouseover = null; this.Container.onmouseout = null; this.Container.onclick = null; @@ -199,7 +210,7 @@ ToolBarButton.prototype.Enable = function() { if (this.Enabled) return; - this.imgObject.src = this.IconsPath() + this.ToolBar.IconPrefix + this.Title + '.gif'; + this.imgObject.src = this.MouseOutImg.src; this.SetOnMouseOver(); this.SetOnMouseOut(); this.SetOnClick(); @@ -268,6 +279,7 @@ { this.Module = $module ? $module : 'core'; this.IconPrefix = icon_prefix ? icon_prefix : 'tool_'; + this.IconSize = {w:32,h:32}; this.Buttons = new Array(); this.UseLabels = typeof($use_toolbarlabels) != 'undefined' ? $use_toolbarlabels : false; } Index: trunk/core/kernel/utility/debugger/debugger.js =================================================================== diff -u -r7702 -r7855 --- trunk/core/kernel/utility/debugger/debugger.js (.../debugger.js) (revision 7702) +++ trunk/core/kernel/utility/debugger/debugger.js (.../debugger.js) (revision 7855) @@ -243,14 +243,18 @@ function GetWindowHeight() { var currWinHeight; + +// if (document.body.clientHeight) { +// currWinHeight = document.body.clientHeight; + if (window.innerHeight) {//FireFox with correction for status bar at bottom of window - currWinHeight = window.innerHeight - 10; + currWinHeight = window.innerHeight; } else if (document.documentElement.clientHeight) {//IE 7 with correction for address bar - currWinHeight = document.documentElement.clientHeight - 10; + currWinHeight = document.documentElement.clientHeight; } else if (document.body.offsetHeight) {//IE 4+ - currWinHeight = document.body.offsetHeight - 5 + 15 - 10; // + 10 + currWinHeight = document.body.offsetHeight + 10; } - return currWinHeight; + return currWinHeight - 10; // 10 - horizontal scrollbar height } Index: trunk/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php =================================================================== diff -u -r7821 -r7855 --- trunk/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php (.../commands.php) (revision 7821) +++ trunk/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php (.../commands.php) (revision 7855) @@ -46,16 +46,11 @@ echo "" ; } -function ValidateSID() +function ValidateAdminSid() { - global $Config; - if (isset($Config['K4Mode'])) { - return true; - } - else { $conn = GetADODbConnection(); $session_time = GetConfigValue('ses_timeout')+0; - $sid = $_COOKIE['admin_sid']; + $sid = ($_COOKIE['admin_sid'])?$_COOKIE['admin_sid']:$_COOKIE['sid']; $sql = "SELECT count( sd.sid ) FROM session_data AS sd LEFT JOIN sessions AS s ON s.sid = sd.sid @@ -65,9 +60,32 @@ AND s.expire + '".$session_time."' > unix_timestamp()"; if ($conn->GetOne($sql) > 0) { return true; - } else { - echo "SESSION Validation FALSE"; +} +function ValidateUserSid() +{ + $conn = GetADODbConnection(); + $session_time = GetConfigValue('ses_timeout')+0; + $sid = $_COOKIE['sid']; + $sql = "SELECT count( sd.sid ) + FROM sessions + sid = '".$sid."' + AND expire + '".$session_time."' > unix_timestamp()"; } + if ($conn->GetOne($sql) > 0) + return true; +} +function ValidateSID() +{ global $Config; + if (isset($Config['K4Mode'])) + return true; + else { + if ($Config['validate_type'] == 'user') + return ValidateUserSid(); + elseif ($Config['validate_type'] == 'admin') + return ValidateAdminSid(); + else + echo "SESSION Validation FALSE"; + } return false; } @@ -94,14 +112,21 @@ if ($application->isModuleEnabled('Proj-CMS')) { $lang = $application->GetVar('m_lang'); - $query = 'SELECT CategoryId, NamedParentPath, l'.$lang.'_Title AS Title FROM '.TABLE_PREFIX.'Category ORDER By l'.$lang.'_Title'; - $pages = $application->Conn->Query($query); + $st =& $application->recallObject('st.-dummy'); + $st_options = $application->getUnitOption('st'.'.ParentId', 'Fields'); + $pages = $st_options['options']; + $page_ids = array_keys($pages); + $tpls = $application->Conn->GetCol('SELECT NamedParentPath, CategoryId FROM '.TABLE_PREFIX.'Category WHERE CategoryId IN ('.join(',', $page_ids).')', 'CategoryId'); +// $query = 'SELECT CategoryId, NamedParentPath, l'.$lang.'_Name AS Title FROM '.TABLE_PREFIX.'Category ORDER By l'.$lang.'_Title'; +// $pages = $application->Conn->Query($query); + $res = ''; - foreach ($pages as $page) { - $page_path = preg_replace('/^content\//', '', strtolower($page['NamedParentPath']).'.html'); - $title = $page['Title'].' ('.$page_path.')'; - $res .= ''; + foreach ($pages as $id => $title) { + $page_path = preg_replace('/^content\//', '', strtolower($tpls[$id]).'.html'); + $title = $title.' ('.$page_path.')'; + $real_url = $application->HREF($tpls[$id], '', null, 'index.php'); + $res .= ''; } } else { @@ -129,7 +154,6 @@ if ($rs && !$rs->EOF) { $default_lang_prefix = $rs->fields['value']; - $lang_prefix = GetLangFromSid(); } $query = "SELECT value FROM config WHERE name = 'cms_direct_mode'"; $rs = $conn->Execute($query); @@ -162,11 +186,12 @@ if (!$system_tpl_ids) $system_tpl_ids = '0'; if ( $cms_mode == 1 ) { + //$lang_prefix = $this->Application->GetVar('lang_prefix'); $query = " SELECT st.*, - IF(lb.".$lang_prefix."_content='' OR lb.".$lang_prefix."_content IS NULL, + IF(lb.".$default_lang_prefix."_content='' OR lb.".$default_lang_prefix."_content IS NULL, st.st_path, - lb.".$lang_prefix."_content + lb.".$default_lang_prefix."_content ) AS page_title FROM structure_templates AS st @@ -193,8 +218,7 @@ working_blocks AS wb ON (st.st_id = wb.template_id) AND (wb.block_type = 3) - WHERE - st.st_parent_id = ".$st_id." + WHERE st.st_parent_id = ".$st_id." AND st_id != ".$email_templates_folder_id." AND st.st_id NOT IN ($system_tpl_ids) AND st_path != '/cms%' " . $filter . " @@ -254,7 +278,7 @@ function GetFoldersAndFiles( $resourceType, $currentFolder, $aParams = array('name','asc')) { - global $Config; + global $Config ; // Map the virtual path to the local server path. if (isset($Config['K4Mode'])) $date_format = "m/d/Y h:i A"; @@ -436,7 +460,7 @@ { $sErrorNumber = '204' ; } else { - if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) ) + if ( ( count($arAllowed) == 0 || in_array( strtolower($sExtension), $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( strtoupper($sExtension), $arDenied ) ) ) { if (rename($sServerDir.$aFilenames[0],$sServerDir.$aFilenames[1])) { if (isset($Config['K4Mode'])) { @@ -466,7 +490,7 @@ // Get the uploaded file name. $sFileName = $oFile['name'] ; $sOriginalFileName = $sFileName ; - $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ; + $sExtension = strtolower(substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ); global $Config ; $arAllowed = $Config['AllowedExtensions'][$resourceType] ; $arDenied = $Config['DeniedExtensions'][$resourceType] ; @@ -574,7 +598,6 @@ echo '' ; } } -} function GetLangFromSid() { Index: trunk/admin/editor/cmseditor/editor/dialog/fck_find.html =================================================================== diff -u -r7363 -r7855 --- trunk/admin/editor/cmseditor/editor/dialog/fck_find.html (.../fck_find.html) (revision 7363) +++ trunk/admin/editor/cmseditor/editor/dialog/fck_find.html (.../fck_find.html) (revision 7855) @@ -133,14 +133,14 @@ } - +
+
  - + Array( 1 => 'id', - 2 => 'page', + 2 => 'Page', 3 => 'event', 4 => 'mode', ), @@ -129,14 +129,14 @@ 'Fields' => Array ( - 'PortalUserId' => Array(), + 'PortalUserId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Login' => Array('type' => 'string', 'unique'=>Array('Login'), 'default' => '','required'=>1, 'error_msgs' => Array('unique'=>'!lu_user_already_exist!')), 'Password' => Array('type' => 'string', 'formatter' => 'kPasswordFormatter', 'encryption_method' => 'md5', 'verify_field' => 'VerifyPassword', 'skip_empty' => 1, 'default' => md5('') ), 'FirstName' => Array('type' => 'string','default' => ''), 'LastName' => Array('type' => 'string','default' => ''), 'Company' => Array('type' => 'string','not_null' => '1','default' => ''), 'Email' => Array('type' => 'string', 'formatter'=>'kFormatter', 'regexp'=>'/^[_a-zA-Z0-9-\.]+@[a-zA-Z0-9-\.]+\.[a-z]{2,4}$/', 'sample_value' => 'email@domain.com', 'unique'=>Array('Email'), 'not_null' => '1', 'required'=>1, 'default' => '', 'error_msgs' => Array('invalid_format'=>'!la_invalid_email!', 'unique'=>'!lu_email_already_exist!') ), - 'CreatedOn' => Array('type'=>'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#', 'not_null' => '1' ), + 'CreatedOn' => Array('type'=>'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#'), 'Phone' => Array('type' => 'string','default' => ''), 'Fax' => Array('type' => 'string','not_null' => '1','default' => ''), 'Street' => Array('type' => 'string','default' => ''), @@ -162,14 +162,14 @@ 'ResourceId' => Array('type' => 'int','not_null' => '1','default' => '0'), 'Status' => Array('type' => 'int', 'formatter'=>'kOptionsFormatter', 'options'=>Array(1=>'la_Enabled', 0=>'la_Disabled', 2=>'la_Pending'), 'use_phrases'=>1, 'not_null' => '1','default' => 2), 'Modified' => Array('type' => 'int', 'formatter'=>'kDateFormatter', 'not_null' => '1', 'default' => '#NOW#' ), - 'dob' => Array('type'=>'int', 'formatter' => 'kDateFormatter', 'not_null' => '1', 'default' => '', 'required'=>1), - 'tz' => Array('type' => 'int','default' => ''), + 'dob' => Array('type'=>'int', 'formatter' => 'kDateFormatter', 'default' => '', 'required'=>1), + 'tz' => Array('type' => 'int','default' => 0), 'ip' => Array('type' => 'string','default' => ''), 'IsBanned' => Array('type' => 'int','not_null' => '1','default' => '0'), - 'PassResetTime' => Array('type' => 'int','default' => ''), + 'PassResetTime' => Array('type' => 'int','default' => null), 'PwResetConfirm' => Array('type' => 'string','default' => ''), - 'PwRequestTime' => Array('type' => 'int','default' => ''), - 'MinPwResetDelay' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array('300' => '5', '600' => '10', '900' => '15', '1800' => '30', '3600' => '60'), 'use_phrases' => 0, 'not_null' => '1', 'default' => 30), + 'PwRequestTime' => Array('type' => 'int','default' => null), + 'MinPwResetDelay' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array(300 => '5', 600 => '10', 900 => '15', 1800 => '30', 3600 => '60'), 'use_phrases' => 0, 'not_null' => '1', 'default' => 1800), ), 'VirtualFields' => Array( Index: trunk/core/install/upgrades.sql =================================================================== diff -u -r7635 -r7855 --- trunk/core/install/upgrades.sql (.../upgrades.sql) (revision 7635) +++ trunk/core/install/upgrades.sql (.../upgrades.sql) (revision 7855) @@ -1,13 +1,56 @@ -# ===== v 1.3.5 ===== -SELECT * FROM Modules; -SELECT Name FROM Modules; - # ===== v 4.0.1 ===== -ALTER TABLE Modules ADD COLUMN NotCool VARCHAR(255); +ALTER TABLE EmailLog ADD EventParams TEXT NOT NULL; -# ===== v 4.0.12 ===== -# multiline -UPDATE Modules SET Name = 'dummy' WHERE Name = 'dummy'; +INSERT INTO ConfigurationAdmin VALUES ('MailFunctionHeaderSeparator', 'la_Text_smtp_server', 'la_config_MailFunctionHeaderSeparator', 'radio', NULL, '1=la_Linux,2=la_Windows', 30.08, 0, 0); +INSERT INTO ConfigurationValues VALUES (0, 'MailFunctionHeaderSeparator', 1, 'In-Portal', 'in-portal:configure_general'); -# ===== v 4.0.15 ===== -UPDATE Modules SET Name = 'dummy' WHERE Name = 'dummy'; \ No newline at end of file +ALTER TABLE PersistantSessionData DROP PRIMARY KEY ; +ALTER TABLE PersistantSessionData ADD INDEX ( `PortalUserId` ) ; + +# ===== v 4.0.2 ===== +ALTER TABLE EmailMessage ADD ReplacementTags TEXT AFTER Template; +ALTER TABLE Phrase CHANGE Translation Translation TEXT NOT NULL; +ALTER TABLE Category + CHANGE Description Description TEXT, + CHANGE l1_Description l1_Description TEXT, + CHANGE l2_Description l2_Description TEXT, + CHANGE l3_Description l3_Description TEXT, + CHANGE l4_Description l4_Description TEXT, + CHANGE l5_Description l5_Description TEXT, + CHANGE CachedNavbar CachedNavbar text, + CHANGE l1_CachedNavbar l1_CachedNavbar text, + CHANGE l2_CachedNavbar l1_CachedNavbar text, + CHANGE l3_CachedNavbar l1_CachedNavbar text, + CHANGE l4_CachedNavbar l1_CachedNavbar text, + CHANGE l5_CachedNavbar l1_CachedNavbar text; + +ALTER TABLE ConfigurationAdmin CHANGE ValueList ValueList TEXT; + +ALTER TABLE EmailQueue + CHANGE `Subject` `Subject` TEXT, + CHANGE toaddr toaddr TEXT, + CHANGE fromaddr fromaddr TEXT; + +ALTER TABLE Category DROP Pop; + +ALTER TABLE PortalUser + CHANGE CreatedOn CreatedOn INT DEFAULT NULL, + CHANGE dob dob INT(11) NULL DEFAULT NULL, + CHANGE PassResetTime PassResetTime INT(11) UNSIGNED NULL DEFAULT NULL, + CHANGE PwRequestTime PwRequestTime INT(11) UNSIGNED NULL DEFAULT NULL; + +ALTER TABLE Modules + CHANGE BuildDate BuildDate INT UNSIGNED NULL DEFAULT NULL, + CHANGE Version Version VARCHAR(10) NOT NULL DEFAULT '0.0.0'; + +ALTER TABLE Language + CHANGE Enabled Enabled INT(11) NOT NULL DEFAULT '1', + CHANGE InputDateFormat InputDateFormat VARCHAR(50) NOT NULL DEFAULT 'm/d/Y', + CHANGE InputTimeFormat InputTimeFormat VARCHAR(50) NOT NULL DEFAULT 'g:i:s A', + CHANGE DecimalPoint DecimalPoint CHAR(2) NOT NULL DEFAULT ''; + +ALTER TABLE Events CHANGE FromUserId FromUserId INT(11) NOT NULL DEFAULT '-1'; + +ALTER TABLE StdDestinations CHANGE DestAbbr2 DestAbbr2 CHAR(2) NULL DEFAULT NULL; + +ALTER TABLE PermCache DROP DACL; Index: trunk/core/units/custom_fields/custom_fields_config.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/custom_fields/custom_fields_config.php (.../custom_fields_config.php) (revision 7702) +++ trunk/core/units/custom_fields/custom_fields_config.php (.../custom_fields_config.php) (revision 7855) @@ -73,13 +73,13 @@ 'SubItems' => Array('confs-cf'), 'Fields' => Array( - 'CustomFieldId' => Array('type' => 'int','not_null' => '1','default' => ''), + 'CustomFieldId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Type' => Array('type' => 'int','not_null' => '1','default' => '0'), 'FieldName' => Array('required'=>'1', 'type' => 'string','not_null' => 1,'default' => ''), 'FieldLabel' => Array('type' => 'string', 'required' => 1, 'default' => ''), 'Heading' => Array('type' => 'string', 'required' => 1, 'default' => ''), 'Prompt' => Array('type' => 'string','default' => ''), - 'ElementType' => Array('required'=>'1', 'type'=>'string', 'not_null'=>1, 'default'=>'NULL', 'formatter'=>'kOptionsFormatter', 'use_phrases' => 1, 'options'=>Array('' => 'la_EmptyValue', 'text' => 'la_type_text', 'select' => 'la_type_select', 'radio' => 'la_type_radio', 'checkbox' => 'la_type_checkbox', 'password' => 'la_type_password', 'textarea' => 'la_type_textarea', 'label' => 'la_type_label', 'date' => 'la_type_date', 'datetime' => 'la_type_datetime')), + 'ElementType' => Array('required'=>'1', 'type'=>'string', 'not_null'=>1, 'default'=>'', 'formatter'=>'kOptionsFormatter', 'use_phrases' => 1, 'options'=>Array('' => 'la_EmptyValue', 'text' => 'la_type_text', 'select' => 'la_type_select', 'radio' => 'la_type_radio', 'checkbox' => 'la_type_checkbox', 'password' => 'la_type_password', 'textarea' => 'la_type_textarea', 'label' => 'la_type_label', 'date' => 'la_type_date', 'datetime' => 'la_type_datetime')), 'ValueList' => Array('type' => 'string','default' => ''), 'DisplayOrder' => Array('type' => 'int','not_null' => '1','default' => '0'), 'OnGeneralTab' => Array('type' => 'int','not_null' => '1','default' => '0'), Index: trunk/core/units/general/helpers/priority_helper.php =================================================================== diff -u --- trunk/core/units/general/helpers/priority_helper.php (revision 0) +++ trunk/core/units/general/helpers/priority_helper.php (revision 7855) @@ -0,0 +1,132 @@ +getObject(); + + $field_options = $object->GetFieldOptions('Priority'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + + $sql = 'SELECT COUNT(*) + FROM '.$table_name; + if ($constrain) { + $sql .= ' WHERE '.$constrain; + + } + + $items_count = $this->Conn->GetOne($sql); + if ($is_new) { + // add new item to the end of list + $items_count++; + $object->SetDBField('Priority', -$items_count); + $object->SetDBField('OldPriority', -$items_count); + } + + for ($i = 1; $i <= $items_count; $i++) { + $field_options['options'][-$i] = $i; + } + + $object->SetFieldOptions('Priority', $field_options); + } + + /** + * Updates priorities for changed items + * + * @param kEvent $event + * @param Array $changes = Array (CategoryID => Array ('parent' => ..., 'new' => ..., 'old' => ...), ...) + * @param Array $new_ids = Array (temp_id => live_id) + * @param string $constrain + */ + function updatePriorities(&$event, $changes, $new_ids, $constrain = '') + { + $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + + $not_processed = array_keys($changes); + + foreach ($changes as $id => $pair) { + $constrain = 'ParentId = '.$pair['parent'].' AND '; + + if ($pair['old'] == 'new') { + // replace 0 with newly created item id (from $new_ids mapping) + $not_processed[ array_search($id, $not_processed) ] = $new_ids[$id]; + $id = $new_ids[$id]; + + $sql = 'SELECT MIN(Priority) + FROM '.$table_name.' + WHERE '.$constrain.' CategoryId NOT IN ('.implode(',', $not_processed).')'; + $min_priority = (int)$this->Conn->GetOne($sql) - 1; + + if ($pair['new'] < $min_priority) { + $pair['new'] = $min_priority; + } + $pair['old'] = $min_priority; + } + + if ($pair['new'] < $pair['old']) { + $q = ' SET Priority = Priority + 1 + WHERE '.$constrain.' + Priority >= '.$pair['new'].' + AND + Priority < '.$pair['old'].' + AND + CategoryId NOT IN ('.implode(',', $not_processed).')'; + } + elseif ($pair['new'] > $pair['old']) { + $q = ' SET Priority = Priority - 1 + WHERE '.$constrain.' + Priority > '.$pair['old'].' + AND + Priority <= '.$pair['new'].' + AND + CategoryId NOT IN ('.implode(',', $not_processed).')'; + } + else { + $q = 'SET Priority = '.$pair['new'].' WHERE '.$id_field.' = '.$id; + } + $q = 'UPDATE '.$table_name.' '.$q; + $this->Conn->Query($q); + + unset( $not_processed[array_search($id, $not_processed)] ); + } + } + + /** + * Recalculates priorities + * + * @param kEvent $event + * @param string $constrain + */ + function recalculatePriorities(&$event, $constrain = '') + { + $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + + $sql = 'SELECT '.$id_field.' + FROM '.$table_name. + ($constrain ? ' WHERE '.$constrain : '').' + ORDER BY Priority DESC'; + + $items = $this->Conn->GetCol($sql); + + foreach ($items as $item_number => $item_id) { + $sql = 'UPDATE '.$table_name.' + SET Priority = '.-($item_number + 1).' + WHERE '.$id_field.' = '.$item_id; + $this->Conn->Query($sql); + } + } + + } +?> \ No newline at end of file Index: trunk/core/units/modules/modules_config.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/modules/modules_config.php (.../modules_config.php) (revision 7635) +++ trunk/core/units/modules/modules_config.php (.../modules_config.php) (revision 7855) @@ -36,6 +36,7 @@ 'permissions' => Array('view'), 'priority' => 5, 'type' => stTREE, + 'icon_module' => 'in-portal', ), 'in-portal:mod_status' => Array( @@ -92,10 +93,10 @@ ), 'Fields' => Array( - 'Name' => Array('type' => 'string','not_null' => '1','default' => ''), + 'Name' => Array('type' => 'string', 'not_null' => 1, 'default' => ''), 'Path' => Array('type' => 'string','not_null' => '1','default' => ''), 'Var' => Array('type' => 'string','not_null' => '1','default' => ''), - 'Version' => Array('type' => 'string','not_null' => '1','default' => ''), + 'Version' => Array('type' => 'string','not_null' => '1','default' => '0.0.0'), 'Loaded' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array(1 => 'la_Enabled', 0 => 'la_Disabled'), 'use_phrases' => 1, 'not_null' => '1','default' => '1'), 'LoadOrder' => Array('type' => 'int','not_null' => '1','default' => '0'), 'TemplatePath' => Array('type' => 'string','not_null' => '1','default' => ''), Index: trunk/core/kernel/utility/debugger/debugger.css =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/utility/debugger/debugger.css (.../debugger.css) (revision 7635) +++ trunk/core/kernel/utility/debugger/debugger.css (.../debugger.css) (revision 7855) @@ -75,15 +75,21 @@ .dbg-toolbar { border: 1px solid #000000; background-color: #D4D0C8; + border-collapse: separate; width: auto; } .dbg-toolbar td { font-size: 13px; font-family: Tahoma; padding: 1px 5px 1px 5px; + margin: 3px; } +.dbg-toolbar td.dbg-button, .dbg-toolbar td.dbg-button:hover { + cursor: default; +} + .dbg-toolbar td.dbg-button { border: 1px solid #D4D0C8; background-color: #D4D0C8; Index: trunk/core/admin_templates/incs/form_blocks.tpl =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/incs/form_blocks.tpl (.../form_blocks.tpl) (revision 7635) +++ trunk/core/admin_templates/incs/form_blocks.tpl (.../form_blocks.tpl) (revision 7855) @@ -1,11 +1,11 @@ - + - img/logo_bg.gif) no-repeat top right; height: 55px;"> + img/logo_bg.gif) no-repeat top right; height: 55px;">
- img/icons/icon46_.gif" align="absmiddle" title="">  + img/icons/icon46_.gif" align="absmiddle" title=""> 
@@ -59,8 +59,8 @@ - img/logo_bg.gif) no-repeat top right; height: 65px;"> - img/logo_bg.gif) no-repeat top right; height: 55px;"> + @@ -283,7 +283,7 @@ ');"> - ', '', '');"> + ', '', '');"> Index: trunk/core/install.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/install.php (.../install.php) (revision 7702) +++ trunk/core/install.php (.../install.php) (revision 7855) @@ -11,14 +11,14 @@ * Upgrade sqls are located using this mask * */ - define('UPGRADES_FILE', FULL_PATH.'/%sinstall/upgrades.sql'); - + define('UPGRADES_FILE', FULL_PATH.'/%sinstall/upgrades.%s'); + /** * Format of version identificator in upgrade files * */ define('VERSION_MARK', '# ===== v ([\d]+\.[\d]+\.[\d]+) ====='); - + // print_pre($_POST); $install_engine = new kInstallator(); @@ -97,7 +97,7 @@ * @var Array */ var $skipLoginSteps = Array ('root_password', 'choose_modules', 'finish', -1); - + /** * Steps, on which kApplication should not be initialized, because of missing correct db table structure * @@ -151,7 +151,7 @@ // can't check login on steps where no application present anyways :) $this->skipLoginSteps = array_unique(array_merge($this->skipLoginSteps, $this->skipApplicationSteps)); - + $this->SelectPreset(); if (!$this->currentStep) { @@ -166,7 +166,7 @@ reset($this->steps[$this->stepsPreset]); $this->currentStep = current($this->steps[$this->stepsPreset]); } - + /** * Selects preset to proceed based on various criteria * @@ -192,7 +192,7 @@ $this->stepsPreset = $preset; } - + function GetVar($name) { return isset($_REQUEST[$name]) ? $_REQUEST[$name] : false; @@ -214,7 +214,7 @@ $this->SetFirstStep(); } } - + switch ($this->currentStep) { case 'check_paths': foreach ($this->writeableFolders as $folder_path) { @@ -261,18 +261,18 @@ if (!$modules) { $this->currentStep = $this->GetNextStep(); } - break; - + break; + case 'install_setup': $next_preset = $this->Application->GetVar('next_preset'); if ($next_preset !== false && $this->Application->GetVar('login') == 'root') { // option was choosen, then verify password & login user $login_event = new kEvent('u.current:OnLogin'); $this->Application->HandleEvent($login_event); - + if ($login_event->status == erSUCCESS) { // login succeeded - + if (!isset($this->steps[$next_preset])) { $this->errorMessage = 'Preset "'.$next_preset.'" not yet implemented'; } @@ -284,7 +284,7 @@ // login failed $user =& $this->Application->recallObject('u.current'); /* @var $user UsersItem */ - + $this->errorMessage = $user->GetErrorMsg('ValidateLogin').'. If you don\'t know your username or password, contact Intechnic Support'; } } @@ -368,7 +368,7 @@ // import base data into database $this->RunSQL('/core/install/install_schema.sql'); $this->RunSQL('/core/install/install_data.sql'); - + // set module "Core" version after install (based on upgrade scripts) $this->SetModuleVersion('Core'); break; @@ -400,18 +400,15 @@ $install_file = MODULES_PATH.'/'.$module.'/install.php'; if (file_exists($install_file)) { include_once($install_file); - + // set module version after install (based on upgrade scripts) $this->SetModuleVersion($module); } } } // scan themes - $themes_helper =& $this->Application->recallObject('ThemesHelper'); - /* @var $themes_helper kThemesHelper */ + $this->Application->HandleEvent($themes_event, 'adm:OnRebuildThemes'); - $themes_helper->refreshThemes(); - $this->Conn->Query('UPDATE '.TABLE_PREFIX.'Theme SET Enabled=1, PrimaryTheme =1 LIMIT 1'); // update categories cache @@ -420,23 +417,29 @@ $updater->OneStepRun(); break; - + case 'upgrade_modules': // get installed modules from db and compare their versions to upgrade script $modules = $this->Application->GetVar('modules'); if ($modules) { $upgrade_data = $this->GetUpgradableModules(); - + foreach ($modules as $module_name) { $module_info = $upgrade_data[$module_name]; - $upgrades_file = sprintf(UPGRADES_FILE, $module_info['Path']); - + $upgrades_file = sprintf(UPGRADES_FILE, $module_info['Path'], 'sql'); + $sqls = file_get_contents($upgrades_file); $version_mark = preg_replace('/(\(.*?\))/', $module_info['FromVersion'], VERSION_MARK); - + + // get only sqls from next (relative to current) version to end of file $start_pos = strpos($sqls, $version_mark); $sqls = substr($sqls, $start_pos); + + preg_match_all('/'.VERSION_MARK.'/s', $sqls, $regs); + + $this->RunUpgrades($module_info['Path'], $regs[1], 'before'); $this->RunSQLText($sqls); + $this->RunUpgrades($module_info['Path'], $regs[1], 'after'); // after upgrade sqls are executed update version $this->SetModuleVersion($module_name, $module_info['ToVersion']); @@ -445,15 +448,15 @@ else { $this->errorMessage = 'Please select module(-s) to upgrade'; } - break; - + break; + case 'finish': // delete cache $sql = 'DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName IN ("config_files","configs_parsed","sections_parsed")'; $this->Conn->Query($sql); - - // set installation finished mark + + // set installation finished mark if ($this->Application->ConfigValue('InstallFinished') === false) { $fields_hash = Array ( 'VariableName' => 'InstallFinished', @@ -481,6 +484,39 @@ } /** + * Run upgrade PHP scripts for module with specified path + * + * @param string $module_path + * @param Array $versions + * @param string $mode upgrade mode = {before,after} + */ + function RunUpgrades($module_path, $versions, $mode) + { + static $upgrade_classes = Array (); + + $upgrades_file = sprintf(UPGRADES_FILE, $module_path, 'php'); + if (!file_exists($upgrades_file) || !$versions) { + return ; + } + + if (!isset($upgrade_classes[$module_path])) { + // save class name, because 2nd time + // (in after call $upgrade_class variable will not be present) + include_once $upgrades_file; + $upgrade_classes[$module_path] = $upgrade_class; + } + + $upgrade_object = new $upgrade_classes[$module_path](); + + foreach ($versions as $version) { + $upgrade_method = 'Upgrade_'.str_replace('.', '_', $version); + if (method_exists($upgrade_object, $upgrade_method)) { + $upgrade_object->$upgrade_method($mode); + } + } + } + + /** * Sets module version to passed * * @param string $module_name @@ -491,16 +527,16 @@ if ($version === false) { $version = $this->GetMaxModuleVersion($module_name); } - + $table_prefix = $this->systemConfig['Database']['TablePrefix']; - + $sql = 'UPDATE '.$table_prefix.'Modules SET Version = "'.$version.'" WHERE Name = "'.$module_name.'"'; $this->Conn->Query($sql); } - - + + /** * Sets new configuration variable value * @@ -556,19 +592,19 @@ function GetMaxModuleVersion($module_name) { - $upgrades_file = sprintf(UPGRADES_FILE, strtolower($module_name).'/'); + $upgrades_file = sprintf(UPGRADES_FILE, strtolower($module_name).'/', 'sql'); if (!file_exists($upgrades_file)) { // no upgrade file return '4.0.1'; } - + $sqls = file_get_contents($upgrades_file); $versions_found = preg_match_all('/'.VERSION_MARK.'/s', $sqls, $regs); if (!$versions_found) { // upgrades file doesn't contain version definitions return '4.0.1'; } - + return end($regs[1]); } @@ -722,7 +758,7 @@ // replace something additionally, e.g. module root category $sqls = str_replace($replace_from, $replace_to, $sqls); } - + $sqls = str_replace("\r\n", "\n", $sqls); // convert to linux line endings $sqls = preg_replace("/#(.*?)\n/", '', $sqls); // remove all comments $sqls = explode(";\n", $sqls); @@ -740,7 +776,7 @@ } } } - + function ImportLanguage($lang_file) { $lang_file = FULL_PATH.$lang_file.'.lang'; @@ -791,12 +827,12 @@ function ConvertModuleVersion($version) { $parts = explode('.', $version); - + $bin = ''; foreach ($parts as $part) { $bin .= str_pad(decbin($part), 8, '0', STR_PAD_LEFT); } - + return bindec($bin); } @@ -807,21 +843,21 @@ function GetUpgradableModules() { $ret = Array (); - + foreach ($this->Application->ModuleInfo as $module_name => $module_info) { - $upgrades_file = sprintf(UPGRADES_FILE, $module_info['Path']); + $upgrades_file = sprintf(UPGRADES_FILE, $module_info['Path'], 'sql'); if (!file_exists($upgrades_file)) { // no upgrade file continue; } - + $sqls = file_get_contents($upgrades_file); $versions_found = preg_match_all('/'.VERSION_MARK.'/s', $sqls, $regs); if (!$versions_found) { // upgrades file doesn't contain version definitions continue; } - + $to_version = end($regs[1]); $this_version = $this->ConvertModuleVersion($module_info['Version']); if ($this->ConvertModuleVersion($to_version) > $this_version) { @@ -832,19 +868,19 @@ break; } } - + $version_info = Array ( 'FromVersion' => $from_version, 'ToVersion' => $to_version, ); - + $ret[$module_name] = array_merge_recursive2($module_info, $version_info); } } - + return $ret; } - + /** * Returns content to show for current step * Index: trunk/core/admin_templates/js/forms.js =================================================================== diff -u --- trunk/core/admin_templates/js/forms.js (revision 0) +++ trunk/core/admin_templates/js/forms.js (revision 7855) @@ -0,0 +1,134 @@ +var last_shown_error = false; +var errors = new Object(); +var first_error = new Object(); +var fields = new Object(); +function show_form_error(prefix, field, sticky) +{ + if (isset(errors[prefix]) && isset(errors[prefix][field])) { + span = document.getElementById('error_msg_'+prefix); + span.innerHTML = fields[prefix][field] + ' - ' + errors[prefix][field]; + if (sticky) last_shown_error = field; + } +} +function hide_form_error(prefix) +{ + span = document.getElementById('error_msg_'+prefix); + if (!span) return; + span.innerHTML = '
'; + if (typeof(last_shown_error) != 'undefined' && last_shown_error) { + show_form_error(prefix, last_shown_error); + } +} +function add_form_error(prefix, field, element, error_msg) { + if (error_msg != '') { + if (typeof(errors[prefix]) == 'undefined') { + errors[prefix] = new Object(); + } + errors[prefix][field] = error_msg; + addEvent(document.getElementById(element), 'focus', function() { + show_form_error(prefix, field, true) + } ); + addEvent(document.getElementById(element), 'blur', function() {last_shown_error = false} ) + if (typeof(first_error[prefix]) == 'undefined' || first_error[prefix] == false) { + first_error[prefix] = [field, element]; + } + } +} + +function Form() {} + +Form = new Form(); + +Form.Controls = new Array(); +Form.Div = false; +Form.MinControlsHeight = 0; +Form.Coeffs = new Object(); + +Form.ScrollerW = 17; +Form.ScrollerH = 17; +Form.Wrap = true; + +Form.Init = function(id) +{ + this.Div = document.getElementById(id); + + for (var i in this.Controls) { + dim = getDimensions(document.getElementById(this.Controls[i])); + this.MinControlsHeight += dim.innerHeight; +// alert('adding element '+this.Controls[i]+' height: '+dim.innerHeight+' total: '+this.MinControlsHeight) + } + + document.body.style.height = '100%'; + document.body.style.overflow = 'hidden'; + document.body.scroll = 'no' + + var a_div = document.createElement('DIV'); + a_div.style.position = 'relative'; + a_div.style.overflow = 'auto'; + a_div.style.width = '100%'; + a_div.style.height = '100%'; + + a_div.appendChild(el.parentNode.replaceChild(a_div, el)) + + this.Table = this.Div.getElementsByTagName('table')[0]; + this.Table.style.height = 'auto'; + this.MinHeight = this.Table.offsetHeight; + this.MinWidth = this.Table.offsetWidth; + + addEvent(window, 'resize', function() {Form.Resize()}) + + this.Resize() + + if (isset(first_error)) { + for (var i in first_error) { + if (first_error[i] != false) { + document.getElementById(first_error[i][1]).focus(); + show_form_error(i, first_error[i][0], true); +// alert('focused on '+first_error[i][1]) + } + } + } +} + +Form.addControl = function(id, coeff) { + this.Controls.push(id); + this.Coeffs[id] = coeff ? coeff : 1; // for future use +} + +Form.Resize = function() +{ + var h = (document.all ? window.document.body.offsetHeight : window.innerHeight); + var pos = findPos(el); + var dim = getDimensions(this.Div); + h -= pos[1] + dim.padding[0] + dim.padding[2] + dim.borders[0] + dim.borders[2]; + + var w = (document.all ? window.document.body.offsetWidth : window.innerWidth); + w -= pos[0] + dim.padding[1] + dim.padding[3] + dim.borders[1] + dim.borders[3]; + + scroller_height = this.MinWidth >= w ? this.ScrollerH : 0; + scroller_width = this.MinHeight >= h - scroller_height ? this.ScrollerW : 0; + scroller_height = this.MinWidth >= w - scroller_width ? this.ScrollerH : 0; + +// alert('resize: '+w+'x'+h) + + this.Table.style.width = (w-scroller_width) + 'px'; + + this.Div.style.width = (w)+'px'; + this.Div.style.height = (h)+'px'; + + var count = this.Controls.length; + + // -count here is adjustment - 1px for each control + var split = h - count - this.MinHeight + this.MinControlsHeight; + if (split < this.MinControlsHeight) split = this.MinControlsHeight; + var new_height = Math.round(split / count) -2; + +// alert('h is: '+h+' min height is '+this.MinHeight+' MinControlsHeight is '+this.MinControlsHeight+' -> '+split+' to split between '+count+' new height is '+new_height); +// print_pre(this.Controls) + + for (var i in this.Controls) { + document.getElementById(this.Controls[i]).style.height = new_height + 'px'; + } + + +} Index: trunk/core/kernel/utility/email_send.php =================================================================== diff -u --- trunk/core/kernel/utility/email_send.php (revision 0) +++ trunk/core/kernel/utility/email_send.php (revision 7855) @@ -0,0 +1,1944 @@ +guessOptions = Array ( + 'attachments' => Array(), + 'inline_attachments' => Array (), + 'text_part' => false, + 'html_part' => false, + ); + + // read SMTP server connection params from config + $smtp_mapping = Array ('server' => 'Smtp_Server', 'port' => 'Smtp_Port'); + if ($this->Application->ConfigValue('Smtp_Authenticate')) { + $smtp_mapping['username'] = 'Smtp_User'; + $smtp_mapping['password'] = 'Smtp_Pass'; + } + + foreach ($smtp_mapping as $smtp_name => $config_name) { + $this->smtpParams[$smtp_name] = $this->Application->ConfigValue($config_name); + } + $this->smtpParams['use_auth'] = isset($this->smtpParams['username']) ? true : false; + $this->smtpParams['localhost'] = 'localhost'; // The value to give when sending EHLO or HELO. + + $this->sendMethod = $this->smtpParams['server'] && $this->smtpParams['port'] ? 'SMTP' : 'Mail'; + + if ($this->sendMethod == 'SMTP') { + // create connection object if we will use SMTP + $this->smtpSocket =& $this->Application->makeClass('Socket'); + } + + $this->SetCharset(null, true); + } + + + /** + * Returns new message id header by sender's email address + * + * @param string $email_address email address + * @return string + */ + function GenerateMessageID($email_address) + { + list ($micros, $seconds) = explode(' ', microtime()); + list ($user, $domain) = explode('@', $email_address, 2); + + $message_id = strftime('%Y%m%d%H%M%S', $seconds).substr($micros, 1, 5).'.'.preg_replace('/[^A-Za-z]+/', '-', $user).'@'.$domain; + + $this->SetHeader('Message-ID', '<'.$message_id.'>'); + } + + /** + * Returns extension of given filename + * + * @param string $filename + * @return string + */ + function GetFilenameExtension($filename) + { + $last_dot = strrpos($filename, '.'); + return $last_dot !== false ? substr($filename, $last_dot + 1) : ''; + } + + /** + * Creates boundary for part by number (only if it's missing) + * + * @param int $part_number + * + */ + + function CreatePartBoundary($part_number) + { + $part =& $this->parts[$part_number]; + if (!isset($part['BOUNDARY'])) { + $part['BOUNDARY'] = md5(uniqid($part_number.time())); + + } + } + + /** + * Returns ready to use headers associative array of any message part by it's number + * + * @param int $part_number + * @return Array + */ + function GetPartHeaders($part_number) + { + $part =& $this->parts[$part_number]; + + if (!isset($part['Content-Type'])) { + return $this->SetError('MISSING_CONTENT_TYPE'); + } + + $full_type = strtolower($part['Content-Type']); + list ($type, $sub_type) = explode('/', $full_type); + + $headers['Content-Type'] = $full_type; + switch ($type) { + case 'text': + case 'image': + case 'audio': + case 'video': + case 'application': + case 'message': + // 1. update content-type header + if (isset($part['CHARSET'])) { + $headers['Content-Type'] .= '; charset='.$part['CHARSET']; + } + if (isset($part['NAME'])) { + $headers['Content-Type'] .= '; name="'.$part['NAME'].'"'; + } + + // 2. set content-transfer-encoding header + if (isset($part['Content-Transfer-Encoding'])) { + $headers['Content-Transfer-Encoding'] = $part['Content-Transfer-Encoding']; + } + + // 3. set content-disposition header + if (isset($part['DISPOSITION']) && $part['DISPOSITION']) { + $headers['Content-Disposition'] = $part['DISPOSITION']; + if (isset($part['NAME'])) { + $headers['Content-Disposition'] .= '; filename="'.$part['NAME'].'"'; + } + } + break; + + case 'multipart': + switch ($sub_type) { + case 'alternative': + case 'related': + case 'mixed': + case 'parallel': + $this->CreatePartBoundary($part_number); + $headers['Content-Type'] .= '; boundary="'.$part['BOUNDARY'].'"'; + break; + + default: + return $this->SetError('INVALID_MULTIPART_SUBTYPE', Array($sub_type)); + } + break; + + default: + return $this->SetError('INVALID_CONTENT_TYPE', Array($full_type)); + } + + // set content-id if any + if (isset($part['Content-ID'])) { + $headers['Content-ID'] = '<'.$part['Content-ID'].'>'; + } + + return $headers; + } + + function GetPartBody($part_number) + { + $part =& $this->parts[$part_number]; + + if (!isset($part['Content-Type'])) { + return $this->SetError('MISSING_CONTENT_TYPE'); + } + + $full_type = strtolower($part['Content-Type']); + list ($type, $sub_type) = explode('/', $full_type); + + $body = ''; + switch ($type) { + // compose text/binary content + case 'text': + case 'image': + case 'audio': + case 'video': + case 'application': + case 'message': + // 1. get content of part + if (isset($part['FILENAME'])) { + // content provided via absolute path to content containing file + $filename = $part['FILENAME']; + $file_size = filesize($filename); + + $body = file_get_contents($filename); + if ($body === false) { + return $this->SetError('FILE_PART_OPEN_ERROR', Array($filename)); + } + + $actual_size = strlen($body); + if (($file_size === false || $actual_size > $file_size) && get_magic_quotes_runtime()) { + $body = stripslashes($body); + } + + if ($file_size !== false && $actual_size != $file_size) { + return $this->SetError('FILE_PART_DATA_ERROR', Array($filename)); + } + } + else { + // content provided directly as one of part keys + if (!isset($part['DATA'])) { + return $this->SetError('FILE_PART_DATA_MISSING'); + } + $body =& $part['DATA']; + } + + // 2. get part transfer encoding + $encoding = isset($part['Content-Transfer-Encoding']) ? strtolower($part['Content-Transfer-Encoding']) : ''; + if (!in_array($encoding, Array ('', 'base64', 'quoted-printable', '7bit'))) { + return $this->SetError('INVALID_ENCODING', Array($encoding)); + } + + if ($encoding == 'base64') { + // split base64 encoded text by 76 symbols at line (MIME requirement) + $body = chunk_split( base64_encode($body) ); + } + break; + + case 'multipart': + // compose multipart message + switch ($sub_type) { + case 'alternative': + case 'related': + case 'mixed': + case 'parallel': + $this->CreatePartBoundary($part_number); + $boundary = $this->line_break.'--'.$part['BOUNDARY']; + + foreach ($part['PARTS'] as $multipart_number) { + $body .= $boundary.$this->line_break; + $part_headers = $this->GetPartHeaders($multipart_number); + if ($part_headers === false) { + // some of sub-part headers were invalid + return false; + } + + foreach ($part_headers as $header_name => $header_value) { + $body .= $header_name.': '.$header_value.$this->line_break; + } + + $part_body = $this->GetPartBody($multipart_number); + if ($part_body === false) { + // part body was invalid + return false; + } + + $body .= $this->line_break.$part_body; + } + $body .= $boundary.'--'.$this->line_break; + break; + + default: + return $this->SetError('INVALID_MULTIPART_SUBTYPE', Array($sub_type)); + } + break; + default: + return $this->SetError('INVALID_CONTENT_TYPE', Array($full_type)); + } + + return $body; + } + + /** + * Applies quoted-printable encoding to specified text + * + * @param string $text + * @param string $header_charset + * @param int $break_lines + * @return unknown + */ + function QuotedPrintableEncode($text, $header_charset = '', $break_lines = 1) + { + $ln = strlen($text); + $h = strlen($header_charset) > 0; + if ($h) { + $s = Array ( + '=' => 1, + '?' => 1, + '_' => 1, + '(' => 1, + ')' => 1, + '<' => 1, + '>' => 1, + '@' => 1, + ',' => 1, + ';' => 1, + '"' => 1, + '\\' => 1, + /* + '/' => 1, + '[' => 1, + ']' => 1, + ':' => 1, + '.' => 1, + */ + ); + + $b = $space = $break_lines = 0; + for ($i = 0; $i < $ln; $i++) { + if (isset($s[$text[$i]])) { + $b = 1; + break; + } + + switch ($o = ord($text[$i])) { + case 9: + case 32: + $space = $i + 1; + $b = 1; + break 2; + case 10: + case 13: + break 2; + default: + if ($o < 32 || $o > 127) { + $b = 1; + break 2; + } + } + } + + if($i == $ln) { + return $text; + } + + if ($space > 0) { + return substr($text, 0, $space).($space < $ln ? $this->QuotedPrintableEncode(substr($text, $space), $header_charset, 0) : ''); + } + } + + for ($w = $e = '', $n = 0, $l = 0, $i = 0; $i < $ln; $i++) { + $c = $text[$i]; + $o = ord($c); + $en = 0; + switch ($o) { + case 9: + case 32: + if (!$h) { + $w = $c; + $c = ''; + } + else { + if ($b) { + if ($o == 32) { + $c = '_'; + } + else { + $en = 1; + } + } + } + break; + case 10: + case 13: + if (strlen($w)) { + if ($break_lines && $l + 3 > 75) { + $e .= '='.$this->line_break; + $l = 0; + } + + $e .= sprintf('=%02X', ord($w)); + $l += 3; + $w = ''; + } + + $e .= $c; + if ($h) { + $e .= "\t"; + } + $l = 0; + continue 2; + case 46: + case 70: + case 102: + $en = (!$h && ($l == 0 || $l + 1 > 75)); + break; + default: + if ($o > 127 || $o < 32 || !strcmp($c, '=')) { + $en = 1; + } + elseif ($h && isset($s[$c])) { + $en = 1; + } + break; + } + + if (strlen($w)) { + if ($break_lines && $l + 1 > 75) { + $e .= '='.$this->line_break; + $l = 0; + } + $e .= $w; + $l++; + $w = ''; + } + + if (strlen($c)) { + if ($en) { + $c = sprintf('=%02X', $o); + $el = 3; + $n = 1; + $b = 1; + } + else { + $el = 1; + } + if ($break_lines && $l + $el > 75) { + $e .= '='.$this->line_break; + $l = 0; + } + $e .= $c; + $l += $el; + } + } + if (strlen($w)) { + if ($break_lines && $l + 3 > 75) { + $e .= '='.$this->line_break; + } + $e .= sprintf('=%02X', ord($w)); + } + + return $h && $n ? '=?'.$header_charset.'?q?'.$e.'?=' : $e; + } + + /** + * Sets message header + encodes is by quoted-printable using charset specified + * + * @param string $name + * @param string $value + * @param string $encoding_charset + */ + function SetHeader($name, $value, $encoding_charset = '') + { + if ($encoding_charset) { + // actually for headers base64 method may give shorter result + $value = $this->QuotedPrintableEncode($value, $encoding_charset); + } + + $this->headers[$name] = $value; + } + + /** + * Sets header + automatically encodes it using default charset + * + * @param string $name + * @param string $value + */ + function SetEncodedHeader($name, $value) + { + $this->SetHeader($name, $value, $this->charset); + } + + /** + * Sets header which value is email and username +autoencode + * + * @param string $header + * @param string $address + * @param string $name + */ + function SetEncodedEmailHeader($header, $address, $name) + { + $this->SetHeader($header, $this->QuotedPrintableEncode($name, $this->charset).' <'.$address.'>'); + } + + function SetMultipleEncodedEmailHeader($header, $addresses) + { + $value = ''; + foreach ($addresses as $name => $address) { + $value .= $this->QuotedPrintableEncode($name, $this->charset).' <'.$address.'>, '; + } + $value = preg_replace('/(.*),$/', '\\1', $value); + + $this->SetHeader($header, $value); + } + + + /** + * Adds new part to message and returns it's number + * + * @param Array $part_definition + * @param int $part_number number of new part + * @return int + */ + function AddPart(&$part_definition, $part_number = false) + { + $part_number = $part_number !== false ? $part_number : count($this->parts); + $this->parts[$part_number] =& $part_definition; + return $part_number; + } + + /** + * Returns text version of HTML document + * + * @param string $html + * @return string + */ + function ConvertToText($html) + { + $search = Array ( + "'(<\/td>.*)[\r\n]+(.*[\r\n]{0,2})|(<\/p>)|(<\/div>)|(<\/tr>)'i", + "'(.*?)'si", + "''si", + "'(.*?)'si", + "''si", +// "'^[\s\n\r\t]+'", //strip all spacers & newlines in the begin of document +// "'[\s\n\r\t]+$'", //strip all spacers & newlines in the end of document + "'&(quot|#34);'i", + "'&(amp|#38);'i", + "'&(lt|#60);'i", + "'&(gt|#62);'i", + "'&(nbsp|#160);'i", + "'&(iexcl|#161);'i", + "'&(cent|#162);'i", + "'&(pound|#163);'i", + "'&(copy|#169);'i", + "'&#(\d+);'e" + ); + + $replace = Array ( + "\\1\t\\2", + "\n", + "", + "", + "", + "", +// "", +// "", + "\"", + "&", + "<", + ">", + " ", + chr(161), + chr(162), + chr(163), + chr(169), + "chr(\\1)" + ); + + return strip_tags( preg_replace ($search, $replace, $html) ); + } + + /** + * Add text OR html part to message (optionally encoded) + * + * @param string $text part's text + * @param bool $is_html this html part or not + * @param bool $encode encode message using quoted-printable encoding + * + * @return int number of created part + */ + function CreateTextHtmlPart($text, $is_html = false, $encode = true) + { + if ($is_html) { + // if adding HTML part, then create plain-text part too + $this->CreateTextHtmlPart($this->ConvertToText($text)); + } + + // in case if text is from $_REQUEST, then line endings are "\r\n", but we need "\n" here + + $text = str_replace("\r\n", "\n", $text); // possible case + $text = str_replace("\r", "\n", $text); // impossible case, but just in case replace this too + + $definition = Array ( + 'Content-Type' => $is_html ? 'text/html' : 'text/plain', + 'CHARSET' => $this->charset, + 'DATA' => $encode ? $this->QuotedPrintableEncode($text) : $text, + ); + + if ($encode) { + $definition['Content-Transfer-Encoding'] = 'quoted-printable'; + } + + $guess_name = $is_html ? 'html_part' : 'text_part'; + $part_number = $this->guessOptions[$guess_name] !== false ? $this->guessOptions[$guess_name] : false; + + $part_number = $this->AddPart($definition, $part_number); + $this->guessOptions[$guess_name] = $part_number; + + return $part_number; + } + + /** + * Adds attachment part to message + * + * @param string $file name of the file with attachment body + * @param string $attach_name name for attachment (name of file is used, when not specified) + * @param string $content_type content type for attachment + * @param string $content body of file to be attached + * @param bool $inline is attachment inline or not + * + * @return int number of created part + */ + function AddAttachment($file = '', $attach_name = '', $content_type = '', $content = '', $inline = false) + { + $definition = Array ( + 'Disposition' => $inline ? 'inline' : 'attachment', + 'Content-Type' => $content_type ? $content_type : 'automatic/name', + ); + + if ($file) { + // filename of attachment given + $definition['FileName'] = $file; + } + + if ($attach_name) { + // name of attachment given + $definition['Name'] = $attach_name; + } + + if ($content) { + // attachment data is given + $definition['Data'] = $content; + } + + $definition =& $this->GetFileDefinition($definition); + $part_number = $this->AddPart($definition); + + if ($inline) { + // it's inline attachment and needs content-id to be addressed by in message + $this->parts[$part_number]['Content-ID'] = md5(uniqid($part_number.time())).'.'.$this->GetFilenameExtension($attach_name ? $attach_name : $file); + } + + $this->guessOptions[$inline ? 'inline_attachments' : 'attachments'][] = $part_number; + + return $part_number; + } + + /** + * Adds another MIME message as attachment to message being composed + * + * @param string $file name of the file with attachment body + * @param string $attach_name name for attachment (name of file is used, when not specified) + * @param string $content body of file to be attached + * + * @return int number of created part + */ + function AddMessageAttachment($file = '', $attach_name = '', $content = '') + { + $part_number = $this->AddAttachment($file, $attach_name, 'message/rfc822', $content, true); + unset($this->parts[$part_number]['Content-ID']); // messages don't have content-id, but have inline disposition + return $part_number; + } + + /** + * Creates multipart of specified type and returns it's number + * + * @param Array $part_numbers + * @param string $multipart_type = {alternative,related,mixed,paralell} + * @return int + */ + function CreateMultipart($part_numbers, $multipart_type) + { + $types = Array ('alternative', 'related' , 'mixed', 'paralell'); + if (!in_array($multipart_type, $types)) { + return $this->SetError('INVALID_MULTIPART_SUBTYPE', Array($multipart_type)); + } + + $definition = Array ( + 'Content-Type' => 'multipart/'.$multipart_type, + 'PARTS' => $part_numbers, + ); + + return $this->AddPart($definition); + } + + /** + * Creates missing content-id header for inline attachments + * + * @param int $part_number + */ + function CreateContentID($part_number) + { + $part =& $this->parts[$part_number]; + if (!isset($part['Content-ID']) && $part['DISPOSITION'] == 'inline') { + $part['Content-ID'] = md5(uniqid($part_number.time())).'.'.$this->GetFilenameExtension($part['NAME']); + } + } + + /** + * Returns attachment part based on file used in attachment + * + * @param Array $file + * @return Array + */ + function &GetFileDefinition ($file) + { + $name = ''; + if (isset($file['Name'])) { + // if name is given directly, then use it + $name = $file['Name']; + } + else { + // auto-guess attachment name based on source filename + $name = isset($file['FileName']) ? basename($file['FileName']) : ''; + } + + if (!$name || (!isset($file['FileName']) && !isset($file['Data']))) { + // filename not specified || no filename + no direct file content + return $this->SetError('MISSING_FILE_DATA'); + } + + $encoding = 'base64'; + if (isset($file['Content-Type'])) { + $content_type = $file['Content-Type']; + list ($type, $sub_type) = explode('/', $content_type); + + switch ($type) { + case 'text': + case 'image': + case 'audio': + case 'video': + case 'application': + break; + + case 'message': + $encoding = '7bit'; + break; + + case 'automatic': + if (!$name) { + return $this->SetError('MISSING_FILE_NAME'); + } + $this->guessContentType($name, $content_type, $encoding); + break; + + default: + return $this->SetError('INVALID_CONTENT_TYPE', Array($content_type)); + } + } + else { + // encoding not passed in file part, then assume, that it's binary + $content_type = 'application/octet-stream'; + } + + $definition = Array ( + 'Content-Type' => $content_type, + 'Content-Transfer-Encoding' => $encoding, + 'NAME' => $name, // attachment name + ); + + if (isset($file['Disposition'])) { + $disposition = strtolower($file['Disposition']); + if ($disposition == 'inline' || $disposition == 'attachment') { + // valid disposition header value + $definition['DISPOSITION'] = $file['Disposition']; + } + else { + return $this->SetError('INVALID_DISPOSITION', Array($file['Disposition'])); + } + } + + if (isset($file['FileName'])) { + $definition['FILENAME'] = $file['FileName']; + } + elseif (isset($file['Data'])) { + $definition['DATA'] =& $file['Data']; + } + + return $definition; + } + + /** + * Returns content-type based on filename extension + * + * @param string $filename + * @param string $content_type + * @param string $encoding + * + * @todo Regular expression used is not completely finished, that's why if extension used for + * comparing in some other extension (from list) part, that partial match extension will be returned. + * Because of two extension that begins with same 2 letters always belong to same content type + * this unfinished regular expression still gives correct result in any case. + */ + function guessContentType($filename, &$content_type, &$encoding) + { + $file_extension = strtolower( $this->GetFilenameExtension($filename) ); + + $mapping = '(xls:application/excel)(hqx:application/macbinhex40)(doc,dot,wrd:application/msword)(pdf:application/pdf) + (pgp:application/pgp)(ps,eps,ai:application/postscript)(ppt:application/powerpoint)(rtf:application/rtf) + (tgz,gtar:application/x-gtar)(gz:application/x-gzip)(php,php3:application/x-httpd-php)(js:application/x-javascript) + (ppd,psd:application/x-photoshop)(swf,swc,rf:application/x-shockwave-flash)(tar:application/x-tar)(zip:application/zip) + (mid,midi,kar:audio/midi)(mp2,mp3,mpga:audio/mpeg)(ra:audio/x-realaudio)(wav:audio/wav)(bmp:image/bitmap)(bmp:image/bitmap) + (gif:image/gif)(iff:image/iff)(jb2:image/jb2)(jpg,jpe,jpeg:image/jpeg)(jpx:image/jpx)(png:image/png)(tif,tiff:image/tiff) + (wbmp:image/vnd.wap.wbmp)(xbm:image/xbm)(css:text/css)(txt:text/plain)(htm,html:text/html)(xml:text/xml) + (mpg,mpe,mpeg:video/mpeg)(qt,mov:video/quicktime)(avi:video/x-ms-video)(eml:message/rfc822)'; + + if (preg_match('/[\(,]'.$file_extension.'[,]{0,1}.*?:(.*?)\)/s', $mapping, $regs)) { + if ($file_extension == 'eml') { + $encoding = '7bit'; + } + $content_type = $regs[1]; + } + else { + $content_type = 'application/octet-stream'; + } + } + + /** + * Using guess options combines all added parts together and returns combined part number + * + * @return int + */ + function PrepareMessageBody() + { + if ($this->bodyPartNumber === false) { + $part_number = false; // number of generated body part + + // 1. set text content of message + if ($this->guessOptions['text_part'] !== false && $this->guessOptions['html_part'] !== false) { + // text & html parts present -> compose into alternative part + $parts = Array ( + $this->guessOptions['text_part'], + $this->guessOptions['html_part'], + ); + $part_number = $this->CreateMultipart($parts, 'alternative'); + } + elseif ($this->guessOptions['text_part'] !== false) { + // only text part is defined, then leave as is + $part_number = $this->guessOptions['text_part']; + } + + if ($part_number === false) { + return $this->SetError('MESSAGE_TEXT_MISSING'); + } + + // 2. if inline attachments found, then create related multipart from text & inline attachments + if ($this->guessOptions['inline_attachments']) { + $parts = array_merge(Array($part_number), $this->guessOptions['inline_attachments']); + $part_number = $this->CreateMultipart($parts, 'related'); + } + + // 3. if normal attachments found, then create mixed multipart from text & attachments + if ($this->guessOptions['attachments']) { + $parts = array_merge(Array($part_number), $this->guessOptions['attachments']); + $part_number = $this->CreateMultipart($parts, 'mixed'); + } + + $this->bodyPartNumber = $part_number; + } + + return $this->bodyPartNumber; + } + + /** + * Returns message headers and body part (by reference in parameters) + * + * @param Array $message_headers + * @param string $message_body + * @return bool + */ + function GetHeadersAndBody(&$message_headers, &$message_body) + { + $part_number = $this->PrepareMessageBody(); + if ($part_number === false) { + return $this->SetError('MESSAGE_COMPOSE_ERROR'); + } + + $message_headers = $this->GetPartHeaders($part_number); + + // join message headers and body headers + $message_headers = array_merge_recursive2($this->headers, $message_headers); + + $message_headers['MIME-Version'] = '1.0'; + if ($this->mailerName) { + $message_headers['X-Mailer'] = $this->mailerName; + } + + $this->GenerateMessageID($message_headers['From']); + $valid_headers = $this->ValidateHeaders($message_headers); + if ($valid_headers) { + // set missing headers from existing + $from_headers = Array ('Reply-To', 'Errors-To'); + foreach ($from_headers as $header_name) { + if (!isset($message_headers[$header_name])) { + $message_headers[$header_name] = $message_headers['From']; + } + } + + $message_body = $this->GetPartBody($part_number); + return true; + } + + return false; + } + + /** + * Checks that all required headers are set and not empty + * + * @param Array $message_headers + * @return bool + */ + function ValidateHeaders($message_headers) + { + $from = isset($message_headers['From']) ? $message_headers['From'] : ''; + if (!$from) { + return $this->SetError('HEADER_MISSING', Array('From')); + } + + if (!isset($message_headers['To'])) { + return $this->SetError('HEADER_MISSING', Array('To')); + } + + if (!isset($message_headers['Subject'])) { + return $this->SetError('HEADER_MISSING', Array('Subject')); + } + + return true; + } + + /** + * Returns full message source (headers + body) for sending to SMTP server + * + * @return string + */ + function GetMessage() + { + $composed = $this->GetHeadersAndBody($message_headers, $message_body); + if ($composed) { + // add headers to resulting message + $message = ''; + foreach ($message_headers as $header_name => $header_value) { + $message .= $header_name.': '.$header_value.$this->line_break; + } + + // add message body + $message .= $this->line_break.$message_body; + + return $message; + } + + return false; + } + + /** + * Sets just happened error code + * + * @param string $code + * @param Array $params additional error params + * @return bool + */ + function SetError($code, $params = null, $fatal = true) + { + $error_msgs = Array ( + 'MAIL_NOT_FOUND' => 'the mail() function is not available in this PHP installation', + + 'MISSING_CONTENT_TYPE' => 'it was added a part without Content-Type: defined', + 'INVALID_CONTENT_TYPE' => 'Content-Type: %s not yet supported', + 'INVALID_MULTIPART_SUBTYPE' => 'multipart Content-Type sub_type %s not yet supported', + 'FILE_PART_OPEN_ERROR' => 'could not open part file %s', + 'FILE_PART_DATA_ERROR' => 'the length of the file that was read does not match the size of the part file %s due to possible data corruption', + 'FILE_PART_DATA_MISSING' => 'it was added a part without a body PART', + 'INVALID_ENCODING' => '%s is not yet a supported encoding type', + + 'MISSING_FILE_DATA' => 'file part data is missing', + 'MISSING_FILE_NAME' => 'it is not possible to determine content type from the name', + 'INVALID_DISPOSITION' => '%s is not a supported message part content disposition', + + 'MESSAGE_TEXT_MISSING' => 'text part of message was not defined', + 'MESSAGE_COMPOSE_ERROR' => 'unknown message composing error', + + 'HEADER_MISSING' => 'header %s is required', + + // SMTP errors + 'INVALID_COMMAND' => 'Commands cannot contain newlines', + 'CONNECTION_TERMINATED' => 'Connection was unexpectedly closed', + 'HELO_ERROR' => 'HELO was not accepted: %s', + 'AUTH_METHOD_NOT_SUPPORTED' => '%s is not a supported authentication method', + 'AUTH_METHOD_NOT_IMPLEMENTED' => '%s is not a implemented authentication method', + ); + + if (!is_array($params)) { + $params = Array (); + } + + trigger_error('mail error: '.vsprintf($error_msgs[$code], $params), $fatal ? E_USER_ERROR : E_USER_WARNING); + + return false; + } + + /** + * Simple method of message sending + * + * @param string $from_email + * @param string $to_email + * @param string $subject + * @param string $from_name + * @param string $to_name + */ + function Send($from_email, $to_email, $subject, $from_name = '', $to_name = '') + { + $this->SetSubject($subject); + $this->SetFrom($from_email, trim($from_name) ? trim($from_name) : $from_email); + + if (!isset($this->headers['Return-Path'])) { + $this->SetReturnPath($from_email); + } + + $this->SetEncodedEmailHeader('To', $to_email, $to_name ? $to_name : $to_email); + + return $this->Deliver(); + } + + /** + * Prepares class for sending another message + * + */ + function Clear() + { + $this->headers = Array (); + $this->bodyPartNumber = false; + $this->parts = Array(); + $this->guessOptions = Array ( + 'attachments' => Array(), + 'inline_attachments' => Array (), + 'text_part' => false, + 'html_part' => false, + ); + + $this->SetCharset(null, true); + } + + /** + * Sends message via php mail function + * + * @param Array $message_headers + * @param string $body + * + * @return bool + */ + function SendMail($message_headers, &$body) + { + if (!function_exists('mail')) { + return $this->SetError('MAIL_NOT_FOUND'); + } + + $to = $message_headers['To']; + $subject = $message_headers['Subject']; + $return_path = $message_headers['Return-Path']; + unset($message_headers['To'], $message_headers['Subject']); + + $headers = ''; + $header_separator = $this->Application->ConfigValue('MailFunctionHeaderSeparator') == 1 ? "\n" : "\r\n"; + foreach ($message_headers as $header_name => $header_value) { + $headers .= $header_name.': '.$header_value.$header_separator; + } + + if ($return_path) { + if (constOn('SAFE_MODE') || (defined('PHP_OS') && substr(PHP_OS, 0, 3) == 'WIN')) { + // safe mode restriction OR is windows + $return_path = ''; + } + } + + return mail($to, $subject, $body, $headers, $return_path ? '-f'.$return_path : null); + } + + /** + * Sends message via SMTP server + * + * @param Array $message_headers + * @param string $body + * + * @return bool + */ + function SendSMTP($message_headers, &$message_body) + { + if (!$this->SmtpConnect()) { + return false; + } + + $from = $this->ExtractRecipientEmail($message_headers['From']); + if (!$this->SmtpSetFrom($from)) { + return false; + } + + $recipients = ''; + $recipient_headers = Array ('To', 'Cc', 'Bcc'); + foreach ($recipient_headers as $recipient_header) { + if (isset($message_headers[$recipient_header])) { + $recipients .= ' '.$message_headers[$recipient_header]; + } + } + + $recipients_accepted = 0; + $recipients = $this->ExtractRecipientEmail($recipients, true); + foreach ($recipients as $recipient) { + if ($this->SmtpAddTo($recipient)) { + $recipients_accepted++; + } + } + + if ($recipients_accepted == 0) { + // none of recipients were accepted + return false; + } + + $headers = ''; + foreach ($message_headers as $header_name => $header_value) { + $headers .= $header_name.': '.$header_value.$this->line_break; + } + + if (!$this->SmtpSendMessage($headers . "\r\n" . $message_body)) { + return false; + } + + $this->SmtpDisconnect(); + + return true; + } + + /** + * Send a command to the server with an optional string of + * arguments. A carriage return / linefeed (CRLF) sequence will + * be appended to each command string before it is sent to the + * SMTP server. + * + * @param string $command The SMTP command to send to the server. + * @param string $args A string of optional arguments to append to the command. + * + * @return bool + * + */ + function SmtpSendCommand($command, $args = '') + { + if (!empty($args)) { + $command .= ' ' . $args; + } + + if (strcspn($command, "\r\n") !== strlen($command)) { + return $this->SetError('INVALID_COMMAND'); + } + + return $this->smtpSocket->write($command . "\r\n") === false ? false : true; + } + + /** + * Read a reply from the SMTP server. The reply consists of a response code and a response message. + * + * @param mixed $valid The set of valid response codes. These may be specified as an array of integer values or as a single integer value. + * + * @return bool + * + */ + function SmtpParseResponse($valid) + { + $this->smtpResponceCode = -1; + $this->smtpRespoceArguments = array(); + + while ($line = $this->smtpSocket->readLine()) { + // If we receive an empty line, the connection has been closed. + if (empty($line)) { + $this->SmtpDisconnect(); + return $this->SetError('CONNECTION_TERMINATED', null, false); + } + + // Read the code and store the rest in the arguments array. + $code = substr($line, 0, 3); + $this->smtpRespoceArguments[] = trim(substr($line, 4)); + + // Check the syntax of the response code. + if (is_numeric($code)) { + $this->smtpResponceCode = (int)$code; + } else { + $this->smtpResponceCode = -1; + break; + } + + // If this is not a multiline response, we're done. + if (substr($line, 3, 1) != '-') { + break; + } + } + + // Compare the server's response code with the valid code. + if (is_int($valid) && ($this->smtpResponceCode === $valid)) { + return true; + } + + // If we were given an array of valid response codes, check each one. + if (is_array($valid)) { + foreach ($valid as $valid_code) { + if ($this->smtpResponceCode === $valid_code) { + return true; + } + } + } + + return false; + } + + /** + * Attempt to connect to the SMTP server. + * + * @param int $timeout The timeout value (in seconds) for the socket connection. + * @param bool $persistent Should a persistent socket connection be used ? + * + * @return bool + * + */ + function SmtpConnect($timeout = null, $persistent = false) + { + $result = $this->smtpSocket->connect($this->smtpParams['server'], $this->smtpParams['port'], $persistent, $timeout); + if (!$result) { + return false; + } + + if ($this->SmtpParseResponse(220) === false) { + return false; + } + elseif ($this->SmtpNegotiate() === false) { + return false; + } + + if ($this->smtpParams['use_auth']) { + $result = $this->SmtpAuthentificate($this->smtpParams['username'], $this->smtpParams['password']); + if (!$result) { + // authentification failed + return false; + } + } + + return true; + } + + /** + * Attempt to disconnect from the SMTP server. + * + * @return bool + */ + function SmtpDisconnect() + { + if ($this->SmtpSendCommand('QUIT') === false) { + return false; + } + elseif ($this->SmtpParseResponse(221) === false) { + return false; + } + + return $this->smtpSocket->disconnect(); + } + + /** + * Attempt to send the EHLO command and obtain a list of ESMTP + * extensions available, and failing that just send HELO. + * + * @return bool + */ + function SmtpNegotiate() + { + if (!$this->SmtpSendCommand('EHLO', $this->smtpParams['localhost'])) { + return false; + } + + if (!$this->SmtpParseResponse(250)) { + // If we receive a 503 response, we're already authenticated. + if ($this->smtpResponceCode === 503) { + return true; + } + + // If the EHLO failed, try the simpler HELO command. + if (!$this->SmtpSendCommand('HELO', $this->smtpParams['localhost'])) { + return false; + } + + if (!$this->SmtpParseResponse(250)) { + return $this->SetError('HELO_ERROR', Array($this->smtpResponceCode), false); + } + + return true; + } + + foreach ($this->smtpRespoceArguments as $argument) { + $verb = strtok($argument, ' '); + $arguments = substr($argument, strlen($verb) + 1, strlen($argument) - strlen($verb) - 1); + $this->smtpFeatures[$verb] = $arguments; + } + + return true; + } + + /** + * Attempt to do SMTP authentication. + * + * @param string The userid to authenticate as. + * @param string The password to authenticate with. + * @param string The requested authentication method. If none is specified, the best supported method will be used. + * + * @return bool + */ + function SmtpAuthentificate($uid, $pwd , $method = '') + { + if (empty($this->smtpFeatures['AUTH'])) { + // server doesn't understand AUTH command, then don't authentificate + return true; + } + + $available_methods = explode(' ', $this->smtpFeatures['AUTH']); // methods supported by SMTP server + + if (empty($method)) { + foreach ($this->smtpAuthMethods as $supported_method) { + // check if server supports methods, that we have implemented + if (in_array($supported_method, $available_methods)) { + $method = $supported_method; + break; + } + } + } else { + $method = strtoupper($method); + } + + if (!in_array($method, $available_methods)) { + // coosen method is not supported by server + return $this->SetError('AUTH_METHOD_NOT_SUPPORTED', Array($method)); + } + + switch ($method) { + case 'CRAM-MD5': + $result = $this->_authCRAM_MD5($uid, $pwd); + break; + + case 'LOGIN': + $result = $this->_authLogin($uid, $pwd); + break; + case 'PLAIN': + $result = $this->_authPlain($uid, $pwd); + break; + default: + return $this->SetError('AUTH_METHOD_NOT_IMPLEMENTED', Array($method)); + break; + } + + return $result; + } + + /** + * Function which implements HMAC MD5 digest + * + * @param string $key The secret key + * @param string $data The data to protect + * @return string The HMAC MD5 digest + */ + function _HMAC_MD5($key, $data) + { + if (strlen($key) > 64) { + $key = pack('H32', md5($key)); + } + + if (strlen($key) < 64) { + $key = str_pad($key, 64, chr(0)); + } + + $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad . $data)); + $digest = md5($k_opad . $inner); + + return $digest; + } + + /** + * Authenticates the user using the CRAM-MD5 method. + * + * @param string The userid to authenticate as. + * @param string The password to authenticate with. + * + * @return bool + */ + function _authCRAM_MD5($uid, $pwd) + { + if (!$this->SmtpSendCommand('AUTH', 'CRAM-MD5')) { + return false; + } + + // 334: Continue authentication request + if (!$this->SmtpParseResponse(334)) { + // 503: Error: already authenticated + return $this->smtpResponceCode === 503 ? true : false; + } + + $challenge = base64_decode($this->smtpRespoceArguments[0]); + $auth_str = base64_encode($uid . ' ' . $this->_HMAC_MD5($pwd, $challenge)); + + if (!$this->SmtpSendCommand($auth_str)) { + return false; + } + + // 235: Authentication successful + if (!$this->SmtpParseResponse(235)) { + return false; + } + + return true; + } + + /** + * Authenticates the user using the LOGIN method. + * + * @param string The userid to authenticate as. + * @param string The password to authenticate with. + * + * @return bool + */ + function _authLogin($uid, $pwd) + { + if (!$this->SmtpSendCommand('AUTH', 'LOGIN')) { + return false; + } + + // 334: Continue authentication request + if (!$this->SmtpParseResponse(334)) { + // 503: Error: already authenticated + return $this->smtpResponceCode === 503 ? true : false; + } + + if (!$this->SmtpSendCommand(base64_encode($uid))) { + return false; + } + + // 334: Continue authentication request + if (!$this->SmtpParseResponse(334)) { + return false; + } + + if (!$this->SmtpSendCommand(base64_encode($pwd))) { + return false; + } + + // 235: Authentication successful + if (!$this->SmtpParseResponse(235)) { + return false; + } + + return true; + } + + /** + * Authenticates the user using the PLAIN method. + * + * @param string The userid to authenticate as. + * @param string The password to authenticate with. + * + * @return bool + */ + function _authPlain($uid, $pwd) + { + if (!$this->SmtpSendCommand('AUTH', 'PLAIN')) { + return false; + } + + // 334: Continue authentication request + if (!$this->SmtpParseResponse(334)) { + // 503: Error: already authenticated + return $this->smtpResponceCode === 503 ? true : false; + } + + $auth_str = base64_encode(chr(0) . $uid . chr(0) . $pwd); + + if (!$this->SmtpSendCommand($auth_str)) { + return false; + } + + // 235: Authentication successful + if (!$this->SmtpParseResponse(235)) { + return false; + } + + return true; + } + + /** + * Send the MAIL FROM: command. + * + * @param string $sender The sender (reverse path) to set. + * @param string $params String containing additional MAIL parameters, such as the NOTIFY flags defined by RFC 1891 or the VERP protocol. + * + * @return bool + */ + function SmtpSetFrom($sender, $params = null) + { + $args = "FROM:<$sender>"; + if (is_string($params)) { + $args .= ' ' . $params; + } + + if (!$this->SmtpSendCommand('MAIL', $args)) { + return false; + } + if (!$this->SmtpParseResponse(250)) { + return false; + } + + return true; + } + + /** + * Send the RCPT TO: command. + * + * @param string $recipient The recipient (forward path) to add. + * @param string $params String containing additional RCPT parameters, such as the NOTIFY flags defined by RFC 1891. + * + * @return bool + */ + function SmtpAddTo($recipient, $params = null) + { + $args = "TO:<$recipient>"; + if (is_string($params)) { + $args .= ' ' . $params; + } + + if (!$this->SmtpSendCommand('RCPT', $args)) { + return false; + } + + if (!$this->SmtpParseResponse(array(250, 251))) { + return false; + } + + return true; + } + + /** + * Send the DATA command. + * + * @param string $data The message body to send. + * + * @return bool + */ + function SmtpSendMessage($data) + { + /* RFC 1870, section 3, subsection 3 states "a value of zero + * indicates that no fixed maximum message size is in force". + * Furthermore, it says that if "the parameter is omitted no + * information is conveyed about the server's fixed maximum + * message size". */ + if (isset($this->smtpFeatures['SIZE']) && ($this->smtpFeatures['SIZE'] > 0)) { + if (strlen($data) >= $this->smtpFeatures['SIZE']) { + $this->SmtpDisconnect(); + return $this->SetError('Message size excedes the server limit', null, false); + } + } + + // Quote the data based on the SMTP standards + + // Change Unix (\n) and Mac (\r) linefeeds into Internet-standard CRLF (\r\n) linefeeds. + $data = preg_replace(Array('/(?SmtpSendCommand('DATA')) { + return false; + } + if (!$this->SmtpParseResponse(354)) { + return false; + } + + if ($this->smtpSocket->write($data . "\r\n.\r\n") === false) { + return false; + } + if (!$this->SmtpParseResponse(250)) { + return false; + } + + return true; + } + + /** + * Sets global charset for every message part + * + * @param string $charset + * @param bool set charset to default for current langauge + */ + function SetCharset($charset, $is_system = false) + { + if ($is_system) { + $language =& $this->Application->recallObject('lang.current'); + /* @var $language LanguagesItem */ + + $charset = $language->GetDBField('Charset') ? $language->GetDBField('Charset') : 'ISO-8859-1'; + } + + $this->charset = $charset; + } + + /** + * Allows to extract recipient's name from text by specifying it's email + * + * @param string $text + * @param string $email + * @return string + */ + function ExtractRecipientName($text, $email = '') + { + $lastspace = strrpos($text, ' '); + $name = trim(substr($text, 0, $lastspace - strlen($text)), " \r\n\t\0\x0b\"'"); + if (empty($name)) { + $name = $email; + } + return $name; + } + + /** + * Takes $text and returns an email address from it + * Set $multiple to true to retrieve all found addresses + * Returns false if no addresses were found + * + * @param string $text + * @param bool $multiple + * @param bool $allowOnlyDomain + * @return string + */ + function ExtractRecipientEmail($text, $multiple = false, $allowOnlyDomain = false) { + if ($allowOnlyDomain) { + $pattern = '/(('.REGEX_EMAIL_USER.'@)?'.REGEX_EMAIL_DOMAIN.')/i'; + } else { + $pattern = '/('.REGEX_EMAIL_USER.'@'.REGEX_EMAIL_DOMAIN.')/i'; + } + if ($multiple) { + if (preg_match_all($pattern, $text, $findemail) >= 1) { + return $findemail[1]; + } else { + return false; + } + } else { + if (preg_match($pattern, $text, $findemail) == 1) { + return $findemail[1]; + } else { + return false; + } + } + } + + /** + * Returns array of recipient names and emails + * + * @param string $list + * @param string $separator + * @return Array + */ + function GetRecipients($list, $separator = ';') + { + // by MIME specs recipients should be separated using "," symbol, + // but users can write ";" too (like in OutLook) + + if (!trim($list)) { + return false; + } + + $list = explode(',', str_replace($separator, ',', $list)); + + $ret = Array (); + foreach ($list as $recipient) { + $email = $this->ExtractRecipientEmail($recipient); + if (!$email) { + // invalid email format -> error + return false; + } + $name = $this->ExtractRecipientName($recipient, $email); + $ret[] = Array('Name' => $name, 'Email' => $email); + } + + return $ret; + } + + /* methods for nice header setting */ + + /** + * Sets "From" header. + * + * @param string $email + * @param string $first_last_name FirstName and LastName or just FirstName + * @param string $last_name LastName (if not specified in previous parameter) + */ + function SetFrom($email, $first_last_name, $last_name = '') + { + $name = rtrim($first_last_name.' '.$last_name, ' '); + $this->SetEncodedEmailHeader('From', $email, $name ? $name : $email); + + if (!isset($this->headers['Return-Path'])) { + $this->SetReturnPath($email); + } + } + + /** + * Sets "Return-Path" header (useful for spammers) + * + * @param string $email + */ + function SetReturnPath($email) + { + $this->SetHeader('Return-Path', $email); + } + + /** + * Adds one more recipient into "To" header + * + * @param string $email + * @param string $first_last_name FirstName and LastName or just FirstName + * @param string $last_name LastName (if not specified in previous parameter) + */ + function AddTo($email, $first_last_name = '', $last_name = '') + { + $name = rtrim($first_last_name.' '.$last_name, ' '); + $this->AddRecipient('To', $email, $name); + } + + /** + * Adds one more recipient into "Cc" header + * + * @param string $email + * @param string $first_last_name FirstName and LastName or just FirstName + * @param string $last_name LastName (if not specified in previous parameter) + */ + function AddCc($email, $first_last_name = '', $last_name = '') + { + $name = rtrim($first_last_name.' '.$last_name, ' '); + $this->AddRecipient('Cc', $email, $name); + } + + /** + * Adds one more recipient into "Bcc" header + * + * @param string $email + * @param string $first_last_name FirstName and LastName or just FirstName + * @param string $last_name LastName (if not specified in previous parameter) + */ + function AddBcc($email, $first_last_name = '', $last_name = '') + { + $name = rtrim($first_last_name.' '.$last_name, ' '); + $this->AddRecipient('Bcc', $email, $name); + } + + /** + * Adds one more recipient to specified header + * + * @param string $header_name + * @param string $email + * @param string $name + */ + function AddRecipient($header_name, $email, $name = '') + { + if (!$name) { + $name = $email; + } + + $value = isset($this->headers[$header_name]) ? $this->headers[$header_name] : ''; + $value .= ', '.$this->QuotedPrintableEncode($name, $this->charset).' <'.$email.'>'; + + $value = preg_replace('/^,(.*)/', '\\1', $value); // remove first comma + $this->SetHeader($header_name, $value); + } + + /** + * Sets "Subject" header. + * + * @param string $subject message subject + */ + function SetSubject($subject) + { + $this->setEncodedHeader('Subject', $subject); + } + + /** + * Sets HTML part of message + * + * @param string $html + */ + function SetHTML($html) + { + $this->CreateTextHtmlPart($html, true); + } + + /** + * Sets Plain-Text part of message + * + * @param string $plain_text + */ + function SetPlain($plain_text) + { + $this->CreateTextHtmlPart($plain_text); + } + + /** + * Sets HTML and optionally plain part of the message + * + * @param string $html + * @param string $plain_text + */ + function SetBody($html, $plain_text = '') + { + $this->SetHTML($html); + if ($plain_text) { + $this->SetPlain($plain_text); + } + } + + /** + * Performs mail delivery (supports delayed delivery) + * + * @param string $mesasge message, if not given, then use composed one + * @param bool $immediate_send send message now + * @param bool $immediate_clear clear message parts after message is sent + * + */ + function Deliver($message = null, $immediate_send = true, $immediate_clear = true) + { + if (isset($message)) { + // if message is given directly, then use it + $message_headers = Array (); + list ($headers, $message_body) = explode("\n\n", $message, 2); + $headers = explode("\n", $headers); + foreach ($headers as $header) { + $header = explode(':', $header, 2); + $message_headers[ trim($header[0]) ] = trim($header[1]); + } + $composed = true; + } else { + // direct message not given, then assemble message from available parts + $composed = $this->GetHeadersAndBody($message_headers, $message_body); + } + + if ($composed && $immediate_send) { + $send_method = 'Send'.$this->sendMethod; + $result = $this->$send_method($message_headers, $message_body); + + if ($immediate_clear) { + $this->Clear(); + } + return $result; + } + + // if not immediate send, then send result is positive :) + return !$immediate_send ? true : false; + } + } + +?> \ No newline at end of file Index: trunk/core/admin_templates/config/config_search_edit.tpl =================================================================== diff -u -r7391 -r7855 --- trunk/core/admin_templates/config/config_search_edit.tpl (.../config_search_edit.tpl) (revision 7391) +++ trunk/core/admin_templates/config/config_search_edit.tpl (.../config_search_edit.tpl) (revision 7855) @@ -2,7 +2,7 @@ - + @@ -21,9 +21,9 @@ submit_event('confs','OnGoBack'); } ) ); - + a_toolbar.AddButton( new ToolBarSeparator('sep1') ); - + a_toolbar.AddButton( new ToolBarButton('prev', '', function() { go_to_id('confs', ''); } @@ -32,14 +32,14 @@ go_to_id('confs', ''); } ) ); - + a_toolbar.Render(); - + a_toolbar.HideButton('prev'); a_toolbar.HideButton('next'); a_toolbar.HideButton('sep1'); - + a_toolbar.DisableButton('next'); @@ -55,8 +55,8 @@
+
img/icons/.gif" align="absmiddle" title=""> 
- - + + @@ -69,7 +69,6 @@ -
+
- \ No newline at end of file Index: trunk/core/units/general/helpers/helpers_config.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/general/helpers/helpers_config.php (.../helpers_config.php) (revision 7391) +++ trunk/core/units/general/helpers/helpers_config.php (.../helpers_config.php) (revision 7855) @@ -17,5 +17,6 @@ Array('pseudo'=>'ColumnPickerHelper','class'=>'kColumnPickerHelper','file'=>'col_picker_helper.php','build_event'=>'','require_classes'=>'kHelper'), Array('pseudo'=>'ThemesHelper','class'=>'kThemesHelper','file'=>'themes_helper.php','build_event'=>'','require_classes'=>'kHelper'), Array('pseudo'=>'CaptchaHelper','class'=>'kCaptchaHelper','file'=>'captcha_helper.php','build_event'=>'','require_classes'=>'kHelper'), + Array('pseudo'=>'PriorityHelper','class'=>'kPriorityHelper','file'=>'priority_helper.php','build_event'=>'','require_classes'=>'kHelper'), ), ); \ No newline at end of file Index: trunk/admin/editor/cmseditor/editor/dialog/fck_link/fck_link.js =================================================================== diff -u -r6797 -r7855 --- trunk/admin/editor/cmseditor/editor/dialog/fck_link/fck_link.js (.../fck_link.js) (revision 6797) +++ trunk/admin/editor/cmseditor/editor/dialog/fck_link/fck_link.js (.../fck_link.js) (revision 7855) @@ -377,6 +377,13 @@ { var sCmsPage = oNodes[i].attributes.getNamedItem('path').value ; var sCmsId = oNodes[i].attributes.getNamedItem('st_id').value ; + + var real_url = false; + if (sCmsPage == '@@'+sCmsId+'@@') { + real_url = oNodes[i].attributes.getNamedItem('real_url').value ; + links_path[i] = real_url; + } + var sTitle = oNodes[i].attributes.getNamedItem('title').value ; ServerPath = oNodes[i].attributes.getNamedItem('serverpath').value; if (LinkTypeID()) { @@ -403,7 +410,12 @@ if (tmpUrl.match(sCmsPage+'$')) { GetE('cmbImternalPagName').options[i].selected=1; //alert(tmpUrl+GetAdmin()); - window.frames["frmInternal"].document.location.href = tmpUrl+GetAdmin(); + if (real_url) { + window.frames["frmInternal"].document.location.href = real_url; + } + else { + window.frames["frmInternal"].document.location.href = tmpUrl+GetAdmin(); + } } } } @@ -442,7 +454,7 @@ function ChangeInternalUrl(url,obj) { // alert('ChangeInternalUrl '+ServerPath + url+GetAdmin()); - if(LinkTypeID()) { + if( LinkTypeID() || url.match(/@@[0-9]+@@/) ) { // alert('by Link ID') for (var i=0; i < obj.options.length; i++) { if (obj.options[i].value == url) { Index: trunk/core/units/user_groups/user_groups_dbitem.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/user_groups/user_groups_dbitem.php (.../user_groups_dbitem.php) (revision 7635) +++ trunk/core/units/user_groups/user_groups_dbitem.php (.../user_groups_dbitem.php) (revision 7855) @@ -14,12 +14,14 @@ */ function GetKeyClause($method=null, $keys_hash = null) { - $table_info = $this->getLinkedInfo(); - $keys_hash = Array( - $this->IDField => $this->ID, - $table_info['ForeignKey'] => $table_info['ParentId'], - ); - + $table_info = $this->getLinkedInfo($this->Special); + if ($table_info) { + // we have parent info, then use it + $keys_hash = Array( + $this->IDField => $this->ID, + $table_info['ForeignKey'] => $table_info['ParentId'], + ); + } return parent::GetKeyClause($method, $keys_hash); } Index: trunk/core/units/email_events/email_events_config.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/email_events/email_events_config.php (.../email_events_config.php) (revision 7391) +++ trunk/core/units/email_events/email_events_config.php (.../email_events_config.php) (revision 7855) @@ -57,7 +57,7 @@ ), 'Fields' => Array( - 'EventId' => Array(), + 'EventId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Event' => Array('type' => 'string','not_null' => '1','default' => ''), 'Enabled' => Array('type'=>'int', 'formatter'=>'kOptionsFormatter', 'options' => Array(1 => 'la_Enabled', 0 => 'la_Disabled', 2 => 'la_Text_FrontOnly'), 'use_phrases' => 1, 'default' => 1, 'not_null' => 1), 'FromUserId' => Array('formatter' => 'kLEFTFormatter','options' => Array(-1=>'root'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'required'=>1, 'not_null' => 1, 'default' => -1), Index: trunk/core/units/themes/themes_config.php =================================================================== diff -u -r6703 -r7855 --- trunk/core/units/themes/themes_config.php (.../themes_config.php) (revision 6703) +++ trunk/core/units/themes/themes_config.php (.../themes_config.php) (revision 7855) @@ -63,7 +63,7 @@ ) ), 'Fields' => Array( - 'ThemeId' => Array(), + 'ThemeId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Name' => Array('type' => 'string','not_null' => '1','default' => ''), 'Enabled' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array(1=>'la_Enabled', 0=>'la_Disabled'), 'use_phrases'=>1, 'not_null' => '1','default' => '1'), 'Description' => Array('type' => 'string','default' => ''), Index: trunk/core/admin_templates/config/config_search.tpl =================================================================== diff -u -r7391 -r7855 --- trunk/core/admin_templates/config/config_search.tpl (.../config_search.tpl) (revision 7391) +++ trunk/core/admin_templates/config/config_search.tpl (.../config_search.tpl) (revision 7855) @@ -2,7 +2,7 @@ - + @@ -18,10 +18,10 @@ std_new_item('confs', 'config/config_search_edit'); } ) ); - + a_toolbar.AddButton( new ToolBarSeparator('sep2') );
- + a_toolbar.AddButton( new ToolBarButton('select', '', function() { submit_event('confs',''); } @@ -40,12 +40,12 @@
- + - + " id="_cb_" onclick="update_checkbox(this, document.getElementById(''))" > " name="" value="">
@@ -80,36 +80,36 @@
][VariableValue]" VALUE="">%
- + ][VariableValue]" value="">%     ][VariableValue]" value="">%     - ][VariableValue]" value="">% + ][VariableValue]" value="">%
Index: trunk/core/kernel/event_manager.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 7635) +++ trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 7855) @@ -283,7 +283,15 @@ $this->HandleEvent($event); } + if ($event->status == erSTOP) { + // event requested to stop processing at this point + safeDefine('DBG_SKIP_REPORTING', 1); + $this->Application->Session->SaveData(); + exit; + } + if ($event->status == erPERM_FAIL) { + // should do redirect but to no_permissions template $event->redirect = $this->Application->IsAdmin() ? 'no_permission' : $this->Application->ConfigValue('NoPermissionTemplate'); $event->redirect_params['pass'] = 'm'; $event->redirect_params['m_cat_id'] = 0; @@ -294,8 +302,7 @@ // don't save last_template, because no_permission template does js history.back and could cause invalid opener_stack content $this->Application->SetVar('skip_last_template', 1); } - - // should do redirect but to no_permissions template + if ( ($event->status == erSUCCESS || $event->status == erPERM_FAIL) && ($event->redirect === true || strlen($event->redirect) > 0)) { // we need to pass category if the action was submitted to self-template, with the category passed // and it has not explicly set redirect template or pass_cateogry param Index: trunk/core/units/categories/cache_updater.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/categories/cache_updater.php (.../cache_updater.php) (revision 7635) +++ trunk/core/units/categories/cache_updater.php (.../cache_updater.php) (revision 7855) @@ -250,6 +250,7 @@ $data['category_template'] = ''; $data['item_template'] = ''; $data['children_count'] = 0; + $data['system'] = 0; $this->Stack->Push($data); } @@ -313,7 +314,7 @@ { $fields_hash = Array ( 'ParentPath' => '|'.implode('|', $data['parent_path']).'|', - 'NamedParentPath' => implode('/', $data['named_path'] ), + 'NamedParentPath' => $data['system'] ? $data['file_name'] : implode('/', $data['named_path'] ), 'CachedCategoryTemplate' => $data['category_template'], 'CachedDescendantCatsQty' => $data['children_count'], ); @@ -343,7 +344,9 @@ } $data['parent_path'][] = $category_id; - $data['named_path'][] = $record['Filename']; + $data['named_path'][] = preg_replace('/^Content\\//', '', $record['Filename']); + $data['system'] = $record['IsSystem']; + $data['file_name'] = $record['Filename']; // it is one of the modules root category $root_prefix = isset($this->root_prefixes[$category_id]) ? $this->root_prefixes[$category_id] : false; Index: trunk/core/units/phrases/phrases_config.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/phrases/phrases_config.php (.../phrases_config.php) (revision 7702) +++ trunk/core/units/phrases/phrases_config.php (.../phrases_config.php) (revision 7855) @@ -108,7 +108,7 @@ 'Phrase' => Array('type' => 'string','required'=>1,'unique'=>Array('LanguageId'),'not_null' => '1','default' => ''), 'Translation' => Array('type' => 'string','required'=>1,'not_null' => '1','default' => ''), 'PhraseType' => Array('type' => 'int','required'=>1,'formatter'=>'kOptionsFormatter','options'=>Array(0=>'la_PhraseType_Front',1=>'la_PhraseType_Admin',2=>'la_PhraseType_Both'), 'use_phrases' => 1, 'not_null' => '1','default' => '0'), - 'PhraseId' => Array('type' => 'int','not_null' => '1','default' => ''), + 'PhraseId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'LanguageId' => Array('type' => 'int','not_null' => '1','default' => '0'), 'LastChanged' => Array('type' => 'int', 'formatter'=>'kDateFormatter', 'not_null' => '1','default' => '0'), 'LastChangeIP' => Array('type' => 'string','not_null' => '1','default' => ''), Index: trunk/core/units/general/helpers/themes_helper.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/units/general/helpers/themes_helper.php (.../themes_helper.php) (revision 7391) +++ trunk/core/units/general/helpers/themes_helper.php (.../themes_helper.php) (revision 7855) @@ -1,32 +1,32 @@ themesFolder = FULL_PATH.'/themes'; } - + /** * Updates file system changes to database for selected theme * * @param string $theme_name - * + * * @return mixed returns ID of created/used theme or false, if none created */ function refreshTheme($theme_name) @@ -35,23 +35,23 @@ // requested theme was not found on hdd return false; } - + $id_field = $this->Application->getUnitOption('theme', 'IDField'); $table_name = $this->Application->getUnitOption('theme', 'TableName'); - + $sql = 'SELECT '.$id_field.' FROM '.$table_name.' WHERE Name = '.$this->Conn->qstr($theme_name); $theme_id = $this->Conn->GetOne($sql); - + $this->themeFiles = Array (); if ($theme_id) { // reset found mark for every themes file (if theme is not new) $sql = 'UPDATE '.TABLE_PREFIX.'ThemeFiles SET FileFound = 0 WHERE ThemeId = '.$theme_id; $this->Conn->Query($sql); - + // get all theme files from db $sql = 'SELECT FileId, CONCAT(FilePath, "/", FileName) AS FullPath FROM '.TABLE_PREFIX.'ThemeFiles @@ -71,44 +71,60 @@ $this->Conn->doInsert($fields_hash, $table_name); $theme_id = $this->Conn->getInsertID(); } - + $theme_path = $this->themesFolder.'/'.$theme_name; $this->FindThemeFiles('', $theme_path, $theme_id); // search from base theme directory - + // delete file records from db, that were not found on hdd $sql = 'DELETE FROM '.TABLE_PREFIX.'ThemeFiles WHERE ThemeId = '.$theme_id.' AND FileFound = 0'; $this->Conn->Query($sql); - + return $theme_id; } - + /** * Searches for new templates (missing in db) in spefied folder * * @param string $folder_path subfolder of searchable theme * @param string $theme_path theme path from web server root * @param int $theme_id id of theme we are scanning */ - function FindThemeFiles($folder_path, $theme_path, $theme_id) + function FindThemeFiles($folder_path, $theme_path, $theme_id, $auto_structure_mode=1) { $fh = opendir($theme_path.$folder_path.'/'); - + + if (file_exists($theme_path.$folder_path.'/'.'.smsignore')) { + $ignore = file($theme_path.$folder_path.'/'.'.smsignore'); + } + else { + $ignore = array(); + } + while (($filename = readdir($fh))) { if ($filename == '.' || $filename == '..') continue; - + + $auto_structure = $auto_structure_mode; + foreach ($ignore as $pattern) + { + if (preg_match('/'.str_replace('/', '\\/',$pattern).'/', $filename)) { + $auto_structure = 2; + break; + } + } + $full_path = $theme_path.$folder_path.'/'.$filename; if (is_dir($full_path)) { - $this->FindThemeFiles($folder_path.'/'.$filename, $theme_path, $theme_id); + $this->FindThemeFiles($folder_path.'/'.$filename, $theme_path, $theme_id, $auto_structure); } elseif (substr($filename, -4) == '.tpl') { $file_path = $folder_path.'/'.$filename; - + $file_id = isset($this->themeFiles[$file_path]) ? $this->themeFiles[$file_path] : false; if ($file_id) { // file was found in db & on hdd -> mark as existing $sql = 'UPDATE '.TABLE_PREFIX.'ThemeFiles - SET FileFound = 1 + SET FileFound = 1, FileType = '.$auto_structure.' WHERE FileId = '.$file_id; $this->Conn->Query($sql); } @@ -119,41 +135,41 @@ 'FileName' => $filename, 'FilePath' => $folder_path, 'Description' => '', - 'FileType' => 0, // 1 - built-in, 1 - custom (not in use right now) + 'FileType' => $auto_structure, // 1 - built-in, 0 - custom (not in use right now), 2 - skipped in structure 'FileFound' => 1, ); $this->Conn->doInsert($fields_hash, TABLE_PREFIX.'ThemeFiles'); $this->themeFiles[$file_path] = $this->Conn->getInsertID(); } // echo 'FilePath: ['.$folder_path.']; FileName: ['.$filename.']; IsNew: ['.($file_id > 0 ? 'NO' : 'YES').']
'; } - + } } - + /** * Updates file system changes to database for all themes (including new ones) * */ function refreshThemes() { $themes_found = Array(); - + $fh = opendir($this->themesFolder.'/'); while (($filename = readdir($fh))) { if ($filename == '.' || $filename == '..' || $filename == 'CVS') continue; - + if (is_dir($this->themesFolder.'/'.$filename)) { $theme_id = $this->refreshTheme($filename); if ($theme_id) { $themes_found[] = $theme_id; } } } - + $id_field = $this->Application->getUnitOption('theme', 'IDField'); $table_name = $this->Application->getUnitOption('theme', 'TableName'); - + // if none themes found -> delete all from db OR delete all except of found themes $sql = 'SELECT '.$id_field.' FROM '.$table_name; @@ -162,8 +178,9 @@ } $theme_ids = $this->Conn->GetCol($sql); $this->deleteThemes($theme_ids); + } - + /** * Deletes themes with ids passed from db * @@ -174,14 +191,14 @@ if (!$theme_ids) { return ; } - + $id_field = $this->Application->getUnitOption('theme', 'IDField'); $table_name = $this->Application->getUnitOption('theme', 'TableName'); - + $sql = 'DELETE FROM '.$table_name.' WHERE '.$id_field.' IN ('.implode(',', $theme_ids).')'; $this->Conn->Query($sql); - + $sql = 'DELETE FROM '.TABLE_PREFIX.'ThemeFiles WHERE '.$id_field.' IN ('.implode(',', $theme_ids).')'; $this->Conn->Query($sql); Index: trunk/admin/editor/cmseditor/editor/dialog/fck_select.html =================================================================== diff -u -r7363 -r7855 --- trunk/admin/editor/cmseditor/editor/dialog/fck_select.html (.../fck_select.html) (revision 7363) +++ trunk/admin/editor/cmseditor/editor/dialog/fck_select.html (.../fck_select.html) (revision 7855) @@ -141,29 +141,29 @@
Value
+
-
   -    +
Index: trunk/core/admin_templates/tools/system_tools.tpl =================================================================== diff -u -r7391 -r7855 --- trunk/core/admin_templates/tools/system_tools.tpl (.../system_tools.tpl) (revision 7391) +++ trunk/core/admin_templates/tools/system_tools.tpl (.../system_tools.tpl) (revision 7855) @@ -10,19 +10,30 @@ : - + ]" value="Go"> -  
- - - - - + + + + + + + + "> + + + +
+ : + + + +
\ No newline at end of file Index: trunk/core/kernel/application.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/application.php (.../application.php) (revision 7635) +++ trunk/core/kernel/application.php (.../application.php) (revision 7855) @@ -320,6 +320,11 @@ function refreshModuleInfo() { + if (defined('IS_INSTALL') && IS_INSTALL && !$this->TableFound('Modules')) { + $this->registerModuleConstants(); + return false; + } + $modules_helper =& $this->recallObject('ModulesHelper'); $sql = 'SELECT * FROM '.TABLE_PREFIX.'Modules @@ -365,7 +370,7 @@ $path = $this->GetFrontThemePath(); if ($path === false) { - $this->ApplicationDie('No Primary Theme Selected or Current Theme is Unknonw or Disabled'); + $this->ApplicationDie('No Primary Theme Selected or Current Theme is Unknown or Disabled'); } safeDefine('THEMES_PATH', $path); /* @@ -504,8 +509,8 @@ $this->registerClass('Template', KERNEL_PATH.'/parser/template.php'); $this->registerClass('TemplateParser', KERNEL_PATH.'/parser/template_parser.php',null, 'kDBTagProcessor'); - $this->registerClass('kEmailMessage', KERNEL_PATH.'/utility/email.php'); - $this->registerClass('kSmtpClient', KERNEL_PATH.'/utility/smtp_client.php'); + $this->registerClass('kEmailSendingHelper', KERNEL_PATH.'/utility/email_send.php', 'EmailSender', Array('kHelper')); + $this->registerClass('kSocket', KERNEL_PATH.'/utility/socket.php', 'Socket'); if (file_exists(MODULES_PATH.'/in-commerce/units/currencies/currency_rates.php')) { $this->registerClass('kCurrencyRates', MODULES_PATH.'/in-commerce/units/currencies/currency_rates.php'); @@ -713,9 +718,6 @@ if (!$this->TemplatesCache->TemplateExists($t) && !$this->IsAdmin()) { $t = $cms_handler->GetDesignTemplate(); } - /*else { - $cms_handler->SetCatByTemplate(); - }*/ } @@ -1013,7 +1015,7 @@ function ProcessParsedTag($prefix, $tag, $params) { - + $a_tag = new Tag('',$this->Parser); $a_tag->Tag = $tag; $tmp=$this->Application->processPrefix($prefix); @@ -1587,11 +1589,13 @@ } ob_end_flush(); + // session expiration is called from session initialization, // that's why $this->Session may be not defined here - if (is_object($this->Session)) { - $this->Session->SaveData(); - } + $session =& $this->Application->recallObject('Session'); + /* @var $session Session */ + + $session->SaveData(); exit; } @@ -1664,7 +1668,7 @@ } - + function LoadCache() { $cache_key = $this->GetVar('t').$this->GetVar('m_theme').$this->GetVar('m_lang').$this->IsAdmin(); $query = sprintf("SELECT PhraseList, ConfigVariables FROM %s WHERE Template = %s", @@ -1724,6 +1728,10 @@ $res = isset($this->ConfigHash[$name]) ? $this->ConfigHash[$name] : false; if ($res !== false) return $res; + if (defined('IS_INSTALL') && IS_INSTALL && !$this->TableFound('ConfigurationValues')) { + return false; + } + $res = $this->Conn->GetRow('SELECT VariableId, VariableValue FROM '.TABLE_PREFIX.'ConfigurationValues WHERE VariableName = '.$this->Conn->qstr($name)); if ($res) { $this->ConfigHash[$name] = $res['VariableValue']; @@ -1918,8 +1926,7 @@ function isDebugMode($check_debugger = true) { $debug_mode = defined('DEBUG_MODE') && DEBUG_MODE; - if($check_debugger) - { + if ($check_debugger) { $debug_mode = $debug_mode && is_object($this->Debugger); } return $debug_mode; @@ -2067,7 +2074,6 @@ if ( isset($this->Debugger) ) { $errorLevel = constOn('DBG_SQL_FAILURE') && !defined('IS_INSTALL') ? E_USER_ERROR : E_USER_WARNING; - $this->Debugger->dumpVars($_REQUEST); $this->Debugger->appendTrace(); $error_msg = ''.$msg.' ('.$code.')
SQL: '.$this->Debugger->formatSQL($sql); @@ -2191,7 +2197,8 @@ */ function &EmailEventAdmin($email_event_name, $to_user_id = -1, $send_params = false) { - return $this->EmailEvent($email_event_name, 1, $to_user_id, $send_params); + $event =& $this->EmailEvent($email_event_name, 1, $to_user_id, $send_params); + return $event; } /** @@ -2204,7 +2211,8 @@ */ function &EmailEventUser($email_event_name, $to_user_id = -1, $send_params = false) { - return $this->EmailEvent($email_event_name, 0, $to_user_id, $send_params); + $event =& $this->EmailEvent($email_event_name, 0, $to_user_id, $send_params); + return $event; } /** @@ -2233,16 +2241,14 @@ return $event; } - + /** + * Allows to check if user in this session is logged in or not + * + * @return bool + */ function LoggedIn() { - $user_id = $this->Application->RecallVar('user_id'); - - $ret = $user_id > 0; - if ($this->IsAdmin() && ($user_id == -1)) { - $ret = true; - } - return $ret; + return $this->Session->LoggedIn(); } /** @@ -2415,7 +2421,52 @@ } return $user_groups; } + + /** + * Allows to detect if page is browsed by spider (293 agents supported) + * + * @return bool + */ + function IsSpider() + { + static $is_spider = null; + + if (!isset($is_spider)) { + $user_agent = trim($_SERVER['HTTP_USER_AGENT']); + $robots = file(FULL_PATH.'/core/robots_list.txt'); + foreach ($robots as $robot_info) { + $robot_info = explode("\t", $robot_info, 3); + if ($user_agent == trim($robot_info[2])) { + $is_spider = true; + break; + } + } + } + + return $is_spider; + } + + /** + * Allows to detect table's presense in database + * + * @param string $table_name + * @return bool + */ + function TableFound($table_name) + { + static $table_found = Array(); + + if (!preg_match('/^'.preg_quote(TABLE_PREFIX, '/').'(.*)/', $table_name)) { + $table_name = TABLE_PREFIX.$table_name; + } + + if (!isset($table_found[$table_name])) { + $table_found[$table_name] = $this->Conn->Query('SHOW TABLES LIKE "'.$table_name.'"'); + } + + return $table_found[$table_name]; + } } ?> \ No newline at end of file Index: trunk/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 7702) +++ trunk/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 7855) @@ -1,5 +1,12 @@ getEventParam('EmailEventName'); - if( strpos($email_event, '_') !== false ) - { - trigger_error('Invalid email event name '.$email_event.'. Use only UPPERCASE characters and dots as email event names', E_USER_ERROR); + function GetMessageRecipients(&$event, &$event_id) + { + $email_event =& $event->getObject( Array('skip_autoload' => true) ); + /* @var $email_event kDBItem */ + + // get event parameters by name & type + $load_keys = Array ( + 'Event' => $event->getEventParam('EmailEventName'), + 'Type' => $event->getEventParam('EmailEventType'), + ); + $email_event->Load($load_keys); + + if (!$email_event->isLoaded()) { + // event record not found + return false; } + + $enabled = $email_event->GetDBField('Enabled'); + if ($enabled == EVENT_STATUS_DISABLED) { + return false; + } + if ($enabled == EVENT_STATUS_FRONTEND && $this->Application->IsAdmin()) { + return false; + } + // initial values $to_user_id = $event->getEventParam('EmailEventToUserId'); - $email_event_type = $event->getEventParam('EmailEventType'); - - $message_object = &$this->Application->recallObject('emailmessages', null, Array('skip_autoload' => true)); - $event_table = $this->Application->getUnitOption('emailevents', 'TableName'); - - $event_object =& $event->getObject( Array('skip_autoload' => true) ); - $event_object->Load(array('Event'=>$email_event, 'Type'=>$email_event_type)); - - $event_id = $event_object->GetDBField('EventId'); - $from_user_id = $event_object->GetDBField('FromUserId'); - $type = $event_object->GetDBField('Type'); - $enabled = $event_object->GetDBField('Enabled'); - - $direct_send_params = $event->getEventParam('DirectSendParams'); - - if ($enabled == 0) return; // disabled event - if ($enabled == 2 && $this->Application->IsAdmin() ) return; // event only for front-end - - if ($type == 1){ + $from_user_id = $email_event->GetDBField('FromUserId'); + + if ($email_event->GetDBField('Type') == EVENT_TYPE_ADMIN) { // For type "Admin" recipient is a user from field FromUserId which means From/To user in Email events list $to_user_id = $from_user_id; $from_user_id = -1; } - /* - if (!($to_user_id > 0) && !$direct_send_params){ - // if we can not determine recepient we will not send email - return; + + $event_id = $email_event->GetDBField('EventId'); + + return Array ($from_user_id, $to_user_id); + } + + /** + * Returns user name, email by id, or ones, that specified in $direct_params + * + * @param int $user_id + * @param string $user_type type of user = {to,from} + * @param Array $direct_params + * @return Array + */ + function GetRecipientInfo($user_id, $user_type, $direct_params = null) + { + // load user, because it can be addressed from email template tags + $user =& $this->Application->recallObject('u.email-'.$user_type, null, Array('skip_autoload' => true)); + /* @var $user UsersItem */ + + $email = $name = ''; + $result = $user_id > 0 ? $user->Load($user_id) : $user->Clear(); + if ($user->IsLoaded()) { + $email = $user->GetDBField('Email'); + $name = trim($user->GetDBField('FirstName').' '.$user->GetDBField('LastName')); } - */ - //Parse Message Template - $message_object->Load(array('EventId' => $event_id, 'LanguageId' => $this->Application->GetVar('m_lang'))); - $message_type = $message_object->GetDBField('MessageType'); - - $email_object = &$this->Application->recallObject('kEmailMessage'); - $email_object->Clear(); - - // add footer: begin + + if (is_array($direct_params)) { + if (isset($direct_params[$user_type.'_email'])) { + $email = $direct_params[$user_type.'_email']; + } + + if (isset($direct_params[$user_type.'_name'])) { + $name = $direct_params[$user_type.'_name']; + } + } + + if (!$email) { + // if email is empty, then use admins email + $email = $this->Application->ConfigValue('Smtp_AdminMailFrom'); + } + + if (!$name) { + $name = $user_type == 'from' ? strip_tags($this->Application->ConfigValue('Site_Name')) : $email; + } + + return Array ($email, $name); + } + + /** + * Returns email event message by ID (headers & body in one piece) + * + * @param int $event_id + * @param string $message_type contains message type = {text,html} + */ + function GetMessageBody($event_id, &$message_type) + { + $current_language = $this->Application->GetVar('m_lang'); + $message =& $this->Application->recallObject('emailmessages', null, Array('skip_autoload' => true)); + /* @var $message kDBItem */ + + $message->Load( Array('EventId' => $event_id, 'LanguageId' => $current_language) ); + if (!$message->isLoaded()) { + // event translation on required language not found + return false; + } + + $message_type = $message->GetDBField('MessageType'); + + // 1. get message body + $message_body = $message->GetDBField('Template'); + + // 2. add footer $sql = 'SELECT em.Template - FROM '.$message_object->TableName.' em + FROM '.$message->TableName.' em LEFT JOIN '.TABLE_PREFIX.'Events e ON e.EventId = em.EventId - WHERE em.LanguageId = '.$message_object->GetDBField('LanguageId').' AND e.Event = "COMMON.FOOTER"'; - $footer = explode("\n\n", $this->Conn->GetOne($sql)); - $footer = $message_object->GetDBField('MessageType') == 'text' ? $email_object->convertHTMLtoPlain($footer[1]) : $footer[1]; - $message_template = $message_object->GetDBField('Template')."\r\n".$footer; - // add footer: end - - $from_user_object = &$this->Application->recallObject('u.email-from', null, Array('skip_autoload' => true)); - $from_user_object->Load($from_user_id); - // here if we don't have from_user loaded, it takes a default user from config values - if ( $from_user_object->IsLoaded() ) { - $from_user_email = $from_user_object->GetDBField('Email'); - $from_user_name = trim($from_user_object->GetDBField('FirstName').' '.$from_user_object->GetDBField('LastName')); + WHERE em.LanguageId = '.$current_language.' AND e.Event = "COMMON.FOOTER"'; + + list (, $footer) = explode("\n\n", $this->Conn->GetOne($sql)); + if ($message_type == 'text') { + $esender =& $this->Application->recallObject('EmailSender'); + /* @var $esender kEmailSendingHelper */ + + $footer = $esender->ConvertToText($footer); } - else { - $from_user_email = $this->Application->ConfigValue('Smtp_AdminMailFrom'); + + if ($footer) { + $message_body .= "\r\n".$footer; } + + // 3. replace tags if needed + $default_replacement_tags = Array ( + ' ' ' 'GetDBField('ReplacementTags'); + $replacement_tags = $replacement_tags ? unserialize($replacement_tags) : Array (); + $replacement_tags = array_merge_recursive2($default_replacement_tags, $replacement_tags); - $to_user_object = &$this->Application->recallObject('u.email-to', null, Array('skip_autoload' => true)); - $to_user_object->Load($to_user_id); - $to_user_email = $to_user_object->GetDBField('Email'); - $to_user_name = trim($to_user_object->GetDBField('FirstName').' '.$to_user_object->GetDBField('LastName')); - - if($direct_send_params){ - $to_user_email = ( $direct_send_params['to_email'] ? $direct_send_params['to_email'] : $to_user_email ); - $to_user_name = ( $direct_send_params['to_name'] ? $direct_send_params['to_name'] : $to_user_name ); - $from_user_email = ( $direct_send_params['from_email'] ? $direct_send_params['from_email'] : $from_user_email); - $from_user_name = ( $direct_send_params['from_name'] ? $direct_send_params['from_name'] : $from_user_name ); - $message_body_additional = $direct_send_params['message']; + foreach ($replacement_tags as $replace_from => $replace_to) { + $message_body = str_replace($replace_from, $replace_to, $message_body); } - - $to_user_email = $to_user_email ? $to_user_email : $this->Application->ConfigValue('Smtp_AdminMailFrom'); - - $this->Application->makeClass('Template'); + + return $message_body; + } + + /** + * Parse message template and return headers (as array) and message body part + * + * @param string $message + * @param Array $direct_params + * @return Array + */ + function ParseMessageBody($message, $direct_params = null) + { + $direct_params['message_text'] = isset($direct_params['message']) ? $direct_params['message'] : ''; // parameter alias + + // 1. parse template $this->Application->InitParser(); - $parser_params = $this->Application->Parser->Params; - $direct_send_params['message_text'] = $message_body_additional; - $this->Application->Parser->Params = array_merge_recursive2($this->Application->Parser->Params, $direct_send_params); - $message_template = str_replace('Application->Parser->Parse($message_template, 'email_template', 0); - $this->Application->Parser->Params = $parser_params; + $parser_params = $this->Application->Parser->Params; // backup parser params + $this->Application->Parser->Params = array_merge_recursive2($this->Application->Parser->Params, $direct_params); + $message = $this->Application->Parser->Parse($message, 'email_template', 0); + $this->Application->Parser->Params = $parser_params; // restore parser params - $message_template = str_replace("\r", "", $message_template); + // 2. replace line endings, that are send with data submitted via request + $message = str_replace("\r\n", "\n", $message); // possible case + $message = str_replace("\r", "\n", $message); // impossible case, but just in case replace this too - list($message_headers, $message_body) = explode("\n\n", $message_template, 2); + // 3. separate headers from body + $message_headers = Array (); + list($headers, $message_body) = explode("\n\n", $message, 2); + + $headers = explode("\n", $headers); + foreach ($headers as $header) { + $header = explode(':', $header, 2); + $message_headers[ trim($header[0]) ] = trim($header[1]); + } + + return Array ($message_headers, $message_body); + } + + /** + * Raised when email message shoul be sent + * + * @param kEvent $event + */ + function OnEmailEvent(&$event) + { + $email_event_name = $event->getEventParam('EmailEventName'); + if (strpos($email_event_name, '_') !== false) { + trigger_error('Invalid email event name '.$email_event_name.'. Use only UPPERCASE characters and dots as email event names', E_USER_ERROR); + } - - $email_object->setFrom($from_user_email, $from_user_name); - $email_object->setTo($to_user_email, $to_user_name); - $email_object->setSubject('Mail message'); - - $email_object->setHeaders($message_headers); - - if ($message_type == 'html'){ - $email_object->setHTMLBody($message_body); + // additional parameters from kApplication->EmailEvent + $send_params = $event->getEventParam('DirectSendParams'); + + // 1. get information about message sender and recipient + $recipients = $this->GetMessageRecipients($event, $event_id); + if ($recipients === false) { + // if not valid recipients found, then don't send event + return false; } - else { - $email_object->setTextBody($message_body); + + list ($from_id, $to_id) = $recipients; + list ($from_email, $from_name) = $this->GetRecipientInfo($from_id, 'from', $send_params); + list ($to_email, $to_name) = $this->GetRecipientInfo($to_id, 'to', $send_params); + + // 2. prepare message to be sent + $message_template = $this->GetMessageBody($event_id, $message_type); + if (!trim($message_template)) { + return false; } + + list ($message_headers, $message_body) = $this->ParseMessageBody($message_template, $send_params); + if (!trim($message_body)) { + return false; + } + + // 3. set headers & send message + $esender =& $this->Application->recallObject('EmailSender'); + /* @var $esender kEmailSendingHelper */ + + $esender->SetFrom($from_email, $from_name); + $esender->AddTo($to_email, $to_name); + + $message_subject = isset($message_headers['Subject']) ? $message_headers['Subject'] : 'Mail message'; + $esender->SetSubject($message_subject); - $smtp_object = &$this->Application->recallObject('kSmtpClient'); - $smtp_object->debug = $this->Application->isDebugMode() && constOn('DBG_SMTP'); - - $smtp_server = $this->Application->ConfigValue('Smtp_Server'); - $smtp_port = $this->Application->ConfigValue('Smtp_Port'); - - $smtp_authenticate = $this->Application->ConfigValue('Smtp_Authenticate'); - if ($smtp_authenticate){ - $smtp_user = $this->Application->ConfigValue('Smtp_User'); - $smtp_pass = $this->Application->ConfigValue('Smtp_Pass'); - }else{ - $smtp_user = ''; - $smtp_pass = ''; + foreach ($message_headers as $header_name => $header_value) { + $esender->SetEncodedHeader($header_name, $header_value); } + $esender->CreateTextHtmlPart($message_body, $message_type == 'html'); - if ($smtp_server){ - if ($email_object->sendSMTP($smtp_object, $smtp_server, $smtp_user, $smtp_pass, $smtp_authenticate)){ - $event->status=erSUCCESS; - } - else { - $event->status=erFAIL; - } - }else{ - if($email_object->send()){ - $event->status=erSUCCESS; - } - else { - $event->status=erFAIL; - } - } + $event->status = $esender->Deliver() ? erSUCCESS : erFAIL; if ($event->status == erSUCCESS){ - if (!$from_user_name) { - $from_user_name = strip_tags( $this->Application->ConfigValue('Site_Name') ); + // all keys, that are not used in email sending are written to log record + $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'message'); + foreach ($send_keys as $send_key) { + unset($send_params[$send_key]); } - $sql = 'INSERT INTO '.TABLE_PREFIX.'EmailLog SET - fromuser = '.$this->Conn->qstr($from_user_name.' ('.$from_user_email.')').', - addressto = '.$this->Conn->qstr($to_user_name.' ('.$to_user_email.')').', - subject = '.$this->Conn->qstr($email_object->Subject).', - timestamp = UNIX_TIMESTAMP(), - event = '.$this->Conn->qstr($email_event); - $this->Conn->Query($sql); + + $fields_hash = Array ( + 'fromuser' => $from_name.' ('.$from_email.')', + 'addressto' => $to_name.' ('.$to_email.')', + 'subject' => $message_subject, + 'timestamp' => adodb_mktime(), + 'event' => $email_event_name, + 'EventParams' => serialize($send_params), + ); + + $this->Conn->doInsert($fields_hash, TABLE_PREFIX.'EmailLog'); } $this->Application->removeObject('u.email-from'); $this->Application->removeObject('u.email-to'); - return $event; } } ?> \ No newline at end of file Index: trunk/core/units/translator/translator_event_handler.php =================================================================== diff -u -r6625 -r7855 --- trunk/core/units/translator/translator_event_handler.php (.../translator_event_handler.php) (revision 6625) +++ trunk/core/units/translator/translator_event_handler.php (.../translator_event_handler.php) (revision 7855) @@ -25,7 +25,7 @@ { list($prefix, $field) = $this->getPrefixAndField($event); - $top_prefix = $this->Application->GetTopmostPrefix($prefix); + $top_prefix = $this->Application->GetTopmostPrefix($prefix, true); $event->setEventParam('top_prefix', $top_prefix); return parent::CheckPermission($event); } Index: trunk/core/admin_templates/incs/header.tpl =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/incs/header.tpl (.../header.tpl) (revision 7635) +++ trunk/core/admin_templates/incs/header.tpl (.../header.tpl) (revision 7855) @@ -23,6 +23,7 @@ + Index: trunk/core/kernel/utility/socket.php =================================================================== diff -u --- trunk/core/kernel/utility/socket.php (revision 0) +++ trunk/core/kernel/utility/socket.php (revision 7855) @@ -0,0 +1,361 @@ +fp)) { + @fclose($this->fp); + $this->fp = null; + } + + // convert hostname to ip address + if (!$addr) { + return $this->raiseError('host address cannot be empty'); + } elseif (strspn($addr, '.0123456789') == strlen($addr) || strstr($addr, '/') !== false) { + $this->addr = $addr; + } else { + $this->addr = @gethostbyname($addr); + } + + $this->port = $port % 65536; + + if ($persistent !== null) { + $this->persistent = $persistent; + } + + if ($timeout !== null) { + $this->timeout = $timeout; + } + + $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; + $errno = 0; + $errstr = ''; + + if ($this->timeout) { + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); + } else { + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); + } + + if (!$fp) { + return $this->raiseError($errstr, Array($errno)); + } + + $this->fp = $fp; + + return $this->setBlocking($this->blocking); + } + + /** + * Disconnects from the peer, closes the socket. + * + * @access public + * @return mixed true on success or an error object otherwise + */ + function disconnect() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + @fclose($this->fp); + $this->fp = null; + return true; + } + + /** + * Find out if the socket is in blocking mode. + * + * @access public + * @return boolean The current blocking mode. + */ + function isBlocking() + { + return $this->blocking; + } + + /** + * Sets whether the socket connection should be blocking or + * not. A read call to a non-blocking socket will return immediately + * if there is no data available, whereas it will block until there + * is data for blocking sockets. + * + * @param boolean $mode True for blocking sockets, false for nonblocking. + * @access public + * @return mixed true on success or an error object otherwise + */ + function setBlocking($mode) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $this->blocking = $mode; + socket_set_blocking($this->fp, $this->blocking); + return true; + } + + /** + * Sets the timeout value on socket descriptor, + * expressed in the sum of seconds and microseconds + * + * @param integer $seconds Seconds. + * @param integer $microseconds Microseconds. + * @access public + * @return mixed true on success or an error object otherwise + */ + function setTimeout($seconds, $microseconds) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return socket_set_timeout($this->fp, $seconds, $microseconds); + } + + /** + * Returns information about an existing socket resource. + * Currently returns four entries in the result array: + * + *

+ * timed_out (bool) - The socket timed out waiting for data
+ * blocked (bool) - The socket was blocked
+ * eof (bool) - Indicates EOF event
+ * unread_bytes (int) - Number of bytes left in the socket buffer
+ *

+ * + * @access public + * @return mixed Array containing information about existing socket resource or an error object otherwise + */ + function getStatus() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return socket_get_status($this->fp); + } + + /** + * Get a specified line of data + * + * @access public + * @return $size bytes of data from the socket, or a PEAR_Error if + * not connected. + */ + function gets($size) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return @fgets($this->fp, $size); + } + + /** + * Read a specified amount of data. This is guaranteed to return, + * and has the added benefit of getting everything in one fread() + * chunk; if you know the size of the data you're getting + * beforehand, this is definitely the way to go. + * + * @param integer $size The number of bytes to read from the socket. + * @access public + * @return $size bytes of data from the socket, or a PEAR_Error if + * not connected. + */ + function read($size) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return @fread($this->fp, $size); + } + + /** + * Write a specified amount of data. + * + * @param string $data Data to write. + * @param integer $blocksize Amount of data to write at once. + * NULL means all at once. + * + * @access public + * @return mixed true on success or an error object otherwise + */ + function write($data, $blocksize = null) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + if (is_null($blocksize) && !OS_WINDOWS) { + return fwrite($this->fp, $data); + } else { + if (is_null($blocksize)) { + $blocksize = 1024; + } + + $pos = 0; + $size = strlen($data); + while ($pos < $size) { + $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); + if ($written === false) { + return false; + } + $pos += $written; + } + + return $pos; + } + } + + /** + * Write a line of data to the socket, followed by a trailing "\r\n". + * + * @access public + * @return mixed fputs result, or an error + */ + function writeLine($data) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return fwrite($this->fp, $data . "\r\n"); + } + + /** + * Tests for end-of-file on a socket descriptor. + * + * @access public + * @return bool + */ + function eof() + { + return (is_resource($this->fp) && feof($this->fp)); + } + + /** + * Read until either the end of the socket or a newline, whichever + * comes first. Strips the trailing newline from the returned data. + * + * @access public + * @return All available data up to a newline, without that + * newline, or until the end of the socket, or a PEAR_Error if + * not connected. + */ + function readLine() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $line = ''; + $timeout = time() + $this->timeout; + while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { + $line .= @fgets($this->fp, $this->lineLength); + if (substr($line, -1) == "\n") { + return rtrim($line, "\r\n"); + } + } + return $line; + } + + /** + * Read until the socket closes, or until there is no more data in + * the inner PHP buffer. If the inner buffer is empty, in blocking + * mode we wait for at least 1 byte of data. Therefore, in + * blocking mode, if there is no data at all to be read, this + * function will never exit (unless the socket is closed on the + * remote end). + * + * @access public + * + * @return string All data until the socket closes, or a PEAR_Error if + * not connected. + */ + function readAll() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $data = ''; + while (!feof($this->fp)) { + $data .= @fread($this->fp, $this->lineLength); + } + return $data; + } + + function raiseError($text, $params = Array()) + { + trigger_error(vsprintf($text, $params), E_USER_WARNING); + return false; + } + } + +?> \ No newline at end of file Index: trunk/core/units/email_messages/email_messages_config.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/units/email_messages/email_messages_config.php (.../email_messages_config.php) (revision 7702) +++ trunk/core/units/email_messages/email_messages_config.php (.../email_messages_config.php) (revision 7855) @@ -53,14 +53,15 @@ ), ), - 'Fields' => Array( - 'EmailMessageId' => Array(), - 'Template' => Array('type' => 'string','default' => ''), - 'MessageType' => Array('type' => 'string', 'formatter'=>'kOptionsFormatter', 'options'=>Array('text'=>'la_Text','html'=>'la_Html'), 'not_null' => '1','default' => 'text'), - 'LanguageId' => Array('type' => 'int','not_null' => '1','default' => '0'), - 'EventId' => Array('type' => 'int','not_null' => '1','default' => '0'), - 'Subject' => Array('type'=>'string'), - ), + 'Fields' => Array ( + 'EmailMessageId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), + 'Template' => Array('type' => 'string','default' => ''), + 'ReplacementTags' => Array ('type' => 'string', 'not_null' => 1, 'default' => 'a:0:{}'), + 'MessageType' => Array('type' => 'string', 'formatter' => 'kOptionsFormatter', 'options' => Array('text'=>'la_Text','html'=>'la_Html'), 'not_null' => '1','default' => 'text'), + 'LanguageId' => Array('type' => 'int', 'not_null' => '1', 'default' => '0'), + 'EventId' => Array('type' => 'int', 'not_null' => '1', 'default' => '0'), + 'Subject' => Array('type' => 'string'), + ), 'VirtualFields' => Array( 'Headers' => Array('type'=>'string'), Index: trunk/core/admin_templates/config/config_general.tpl =================================================================== diff -u -r7391 -r7855 --- trunk/core/admin_templates/config/config_general.tpl (.../config_general.tpl) (revision 7391) +++ trunk/core/admin_templates/config/config_general.tpl (.../config_general.tpl) (revision 7855) @@ -3,7 +3,7 @@ - + @@ -29,7 +29,7 @@ return false; } } - + function ValidatePassFields(){ var el=false; var validated=true; @@ -43,29 +43,29 @@ } return validated; } - + function toggle_section($label) { var $table = document.getElementById('config_table'); var $row = null; var $is_visible = false; - + for (var $i = 0; $i < $table.rows.length; $i++) { $row = $table.rows[$i]; if ($row.getAttribute('header_label') != $label) { continue; } - + if (!$row.style.display) { $row.style.display = document.all ? 'block' : 'table-row'; } - + $is_visible = !($row.style.display == 'none'); $row.style.display = $is_visible ? 'none' : (document.all ? 'block' : 'table-row'); - + document.getElementById('toggle_mark['+$label+']').innerHTML = '[' + ($is_visible ? '+' : '-') + ']'; } } - + var a_toolbar = new ToolBar(); a_toolbar.AddButton( new ToolBarButton('select', '', function() { if (ValidatePassFields()){ @@ -98,7 +98,7 @@ [-] - + " header_label="la_Text_RootCategory"> @@ -115,10 +115,10 @@ ', 'ModuleRootCategory', '950x600');"> -   +   - + Index: trunk/core/admin_templates/users/admins_edit.tpl =================================================================== diff -u -r7697 -r7855 --- trunk/core/admin_templates/users/admins_edit.tpl (.../admins_edit.tpl) (revision 7697) +++ trunk/core/admin_templates/users/admins_edit.tpl (.../admins_edit.tpl) (revision 7855) @@ -1,4 +1,4 @@ - + @@ -61,14 +61,15 @@
- +
+
Index: trunk/core/kernel/processors/tag_processor.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/kernel/processors/tag_processor.php (.../tag_processor.php) (revision 7635) +++ trunk/core/kernel/processors/tag_processor.php (.../tag_processor.php) (revision 7855) @@ -53,7 +53,7 @@ $backup_special = $this->Special; // process all possible flags: begin - $flags = Array('js_escape', 'result_to_var', 'pass_params', 'html_escape'); + $flags = Array('js_escape', 'result_to_var', 'pass_params', 'html_escape', 'strip_nl'); $flag_values = Array(); foreach ($flags as $flag_name) { @@ -84,6 +84,10 @@ if ($flag_values['html_escape']) { $ret = htmlspecialchars($ret); } + if ($flag_values['strip_nl']) { + // 1 - strip \r,\n; 2 - strip tabs too + $ret = preg_replace($flag_values['strip_nl'] == 2 ? "/[\r\n\t]/" : "/[\r\n]/", '', $ret); + } if ($flag_values['result_to_var']) { $this->Application->Parser->SetParam($flag_values['result_to_var'], $ret); $ret = ''; Index: trunk/core/units/general/inp1_parser.php =================================================================== diff -u -r6093 -r7855 --- trunk/core/units/general/inp1_parser.php (.../inp1_parser.php) (revision 6093) +++ trunk/core/units/general/inp1_parser.php (.../inp1_parser.php) (revision 7855) @@ -54,7 +54,7 @@ global $objTemplate, $CurrentTheme, $objThemes, $objLanguageCache, $var_list; if ($this->InpParsetInited) return true; - $theme_id = $this->Application->GetVar('m_theme'); + $theme_id = $this->Application->IsAdmin() ? 1 : $this->Application->GetVar('m_theme'); if ($theme_id) { $CurrentTheme = $objThemes->GetItem($theme_id); @@ -97,10 +97,9 @@ $pathchar, $objTemplate, $objTopicList, $objArticleList, $objPostingList, $objCensorList, $objSmileys, $objPMList, $SubscribeAddress, $SubscribeError, $SubscribeResult, $application; - $pathtoroot = $this->Application->IsAdmin() ? '../' : './'; - $pathtoroot = realpath($pathtoroot)."/"; + $pathtoroot = FULL_PATH.'/'; - if (!file_exists($pathtoroot."config.php")) { + if (!file_exists(FULL_PATH.'/config.php')) { echo "In-Portal is probably not installed, or configuration file is missing.
"; echo "Please use the installation script to fix the problem.

"; echo "Go to installation script

"; @@ -109,7 +108,7 @@ } //ob_start(); - $FrontEnd=1; + $FrontEnd = 1; $indexURL="../../index.php"; //Set to relative URL from the theme directory @@ -130,7 +129,7 @@ $_local_t = $k4_referer; $this->Application->RemoveVar('K4_Template_Referer'); } - $objSession->SetVariable('Template_Referer', $_local_t); + $objSession->SetVariable('Template_Referer', isset($_local_t) ? $_local_t : ''); } // process referer in session: end Index: trunk/core/admin_templates/custom_fields/custom_fields_list.tpl =================================================================== diff -u -r7391 -r7855 --- trunk/core/admin_templates/custom_fields/custom_fields_list.tpl (.../custom_fields_list.tpl) (revision 7391) +++ trunk/core/admin_templates/custom_fields/custom_fields_list.tpl (.../custom_fields_list.tpl) (revision 7855) @@ -2,7 +2,7 @@ - + Index: trunk/core/admin_templates/modules/modules_list.tpl =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/modules/modules_list.tpl (.../modules_list.tpl) (revision 7635) +++ trunk/core/admin_templates/modules/modules_list.tpl (.../modules_list.tpl) (revision 7855) @@ -1,7 +1,7 @@ - + Index: trunk/core/admin_templates/img/icons/icon24_link_user.gif =================================================================== diff -u Binary files differ Index: trunk/core/units/user_groups/user_groups_config.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/user_groups/user_groups_config.php (.../user_groups_config.php) (revision 7635) +++ trunk/core/units/user_groups/user_groups_config.php (.../user_groups_config.php) (revision 7855) @@ -48,8 +48,8 @@ ), 'Fields' => Array( - 'PortalUserId' => Array('type' => 'int'), - 'GroupId' => Array('type' => 'int', 'not_null' => 1, 'default' => 1), + 'PortalUserId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), + 'GroupId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'MembershipExpires' => Array('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => ''), 'PrimaryGroup' => Array('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 1), 'ExpirationReminderSent' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), Index: trunk/core/admin_templates/incs/grid_blocks.tpl =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/incs/grid_blocks.tpl (.../grid_blocks.tpl) (revision 7635) +++ trunk/core/admin_templates/incs/grid_blocks.tpl (.../grid_blocks.tpl) (revision 7855) @@ -71,6 +71,7 @@ Toolbars['_search'] = new ToolBar('icon16_'); + Toolbars['_search'].IconSize = {w:22,h:22}; Toolbars['_search'].UseLabels = false; Toolbars['_search'].AddButton( new ToolBarButton( Index: trunk/core/kernel/utility/event.php =================================================================== diff -u -r7391 -r7855 --- trunk/core/kernel/utility/event.php (.../event.php) (revision 7391) +++ trunk/core/kernel/utility/event.php (.../event.php) (revision 7855) @@ -302,6 +302,9 @@ } if (!$section) { + if ($this->Application->isDebugMode()) { + $this->Application->Debugger->appendTrace(); + } trigger_error('Permission section not specified for prefix '.$top_prefix.'', E_USER_ERROR); } return $section; Index: trunk/core/units/admin/admin_tag_processor.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/admin/admin_tag_processor.php (.../admin_tag_processor.php) (revision 7635) +++ trunk/core/units/admin/admin_tag_processor.php (.../admin_tag_processor.php) (revision 7855) @@ -183,7 +183,15 @@ $info = $params['info']; switch ($info) { case 'module_path': - $module = $section_data['icon_module']; + if (isset($params['module']) && $params['module']) { + $module = $params['module']; + } + elseif (isset($section_data['icon_module'])) { + $module = $section_data['icon_module']; + } + else { + $module = '#session#'; + } $res = $this->ModulePath(array('module' => $module)); break; default: @@ -424,9 +432,9 @@ $oFCKeditor->ToolbarSet = 'Advanced' ; $oFCKeditor->Value = '' ; $oFCKeditor->Config = Array( - //'UserFilesPath' => $pathtoroot.'kernel/user_files', +// 'UserFilesPath' => FULL_PATH.'/kernel/user_files', 'ProjectPath' => BASE_PATH.'/', - 'CustomConfigurationsPath' => $this->Application->BaseURL().$editor_path.'fckconfig.js', + 'CustomConfigurationsPath' => $this->Application->isModuleEnabled('In-Portal') ? $this->Application->BaseURL().'kernel/admin_templates/incs/inp_fckconfig.js' : $this->Application->BaseURL().$editor_path.'fckconfig.js', // 'EditorAreaCSS' => $this->Application->BaseURL().'/themes/inportal_site/inc/inportal.css', //GetThemeCSS(), //'StylesXmlPath' => '../../inp_styles.xml', // 'Debug' => 1, Fisheye: Tag 7855 refers to a dead (removed) revision in file `trunk/core/kernel/utility/email.php'. Fisheye: No comparison available. Pass `N' to diff? Index: trunk/core/admin_templates/js/grid.js =================================================================== diff -u -r7635 -r7855 --- trunk/core/admin_templates/js/grid.js (.../grid.js) (revision 7635) +++ trunk/core/admin_templates/js/grid.js (.../grid.js) (revision 7855) @@ -114,6 +114,16 @@ this.GridItem.DblClick(ev); } } + + if ( this.Grid.MouseOverClass ) { + addEvent(this.HTMLelement, 'mouseover', function(ev) { this.GridItem.MouseOver(ev)}, true); // true for traditional event model + addEvent(this.HTMLelement, 'mouseout', function(ev) { this.GridItem.MouseOut(ev)}, true); + if ( this.LeftElement ) { + addEvent(this.LeftElement, 'mouseover', function(ev) { this.GridItem.MouseOver(ev)}, true); + addEvent(this.LeftElement, 'mouseout', function(ev) { this.GridItem.MouseOut(ev)}, true); + } + } + } GridItem.prototype.DisableClicking = function () @@ -232,6 +242,21 @@ this.Grid.Edit(); } +GridItem.prototype.MouseOver = function (ev) +{ + this.HTMLelement.className = this.Grid.MouseOverClass; + if ( this.LeftElement ) { + this.LeftElement.className = this.Grid.MouseOverClass; + } +} +GridItem.prototype.MouseOut = function (ev) +{ + this.HTMLelement.className = this.selected ? this.class_on : this.class_off; + if ( this.LeftElement ) { + this.LeftElement.className = this.selected ? this.class_on : this.class_off; + } +} + GridItem.prototype.Toggle = function () { if (this.selected) this.UnSelect() @@ -263,6 +288,7 @@ this.AlternativeGrids = new Array(); this.DependantButtons = new Array(); this.RadioMode = false; + this.MouseOverClass = false; // K3-style sticky selection, selection an item does not unselect currently selected // even w/o Ctrl key pressed Index: trunk/core/kernel/processors/main_processor.php =================================================================== diff -u -r7702 -r7855 --- trunk/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 7702) +++ trunk/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 7855) @@ -835,11 +835,8 @@ $this->Application->Redirect( $params['no_group_perm_template'], Array('next_template'=>$t) ); } - $redirect_params = Array('next_template' => $t); - $session_expired = $this->Application->GetVar('expired'); - if ($session_expired) { - $redirect_params['expired'] = $session_expired; - } + $redirect_params = $this->Application->HttpQuery->getRedirectParams(); + $redirect_params['next_template'] = $t; $this->Application->Redirect($params['login_template'], $redirect_params); } } @@ -940,12 +937,19 @@ return $this->Application->Phrase($root_phrase); } + /** + * Allows to attach file directly from email event template + * + * @param Array $params + */ function AttachFile($params) { - $email_object =& $this->Application->recallObject('kEmailMessage'); + $esender =& $application->recallObject('EmailSender'.(isset($params['special']) ? '.'.$params['special'] : '')); + /* @var $esender kEmailSendingHelper */ + $path = FULL_PATH.'/'.$params['path']; if (file_exists($path)) { - $email_object->attachFile($path); + $esender->AddAttachment($path); } } Index: trunk/core/units/permissions/permissions_config.php =================================================================== diff -u -r7635 -r7855 --- trunk/core/units/permissions/permissions_config.php (.../permissions_config.php) (revision 7635) +++ trunk/core/units/permissions/permissions_config.php (.../permissions_config.php) (revision 7855) @@ -76,7 +76,7 @@ ) ), 'Fields' => Array( - 'PermissionId' => Array(), + 'PermissionId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0), 'Permission' => Array('type' => 'string','not_null' => '1','default' => ''), 'GroupId' => Array('type' => 'int','default' => '0'), 'PermissionValue' => Array('type' => 'int','not_null' => '1','default' => '0'),